Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-06-18 18:14:13 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-06-18 18:14:13 +0400
commitfe3d388af2ad033f6375acb6d069265af281d352 (patch)
treeff6c24397215de12c56e49db72cdfc5e78617c78 /source/blender/blenkernel/intern/collision.c
parent61b0a5bdb5abfc219c430b7492d4efd44085eaf2 (diff)
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.
Diffstat (limited to 'source/blender/blenkernel/intern/collision.c')
-rw-r--r--source/blender/blenkernel/intern/collision.c19
1 files changed, 14 insertions, 5 deletions
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;