[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27145] trunk/blender/source/blender/ editors/space_view3d/view3d_view.c: fix for camera rig that has locking on the camera but not the parent.

Campbell Barton ideasman42 at gmail.com
Thu Feb 25 22:20:01 CET 2010


Revision: 27145
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27145
Author:   campbellbarton
Date:     2010-02-25 22:20:00 +0100 (Thu, 25 Feb 2010)

Log Message:
-----------
fix for camera rig that has locking on the camera but not the parent.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_view.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2010-02-25 21:10:43 UTC (rev 27144)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2010-02-25 21:20:00 UTC (rev 27145)
@@ -2500,12 +2500,10 @@
 			interp_v3_v3v3(dvec, dvec_tmp, fly->dvec_prev, (1.0f/(1.0f+(time_redraw*5.0f))));
 
 			if (rv3d->persp==RV3D_CAMOB) {
-				if (v3d->camera->protectflag & OB_LOCK_LOCX)
-					dvec[0] = 0.0;
-				if (v3d->camera->protectflag & OB_LOCK_LOCY)
-					dvec[1] = 0.0;
-				if (v3d->camera->protectflag & OB_LOCK_LOCZ)
-					dvec[2] = 0.0;
+				Object *lock_ob= fly->root_parent ? fly->root_parent : fly->v3d->camera;
+				if (lock_ob->protectflag & OB_LOCK_LOCX) dvec[0] = 0.0;
+				if (lock_ob->protectflag & OB_LOCK_LOCY) dvec[1] = 0.0;
+				if (lock_ob->protectflag & OB_LOCK_LOCZ) dvec[2] = 0.0;
 			}
 
 			add_v3_v3v3(rv3d->ofs, rv3d->ofs, dvec);
@@ -2536,11 +2534,18 @@
 					mul_m4_m4m4(parent_mat, fly->root_parent->obmat, diff_mat);
 					object_apply_mat4(fly->root_parent, parent_mat);
 
-					where_is_object(scene, fly->root_parent);
+					// where_is_object(scene, fly->root_parent);
 
+					Object *up= v3d->camera->parent;
+					while(up) {
+						DAG_id_flush_update(&up->id, OB_RECALC_OB);
+						up= up->parent;
+					}
+
 					copy_m4_m4(prev_view_mat, view_mat);
 
 					id_key= &fly->root_parent->id;
+
 				}
 				else {
 					float view_mat[4][4];





More information about the Bf-blender-cvs mailing list