Commit: d352bc36b2213659bf69dc72642d534999b7f0b7
Author: Sebastián Barschkis
Date:   Sat May 21 00:52:14 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBd352bc36b2213659bf69dc72642d534999b7f0b7

using smoke flags to guard certain calls (important when liquid is added)

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

M       intern/mantaflow/intern/SMOKE.cpp
M       intern/mantaflow/intern/SMOKE.h

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

diff --git a/intern/mantaflow/intern/SMOKE.cpp 
b/intern/mantaflow/intern/SMOKE.cpp
index b06c81d..3d0e73f 100644
--- a/intern/mantaflow/intern/SMOKE.cpp
+++ b/intern/mantaflow/intern/SMOKE.cpp
@@ -115,31 +115,33 @@ SMOKE::SMOKE(int *res, SmokeModifierData *smd)
                startMantaflow();
        
        // Initialize Mantaflow variables in Python
-       initSetup(smd);
-       if (mUsingHeat)   initHeat(smd);
-       if (mUsingFire)   initFire(smd);
-       if (mUsingColors) initColors(smd);
-       
-       updatePointers(smd); // Needs to be after heat, fire, color init
-       
-       if (mUsingHighRes)
-       {               
-               // Make sure that string vector does not contain any previous 
commands
-               mCommands.clear();
-
-               // simulation constants
-               int amplify     = smd->domain->amplify + 1;
-               mResXHigh       = amplify * mResX;
-               mResYHigh       = amplify * mResY;
-               mResZHigh       = amplify * mResZ;
-               mTotalCellsHigh = mResXHigh * mResYHigh * mResZHigh;
-               
-               // Initialize Mantaflow variables in Python
-               initSetupHigh(smd);
-               if (mUsingFire)   initFireHigh(smd);
-               if (mUsingColors) initColorsHigh(smd);
-
-               updatePointersHigh(smd); // Needs to be after fire, color init
+       // Smoke
+       if (mUsingSmoke) {
+               initSetup(smd);
+               if (mUsingHeat)   initHeat(smd);
+               if (mUsingFire)   initFire(smd);
+               if (mUsingColors) initColors(smd);
+
+               updatePointers(smd); // Needs to be after heat, fire, color init
+
+               if (mUsingHighRes) {
+                       // Make sure that string vector does not contain any 
previous commands
+                       mCommands.clear();
+
+                       // simulation constants
+                       int amplify     = smd->domain->amplify + 1;
+                       mResXHigh       = amplify * mResX;
+                       mResYHigh       = amplify * mResY;
+                       mResZHigh       = amplify * mResZ;
+                       mTotalCellsHigh = mResXHigh * mResYHigh * mResZHigh;
+                       
+                       // Initialize Mantaflow variables in Python
+                       initSetupHigh(smd);
+                       if (mUsingFire)   initFireHigh(smd);
+                       if (mUsingColors) initColorsHigh(smd);
+
+                       updatePointersHigh(smd); // Needs to be after fire, 
color init
+               }
        }
 }
 
@@ -283,23 +285,27 @@ SMOKE::~SMOKE()
 
        // Destruction in Python
        mCommands.clear();
-       mCommands.push_back(del_base_grids_low);
-       mCommands.push_back(del_vars_low);
-       if (mUsingHeat)          mCommands.push_back(del_heat_low);
-       if (mUsingFire)          mCommands.push_back(del_fire_low);
-       if (mUsingColors)        mCommands.push_back(del_colors_low);
-       
-       if (mUsingHighRes)                 
mCommands.push_back(del_base_grids_high);
-       if (mUsingHighRes)                 mCommands.push_back(del_vars_high);
-       if (mUsingColors && mUsingHighRes) mCommands.push_back(del_colors_high);
-       if (mUsingFire && mUsingHighRes)   mCommands.push_back(del_fire_high);
+
+       // Smoke
+       if (mUsingSmoke) {
+               mCommands.push_back(del_base_grids_low);
+               mCommands.push_back(del_vars_low);
+               if (mUsingHeat)          mCommands.push_back(del_heat_low);
+               if (mUsingFire)          mCommands.push_back(del_fire_low);
+               if (mUsingColors)        mCommands.push_back(del_colors_low);
+               
+               if (mUsingHighRes)                 
mCommands.push_back(del_base_grids_high);
+               if (mUsingHighRes)                 
mCommands.push_back(del_vars_high);
+               if (mUsingColors && mUsingHighRes) 
mCommands.push_back(del_colors_high);
+               if (mUsingFire && mUsingHighRes)   
mCommands.push_back(del_fire_high);
+       }
        
        // Make sure that everything is garbage collected
        mCommands.push_back(gc_collect);
 
        // Solvers always have to be the last objects to be deleted
        mCommands.push_back(del_solver_low);
-       if (mUsingHighRes)                 mCommands.push_back(del_solver_high);
+       if (mUsingHighRes) mCommands.push_back(del_solver_high);
        
        // Just in case: gc again
        mCommands.push_back(gc_collect);
@@ -642,34 +648,36 @@ void SMOKE::updatePointers(SmokeModifierData *smd)
 {
        std::cout << "Updating pointers low res" << std::endl;
 
-       mDensity        = (float*)         getGridPointer("density",     "s");
-       mVelocityX      = (float*)         getGridPointer("x_vel",       "s");
-       mVelocityY      = (float*)         getGridPointer("y_vel",       "s");
-       mVelocityZ      = (float*)         getGridPointer("z_vel",       "s");
-       mObVelocityX    = (float*)         getGridPointer("x_obvel",     "s");
-       mObVelocityY    = (float*)         getGridPointer("y_obvel",     "s");
-       mObVelocityZ    = (float*)         getGridPointer("z_obvel",     "s");
-       mForceX         = (float*)         getGridPointer("x_force",     "s");
-       mForceY         = (float*)         getGridPointer("y_force",     "s");
-       mForceZ         = (float*)         getGridPointer("z_force",     "s");
-       mDensityInflow  = (float*)         getGridPointer("inflow_grid", "s");
-       mFuelInflow     = (float*)         getGridPointer("fuel_inflow", "s");
-       mObstacles      = (unsigned char*) getGridPointer("flags",       "s");
-       
-       if (mUsingHeat) {
-               mHeat       = (float*) getGridPointer("heat",    "s");
-       }
-       if (mUsingFire) {
-               mFlame      = (float*) getGridPointer("flame",   "s");
-               mFuel       = (float*) getGridPointer("fuel",    "s");
-               mReact      = (float*) getGridPointer("react",   "s");
-       }
-       if (mUsingColors) {
-               mColorR     = (float*) getGridPointer("color_r", "s");
-               mColorG     = (float*) getGridPointer("color_g", "s");
-               mColorB     = (float*) getGridPointer("color_b", "s");
+       // Smoke
+       if (mUsingSmoke) {
+               mDensity        = (float*)         getGridPointer("density",    
 "s");
+               mVelocityX      = (float*)         getGridPointer("x_vel",      
 "s");
+               mVelocityY      = (float*)         getGridPointer("y_vel",      
 "s");
+               mVelocityZ      = (float*)         getGridPointer("z_vel",      
 "s");
+               mObVelocityX    = (float*)         getGridPointer("x_obvel",    
 "s");
+               mObVelocityY    = (float*)         getGridPointer("y_obvel",    
 "s");
+               mObVelocityZ    = (float*)         getGridPointer("z_obvel",    
 "s");
+               mForceX         = (float*)         getGridPointer("x_force",    
 "s");
+               mForceY         = (float*)         getGridPointer("y_force",    
 "s");
+               mForceZ         = (float*)         getGridPointer("z_force",    
 "s");
+               mDensityInflow  = (float*)         
getGridPointer("inflow_grid", "s");
+               mFuelInflow     = (float*)         
getGridPointer("fuel_inflow", "s");
+               mObstacles      = (unsigned char*) getGridPointer("flags",      
 "s");
+               
+               if (mUsingHeat) {
+                       mHeat       = (float*) getGridPointer("heat",    "s");
+               }
+               if (mUsingFire) {
+                       mFlame      = (float*) getGridPointer("flame",   "s");
+                       mFuel       = (float*) getGridPointer("fuel",    "s");
+                       mReact      = (float*) getGridPointer("react",   "s");
+               }
+               if (mUsingColors) {
+                       mColorR     = (float*) getGridPointer("color_r", "s");
+                       mColorG     = (float*) getGridPointer("color_g", "s");
+                       mColorB     = (float*) getGridPointer("color_b", "s");
+               }
        }
-
 }
 
 void SMOKE::updatePointersHigh(SmokeModifierData *smd)
diff --git a/intern/mantaflow/intern/SMOKE.h b/intern/mantaflow/intern/SMOKE.h
index 1738af8..40917fd 100644
--- a/intern/mantaflow/intern/SMOKE.h
+++ b/intern/mantaflow/intern/SMOKE.h
@@ -133,7 +133,7 @@ private:
        float mConstantScaling;
        std::vector<std::string> mCommands;
 
-       // Grids low res
+       // Smoke grids low res
        float* mDensity;
        float* mHeat;
        float* mVelocityX;
@@ -157,7 +157,7 @@ private:
        float* mFuelInflow;
        int* mMantaFlags;
 
-       // Grids high res
+       // Smoke grids high res
        float* mDensityHigh;
        float* mFlameHigh;
        float* mFuelHigh;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to