[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45033] trunk/blender/source/blender/ modifiers/intern/MOD_smoke.c: Smoke bugfix: Fix copy paste + bad "if's" resulting in missing releation in depsgraph ( smoke collision groups not working, collision object relations wrong).

Daniel Genrich daniel.genrich at gmx.net
Tue Mar 20 18:51:15 CET 2012


Revision: 45033
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45033
Author:   genscher
Date:     2012-03-20 17:51:14 +0000 (Tue, 20 Mar 2012)
Log Message:
-----------
Smoke bugfix: Fix copy paste + bad "if's" resulting in missing releation in depsgraph (smoke collision groups not working, collision object relations wrong). 

Modified Paths:
--------------
    trunk/blender/source/blender/modifiers/intern/MOD_smoke.c

Modified: trunk/blender/source/blender/modifiers/intern/MOD_smoke.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_smoke.c	2012-03-20 17:02:03 UTC (rev 45032)
+++ trunk/blender/source/blender/modifiers/intern/MOD_smoke.c	2012-03-20 17:51:14 UTC (rev 45033)
@@ -110,20 +110,34 @@
 	SmokeModifierData *smd = (SmokeModifierData *) md;
 
 	if (smd && (smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) {
-		if (smd->domain->fluid_group) {
+		if (smd->domain->fluid_group || smd->domain->coll_group) {
 			GroupObject *go = NULL;
 			
-			for (go = smd->domain->fluid_group->gobject.first; go; go = go->next) {
-				if (go->ob) {
-					SmokeModifierData *smd2 = (SmokeModifierData *)modifiers_findByType(go->ob, eModifierType_Smoke);
-					
-					// check for initialized smoke object
-					if (smd2 && (((smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) || ((smd->type & MOD_SMOKE_TYPE_COLL) && smd2->coll))) {
-						DagNode *curNode = dag_get_node(forest, go->ob);
-						dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Flow");
+			if(smd->domain->fluid_group)
+				for (go = smd->domain->fluid_group->gobject.first; go; go = go->next) {
+					if (go->ob) {
+						SmokeModifierData *smd2 = (SmokeModifierData *)modifiers_findByType(go->ob, eModifierType_Smoke);
+						
+						// check for initialized smoke object
+						if (smd2 && (smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) {
+							DagNode *curNode = dag_get_node(forest, go->ob);
+							dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Flow");
+						}
 					}
 				}
-			}
+
+			if(smd->domain->coll_group)
+				for (go = smd->domain->coll_group->gobject.first; go; go = go->next) {
+					if (go->ob) {
+						SmokeModifierData *smd2 = (SmokeModifierData *)modifiers_findByType(go->ob, eModifierType_Smoke);
+						
+						// check for initialized smoke object
+						if (smd2 && (smd2->type & MOD_SMOKE_TYPE_COLL) && smd2->coll) {
+							DagNode *curNode = dag_get_node(forest, go->ob);
+							dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Coll");
+						}
+					}
+				}
 		}
 		else {
 			Base *base = scene->base.first;
@@ -131,9 +145,9 @@
 			for ( ; base; base = base->next) {
 				SmokeModifierData *smd2 = (SmokeModifierData *)modifiers_findByType(base->object, eModifierType_Smoke);
 
-				if (smd2 && (((smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) || ((smd->type & MOD_SMOKE_TYPE_COLL) && smd2->coll))) {
+				if (smd2 && (((smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) || ((smd2->type & MOD_SMOKE_TYPE_COLL) && smd2->coll))) {
 					DagNode *curNode = dag_get_node(forest, base->object);
-					dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Flow");
+					dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Flow/Coll");
 				}
 			}
 		}




More information about the Bf-blender-cvs mailing list