Change Encyclo button name and macros icon
[ryzomcore.git] / nel / src / 3d / play_list_manager.cpp
blob0648984c5692b56906b30c8d5199173357b63630
1 // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Affero General Public License for more details.
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #include "std3d.h"
19 #include "nel/3d/play_list_manager.h"
21 #ifdef DEBUG_NEW
22 #define new DEBUG_NEW
23 #endif
25 namespace NL3D
29 // ***************************************************************************
30 void CPlayListManager::addPlaylist(CAnimationPlaylist* plist, CChannelMixer *chanMixer)
32 nlassert(plist);
33 if(!chanMixer)
34 return;
35 // this do all the good things.
36 _List[plist]= CNode(plist, chanMixer);
40 // ***************************************************************************
41 void CPlayListManager::removePlaylist(CAnimationPlaylist* plist)
43 nlassert(plist);
44 // this do all the good things.
45 _List.erase(plist);
49 // ***************************************************************************
50 void CPlayListManager::animate(TGlobalAnimationTime time)
52 TPlayListList::iterator it;
54 for(it=_List.begin();it!=_List.end();)
56 CNode *node= &(it->second);
57 // Test refPtrs.
58 if( node->PlayList==NULL || node->ChannelMixer==NULL)
60 // erase it from map.
61 TPlayListList::iterator itDel= it++;
62 _List.erase(itDel);
64 else
66 // animate!!
67 node->PlayList->setupMixer(*node->ChannelMixer, time);
68 node->ChannelMixer->eval(false);
69 it++;
75 // ***************************************************************************
76 void CPlayListManager::setup(TGlobalAnimationTime time)
78 TPlayListList::iterator it;
80 for(it=_List.begin();it!=_List.end();)
82 CNode *node= &(it->second);
83 // Test refPtrs.
84 if( node->PlayList==NULL || node->ChannelMixer==NULL)
86 // erase it from map.
87 TPlayListList::iterator itDel= it++;
88 _List.erase(itDel);
90 else
92 // animate!!
93 node->PlayList->setupMixer(*node->ChannelMixer, time);
94 it++;
99 // ***************************************************************************
101 void CPlayListManager::deleteAll()
103 TPlayListList::iterator it = _List.begin();
104 while (it != _List.end())
106 TPlayListList::iterator itDel = it;
107 ++it;
108 CNode *node= &(itDel->second);
109 delete node->ChannelMixer;
110 delete node->PlayList;
111 _List.erase(itDel);
113 _List.clear();
117 } // NL3D