diff options
-rw-r--r-- | intern/elbeem/extern/elbeem.h | 3 | ||||
-rw-r--r-- | intern/elbeem/intern/elbeem.cpp | 5 | ||||
-rw-r--r-- | intern/elbeem/intern/ntl_geometryobject.h | 11 | ||||
-rw-r--r-- | intern/elbeem/intern/solver_control.cpp | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_object_fluidsim.h | 3 | ||||
-rw-r--r-- | source/blender/src/buttons_object.c | 9 | ||||
-rw-r--r-- | source/blender/src/fluidsim.c | 9 |
7 files changed, 36 insertions, 7 deletions
diff --git a/intern/elbeem/extern/elbeem.h b/intern/elbeem/extern/elbeem.h index 5c1fc644827..b8752efed80 100644 --- a/intern/elbeem/extern/elbeem.h +++ b/intern/elbeem/extern/elbeem.h @@ -160,6 +160,9 @@ typedef struct elbeemMesh { const char *name; /* fluid control settings */ + float cpsTimeStart; + float cpsTimeEnd; + // TODO dg: change to channels float attractforceStrength; float attractforceRadius; diff --git a/intern/elbeem/intern/elbeem.cpp b/intern/elbeem/intern/elbeem.cpp index 1d8f92b0744..4517e20d89c 100644 --- a/intern/elbeem/intern/elbeem.cpp +++ b/intern/elbeem/intern/elbeem.cpp @@ -161,6 +161,9 @@ void elbeemResetMesh(elbeemMesh *mesh) { mesh->name = "[unnamed]"; /* fluid control settings */ + mesh->cpsTimeStart = 0; + mesh->cpsTimeEnd = 0; + mesh->attractforceStrength = 0; mesh->attractforceRadius = 0; mesh->velocityforceStrength = 0; @@ -206,6 +209,8 @@ int elbeemAddMesh(elbeemMesh *mesh) { obj->setGeoImpactFactor(mesh->obstacleImpactFactor); /* fluid control features */ + obj->setCpsTimeStart(mesh->cpsTimeStart); + obj->setCpsTimeEnd(mesh->cpsTimeEnd); obj->setAttractForceStrength(mesh->attractforceStrength); obj->setAttractForceRadius(mesh->attractforceRadius); obj->setVelocityForceStrength(mesh->velocityforceStrength); diff --git a/intern/elbeem/intern/ntl_geometryobject.h b/intern/elbeem/intern/ntl_geometryobject.h index fd7455a4787..6076610ea0f 100644 --- a/intern/elbeem/intern/ntl_geometryobject.h +++ b/intern/elbeem/intern/ntl_geometryobject.h @@ -102,6 +102,14 @@ class ntlGeometryObject : public ntlGeometryClass /* fluid control features */ /****************************************/ /*! Set/get the particle control set attract force strength */ + inline float getCpsTimeStart() const { return mCpsTimeStart; } + inline void setCpsTimeStart(float set) { mCpsTimeStart=set; } + + /*! Set/get the particle control set attract force strength */ + inline float getCpsTimeEnd() const { return mCpsTimeEnd; } + inline void setCpsTimeEnd(float set) { mCpsTimeEnd=set; } + + /*! Set/get the particle control set attract force strength */ inline float getAttractForceStrength() const { return mAttractforceStrength; } inline void setAttractForceStrength(float set) { mAttractforceStrength=set; } @@ -225,6 +233,9 @@ class ntlGeometryObject : public ntlGeometryClass AnimChannel<float> mcGeoActive; /* fluid control settings */ + float mCpsTimeStart; + float mCpsTimeEnd + ; // TODO dg: change to channels float mAttractforceStrength; float mAttractforceRadius; diff --git a/intern/elbeem/intern/solver_control.cpp b/intern/elbeem/intern/solver_control.cpp index e4c5158b615..267a1c5268c 100644 --- a/intern/elbeem/intern/solver_control.cpp +++ b/intern/elbeem/intern/solver_control.cpp @@ -239,6 +239,9 @@ LbmFsgrSolver::initCpdata() cset->mcForceVel = AnimChannel<float>(obj->getVelocityForceStrength()); cset->mcRadiusVel = AnimChannel<float>(obj->getVelocityForceRadius()); + cset->mCparts->setCPSTimeStart(obj->getCpsTimeStart()); + cset->mCparts->setCPSTimeEnd(obj->getCpsTimeEnd()); + // this value can be left at 0.5: cset->mCparts->setCPSMvmWeightFac(0.5); diff --git a/source/blender/makesdna/DNA_object_fluidsim.h b/source/blender/makesdna/DNA_object_fluidsim.h index 51592d76ec4..0c0eff0620e 100644 --- a/source/blender/makesdna/DNA_object_fluidsim.h +++ b/source/blender/makesdna/DNA_object_fluidsim.h @@ -119,6 +119,9 @@ typedef struct FluidsimSettings { struct MVert *meshSurfNormals; /* Fluid control settings */ + float cpsTimeStart; + float cpsTimeEnd; + float attractforceStrength; float attractforceRadius; float velocityforceStrength; diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c index 9967e69fe27..3a0c9e8514d 100644 --- a/source/blender/src/buttons_object.c +++ b/source/blender/src/buttons_object.c @@ -5216,19 +5216,18 @@ static void object_panel_fluidsim(Object *ob) } else if(fss->type == OB_FLUIDSIM_CONTROL) { - uiDefBut(block, LABEL, 0, "Attraction force:", 0,yline,300,20, NULL, 0.0, 0, 0, 0, ""); + uiDefButF(block, NUM, B_DIFF, "Time Sta:", 0, yline,150,20, &fss->cpsTimeStart, 0.0, 2.0, 10,0, "Specifies time when the control particles are activated."); + uiDefButF(block, NUM, B_DIFF, "Time End:", 150, yline,150,20, &fss->cpsTimeEnd, 0.0, 2.0, 10,0, "Specifies time when the control particles are deactivated."); yline -= lineHeight; + uiDefBut(block, LABEL, 0, "Attraction force:", 0,yline,300,20, NULL, 0.0, 0, 0, 0, ""); + yline -= lineHeight; uiDefButF(block, NUM, B_DIFF, "Strength:", 0, yline,150,20, &fss->attractforceStrength, 0.0, 2.0, 10,0, ""); uiDefButF(block, NUM, B_DIFF, "Radius:", 150, yline,150,20, &fss->attractforceRadius, 0.0, 2.0, 10,0, ""); - yline -= lineHeight; - uiDefBut(block, LABEL, 0, "Velocity force:", 0,yline,300,20, NULL, 0.0, 0, 0, 0, ""); - yline -= lineHeight; - uiDefButF(block, NUM, B_DIFF, "Strength:", 0, yline,150,20, &fss->velocityforceStrength, 0.0, 2.0, 10,0, ""); uiDefButF(block, NUM, B_DIFF, "Radius:", 150, yline,150,20, &fss->velocityforceRadius, 0.0, 2.0, 10,0, ""); } diff --git a/source/blender/src/fluidsim.c b/source/blender/src/fluidsim.c index 768acc18819..7298c767e45 100644 --- a/source/blender/src/fluidsim.c +++ b/source/blender/src/fluidsim.c @@ -219,6 +219,8 @@ FluidsimSettings *fluidsimSettingsNew(struct Object *srcob) fss->attractforceRadius = 0.75; fss->velocityforceStrength = 0.2; fss->velocityforceRadius = 0.75; + fss->cpsTimeStart = fss->animStart; + fss->cpsTimeEnd = fss->animEnd; return fss; } @@ -1026,17 +1028,20 @@ void fluidsimBake(struct Object *ob) fsmesh.obstaclePartslip = obit->fluidsimSettings->partSlipValue; fsmesh.volumeInitType = obit->fluidsimSettings->volumeInitType; fsmesh.obstacleImpactFactor = obit->fluidsimSettings->surfaceSmoothing; // misused value - + /* if(fsmesh.type == OB_FLUIDSIM_CONTROL) { // control fluids will get exported as whole deform = 1; + fsmesh.cpsTimeStart = obit->fluidsimSettings->cpsTimeStart; + fsmesh.cpsTimeEnd = obit->fluidsimSettings->cpsTimeEnd; + fsmesh.attractforceStrength = obit->fluidsimSettings->attractforceStrength; fsmesh.attractforceRadius = obit->fluidsimSettings->attractforceRadius; fsmesh.velocityforceStrength = obit->fluidsimSettings->velocityforceStrength; fsmesh.velocityforceRadius = obit->fluidsimSettings->velocityforceRadius; - } + }*/ // animated meshes if(deform) { |