[Bf-blender-cvs] [c6ca55e] soc-2014-fluid: stop sim button

Roman Pogribnyi noreply at git.blender.org
Fri Aug 1 19:36:54 CEST 2014


Commit: c6ca55e32e74fe2a33d3e5ac0c31560d952af403
Author: Roman Pogribnyi
Date:   Thu Jul 31 23:13:21 2014 +0200
Branches: soc-2014-fluid
https://developer.blender.org/rBc6ca55e32e74fe2a33d3e5ac0c31560d952af403

stop sim button

===================================================================

M	intern/smoke/intern/MANTA.cpp
M	intern/smoke/intern/MANTA.h
M	release/scripts/startup/bl_ui/properties_physics_smoke.py

===================================================================

diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index 7e466ca..360bde3 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -204,8 +204,9 @@ void run_manta_scene(SmokeModifierData *smd)
 
 	struct manta_arg_struct args;
 //	args.filepath = filepath;
-	args.frame_num = smd->domain->manta_end_frame - smd->domain->manta_start_frame;
-	int rc = pthread_create(&manta_thread, NULL, run_manta_sim_thread, (void *)&args);
+	args.smd = smd;
+//	args.frame_num = smd->domain->manta_end_frame - smd->domain->manta_start_frame;
+	int rc = pthread_create(&manta_thread, NULL, run_manta_sim_thread, smd);//(void *)&args);
 //	pthread_join(manta_thread,NULL);
 //	pthread_detach(manta_thread);
 }
@@ -219,10 +220,16 @@ void stop_manta_sim()
 void *run_manta_sim_thread(void *arguments)
 //void manta_sim_step(int frame)
 {
-	struct manta_arg_struct *args = (struct manta_arg_struct *)arguments;
-	int num_sim_steps = args->frame_num;
+//	struct manta_arg_struct *args = (struct manta_arg_struct *)arguments;
+//	int num_sim_steps = args->smd->domain->manta_end_frame - args->smd->domain->manta_start_frame;
+	SmokeModifierData *smd = (SmokeModifierData*)arguments;
+	int num_sim_steps = smd->domain->manta_end_frame - smd->domain->manta_start_frame;
+	smd->domain->manta_sim_frame = 0;
 	PyGILState_STATE gilstate = PyGILState_Ensure();
 	for (int fr=0; fr< num_sim_steps; ++fr) {
+		if(smd->domain->manta_sim_frame == -1)
+			break;
+		smd->domain->manta_sim_frame = fr;
 		std::string frame_str = static_cast<ostringstream*>( &(ostringstream() << fr) )->str();
 		std::string py_string_0 = string("sim_step(").append(frame_str);
 		std::string py_string_1 = py_string_0.append(")\0");
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index 6b1f4aa..7f82a03 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -17,7 +17,7 @@
 
 struct manta_arg_struct {
 //	std::string filepath;
-	int frame_num;
+	SmokeModifierData *smd;
 };
 
 static pthread_t manta_thread;
diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py
index 713964c..465c44a 100644
--- a/release/scripts/startup/bl_ui/properties_physics_smoke.py
+++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py
@@ -326,8 +326,8 @@ class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, Panel):
         domain = context.smoke.domain_settings
         effector_weights_ui(self, context, domain.effector_weights, 'SMOKE')
 
-class OBJECT_OT_MantaButton(bpy.types.Operator):
-    bl_idname = "manta.export_scene"
+class OBJECT_OT_RunMantaButton(bpy.types.Operator):
+    bl_idname = "manta_export_scene.button"
     bl_label = "Create Python Script and mesh files"
     
     def execute(self, context):
@@ -393,6 +393,15 @@ class OBJECT_OT_MantaButton(bpy.types.Operator):
         # domain.manta_sim_frame = -1
         return{'FINISHED'}
 
+class OBJECT_OT_StopMantaButton(bpy.types.Operator):
+    bl_idname = "manta_stop_sim.button"
+    bl_label = "Stop Mantaflow Simulation"
+    def execute(self, context):
+        domain = context.smoke.domain_settings
+        domain.manta_sim_frame = -1
+        # bpy.ops.manta.stop_sim()
+
+
 class PHYSICS_PT_smoke_manta_settings(PhysicButtonsPanel, Panel):
     bl_label = "MantaFlow Settings"
     bl_options = {'DEFAULT_CLOSED'}
@@ -405,7 +414,7 @@ class PHYSICS_PT_smoke_manta_settings(PhysicButtonsPanel, Panel):
     def draw_header(self, context):
         md = context.smoke.domain_settings
         self.layout.prop(md, "use_manta", text="")
-	
+	   
     def draw(self, context):
         layout = self.layout
 		
@@ -415,7 +424,10 @@ class PHYSICS_PT_smoke_manta_settings(PhysicButtonsPanel, Panel):
         #    domain.manta_end_frame = domain.manta_start_frame + 1
         layout.active = domain.use_manta
         split = layout.split()
-        split.operator("manta.export_scene", text="Create Manta Setup")
+        if domain.manta_sim_frame == -1:
+            split.operator("manta_export_scene.button", text="Create Manta Setup")
+        else:
+            split.operator("manta_stop_sim.button", text="Stop Sim")
         split = layout.split()
         col = split.column()
         col.prop(domain, "manta_start_frame", text="Start")




More information about the Bf-blender-cvs mailing list