[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29738] trunk/blender/source/blender/ blenkernel: Recalculate motherball when metaball is deleting
Sergey Sharybin
g.ulairi at gmail.com
Sun Jun 27 14:45:09 CEST 2010
Revision: 29738
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29738
Author: nazgul
Date: 2010-06-27 14:45:09 +0200 (Sun, 27 Jun 2010)
Log Message:
-----------
Recalculate motherball when metaball is deleting
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_mball.h
trunk/blender/source/blender/blenkernel/intern/mball.c
trunk/blender/source/blender/blenkernel/intern/object.c
Modified: trunk/blender/source/blender/blenkernel/BKE_mball.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mball.h 2010-06-27 11:37:34 UTC (rev 29737)
+++ trunk/blender/source/blender/blenkernel/BKE_mball.h 2010-06-27 12:45:09 UTC (rev 29738)
@@ -168,6 +168,7 @@
void copy_mball_properties(struct Scene *scene, struct Object *active_object);
struct Object *find_basis_mball(struct Scene *scene, struct Object *ob);
int is_basis_mball(struct Object *ob);
+int is_mball_basis_for(struct Object *ob1, struct Object *ob2);
void metaball_polygonize(struct Scene *scene, struct Object *ob);
void calc_mballco(struct MetaElem *ml, float *vec);
float densfunc(struct MetaElem *ball, float x, float y, float z);
Modified: trunk/blender/source/blender/blenkernel/intern/mball.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mball.c 2010-06-27 11:37:34 UTC (rev 29737)
+++ trunk/blender/source/blender/blenkernel/intern/mball.c 2010-06-27 12:45:09 UTC (rev 29738)
@@ -275,6 +275,19 @@
return 1;
}
+/* return nonzero if ob1 is a basis mball for ob */
+int is_mball_basis_for(Object *ob1, Object *ob2)
+{
+ int basis1nr, basis2nr;
+ char basis1name[32], basis2name[32];
+
+ splitIDname(ob1->id.name+2, basis1name, &basis1nr);
+ splitIDname(ob2->id.name+2, basis2name, &basis2nr);
+
+ if(!strcmp(basis1name, basis2name)) return is_basis_mball(ob1);
+ else return 0;
+}
+
/* \brief copy some properties from object to other metaball object with same base name
*
* When some properties (wiresize, threshold, update flags) of metaball are changed, then this properties
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2010-06-27 11:37:34 UTC (rev 29737)
+++ trunk/blender/source/blender/blenkernel/intern/object.c 2010-06-27 12:45:09 UTC (rev 29738)
@@ -404,6 +404,9 @@
if(pchan->custom==ob)
pchan->custom= NULL;
}
+ } else if(ELEM(OB_MBALL, ob->type, obt->type)) {
+ if(is_mball_basis_for(obt, ob))
+ obt->recalc|= OB_RECALC_DATA;
}
sca_remove_ob_poin(obt, ob);
@@ -536,13 +539,7 @@
}
tex= tex->id.next;
}
-
- /* mballs (scene==NULL when called from library.c) */
- if(scene && ob->type==OB_MBALL) {
- obt= find_basis_mball(scene, ob);
- if(obt) freedisplist(&obt->disp);
- }
-
+
/* worlds */
wrld= G.main->world.first;
while(wrld) {
More information about the Bf-blender-cvs
mailing list