[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27963] branches/render25: Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r27948 :27962

Brecht Van Lommel brecht at blender.org
Fri Apr 2 18:04:12 CEST 2010


Revision: 27963
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27963
Author:   blendix
Date:     2010-04-02 18:04:12 +0200 (Fri, 02 Apr 2010)

Log Message:
-----------
Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r27948:27962

Modified Paths:
--------------
    branches/render25/release/scripts/ui/properties_data_modifier.py
    branches/render25/source/blender/blenkernel/BKE_scene.h
    branches/render25/source/blender/blenkernel/intern/pointcache.c
    branches/render25/source/blender/blenkernel/intern/scene.c
    branches/render25/source/blender/editors/animation/anim_draw.c
    branches/render25/source/blender/editors/animation/keyframes_edit.c
    branches/render25/source/blender/editors/animation/keyframes_general.c
    branches/render25/source/blender/editors/armature/meshlaplacian.c
    branches/render25/source/blender/editors/armature/poselib.c
    branches/render25/source/blender/editors/include/ED_keyframes_edit.h
    branches/render25/source/blender/editors/interface/interface_handlers.c
    branches/render25/source/blender/editors/interface/interface_style.c
    branches/render25/source/blender/editors/interface/interface_widgets.c
    branches/render25/source/blender/editors/object/object_edit.c
    branches/render25/source/blender/editors/space_action/action_edit.c
    branches/render25/source/blender/editors/space_action/action_select.c
    branches/render25/source/blender/editors/space_graph/graph_edit.c
    branches/render25/source/blender/editors/space_graph/graph_select.c
    branches/render25/source/blender/editors/space_nla/nla_edit.c
    branches/render25/source/blender/editors/space_view3d/drawobject.c
    branches/render25/source/blender/makesrna/intern/rna_modifier.c
    branches/render25/source/blender/makesrna/intern/rna_scene.c
    branches/render25/source/blender/makesrna/intern/rna_world.c
    branches/render25/source/gameengine/Converter/BL_BlenderDataConversion.cpp

Modified: branches/render25/release/scripts/ui/properties_data_modifier.py
===================================================================
--- branches/render25/release/scripts/ui/properties_data_modifier.py	2010-04-02 15:03:13 UTC (rev 27962)
+++ branches/render25/release/scripts/ui/properties_data_modifier.py	2010-04-02 16:04:12 UTC (rev 27963)
@@ -368,7 +368,6 @@
         sub = col.column()
         sub.label(text="Object:")
         sub.prop(md, "object", text="")
-        sub.prop(md, "mode", text="")
         sub.active = not md.is_bound
         if wide_ui:
             col = split.column()

Modified: branches/render25/source/blender/blenkernel/BKE_scene.h
===================================================================
--- branches/render25/source/blender/blenkernel/BKE_scene.h	2010-04-02 15:03:13 UTC (rev 27962)
+++ branches/render25/source/blender/blenkernel/BKE_scene.h	2010-04-02 16:04:12 UTC (rev 27963)
@@ -47,10 +47,9 @@
 #define SCE_COPY_LINK_DATA	2
 #define SCE_COPY_FULL		3
 
-/* note; doesn't work when scene is empty */
-#define SETLOOPER(s, b) sce= s, b= (Base*)sce->base.first; b; b= (Base*)(b->next?b->next:sce->set?(sce=sce->set)->base.first:NULL)
+#define SETLOOPER(s, b) sce= s, b= _setlooper_base_step(&sce, NULL); b; b= _setlooper_base_step(&sce, b)
+struct Base *_setlooper_base_step(struct Scene **sce, struct Base *base);
 
-
 void free_avicodecdata(struct AviCodecData *acd);
 void free_qtcodecdata(struct QuicktimeCodecData *acd);
 

Modified: branches/render25/source/blender/blenkernel/intern/pointcache.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/pointcache.c	2010-04-02 15:03:13 UTC (rev 27962)
+++ branches/render25/source/blender/blenkernel/intern/pointcache.c	2010-04-02 16:04:12 UTC (rev 27963)
@@ -560,7 +560,7 @@
 static int ptcache_totpoint_cloth(void *cloth_v, int cfra)
 {
 	ClothModifierData *clmd= cloth_v;
-	return clmd->clothObject->numverts;
+	return clmd->clothObject ? clmd->clothObject->numverts : 0;
 }
 
 /* Creating ID's */
@@ -2327,12 +2327,13 @@
 /* Baking */
 static int count_quick_cache(Scene *scene, int *quick_step)
 {
-	Base *base = scene->base.first;
+	Base *base;
 	PTCacheID *pid;
 	ListBase pidlist;
 	int autocache_count= 0;
+	Scene *sce; /* for macro only */
 
-	for(base = scene->base.first; base; base = base->next) {
+	for(SETLOOPER(scene, base)) {
 		if(base->object) {
 			BKE_ptcache_ids_from_object(&pidlist, base->object, scene, MAX_DUPLI_RECUR);
 
@@ -2401,6 +2402,7 @@
 void BKE_ptcache_make_cache(PTCacheBaker* baker)
 {
 	Scene *scene = baker->scene;
+	Scene *sce; /* SETLOOPER macro only */
 	Base *base;
 	ListBase pidlist;
 	PTCacheID *pid = baker->pid;
@@ -2465,7 +2467,7 @@
 			cache->flag &= ~PTCACHE_BAKED;
 		}
 	}
-	else for(base=scene->base.first; base; base= base->next) {
+	for(SETLOOPER(scene, base)) {
 		/* cache/bake everything in the scene */
 		BKE_ptcache_ids_from_object(&pidlist, base->object, scene, MAX_DUPLI_RECUR);
 
@@ -2548,7 +2550,7 @@
 				BKE_ptcache_write_cache(pid, 0);
 		}
 	}
-	else for(base=scene->base.first; base; base= base->next) {
+	else for(SETLOOPER(scene, base)) {
 		BKE_ptcache_ids_from_object(&pidlist, base->object, scene, MAX_DUPLI_RECUR);
 
 		for(pid=pidlist.first; pid; pid=pid->next) {

Modified: branches/render25/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/scene.c	2010-04-02 15:03:13 UTC (rev 27962)
+++ branches/render25/source/blender/blenkernel/intern/scene.c	2010-04-02 16:04:12 UTC (rev 27963)
@@ -891,10 +891,12 @@
 	return ctime;
 }
 
-static void scene_update_newframe(Scene *scene, unsigned int lay)
+static void scene_update_newframe(Scene *scene, int cfra, unsigned int lay)
 {
 	Base *base;
 	Object *ob;
+	int cfra_back= scene->r.cfra;
+	scene->r.cfra= cfra;
 	
 	for(base= scene->base.first; base; base= base->next) {
 		ob= base->object;
@@ -910,6 +912,8 @@
 		//	base->lay= ob->lay;
 		//}
 	}
+
+	scene->r.cfra= cfra_back;
 }
 
 /* this is called in main loop, doing tagged updates before redraw */
@@ -953,6 +957,7 @@
 			BKE_animsys_evaluate_animdata(&scene->id, adt, ctime, 0);
 	}
 
+	/* XXX - this is called far to often, should be made apart of the depgraph */
 	BKE_ptcache_quick_cache_all(scene);
 
 	/* in the future this should handle updates for all datablocks, not
@@ -989,10 +994,11 @@
 
 
 	/* 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, lay);
+	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, lay);
+	scene_update_newframe(sce, sce->r.cfra, lay);
 }
 
 /* return default layer, also used to patch old files */
@@ -1046,3 +1052,26 @@
 		return error;
 }
 
+/* helper function for the SETLOOPER macro */
+Base *_setlooper_base_step(Scene **sce, Base *base)
+{
+    if(base && base->next) {
+        /* common case, step to the next */
+        return base->next;
+    }
+    else if(base==NULL && (*sce)->base.first) {
+        /* first time looping, return the scenes first base */
+        return (Base *)(*sce)->base.first;
+    }
+    else {
+        /* reached the end, get the next base in the set */
+        while((*sce= (*sce)->set)) {
+            base= (Base *)(*sce)->base.first;
+            if(base) {
+                return base;
+            }
+        }
+    }
+
+    return NULL;
+}

Modified: branches/render25/source/blender/editors/animation/anim_draw.c
===================================================================
--- branches/render25/source/blender/editors/animation/anim_draw.c	2010-04-02 15:03:13 UTC (rev 27962)
+++ branches/render25/source/blender/editors/animation/anim_draw.c	2010-04-02 16:04:12 UTC (rev 27963)
@@ -307,11 +307,11 @@
 /* ------------------- */
 
 /* helper function for ANIM_nla_mapping_apply_fcurve() -> "restore", i.e. mapping points back to action-time */
-static short bezt_nlamapping_restore(BeztEditData *bed, BezTriple *bezt)
+static short bezt_nlamapping_restore(KeyframeEditData *ked, BezTriple *bezt)
 {
 	/* AnimData block providing scaling is stored in 'data', only_keys option is stored in i1 */
-	AnimData *adt= (AnimData *)bed->data;
-	short only_keys= (short)bed->i1;
+	AnimData *adt= (AnimData *)ked->data;
+	short only_keys= (short)ked->i1;
 	
 	/* adjust BezTriple handles only if allowed to */
 	if (only_keys == 0) {
@@ -325,11 +325,11 @@
 }
 
 /* helper function for ANIM_nla_mapping_apply_fcurve() -> "apply", i.e. mapping points to NLA-mapped global time */
-static short bezt_nlamapping_apply(BeztEditData *bed, BezTriple *bezt)
+static short bezt_nlamapping_apply(KeyframeEditData *ked, BezTriple *bezt)
 {
 	/* AnimData block providing scaling is stored in 'data', only_keys option is stored in i1 */
-	AnimData *adt= (AnimData*)bed->data;
-	short only_keys= (short)bed->i1;
+	AnimData *adt= (AnimData*)ked->data;
+	short only_keys= (short)ked->i1;
 	
 	/* adjust BezTriple handles only if allowed to */
 	if (only_keys == 0) {
@@ -349,16 +349,16 @@
  */
 void ANIM_nla_mapping_apply_fcurve (AnimData *adt, FCurve *fcu, short restore, short only_keys)
 {
-	BeztEditData bed;
-	BeztEditFunc map_cb;
+	KeyframeEditData ked;
+	KeyframeEditFunc map_cb;
 	
 	/* init edit data 
 	 *	- AnimData is stored in 'data'
 	 *	- only_keys is stored in 'i1'
 	 */
-	memset(&bed, 0, sizeof(BeztEditData));
-	bed.data= (void *)adt;
-	bed.i1= (int)only_keys;
+	memset(&ked, 0, sizeof(KeyframeEditData));
+	ked.data= (void *)adt;
+	ked.i1= (int)only_keys;
 	
 	/* get editing callback */
 	if (restore)
@@ -367,7 +367,7 @@
 		map_cb= bezt_nlamapping_apply;
 	
 	/* apply to F-Curve */
-	ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, map_cb, NULL);
+	ANIM_fcurve_keyframes_loop(&ked, fcu, NULL, map_cb, NULL);
 }
 
 /* *************************************************** */
@@ -409,12 +409,12 @@
 /* ----------------------- */
 
 /* helper function for ANIM_unit_mapping_apply_fcurve -> mapping callback for unit mapping */
-static short bezt_unit_mapping_apply (BeztEditData *bed, BezTriple *bezt)
+static short bezt_unit_mapping_apply (KeyframeEditData *ked, BezTriple *bezt)
 {
 	/* mapping factor is stored in f1, flags are stored in i1 */
-	short only_keys= (bed->i1 & ANIM_UNITCONV_ONLYKEYS);
-	short sel_vs= (bed->i1 & ANIM_UNITCONV_SELVERTS);
-	float fac= bed->f1;
+	short only_keys= (ked->i1 & ANIM_UNITCONV_ONLYKEYS);
+	short sel_vs= (ked->i1 & ANIM_UNITCONV_SELVERTS);
+	float fac= ked->f1;
 	
 	/* adjust BezTriple handles only if allowed to */
 	if (only_keys == 0) {
@@ -433,8 +433,8 @@
 /* Apply/Unapply units conversions to keyframes */
 void ANIM_unit_mapping_apply_fcurve (Scene *scene, ID *id, FCurve *fcu, short flag)
 {
-	BeztEditData bed;
-	BeztEditFunc sel_cb;
+	KeyframeEditData ked;
+	KeyframeEditFunc sel_cb;
 	float fac;
 	
 	/* calculate mapping factor, and abort if nothing to change */
@@ -446,9 +446,9 @@
 	 *	- mapping factor is stored in f1
 	 *	- flags are stored in 'i1'
 	 */
-	memset(&bed, 0, sizeof(BeztEditData));
-	bed.f1= (float)fac;
-	bed.i1= (int)flag;
+	memset(&ked, 0, sizeof(KeyframeEditData));
+	ked.f1= (float)fac;
+	ked.i1= (int)flag;
 	
 	/* only selected? */
 	if (flag & ANIM_UNITCONV_ONLYSEL)
@@ -457,7 +457,7 @@
 		sel_cb= NULL;
 	
 	/* apply to F-Curve */
-	ANIM_fcurve_keys_bezier_loop(&bed, fcu, sel_cb, bezt_unit_mapping_apply, NULL);
+	ANIM_fcurve_keyframes_loop(&ked, fcu, sel_cb, bezt_unit_mapping_apply, NULL);
 	
 	// FIXME: loop here for samples should be generalised
 	// TODO: only sel?

Modified: branches/render25/source/blender/editors/animation/keyframes_edit.c
===================================================================
--- branches/render25/source/blender/editors/animation/keyframes_edit.c	2010-04-02 15:03:13 UTC (rev 27962)
+++ branches/render25/source/blender/editors/animation/keyframes_edit.c	2010-04-02 16:04:12 UTC (rev 27963)
@@ -61,7 +61,7 @@
 /* This file defines an API and set of callback-operators for non-destructive editing of keyframe data.
  *
  * Two API functions are defined for actually performing the operations on the data:
- *			ANIM_fcurve_keys_bezier_loop()
+ *			ANIM_fcurve_keyframes_loop()
  * which take the data they operate on, a few callbacks defining what operations to perform.
  *

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list