git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1313 993157c7-ee19-0410-b2c4-bb4e9862e678

This commit is contained in:
(no author)
2007-07-20 07:14:30 +00:00
parent db17062511
commit 434ec200c9
6 changed files with 95 additions and 28 deletions

View File

@@ -10,6 +10,7 @@ namespace OpenRa.Game
readonly string name;
Sequence currentSequence;
int frame = 0;
bool tickAlways;
public Animation( string name )
{
@@ -31,6 +32,7 @@ namespace OpenRa.Game
public void PlayThen( string sequenceName, MethodInvoker after )
{
tickAlways = false;
currentSequence = SequenceProvider.GetSequence( name, sequenceName );
frame = 0;
tickFunc = delegate
@@ -45,16 +47,33 @@ namespace OpenRa.Game
};
}
public delegate int IndexFetchFunc();
public void PlayFetchIndex( string sequenceName, IndexFetchFunc func )
{
tickAlways = true;
currentSequence = SequenceProvider.GetSequence( name, sequenceName );
frame = func();
tickFunc = delegate
{
frame = func();
};
}
double timeUntilNextFrame;
Action<double> tickFunc;
public void Tick( double t )
{
timeUntilNextFrame -= t;
while( timeUntilNextFrame <= 0 )
{
if( tickAlways )
tickFunc( t );
timeUntilNextFrame += ( 40.0 / 1000.0 ); // 25 fps == 40 ms
else
{
timeUntilNextFrame -= t;
while( timeUntilNextFrame <= 0 )
{
tickFunc( 40.0 / 1000.0 );
timeUntilNextFrame += ( 40.0 / 1000.0 ); // 25 fps == 40 ms
}
}
}
}