[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18447] branches/blender2.5/blender/source /blender/editors/transform: 2.5

Martin Poirier theeth at yahoo.com
Sat Jan 10 20:45:49 CET 2009


Revision: 18447
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18447
Author:   theeth
Date:     2009-01-10 20:45:48 +0100 (Sat, 10 Jan 2009)

Log Message:
-----------
2.5

Transform operator replay support for constraints.

Code isn't nice, will have to split some properties to separate what's part of the "saved data" from operator arguments.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/transform/transform.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_constraints.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-01-10 19:34:23 UTC (rev 18446)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-01-10 19:45:48 UTC (rev 18447)
@@ -710,9 +710,9 @@
 							stopConstraint(t);
 						}
 						else {
-							if (event->keymodifier == 0)
+							if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
 								setUserConstraint(t, (CON_AXIS0), "along %s X");
-							else if (event->keymodifier == KM_SHIFT)
+							else if (t->modifiers & MOD_CONSTRAINT_PLANE)
 								setUserConstraint(t, (CON_AXIS1|CON_AXIS2), "locking %s X");
 						}
 					}
@@ -722,9 +722,9 @@
 						setConstraint(t, mati, (CON_AXIS0), "along X axis");
 					}
 					else {
-						if (event->keymodifier == 0)
+						if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
 							setConstraint(t, mati, (CON_AXIS0), "along global X");
-						else if (event->keymodifier == KM_SHIFT)
+						else if (t->modifiers & MOD_CONSTRAINT_PLANE)
 							setConstraint(t, mati, (CON_AXIS1|CON_AXIS2), "locking global X");
 					}
 				}
@@ -742,9 +742,9 @@
 							stopConstraint(t);
 						}
 						else {
-							if (event->keymodifier == 0)
+							if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
 								setUserConstraint(t, (CON_AXIS1), "along %s Y");
-							else if (event->keymodifier == KM_SHIFT)
+							else if (t->modifiers & MOD_CONSTRAINT_PLANE)
 								setUserConstraint(t, (CON_AXIS0|CON_AXIS2), "locking %s Y");
 						}
 					}
@@ -754,9 +754,9 @@
 						setConstraint(t, mati, (CON_AXIS1), "along Y axis");
 					}
 					else {
-						if (event->keymodifier == 0)
+						if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
 							setConstraint(t, mati, (CON_AXIS1), "along global Y");
-						else if (event->keymodifier == KM_SHIFT)
+						else if (t->modifiers & MOD_CONSTRAINT_PLANE)
 							setConstraint(t, mati, (CON_AXIS0|CON_AXIS2), "locking global Y");
 					}
 				}
@@ -770,16 +770,16 @@
 						stopConstraint(t);
 					}
 					else {
-						if (event->keymodifier == 0)
+						if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
 							setUserConstraint(t, (CON_AXIS2), "along %s Z");
-						else if ((event->keymodifier == KM_SHIFT) && ((t->flag & T_2D_EDIT)==0))
+						else if ((t->modifiers & MOD_CONSTRAINT_PLANE) && ((t->flag & T_2D_EDIT)==0))
 							setUserConstraint(t, (CON_AXIS0|CON_AXIS1), "locking %s Z");
 					}
 				}
 				else if ((t->flag & T_2D_EDIT)==0) {
-					if (event->keymodifier == 0)
+					if ((t->modifiers & MOD_CONSTRAINT_PLANE) == 0)
 						setConstraint(t, mati, (CON_AXIS2), "along global Z");
-					else if (event->keymodifier == KM_SHIFT)
+					else if (t->modifiers & MOD_CONSTRAINT_PLANE)
 						setConstraint(t, mati, (CON_AXIS0|CON_AXIS1), "locking global Z");
 				}
 				t->redraw = 1;
@@ -963,9 +963,16 @@
 
 void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
 {
+	short twmode= (t->spacetype==SPACE_VIEW3D)? ((View3D*)t->view)->twmode: V3D_MANIP_GLOBAL;
+
 	RNA_int_set(op->ptr, "mode", t->mode);
 	RNA_int_set(op->ptr, "options", t->options);
 	RNA_float_set_array(op->ptr, "values", t->values);
+
+	
+	RNA_int_set(op->ptr, "constraint_mode", t->con.mode);
+	RNA_int_set(op->ptr, "constraint_orientation", twmode);
+	RNA_float_set_array(op->ptr, "constraint_matrix", (float*)t->con.mtx);
 }
 
 void initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
@@ -1105,6 +1112,19 @@
 		QUATCOPY(t->values, values); /* vec-4 */
 	}
 
+	/* Constraint init from operator */
+	{
+		t->con.mode = RNA_int_get(op->ptr, "constraint_mode");
+		
+		if (t->con.mode & CON_APPLY)
+		{
+			//int options = RNA_int_get(op->ptr, "options");
+			RNA_float_get_array(op->ptr, "constraint_matrix", (float*)t->spacemtx);
+			
+			setUserConstraint(t, t->con.mode, "%s");		
+		}
+
+	}
 }
 
 void transformApply(bContext *C, TransInfo *t)

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_constraints.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_constraints.c	2009-01-10 19:34:23 UTC (rev 18446)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_constraints.c	2009-01-10 19:45:48 UTC (rev 18447)
@@ -525,12 +525,13 @@
 
 	switch(twmode) {
 	case V3D_MANIP_GLOBAL:
-	/*
-		sprintf(text, ftext, "global");
-		Mat3One(mtx);
-		setConstraint(t, mtx, mode, text);
+		{
+			float mtx[3][3];
+			sprintf(text, ftext, "global");
+			Mat3One(mtx);
+			setConstraint(t, mtx, mode, text);
+		}
 		break;
-	*/
 	case V3D_MANIP_LOCAL:
 		sprintf(text, ftext, "local");
 		setLocalConstraint(t, mode, text);

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c	2009-01-10 19:34:23 UTC (rev 18446)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c	2009-01-10 19:45:48 UTC (rev 18447)
@@ -763,8 +763,6 @@
 {
 	TransData *td;
 
-	stopConstraint(t);
-	
 	if (t->draw_handle)
 	{
 		ED_region_draw_cb_exit(t->ar->type, t->draw_handle);

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c	2009-01-10 19:34:23 UTC (rev 18446)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c	2009-01-10 19:45:48 UTC (rev 18447)
@@ -108,8 +108,6 @@
 	
 	transformEnd(C, t);
 
-	//ED_region_tag_redraw(CTX_wm_region(C));
-
 	transformops_exit(C, op);
 	
 	return OPERATOR_FINISHED;
@@ -138,6 +136,7 @@
 {
 	PropertyRNA *prop;
 	static float value[4] = {0, 0, 0};
+	static float mtx[3][3] = {{1, 0, 0},{0, 1, 0},{0, 0, 1}};
 	
 	/* identifiers */
 	ot->name   = "Transform";
@@ -157,6 +156,13 @@
 	prop = RNA_def_property(ot->srna, "values", PROP_FLOAT, PROP_VECTOR);
 	RNA_def_property_array(prop, 4);
 	RNA_def_property_float_array_default(prop, value);
+
+	RNA_def_property(ot->srna, "constraint_orientation", PROP_INT, PROP_NONE);
+	RNA_def_property(ot->srna, "constraint_mode", PROP_INT, PROP_NONE);
+
+	prop = RNA_def_property(ot->srna, "constraint_matrix", PROP_FLOAT, PROP_MATRIX);
+	RNA_def_property_array(prop, 9);
+	RNA_def_property_float_array_default(prop, mtx);
 }
 
 void transform_operatortypes(void)





More information about the Bf-blender-cvs mailing list