Bugfix [#33467] Fluid Simulations Speed factor animated wrong result
authorDaniel Genrich <daniel.genrich@gmx.net>
Tue, 11 Dec 2012 13:02:42 +0000 (13:02 +0000)
committerDaniel Genrich <daniel.genrich@gmx.net>
Tue, 11 Dec 2012 13:02:42 +0000 (13:02 +0000)
Thanks to Brecht for providing a patch and example blend.
I changed and extended it a bit since there was another bug in that loop.

intern/elbeem/intern/ntl_world.cpp
intern/elbeem/intern/ntl_world.h

index dcc81dbe5cbd9c716ae271322bc4ba27ba555576..9ae5135b04045857707876137f15dd50b00d527a 100644 (file)
@@ -420,7 +420,12 @@ int ntlWorld::advanceSims(int framenum)
        // Was: double targetTime = mSimulationTime + (*mpSims)[mFirstSim]->getFrameTime(framenum); - DG
        double totalTime = 0.0, targetTime = 0.0;
        for(size_t i = 0; i < mSimFrameCnt; i++)
-               totalTime += (*mpSims)[mFirstSim]->getFrameTime(framenum);
+       {
+               /* We need an intermediate array "mSimFrameValue" because
+               otherwise if we don't start with starttime = 0, 
+               the sim gets out of sync - DG */
+               totalTime += (*mpSims)[mFirstSim]->getFrameTime(mSimFrameValue[i]);     
+       }
        targetTime = totalTime + (*mpSims)[mFirstSim]->getFrameTime(framenum);
 
        int gstate = 0;
@@ -468,6 +473,7 @@ int ntlWorld::advanceSims(int framenum)
                sim->prepareVisualization();
        }
 
+       mSimFrameValue.push_back(framenum);
        mSimFrameCnt++;
 
        return 0;
index c207904cf75ea12986031165ae855e466f0c5b93..6cec098132bb3e88766f9b694c18f4f22874a9d1 100644 (file)
@@ -118,6 +118,7 @@ class ntlWorld
 
                /*! count no. of frame for correct sim time */
                int mSimFrameCnt;
+               vector<int> mSimFrameValue;
 };