[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29546] branches/render25/source/blender/ blenkernel/intern: Render Branch: svn merge https://svn.blender.org/svnroot /bf-blender/trunk/blender -r29540:29545, skipped particle_system.c
Campbell Barton
ideasman42 at gmail.com
Fri Jun 18 16:45:29 CEST 2010
Revision: 29546
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29546
Author: campbellbarton
Date: 2010-06-18 16:45:29 +0200 (Fri, 18 Jun 2010)
Log Message:
-----------
Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r29540:29545, skipped particle_system.c
Modified Paths:
--------------
branches/render25/source/blender/blenkernel/intern/collision.c
branches/render25/source/blender/blenkernel/intern/effect.c
branches/render25/source/blender/blenkernel/intern/scene.c
Modified: branches/render25/source/blender/blenkernel/intern/collision.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/collision.c 2010-06-18 14:14:13 UTC (rev 29545)
+++ branches/render25/source/blender/blenkernel/intern/collision.c 2010-06-18 14:45:29 UTC (rev 29546)
@@ -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"
@@ -1352,10 +1353,13 @@
add_collision_object(&objs, &numobj, &maxobj, go->ob, self, 0);
}
else {
- /* add objects in visible layer in scene */
- for(base = scene->base.first; base; base = base->next)
- if(base->lay & scene->lay)
+ Scene *sce; /* for SETLOOPER macro */
+ /* add objects in same layer in scene */
+ for(SETLOOPER(scene, base)) {
+ if(base->lay & self->lay)
add_collision_object(&objs, &numobj, &maxobj, base->object, self, 0);
+
+ }
}
*numcollobj= numobj;
@@ -1399,7 +1403,6 @@
ListBase *get_collider_cache(Scene *scene, Object *self, Group *group)
{
- Base *base;
GroupObject *go;
ListBase *objs= NULL;
@@ -1409,9 +1412,15 @@
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;
Modified: branches/render25/source/blender/blenkernel/intern/effect.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/effect.c 2010-06-18 14:14:13 UTC (rev 29545)
+++ branches/render25/source/blender/blenkernel/intern/effect.c 2010-06-18 14:45:29 UTC (rev 29546)
@@ -781,7 +781,7 @@
}
if(eff->pd->flag & PFIELD_TEX_OBJECT) {
- mul_mat3_m4_v3(eff->ob->obmat, tex_co);
+ mul_m4_v3(eff->ob->obmat, tex_co);
}
hasrgb = multitex_ext(eff->pd->tex, tex_co, NULL,NULL, 0, result, -1);
Modified: branches/render25/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/scene.c 2010-06-18 14:14:13 UTC (rev 29545)
+++ branches/render25/source/blender/blenkernel/intern/scene.c 2010-06-18 14:45:29 UTC (rev 29546)
@@ -887,68 +887,38 @@
return ctime;
}
-static void scene_update_newframe(Scene *scene, int cfra, unsigned int lay)
+static void scene_update_tagged_recursive(Scene *scene, Scene *scene_parent)
{
Base *base;
- Object *ob;
- int cfra_back= scene->r.cfra;
- scene->r.cfra= cfra;
-
+
+ /* sets first, we allow per definition current scene to have
+ dependencies on sets, but not the other way around. */
+ if(scene->set)
+ scene_update_tagged_recursive(scene->set, scene_parent);
+
for(base= scene->base.first; base; base= base->next) {
- ob= base->object;
-
- object_handle_update(scene, ob); // bke_object.h
+ Object *ob= base->object;
+ object_handle_update(scene_parent, ob);
+
if(ob->dup_group && (ob->transflag & OB_DUPLIGROUP))
- group_handle_recalc_and_update(scene, ob, ob->dup_group);
-
- /* only update layer when an ipo */
- // XXX old animation system
- //if(ob->ipo && has_ipo_code(ob->ipo, OB_LAY) ) {
- // base->lay= ob->lay;
- //}
+ group_handle_recalc_and_update(scene_parent, ob, ob->dup_group);
}
-
- scene->r.cfra= cfra_back;
}
/* this is called in main loop, doing tagged updates before redraw */
void scene_update_tagged(Scene *scene)
{
- Scene *sce;
- Base *base;
- Object *ob;
- float ctime = frame_to_float(scene, scene->r.cfra);
-
scene->physics_settings.quick_cache_step= 0;
/* update all objects: drivers, matrices, displists, etc. flags set
by depgraph or manual, no layer check here, gets correct flushed */
- /* sets first, we allow per definition current scene to have
- dependencies on sets, but not the other way around. */
- if(scene->set) {
- for(SETLOOPER(scene->set, base)) {
- ob= base->object;
+ scene_update_tagged_recursive(scene, scene);
- object_handle_update(scene, ob);
-
- if(ob->dup_group && (ob->transflag & OB_DUPLIGROUP))
- group_handle_recalc_and_update(scene, ob, ob->dup_group);
- }
- }
-
- for(base= scene->base.first; base; base= base->next) {
- ob= base->object;
-
- object_handle_update(scene, ob);
-
- if(ob->dup_group && (ob->transflag & OB_DUPLIGROUP))
- group_handle_recalc_and_update(scene, ob, ob->dup_group);
- }
-
/* recalc scene animation data here (for sequencer) */
{
+ float ctime = frame_to_float(scene, scene->r.cfra);
AnimData *adt= BKE_animdata_from_id(&scene->id);
if(adt && (adt->recalc & ADT_RECALC_ANIM))
@@ -978,7 +948,7 @@
/* Following 2 functions are recursive
- * so dont call within 'scene_update_newframe' */
+ * so dont call within 'scene_update_tagged_recursive' */
DAG_scene_update_flags(sce, lay); // only stuff that moves or needs display still
/* All 'standard' (i.e. without any dependencies) animation is handled here,
@@ -990,13 +960,8 @@
BKE_animsys_evaluate_all_animation(G.main, ctime);
/*...done with recusrive funcs */
-
- /* sets first, we allow per definition current scene to have dependencies on sets */
- for(sce_iter= sce->set; sce_iter; sce_iter= sce_iter->set) {
- scene_update_newframe(sce_iter, sce->r.cfra, lay);
- }
-
- scene_update_newframe(sce, sce->r.cfra, lay);
+ /* object_handle_update() on all objects, groups and sets */
+ scene_update_tagged_recursive(sce, sce);
}
/* return default layer, also used to patch old files */
More information about the Bf-blender-cvs
mailing list