Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

KeyFrameSystem.cpp

00001 /*************************************************************************** 00002 * This file is part of OpenCAL: Open Computer Animation Library * 00003 * I created OpenCAL as my master's thesis Computer Science (multimedia) * 00004 * at the tUL university in Diepenbeek, Belgium * 00005 * * 00006 * Copyright (C) 2003-2004 by Jeroen Dierckx * 00007 * jeroen.dierckx@student.luc.ac.be * 00008 * * 00009 ***************************************************************************/ 00010 00011 // Includes 00012 #include "KeyFrameSystem.h" 00013 #include <OpenCAL/TimeTrack.h> 00014 using namespace OpenCAL; 00015 00016 using namespace std; 00017 00018 00019 /****************************** 00020 * Constructors and destructor * 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 * Get and set functions * 00041 ************************/ 00042 00043 00044 00045 /************************** 00046 * Time stepping functions * 00047 **************************/ 00048 00049 void KeyFrameSystem::execute(float deltaSeconds) 00050 { 00051 //if(!m_enabled) return; 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 * Protected functions * 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 }

Generated on Sun Aug 15 19:19:22 2004 for OpenCAL: Open Computer Animation Library by doxygen 1.3.8