[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