Cycles: fix instanced mesh sync being a bit too slow.
This commit is contained in:
@@ -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! */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user