Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2009-09-12 08:03:26 +0400
committerJoseph Eagar <joeedh@gmail.com>2009-09-12 08:03:26 +0400
commit56d37e80a321c48e6ea7748e73aca7553dab2bf4 (patch)
treee79e58a797cdea88c2701828489ac639745670ce /source/blender
parentdb017a3b42251e879bb0bd4fa62528bf127490e2 (diff)
some bugfixes, merge to cursor didn't work
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/modifier.c16
-rw-r--r--source/blender/editors/mesh/bmesh_tools.c14
-rw-r--r--source/blender/makesrna/intern/rna_mesh.c4
3 files changed, 18 insertions, 16 deletions
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 6d266af809f..c42b894653d 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -2203,20 +2203,20 @@ typedef struct MemBase {
BLI_mempool *vertuserpool;
} MemBase;
-static EdgeData *edge_get_next(EdgeData *e, int ov) {
+BM_INLINE EdgeData *edge_get_next(EdgeData *e, int ov) {
if (ov == e->v1)
return e->v1node.next ? e->v1node.next->edge : NULL;
else return e->v2node.next ? e->v2node.next->edge : NULL;
}
-static EdgeNode *edge_get_node(EdgeData *e, int ov)
+BM_INLINE EdgeNode *edge_get_node(EdgeData *e, int ov)
{
if (ov == e->v1)
return &e->v1node;
else return &e->v2node;
}
-static VertUser *edge_get_vuser(MemBase *b, EdgeData *edge, int ov)
+BM_INLINE VertUser *edge_get_vuser(MemBase *b, EdgeData *edge, int ov)
{
if (ov == edge->v1)
return edge->v1user;
@@ -2228,7 +2228,7 @@ static VertUser *edge_get_vuser(MemBase *b, EdgeData *edge, int ov)
}
}
-static void edge_set_vuser(MemBase *b, EdgeData *e, int ov, VertUser *vu)
+BM_INLINE void edge_set_vuser(MemBase *b, EdgeData *e, int ov, VertUser *vu)
{
VertUser *olduser = edge_get_vuser(b, e, ov);
@@ -2245,14 +2245,14 @@ static void edge_set_vuser(MemBase *b, EdgeData *e, int ov, VertUser *vu)
else e->v2user = vu;
}
-static VertUser *new_vuser(MemBase *base)
+BM_INLINE VertUser *new_vuser(MemBase *base)
{
VertUser *vusr = BLI_mempool_calloc(base->vertuserpool);
return vusr;
}
-static MemBase *new_membase(void)
+BM_INLINE MemBase *new_membase(void)
{
MemBase *b = MEM_callocN(sizeof(MemBase), "MemBase for edgesplit in modifier.c");
b->vertuserpool = BLI_mempool_create(sizeof(VertUser), 1, 2048);
@@ -2260,13 +2260,13 @@ static MemBase *new_membase(void)
return b;
}
-static void free_membase(MemBase *b)
+BM_INLINE void free_membase(MemBase *b)
{
BLI_mempool_destroy(b->vertuserpool);
MEM_freeN(b);
}
-static EdgeData *edge_get_first(VertUser *vu)
+BM_INLINE EdgeData *edge_get_first(VertUser *vu)
{
return vu->users.first ? ((EdgeNode*)vu->users.first)->edge : NULL;
}
diff --git a/source/blender/editors/mesh/bmesh_tools.c b/source/blender/editors/mesh/bmesh_tools.c
index e02707c7a67..780c65f921b 100644
--- a/source/blender/editors/mesh/bmesh_tools.c
+++ b/source/blender/editors/mesh/bmesh_tools.c
@@ -2598,16 +2598,18 @@ static int merge_firstlast(BMEditMesh *em, int first, int uvmerge, wmOperator *w
return OPERATOR_FINISHED;
}
-static int merge_target(BMEditMesh *em, Scene *scene, View3D *v3d,
+static int merge_target(BMEditMesh *em, Scene *scene, View3D *v3d, Object *ob,
int target, int uvmerge, wmOperator *wmop)
{
BMIter iter;
BMVert *v;
- float *co, cent[3] = {0.0f, 0.0f, 0.0f}, fac;
+ float *vco, co[3], cent[3] = {0.0f, 0.0f, 0.0f}, fac;
int i;
if (target) {
- co = give_cursor(scene, v3d);
+ vco = give_cursor(scene, v3d);
+ VECCOPY(co, vco);
+ Mat4MulVecfl(ob->imat, co);
} else {
i = 0;
BM_ITER(v, &iter, em->bm, BM_VERTS_OF_MESH, NULL) {
@@ -2622,7 +2624,7 @@ static int merge_target(BMEditMesh *em, Scene *scene, View3D *v3d,
fac = 1.0f / (float)i;
VECMUL(cent, fac);
- co = cent;
+ VECCOPY(co, cent);
}
if (!co)
@@ -2649,10 +2651,10 @@ static int merge_exec(bContext *C, wmOperator *op)
switch(RNA_enum_get(op->ptr, "type")) {
case 3:
- status = merge_target(em, scene, v3d, 0, uvs, op);
+ status = merge_target(em, scene, v3d, obedit, 0, uvs, op);
break;
case 4:
- status = merge_target(em, scene, v3d, 1, uvs, op);
+ status = merge_target(em, scene, v3d, obedit, 1, uvs, op);
break;
case 1:
status = merge_firstlast(em, 0, uvs, op);
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index c930f59fe35..a94ef66cccb 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -447,7 +447,7 @@ static void rna_MeshTextureFaceLayer_name_set(PointerRNA *ptr, const char *value
Mesh *me= (Mesh*)ptr->id.data;
CustomDataLayer *cdl= (CustomDataLayer*)ptr->data;
BLI_strncpy(cdl->name, value, sizeof(cdl->name));
- CustomData_set_layer_unique_name(&me->pdata, cdl - me->pdata.layers);
+ CustomData_set_layer_unique_name(&me->pdata, cdl - rna_mesh_pdata(me)->layers);
}
static int rna_vertex_color_check(CollectionPropertyIterator *iter, void *data)
@@ -563,7 +563,7 @@ static void rna_MeshColorLayer_name_set(PointerRNA *ptr, const char *value)
Mesh *me= (Mesh*)ptr->id.data;
CustomDataLayer *cdl= (CustomDataLayer*)ptr->data;
BLI_strncpy(cdl->name, value, sizeof(cdl->name));
- CustomData_set_layer_unique_name(&me->ldata, cdl - me->ldata.layers);
+ CustomData_set_layer_unique_name(&me->ldata, cdl - rna_mesh_pdata(me)->layers);
}
static void rna_MeshFloatPropertyLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)