diff options
author | Fernando Sansberro <sansberro@batovi.com> | 2012-04-30 15:20:47 (GMT) |
---|---|---|
committer | Fernando Sansberro <sansberro@batovi.com> | 2012-04-30 15:20:47 (GMT) |
commit | f5445986c75c16cc691d9eaefe263e8b06831d36 (patch) | |
tree | e2dae01f5f69fa0dfca1b8101a9bde7fd7c9aac1 /src/api/Anim.py | |
parent | 224a2947bbdbaba19900b463a173acee4351b3de (diff) |
Hall state & minor changes.
Diffstat (limited to 'src/api/Anim.py')
-rw-r--r-- | src/api/Anim.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/api/Anim.py b/src/api/Anim.py new file mode 100644 index 0000000..db3bea8 --- /dev/null +++ b/src/api/Anim.py @@ -0,0 +1,62 @@ +class CAnim(object): + + mNumFrames = 0 + mDelay = 0 + mCurrentFrame = 0 + mTimeFrame = 0 + mIsLoop = False + + # Flag to indicate it the animation has ended. + mEnded = False + + # Indicates if frame has changed since the previous update(). + mFrameHasChanged = False + + # Used to calculate if the previous frame is the same as the current frame. + mPreviousFrame = 0 + + def __init__(self, aNumFrames, aDelay, aIsLoop = False): + self.init(aNumFrames, aDelay, aIsLoop); + + def init(self, aNumFrames, aDelay, aIsLoop = False): + self.mNumFrames = aNumFrames + self.mDelay = aDelay + self.mCurrentFrame = 0 + self.mTimeFrame = 0 + self.mIsLoop = aIsLoop + self.mEnded = False + self.mFrameHasChanged = False + self.mPreviousFrame = 0 + + def reset(self): + self.mCurrentFrame = 0 + self.mTimeFrame = 0 + self.mFrameHasChanged = False + self.mPreviousFrame = 0 + + def update(self): + self.mTimeFrame += 1 + if (self.mTimeFrame >= self.mDelay): + self.mTimeFrame = 0 + self.mCurrentFrame += 1 + if (self.mCurrentFrame >= self.mNumFrames): + if (self.mIsLoop): + self.mCurrentFrame = 0 + else: + self.mCurrentFrame = self.mNumFrames - 1 + self.mEnded = True + + if (self.mPreviousFrame <> self.mCurrentFrame): + self.mFrameHasChanged = True + else: + self.mFrameHasChanged = False + self.mPreviousFrame = self.mCurrentFrame + + def getCurrentFrame(self): + return self.mCurrentFrame + + def isEnded(self): + return self.mEnded + + def frameHasChanged(self): + return self.mFrameHasChanged
\ No newline at end of file |