This commit is contained in:
Campbell Barton
2011-09-03 12:39:17 +00:00
4 changed files with 37 additions and 12 deletions

View File

@@ -183,7 +183,7 @@ class _GenericBone:
@property
def center(self):
"""The midpoint between the head and the tail."""
return (self.head + self.tail) * 0.5
return self.head.lerp(self.tail, 0.5)
@property
def length(self):
@@ -568,7 +568,7 @@ class _GenericUI:
draw_funcs = cls._dyn_ui_initialize()
try:
draw_funcs.remove(draw_func)
except:
except ValueError:
pass

View File

@@ -620,7 +620,7 @@ void bmesh_to_mesh_exec(BMesh *bm, BMOperator *op) {
int i,j;
for (ob=G.main->object.first; ob; ob=ob->id.next) {
if (ob->parent==ob && ELEM(ob->partype, PARVERT1,PARVERT3)) {
if (ob->parent==bm->ob && ELEM(ob->partype, PARVERT1,PARVERT3)) {
/* duplicate code from below, make it function later...? */
if (!vertMap) {

View File

@@ -65,6 +65,7 @@
#include "ED_curve.h"
#include "ED_mesh.h"
#include "ED_lattice.h"
#include "ED_screen.h"
#include "WM_types.h"
@@ -297,7 +298,7 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo
return totvert;
}
static int object_hook_index_array(Object *obedit, int *tot, int **indexar, char *name, float *cent_r)
static int object_hook_index_array(Scene *scene, Object *obedit, int *tot, int **indexar, char *name, float *cent_r)
{
*indexar= NULL;
*tot= 0;
@@ -307,7 +308,10 @@ static int object_hook_index_array(Object *obedit, int *tot, int **indexar, char
case OB_MESH:
{
Mesh *me= obedit->data;
BMEditMesh *em = me->edit_btmesh;
BMEditMesh *em;
EDBM_LoadEditBMesh(scene, obedit);
EDBM_MakeEditBMesh(scene->toolsettings, scene, obedit);
em = me->edit_btmesh;
/* check selected vertices first */
if( return_editmesh_indexar(em, tot, indexar, cent_r)) {
@@ -319,10 +323,15 @@ static int object_hook_index_array(Object *obedit, int *tot, int **indexar, char
}
case OB_CURVE:
case OB_SURF:
load_editNurb(obedit);
make_editNurb(obedit);
return return_editcurve_indexar(obedit, tot, indexar, cent_r);
case OB_LATTICE:
{
Lattice *lt= obedit->data;
load_editLatt(obedit);
make_editLatt(obedit);
return return_editlattice_indexar(lt->editlatt->latt, tot, indexar, cent_r);
}
default:
@@ -430,7 +439,7 @@ static void add_hook_object(Main *bmain, Scene *scene, Object *obedit, Object *o
int tot, ok, *indexar;
char name[32];
ok = object_hook_index_array(obedit, &tot, &indexar, name, cent);
ok = object_hook_index_array(scene, obedit, &tot, &indexar, name, cent);
if (!ok) return; // XXX error("Requires selected vertices or active Vertex Group");
@@ -763,7 +772,7 @@ static int object_hook_assign_exec(bContext *C, wmOperator *op)
/* assign functionality */
if(!object_hook_index_array(ob, &tot, &indexar, name, cent)) {
if(!object_hook_index_array(CTX_data_scene(C), ob, &tot, &indexar, name, cent)) {
BKE_report(op->reports, RPT_WARNING, "Requires selected vertices or active vertex group");
return OPERATOR_CANCELLED;
}

View File

@@ -92,6 +92,8 @@
#include "ED_armature.h"
#include "ED_curve.h"
#include "ED_lattice.h"
#include "ED_mesh.h"
#include "ED_keyframing.h"
#include "ED_object.h"
#include "ED_screen.h"
@@ -124,7 +126,11 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op)
if(obedit->type==OB_MESH) {
Mesh *me= obedit->data;
BMEditMesh *em = me->edit_btmesh;
BMEditMesh *em;
EDBM_LoadEditBMesh(scene, obedit);
EDBM_MakeEditBMesh(scene->toolsettings, scene, obedit);
em = me->edit_btmesh;
BM_ITER(eve, &iter, em->bm, BM_VERTS_OF_MESH, NULL) {
if (BM_TestHFlag(eve, BM_SELECT)) {
@@ -137,8 +143,13 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op)
}
}
else if(ELEM(obedit->type, OB_SURF, OB_CURVE)) {
ListBase *editnurb= curve_get_editcurve(obedit);
ListBase *editnurb;
load_editNurb(obedit);
make_editNurb(obedit);
editnurb= curve_get_editcurve(obedit);
cu= obedit->data;
nu= editnurb->first;
@@ -177,8 +188,13 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op)
}
}
else if(obedit->type==OB_LATTICE) {
Lattice *lt= obedit->data;
Lattice *lt;
load_editLatt(obedit);
make_editLatt(obedit);
lt= obedit->data;
a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw;
bp= lt->editlatt->latt->def;
while(a--) {