From fe3d388af2ad033f6375acb6d069265af281d352 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 18 Jun 2010 14:14:13 +0000 Subject: Changes to scene updating with set scenes. The most useful effect of this is that set scenes can take the simplify settings from the current scene (render team doesnt have to worry about animators simplify settings). details... - updating on frame change now passes the parent scene to object update function. (this was alredy happening for updating tagged objects) - set scenes objects update first so scenes can depend on set objects however this only happened at once level, now set scenes are updated recursively, so deepest level is updated first. - collision objects used to only look through the current scene, now set objects are included. --- source/blender/blenkernel/intern/collision.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'source/blender/blenkernel/intern/collision.c') diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c index a77ac9b8e24..9b49ac9c6ff 100644 --- a/source/blender/blenkernel/intern/collision.c +++ b/source/blender/blenkernel/intern/collision.c @@ -40,6 +40,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_global.h" +#include "BKE_scene.h" #include "BKE_mesh.h" #include "BKE_object.h" #include "BKE_modifier.h" @@ -1353,10 +1354,13 @@ Object **get_collisionobjects(Scene *scene, Object *self, Group *group, int *num add_collision_object(&objs, &numobj, &maxobj, go->ob, self, 0); } else { + Scene *sce; /* for SETLOOPER macro */ /* add objects in same layer in scene */ - for(base = scene->base.first; base; base = base->next) - if(base->lay & self->lay) + for(SETLOOPER(scene, base)) { + if(base->lay & self->lay) add_collision_object(&objs, &numobj, &maxobj, base->object, self, 0); + + } } *numcollobj= numobj; @@ -1400,7 +1404,6 @@ static void add_collider_cache_object(ListBase **objs, Object *ob, Object *self, ListBase *get_collider_cache(Scene *scene, Object *self, Group *group) { - Base *base; GroupObject *go; ListBase *objs= NULL; @@ -1410,9 +1413,15 @@ ListBase *get_collider_cache(Scene *scene, Object *self, Group *group) add_collider_cache_object(&objs, go->ob, self, 0); } else { - for(base = scene->base.first; base; base = base->next) - if(!self || (base->lay & self->lay)) + Scene *sce; /* for SETLOOPER macro */ + Base *base; + + /* add objects in same layer in scene */ + for(SETLOOPER(scene, base)) { + if(!self || (base->lay & self->lay)) add_collider_cache_object(&objs, base->object, self, 0); + + } } return objs; -- cgit v1.2.3