Cycles: fix instanced mesh sync being a bit too slow.

This commit is contained in:
Brecht Van Lommel
2011-05-31 10:57:43 +00:00
parent d404c31e8d
commit 20746f6bb0
3 changed files with 9 additions and 0 deletions

View File

@@ -252,6 +252,12 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool object_updated)
}
}
/* ensure we only sync instanced meshes once */
if(mesh_synced.find(mesh) != mesh_synced.end())
return mesh;
mesh_synced.insert(mesh);
/* create derived mesh */
BL::Mesh b_mesh = object_to_mesh(b_ob, b_scene, true, !preview);
/* todo: this will crash on non-mesh types! */

View File

@@ -139,6 +139,7 @@ void BlenderSync::sync_objects(BL::SpaceView3D b_v3d)
light_map.pre_sync();
mesh_map.pre_sync();
object_map.pre_sync();
mesh_synced.clear();
/* object loop */
BL::Scene::objects_iterator b_ob;
@@ -177,6 +178,7 @@ void BlenderSync::sync_objects(BL::SpaceView3D b_v3d)
scene->mesh_manager->tag_update(scene);
if(object_map.post_sync())
scene->object_manager->tag_update(scene);
mesh_synced.clear();
}
CCL_NAMESPACE_END

View File

@@ -92,6 +92,7 @@ private:
id_map<ObjectKey, Object> object_map;
id_map<void*, Mesh> mesh_map;
id_map<ObjectKey, Light> light_map;
set<Mesh*> mesh_synced;
void *world_map;
bool world_recalc;