[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40343] trunk/blender/source/blender/ editors/object: Fix for add hook/vertex parent for meshes

Sergey Sharybin g.ulairi at gmail.com
Mon Sep 19 10:25:32 CEST 2011


Revision: 40343
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40343
Author:   nazgul
Date:     2011-09-19 08:25:31 +0000 (Mon, 19 Sep 2011)
Log Message:
-----------
Fix for add hook/vertex parent for meshes

The only way to achieve this is to re-load editMesh.
After this commit you can't iterate through vertices and insert
hooks/parents from script anymore -- this operators are now
treated as topology-changing and shouldn't be used when iterating
via geometries.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_hook.c
    trunk/blender/source/blender/editors/object/object_relations.c

Modified: trunk/blender/source/blender/editors/object/object_hook.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_hook.c	2011-09-19 08:11:30 UTC (rev 40342)
+++ trunk/blender/source/blender/editors/object/object_hook.c	2011-09-19 08:25:31 UTC (rev 40343)
@@ -292,7 +292,7 @@
 	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;
@@ -302,8 +302,13 @@
 		case OB_MESH:
 		{
 			Mesh *me= obedit->data;
-			EditMesh *em = BKE_mesh_get_editmesh(me);
+			EditMesh *em;
 
+			load_editMesh(scene, obedit);
+			make_editMesh(scene, obedit);
+
+			em = BKE_mesh_get_editmesh(me);
+
 			/* check selected vertices first */
 			if( return_editmesh_indexar(em, tot, indexar, cent_r)) {
 				BKE_mesh_end_editmesh(me, em);
@@ -427,7 +432,7 @@
 	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");
 	
@@ -760,7 +765,7 @@
 	
 	/* 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;
 	}

Modified: trunk/blender/source/blender/editors/object/object_relations.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_relations.c	2011-09-19 08:11:30 UTC (rev 40342)
+++ trunk/blender/source/blender/editors/object/object_relations.c	2011-09-19 08:25:31 UTC (rev 40343)
@@ -95,6 +95,7 @@
 #include "ED_object.h"
 #include "ED_screen.h"
 #include "ED_view3d.h"
+#include "ED_mesh.h"
 
 #include "object_intern.h"
 
@@ -122,8 +123,13 @@
 	
 	if(obedit->type==OB_MESH) {
 		Mesh *me= obedit->data;
-		EditMesh *em = BKE_mesh_get_editmesh(me);
+		EditMesh *em;
 
+		load_editMesh(scene, obedit);
+		make_editMesh(scene, obedit);
+
+		em = BKE_mesh_get_editmesh(me);
+
 		eve= em->verts.first;
 		while(eve) {
 			if(eve->f & 1) {




More information about the Bf-blender-cvs mailing list