00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "std3d.h"
00027
00028 #include "3d/play_list_manager.h"
00029
00030
00031 namespace NL3D
00032 {
00033
00034
00035
00036 void CPlayListManager::addPlaylist(CAnimationPlaylist* plist, CChannelMixer *chanMixer)
00037 {
00038 nlassert(plist);
00039 if(!chanMixer)
00040 return;
00041
00042 _List[plist]= CNode(plist, chanMixer);
00043 }
00044
00045
00046
00047 void CPlayListManager::removePlaylist(CAnimationPlaylist* plist)
00048 {
00049 nlassert(plist);
00050
00051 _List.erase(plist);
00052 }
00053
00054
00055
00056 void CPlayListManager::animate(TGlobalAnimationTime time)
00057 {
00058 TPlayListList::iterator it;
00059
00060 for(it=_List.begin();it!=_List.end();)
00061 {
00062 CNode *node= &(it->second);
00063
00064 if( node->PlayList==NULL || node->ChannelMixer==NULL)
00065 {
00066
00067 TPlayListList::iterator itDel= it++;
00068 _List.erase(itDel);
00069 }
00070 else
00071 {
00072
00073 node->PlayList->setupMixer(*node->ChannelMixer, time);
00074 node->ChannelMixer->eval(false);
00075 it++;
00076 }
00077 }
00078 }
00079
00080
00081
00082 void CPlayListManager::deleteAll()
00083 {
00084 TPlayListList::iterator it = _List.begin();
00085 while (it != _List.end())
00086 {
00087 TPlayListList::iterator itDel = it;
00088 ++it;
00089 CNode *node= &(itDel->second);
00090 delete node->ChannelMixer;
00091 delete node->PlayList;
00092 _List.erase(itDel);
00093 }
00094 }
00095
00096
00097 }