00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include "KeyFrameSystem.h"
00013
#include <OpenCAL/TimeTrack.h>
00014
using namespace OpenCAL;
00015
00016
using namespace std;
00017
00018
00019
00020
00021
00022
00023 KeyFrameSystem::KeyFrameSystem(
System *parent)
00024 :
Actor(parent), m_destructing(false)
00025 , m_currentTime(0.0f), m_loop(true), m_stopped(false)
00026 {
00027 }
00028
00029 KeyFrameSystem::~KeyFrameSystem()
00030 {
00031 m_destructing =
true;
00032
00033 TimeTrackList::iterator it;
00034
for(it = m_timeTracks.begin(); it != m_timeTracks.end(); ++it)
00035
delete *it;
00036 }
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
void KeyFrameSystem::execute(
float deltaSeconds)
00050 {
00051
00052 Actor::execute(deltaSeconds);
00053
00054
if(m_stopped)
return;
00055
00056 m_currentTime += deltaSeconds;
00057
00058 TimeTrackList::iterator it;
00059
for(it = m_timeTracks.begin(); it != m_timeTracks.end(); ++it)
00060 (*it)->step(deltaSeconds);
00061 }
00062
00063
void KeyFrameSystem::rewind()
00064 {
00065 m_currentTime = 0.0f;
00066
00067 TimeTrackList::iterator it;
00068
for(it = m_timeTracks.begin(); it != m_timeTracks.end(); ++it)
00069 (*it)->setTime(m_currentTime);
00070 }
00071
00072
void KeyFrameSystem::setTime(
float time)
00073 {
00074 m_currentTime = time;
00075
00076 TimeTrackList::iterator it;
00077
for(it = m_timeTracks.begin(); it != m_timeTracks.end(); ++it)
00078 (*it)->setTime(m_currentTime);
00079 }
00080
00081
00082
00083
00084
00085
00086
void KeyFrameSystem::deleteTimeTrack(
TimeTrack *track)
00087 {
00088
if(m_destructing)
return;
00089
00090 TimeTrackList::iterator it;
00091
for(it = m_timeTracks.begin(); it != m_timeTracks.end(); ++it)
00092
if(*it == track)
00093 {
00094 m_timeTracks.erase(it);
00095
return;
00096 }
00097 }