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:
authorCampbell Barton <ideasman42@gmail.com>2010-07-13 20:06:51 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-07-13 20:06:51 +0400
commit8ee36e1da56b10a84e02ba9790fbcafbdbf43f51 (patch)
tree004230f80e18ad61506952b8a5dea6189c8a2571 /source/blender/blenkernel/intern/mball.c
parentea143875f7b26654d0d2bb07d6510c0060877375 (diff)
- fix for eternal loop with metaballs in set scenes.
- next_object() now loops through all set scenes, not just the first one. - removed F_SET, rather them having a mode for looping on a set, just use the set when the first scene ends. - metaballs can now glob between scenes however there are still some depsgraph issues that existed before.
Diffstat (limited to 'source/blender/blenkernel/intern/mball.c')
-rw-r--r--source/blender/blenkernel/intern/mball.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index c41dcfa9588..e35d8bce886 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -296,6 +296,7 @@ int is_mball_basis_for(Object *ob1, Object *ob2)
* because this metaball influence polygonisation of metaballs. */
void copy_mball_properties(Scene *scene, Object *active_object)
{
+ Scene *sce_iter= scene;
Base *base;
Object *ob;
MetaBall *active_mball = (MetaBall*)active_object->data;
@@ -305,10 +306,10 @@ void copy_mball_properties(Scene *scene, Object *active_object)
splitIDname(active_object->id.name+2, basisname, &basisnr);
/* XXX recursion check, see scene.c, just too simple code this next_object() */
- if(F_ERROR==next_object(scene, 0, 0, 0))
+ if(F_ERROR==next_object(&sce_iter, 0, 0, 0))
return;
- while(next_object(scene, 1, &base, &ob)) {
+ while(next_object(&sce_iter, 1, &base, &ob)) {
if (ob->type==OB_MBALL) {
if(ob!=active_object){
splitIDname(ob->id.name+2, obname, &obnr);
@@ -338,6 +339,7 @@ void copy_mball_properties(Scene *scene, Object *active_object)
*/
Object *find_basis_mball(Scene *scene, Object *basis)
{
+ Scene *sce_iter= scene;
Base *base;
Object *ob,*bob= basis;
MetaElem *ml=NULL;
@@ -348,10 +350,10 @@ Object *find_basis_mball(Scene *scene, Object *basis)
totelem= 0;
/* XXX recursion check, see scene.c, just too simple code this next_object() */
- if(F_ERROR==next_object(scene, 0, 0, 0))
+ if(F_ERROR==next_object(&sce_iter, 0, 0, 0))
return NULL;
- while(next_object(scene, 1, &base, &ob)) {
+ while(next_object(&sce_iter, 1, &base, &ob)) {
if (ob->type==OB_MBALL) {
if(ob==bob){
@@ -1507,6 +1509,7 @@ void polygonize(PROCESS *mbproc, MetaBall *mb)
float init_meta(Scene *scene, Object *ob) /* return totsize */
{
+ Scene *sce_iter= scene;
Base *base;
Object *bob;
MetaBall *mb;
@@ -1523,9 +1526,8 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */
splitIDname(ob->id.name+2, obname, &obnr);
/* make main array */
-
- next_object(scene, 0, 0, 0);
- while(next_object(scene, 1, &base, &bob)) {
+ next_object(&sce_iter, 0, 0, 0);
+ while(next_object(&sce_iter, 1, &base, &bob)) {
if(bob->type==OB_MBALL) {
zero_size= 0;