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:
authorTon Roosendaal <ton@blender.org>2006-11-15 14:10:00 +0300
committerTon Roosendaal <ton@blender.org>2006-11-15 14:10:00 +0300
commite50112d441aca2d43387f20cb54bd6ee02781fb0 (patch)
tree62bc44c9064164156a5d65f1e53caadcdb1ebfb5 /source/blender/src/editmesh.c
parenta3c1c543f6e1bcb4a2151b6be0786247887bb14c (diff)
Bugfix #5230
Vertex Parent option didn't have index correction for editing Meshes. That caused the parenting to flip around when you deleted or added stuff.
Diffstat (limited to 'source/blender/src/editmesh.c')
-rw-r--r--source/blender/src/editmesh.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c
index 34fb0f1d17a..820c6ca0f73 100644
--- a/source/blender/src/editmesh.c
+++ b/source/blender/src/editmesh.c
@@ -1197,7 +1197,7 @@ void load_editMesh(void)
me->mcol = CustomData_get(&mfdata, 0, LAYERTYPE_MCOL);
CustomData_free(&mfdata);
- /* patch hook indices */
+ /* patch hook indices and vertex parents */
{
Object *ob;
ModifierData *md;
@@ -1205,6 +1205,31 @@ void load_editMesh(void)
int i,j;
for (ob=G.main->object.first; ob; ob=ob->id.next) {
+ if (ob->parent==G.obedit && ELEM(ob->partype, PARVERT1,PARVERT3)) {
+
+ /* duplicate code from below, make it function later...? */
+ if (!vertMap) {
+ vertMap = MEM_callocN(sizeof(*vertMap)*ototvert, "vertMap");
+
+ for (eve=em->verts.first; eve; eve=eve->next) {
+ if (eve->keyindex!=-1)
+ vertMap[eve->keyindex] = eve;
+ }
+ }
+ if(ob->par1 < ototvert) {
+ eve = vertMap[ob->par1];
+ if(eve) ob->par1= eve->tmp.l;
+ }
+ if(ob->par2 < ototvert) {
+ eve = vertMap[ob->par2];
+ if(eve) ob->par2= eve->tmp.l;
+ }
+ if(ob->par3 < ototvert) {
+ eve = vertMap[ob->par3];
+ if(eve) ob->par3= eve->tmp.l;
+ }
+
+ }
if (ob->data==me) {
for (md=ob->modifiers.first; md; md=md->next) {
if (md->type==eModifierType_Hook) {