@@ -68,13 +68,12 @@ TextEditor &FragmentShader::edit()
6868// ------------------------------------------------------------------------
6969// FragmentShader::toggleRunning
7070// ------------------------------------------------------------------------
71- void FragmentShader::toggleRunning (double iCurrentTime )
71+ void FragmentShader::toggleRunning ()
7272{
73- if (fRunning )
74- fInputs . time = static_cast <gpu:: f32 >(iCurrentTime - fStartTime );
73+ if (fClock . isRunning () )
74+ fClock . pause ( );
7575 else
76- fStartTime = iCurrentTime - fInputs .time ;
77- fRunning = ! fRunning ;
76+ fClock .resume ();
7877}
7978
8079// ------------------------------------------------------------------------
@@ -99,41 +98,39 @@ char const *FragmentShader::getStatus() const
9998}
10099
101100// ------------------------------------------------------------------------
102- // FragmentShader::nextFrame
101+ // FragmentShader::updateInputsFromClock
103102// ------------------------------------------------------------------------
104- void FragmentShader::nextFrame ( double iCurrentTime, int frameCount )
103+ void FragmentShader::updateInputsFromClock ( )
105104{
106- fManualTime = true ;
107-
108- fStartTime = iCurrentTime - fInputs .time ;
109- fInputs .frame += frameCount;
110- fInputs .time = static_cast <gpu::f32 >(iCurrentTime - fStartTime ) + static_cast <float >(frameCount) / 60 .0f ;
105+ fInputs .time = static_cast <gpu::f32 >(fClock .getTime ());
106+ fInputs .frame = fClock .getFrame ();
111107}
112108
113109// ------------------------------------------------------------------------
114- // FragmentShader::previousFrame
110+ // FragmentShader::resetTime
115111// ------------------------------------------------------------------------
116- void FragmentShader::previousFrame ( double iCurrentTime, int frameCount )
112+ void FragmentShader::resetTime ( )
117113{
118- fManualTime = true ;
114+ fClock .reset ();
115+ updateInputsFromClock ();
116+ }
119117
120- fStartTime = iCurrentTime - fInputs .time ;
121- fInputs .frame = std::max (0 , fInputs .frame - frameCount);
122- fInputs .time =
123- std::max (0 .0f , static_cast <gpu::f32 >(iCurrentTime - fStartTime ) - static_cast <float >(frameCount) / 60 .0f );
118+ // ------------------------------------------------------------------------
119+ // FragmentShader::tickTime
120+ // ------------------------------------------------------------------------
121+ void FragmentShader::tickTime (double iTimeDelta)
122+ {
123+ fClock .tickTime (iTimeDelta);
124+ updateInputsFromClock ();
124125}
125126
126127// ------------------------------------------------------------------------
127- // FragmentShader::stopManualTime
128+ // FragmentShader::tickFrame
128129// ------------------------------------------------------------------------
129- void FragmentShader::stopManualTime ( double iCurrentTime )
130+ void FragmentShader::tickFrame ( int iFrameCount )
130131{
131- if (fManualTime )
132- {
133- if (fRunning )
134- fStartTime = iCurrentTime - fInputs .time ;
135- fManualTime = false ;
136- }
132+ fClock .tickFrame (iFrameCount);
133+ updateInputsFromClock ();
137134}
138135
139136// ------------------------------------------------------------------------
0 commit comments