[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13923] trunk/blender/source/blender: Split the add_hook function into two parts ( user interaction + actual operations)

Joshua Leung aligorith at gmail.com
Sat Mar 1 04:45:05 CET 2008


Revision: 13923
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13923
Author:   aligorith
Date:     2008-03-01 04:45:04 +0100 (Sat, 01 Mar 2008)

Log Message:
-----------
Split the add_hook function into two parts (user interaction + actual operations)

Modified Paths:
--------------
    trunk/blender/source/blender/include/BDR_editobject.h
    trunk/blender/source/blender/src/editobject.c
    trunk/blender/source/blender/src/header_view3d.c
    trunk/blender/source/blender/src/space.c

Modified: trunk/blender/source/blender/include/BDR_editobject.h
===================================================================
--- trunk/blender/source/blender/include/BDR_editobject.h	2008-03-01 03:42:09 UTC (rev 13922)
+++ trunk/blender/source/blender/include/BDR_editobject.h	2008-03-01 03:45:04 UTC (rev 13923)
@@ -120,7 +120,8 @@
 void hookmenu(void); /* object mode hook menu */
 
 
-void add_hook(void);
+void add_hook_menu(void);
+void add_hook(int mode);
 void hook_select(struct HookModifierData *hmd);
 int hook_getIndexArray(int *tot, int **indexar, char *name, float *cent_r);
 

Modified: trunk/blender/source/blender/src/editobject.c
===================================================================
--- trunk/blender/source/blender/src/editobject.c	2008-03-01 03:42:09 UTC (rev 13922)
+++ trunk/blender/source/blender/src/editobject.c	2008-03-01 03:45:04 UTC (rev 13923)
@@ -632,14 +632,12 @@
 	}
 }
 
-void add_hook(void)
+void add_hook_menu(void)
 {
 	ModifierData *md = NULL;
 	HookModifierData *hmd = NULL;
 	Object *ob=NULL;
 	int mode;
-
-	if(G.obedit==NULL) return;
 	
 	if(modifiers_findByType(G.obedit, eModifierType_Hook))
 		mode= pupmenu("Hooks %t|Add, To New Empty %x1|Add, To Selected Object %x2|Remove... %x3|Reassign... %x4|Select... %x5|Clear Offset...%x6");
@@ -649,7 +647,6 @@
 	if(mode<1) return;
 	
 	/* preconditions */
-
 	if(mode==2) { /* selected object */
 		Base *base= FIRSTBASE;
 		while(base) {
@@ -706,11 +703,28 @@
 				a++;
 			}
 		}
-
+		
 		hmd = (HookModifierData*) md;
 		ob= hmd->object;
 	}
+	
+	/* do operations */
+	add_hook(mode);
+	
+	allqueue(REDRAWVIEW3D, 0);
+	allqueue(REDRAWBUTSOBJECT, 0);
+	
+	BIF_undo_push("Add hook");
+}
 
+void add_hook(int mode)
+{
+	ModifierData *md = NULL;
+	HookModifierData *hmd = NULL;
+	Object *ob=NULL;
+
+	if(G.obedit==NULL) return;
+	
 	/* do it, new hooks or reassign */
 	if(mode==1 || mode==2 || mode==4) {
 		float cent[3];
@@ -718,7 +732,7 @@
 		char name[32];
 		
 		ok = hook_getIndexArray(&tot, &indexar, name, cent);
-
+		
 		if(ok==0) {
 			error("Requires selected vertices or active Vertex Group");
 		}
@@ -726,7 +740,7 @@
 			
 			if(mode==1) {
 				Base *base= BASACT, *newbase;
-
+				
 				ob= add_object(OB_EMPTY);
 				/* set layers OK */
 				newbase= BASACT;
@@ -740,15 +754,15 @@
 				BASACT= base;
 			}
 			/* if mode is 2 or 4, ob has been set */
-									
+			
 			/* new hook */
 			if(mode==1 || mode==2) {
 				ModifierData *md = G.obedit->modifiers.first;
-
+				
 				while (md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform) {
 					md = md->next;
 				}
-
+				
 				hmd = (HookModifierData*) modifier_new(eModifierType_Hook);
 				BLI_insertlinkbefore(&G.obedit->modifiers, md, hmd);
 				sprintf(hmd->modifier.name, "Hook-%s", ob->id.name+2);
@@ -767,7 +781,7 @@
 				/*        (parentinv         )                          */
 				
 				where_is_object(ob);
-		
+				
 				Mat4Invert(ob->imat, ob->obmat);
 				/* apparently this call goes from right to left... */
 				Mat4MulSerie(hmd->parentinv, ob->imat, G.obedit->obmat, NULL, 
@@ -784,18 +798,14 @@
 	}
 	else if(mode==6) { /* clear offset */
 		where_is_object(ob);	/* ob is hook->parent */
-
+		
 		Mat4Invert(ob->imat, ob->obmat);
 		/* this call goes from right to left... */
 		Mat4MulSerie(hmd->parentinv, ob->imat, G.obedit->obmat, NULL, 
 					NULL, NULL, NULL, NULL, NULL);
 	}
 
-	allqueue(REDRAWVIEW3D, 0);
-	allqueue(REDRAWBUTSOBJECT, 0);
 	DAG_scene_sort(G.scene);
-	
-	BIF_undo_push("Add hook");
 }
 
 void make_track(void)

Modified: trunk/blender/source/blender/src/header_view3d.c
===================================================================
--- trunk/blender/source/blender/src/header_view3d.c	2008-03-01 03:42:09 UTC (rev 13922)
+++ trunk/blender/source/blender/src/header_view3d.c	2008-03-01 03:45:04 UTC (rev 13923)
@@ -2609,7 +2609,7 @@
 		DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);
 		break;
 	case 6: /* add hook */
-		add_hook();
+		add_hook_menu();
 		break;
 	case 7: /* rip */
 		mesh_rip();
@@ -3195,7 +3195,7 @@
 		make_parent();
 		break;
 	case 6: /* add hook */
-		add_hook();
+		add_hook_menu();
 		break;
 	case 7:
 		separate_nurb();

Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c	2008-03-01 03:42:09 UTC (rev 13922)
+++ trunk/blender/source/blender/src/space.c	2008-03-01 03:45:04 UTC (rev 13923)
@@ -2009,7 +2009,7 @@
 				if(G.obedit) {
 					if(G.obedit->type==OB_MESH) {
 						if(G.qual==LR_CTRLKEY)
-							add_hook();
+							add_hook_menu();
 						else if(G.qual==LR_ALTKEY)
 							reveal_mesh();
 						else if((G.qual==LR_SHIFTKEY))
@@ -2019,7 +2019,7 @@
 					}
 					else if(G.obedit->type== OB_SURF) {
 						if(G.qual==LR_CTRLKEY)
-							add_hook();
+							add_hook_menu();
 						else if(G.qual==LR_ALTKEY)
 							revealNurb();
 						else if((G.qual==LR_SHIFTKEY))
@@ -2029,7 +2029,7 @@
 					}
 					else if(G.obedit->type==OB_CURVE) {
 						if(G.qual==LR_CTRLKEY)
-							add_hook();
+							add_hook_menu();
 						else if(G.qual==LR_ALTKEY)
 							revealNurb();
 						/* should be G.qual==LR_SHIFTKEY, but that is taken fro handles already */
@@ -2052,7 +2052,7 @@
 						}
 					}
 					else if(G.obedit->type==OB_LATTICE) {
-						if(G.qual==LR_CTRLKEY) add_hook();
+						if(G.qual==LR_CTRLKEY) add_hook_menu();
 					}
 					else if(G.obedit->type==OB_MBALL) {
 						if(G.qual==LR_ALTKEY)





More information about the Bf-blender-cvs mailing list