rendered paste bodyIndex: source/blender/python/api2_2x/Modifier.c
===================================================================
--- source/blender/python/api2_2x/Modifier.c (revision 13915)
+++ source/blender/python/api2_2x/Modifier.c (working copy)
@@ -1,5 +1,5 @@
/*
- * $Id: Modifier.c 12840 2007-12-11 01:58:22Z khughes $
+ * $Id$
*
* ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
*
@@ -43,6 +43,7 @@
#include "BKE_library.h"
#include "BLI_blenlib.h"
#include "BLI_arithb.h"
+#include "BDR_editobject.h"
#include "MEM_guardedalloc.h"
#include "butspace.h"
#include "blendef.h"
@@ -155,6 +156,7 @@
static int Modifier_setName( BPy_Modifier * self, PyObject *arg );
static PyObject *Modifier_getType( BPy_Modifier * self );
static PyObject *Modifier_reset( BPy_Modifier * self );
+static PyObject *Modifier_hook( BPy_Modifier * self );
static PyObject *Modifier_getData( BPy_Modifier * self, PyObject * key );
static int Modifier_setData( BPy_Modifier * self, PyObject * key,
@@ -167,6 +169,8 @@
/* name, method, flags, doc */
{"reset", (PyCFunction)Modifier_reset, METH_NOARGS,
"resets a hook modifier location"},
+ {"empty", (PyCFunction)Modifier_hook, METH_NOARGS,
+ "ZanQdo hook!!"},
{NULL, NULL, 0, NULL}
};
@@ -1132,6 +1136,12 @@
Py_RETURN_NONE;
}
+static PyObject *Modifier_hook( BPy_Modifier * self )
+{
+ add_hook_zanqdo();
+ Py_RETURN_NONE;
+}
+
/*****************************************************************************/
/* Function: Modifier_repr */
/* Description: This is a callback function for the BPy_Modifier type. It */
Index: source/blender/include/BDR_editobject.h
===================================================================
--- source/blender/include/BDR_editobject.h (revision 13915)
+++ source/blender/include/BDR_editobject.h (working copy)
@@ -121,6 +121,7 @@
void add_hook(void);
+void add_hook_zanqdo(void);
void hook_select(struct HookModifierData *hmd);
int hook_getIndexArray(int *tot, int **indexar, char *name, float *cent_r);
Index: source/blender/src/editobject.c
===================================================================
--- source/blender/src/editobject.c (revision 13915)
+++ source/blender/src/editobject.c (working copy)
@@ -632,6 +632,62 @@
}
}
+void add_hook_zanqdo(void)
+{
+ HookModifierData *hmd= NULL;
+ ModifierData *md= NULL;
+ Object *ob= NULL;
+ float cent[3];
+ int tot, ok, *indexar;
+ char name[32];
+ Base *base, *newbase;
+
+ ok= hook_getIndexArray(&tot, &indexar, name, cent);
+ if (ok==0) {
+ error("Requires selected vertices or active Vertex Group");
+ return;
+ }
+
+ base= BASACT;
+ ob= add_object(OB_EMPTY);
+ /* set layers ok */
+ newbase= BASACT;
+ newbase->lay= base->lay;
+ ob->lay= newbase->lay;
+
+ /* transform cent to global coords for loc */
+ VecMat4MulVecfl(ob->loc, G.obedit->obmat, cent);
+
+ /* restore, add_object sets active */
+ BASACT= base;
+
+ 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);
+
+ hmd->object= ob;
+ hmd->indexar= indexar;
+ VECCOPY(hmd->cent, cent);
+ hmd->totindex= tot;
+ BLI_strncpy(hmd->name, name, 32);
+
+ 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, NULL, NULL, NULL, NULL, NULL);
+
+ allqueue(REDRAWVIEW3D, 0);
+ allqueue(REDRAWBUTSOBJECT, 0);
+ DAG_scene_sort(G.scene);
+ BIF_undo_push("Add hook");
+}
+
void add_hook(void)
{
ModifierData *md = NULL;