#include <animation.h>
Inheritance diagram for NL3D::CAnimation:

Nevrax France
Definition at line 60 of file animation.h.
Public interface. | |
| enum | { NotFound = 0xffffffff } |
| void | addTrack (const std::string &name, ITrack *pChannel) |
| uint | getIdTrackByName (const std::string &name) const |
| ITrack * | getTrack (uint trackId) |
| const ITrack * | getTrack (uint trackId) const |
| void | getTrackNames (std::set< std::string > &setString) const |
| void | serial (NLMISC::IStream &f) |
| Serial the template. | |
| void | setMinEndTime (TAnimationTime minEndTime) |
| Set animation min end time. | |
Members | |
| typedef std::map< std::string, uint32 > | TMapStringUInt |
| typedef std::vector< ITrack * > | TVectAPtrTrack |
| TMapStringUInt | _IdByName |
| TAnimationTime | _MinEndTime |
| std::string | _Name |
| TVectAPtrTrack | _TrackVector |
Public Types | |
Public Member Functions | |
| CAnimation () | |
| ctor | |
| virtual | ~CAnimation () |
| Destructor. | |
From UAnimation | |
| virtual bool | allTrackLoop () const |
| virtual TAnimationTime | getBeginTime () const |
| virtual TAnimationTime | getEndTime () const |
| virtual UTrack * | getTrackByName (const char *name) |
| virtual void | releaseTrack (UTrack *track) |
Static Public Member Functions | |
Create / delete animations | |
| UAnimation * | createAnimation (const char *sPath) |
| void | releaseAnimation (UAnimation *animation) |
Create / delete animations | |
| UAnimation * | createAnimation (const char *sPath) |
| void | releaseAnimation (UAnimation *animation) |
Private Attributes | |
Anim time caching | |
| bool | _AnimLoop |
| bool | _AnimLoopTouched |
| TAnimationTime | _BeginTime |
| bool | _BeginTimeTouched |
| TAnimationTime | _EndTime |
| bool | _EndTimeTouched |
|
|
Definition at line 149 of file animation.h. |
|
|
Definition at line 150 of file animation.h. |
|
|
Definition at line 70 of file animation.h.
00070 { NotFound=0xffffffff };
|
|
|
ctor
|
|
|
Destructor.
Definition at line 53 of file animation.cpp. References _TrackVector, NL3D_MEM_ANIMATION, and uint.
00054 {
00055 NL3D_MEM_ANIMATION
00056 // Delete all the pointers in the array
00057 for (uint i=0; i<_TrackVector.size(); i++)
00058 // Delete
00059 delete _TrackVector[i];
00060 }
|
|
||||||||||||
|
Add a track at the end of the track list. This method is used to insert tracks in the animation. Tracks must be allocated with new. The pointer is then handeled by the CAnimation. Definition at line 64 of file animation.cpp. References _AnimLoopTouched, _BeginTimeTouched, _EndTimeTouched, _IdByName, _TrackVector, NL3D_MEM_ANIMATION, and uint32. Referenced by NL3D::CAnimationOptimizer::optimize().
00065 {
00066 NL3D_MEM_ANIMATION
00067 // Add an entry in the map
00068 _IdByName.insert (TMapStringUInt::value_type (name, (uint32)_TrackVector.size()));
00069
00070 // Add an entry in the array
00071 _TrackVector.push_back (pChannel);
00072
00073 //
00074 _BeginTimeTouched = _EndTimeTouched = _AnimLoopTouched= true;
00075
00076 }
|
|
|
Say if all track of this animation loop. NB: If no tracks in the animation, return true Implements NL3D::UAnimation. Definition at line 192 of file animation.cpp. References _AnimLoop, _AnimLoopTouched, _TrackVector, NL3D_HAUTO_UI_ANIMATION, NL3D_MEM_ANIMATION, t, and uint.
00193 {
00194 NL3D_MEM_ANIMATION
00195 NL3D_HAUTO_UI_ANIMATION;
00196
00197 if(_AnimLoopTouched)
00198 {
00199 // Track count
00200 uint trackCount=_TrackVector.size();
00201
00202 // Default is true
00203 _AnimLoop= true;
00204
00205 // Scan tracks keys
00206 for (uint t=0; t<trackCount; t++)
00207 {
00208 if (!_TrackVector[t]->getLoopMode())
00209 {
00210 _AnimLoop= false;
00211 break;
00212 }
00213 }
00214 _AnimLoopTouched = false;
00215 }
00216
00217 return _AnimLoop;
00218 }
|
|
|
Load an animation. This method will use CPath to find the good animation file. (*.anim). You should call releaseAnimation to delete the animation.
Definition at line 259 of file animation.cpp. References file, NL3D_HAUTO_UI_ANIMATION, and NL3D_MEM_ANIMATION.
00260 {
00261 NL3D_MEM_ANIMATION
00262 NL3D_HAUTO_UI_ANIMATION;
00263
00264 // Allocate an animation
00265 std::auto_ptr<CAnimation> anim (new CAnimation);
00266
00267 // Read it
00268 NLMISC::CIFile file;
00269 if (file.open ( NLMISC::CPath::lookup( sPath ) ) )
00270 {
00271 // Serial the animation
00272 file.serial (*anim);
00273
00274 // Return pointer
00275 CAnimation *ret=anim.release ();
00276
00277 // Return the animation interface
00278 return ret;
00279 }
00280 else
00281 return NULL;
00282 }
|
|
|
Get begin time of the animation.
Implements NL3D::UAnimation. Definition at line 125 of file animation.cpp. References _BeginTime, _BeginTimeTouched, _TrackVector, NL3D_HAUTO_UI_ANIMATION, NL3D_MEM_ANIMATION, t, NL3D::TAnimationTime, and uint. Referenced by NL3D::CAnimationPlaylist::getLocalTime(), NL3D::CAnimationPlaylist::setupMixer(), and NL3D::CMeshBaseInstance::traverseHrc().
00126 {
00127 NL3D_MEM_ANIMATION
00128 NL3D_HAUTO_UI_ANIMATION;
00129
00130 if (_BeginTimeTouched)
00131 {
00132 // Track count
00133 uint trackCount=_TrackVector.size();
00134
00135 // Track count empty ?
00136 if (trackCount==0)
00137 return 0.f;
00138
00139 // Look for the lowest
00140 _BeginTime=_TrackVector[0]->getBeginTime ();
00141
00142 // Scan all keys
00143 for (uint t=1; t<trackCount; t++)
00144 {
00145 if (_TrackVector[t]->getBeginTime ()<_BeginTime)
00146 _BeginTime=_TrackVector[t]->getBeginTime ();
00147 }
00148
00149 _BeginTimeTouched = false;
00150 }
00151
00152 return _BeginTime;
00153 }
|
|
|
Get end time of the animation.
Implements NL3D::UAnimation. Definition at line 157 of file animation.cpp. References _EndTime, _EndTimeTouched, _MinEndTime, _TrackVector, NL3D_HAUTO_UI_ANIMATION, NL3D_MEM_ANIMATION, t, NL3D::TAnimationTime, and uint. Referenced by NL3D::CLodCharacterBuilder::addAnim(), NL3D::CAnimationPlaylist::getLocalTime(), NL3D::CAnimationOptimizer::optimize(), NL3D::CAnimationPlaylist::setupMixer(), and NL3D::CMeshBaseInstance::traverseHrc().
00158 {
00159 NL3D_MEM_ANIMATION
00160 NL3D_HAUTO_UI_ANIMATION;
00161
00162 if (_EndTimeTouched)
00163 {
00164 // Track count
00165 uint trackCount=_TrackVector.size();
00166
00167 // Track count empty ?
00168 if (trackCount==0)
00169 return 0.f;
00170
00171 // Look for the highest
00172 _EndTime=_TrackVector[0]->getEndTime ();
00173
00174 // Scan tracks keys
00175 for (uint t=1; t<trackCount; t++)
00176 {
00177 if (_TrackVector[t]->getEndTime ()>_EndTime)
00178 _EndTime=_TrackVector[t]->getEndTime ();
00179 }
00180
00181 // Check min end time
00182 if (_EndTime < _MinEndTime)
00183 _EndTime = _MinEndTime;
00184
00185 _EndTimeTouched = false;
00186 }
00187
00188 return _EndTime;
00189 }
|
|
|
Get track with its name.
Definition at line 77 of file animation.h. References _IdByName, NL3D_MEM_ANIMATION, NotFound, and uint. Referenced by getTrackByName(), NL3D::CAnimationOptimizer::optimize(), and NL3D::CChannelMixer::refreshList().
00078 {
00079 NL3D_MEM_ANIMATION
00080 // Find an entry in the name/id map
00081 TMapStringUInt::const_iterator ite=_IdByName.find (name);
00082
00083 // Not found ?
00084 if (ite==_IdByName.end ())
00085 // yes, error
00086 return NotFound;
00087 else
00088 // no, return track ID
00089 return (uint)ite->second;
00090 }
|
|
|
Get a track pointer
Definition at line 114 of file animation.h. References _TrackVector, NL3D_MEM_ANIMATION, and uint.
00115 {
00116 NL3D_MEM_ANIMATION
00117 // Get the trackId-th track pointer
00118 return _TrackVector[trackId];
00119 }
|
|
|
Get a const track pointer
Definition at line 103 of file animation.h. References _TrackVector, NL3D_MEM_ANIMATION, and uint. Referenced by getTrackByName(), and NL3D::CAnimationOptimizer::optimize().
00104 {
00105 NL3D_MEM_ANIMATION
00106 // Get the trackId-th track pointer
00107 return _TrackVector[trackId];
00108 }
|
|
|
Get an animation track with its name. The track interface should be released with releaseTrack.
Implements NL3D::UAnimation. Definition at line 222 of file animation.cpp. References getIdTrackByName(), getTrack(), NL3D_HAUTO_UI_ANIMATION, NL3D_MEM_ANIMATION, and uint.
00223 {
00224 NL3D_MEM_ANIMATION
00225 NL3D_HAUTO_UI_ANIMATION;
00226
00227 // Get track id
00228 uint id=getIdTrackByName (name);
00229
00230 // Not found ?
00231 if (id==CAnimation::NotFound)
00232 // Error, return NULL
00233 return NULL;
00234 else
00235 // No error, return the track
00236 return getTrack (id);
00237 }
|
|
|
Fill the set of string with the name of the channels.
Definition at line 108 of file animation.cpp. References _IdByName, and NL3D_MEM_ANIMATION. Referenced by NL3D::CAnimationSet::build(), NL3D::CAnimationOptimizer::optimize(), and NL3D::CScene::setAutomaticAnimationSet().
00109 {
00110 NL3D_MEM_ANIMATION
00111 // For each track name
00112 TMapStringUInt::const_iterator ite=_IdByName.begin();
00113 while (ite!=_IdByName.end())
00114 {
00115 // Add the name in the map
00116 setString.insert (ite->first);
00117
00118 // Next track
00119 ite++;
00120 }
00121 }
|
|
|
Release an animation. This animation must have been created will createAnimation().
Definition at line 286 of file animation.cpp. References NL3D_HAUTO_UI_ANIMATION, and NL3D_MEM_ANIMATION.
00287 {
00288 NL3D_MEM_ANIMATION
00289 NL3D_HAUTO_UI_ANIMATION;
00290
00291 // Cast the pointer
00292 CAnimation* release=(CAnimation*)animation;
00293
00294 // Delete it
00295 delete release;
00296 }
|
|
|
Relase a track interface.
Implements NL3D::UAnimation. Definition at line 241 of file animation.cpp. References NL3D_HAUTO_UI_ANIMATION, and NL3D_MEM_ANIMATION.
00242 {
00243 NL3D_MEM_ANIMATION
00244 NL3D_HAUTO_UI_ANIMATION;
00245
00246 // Nothing to do
00247 }
|
|
|
Serial the template.
Definition at line 80 of file animation.cpp. References _IdByName, _MinEndTime, _TrackVector, NL3D_MEM_ANIMATION, NLMISC::IStream::serial(), NLMISC::IStream::serialCheck(), NLMISC::IStream::serialCont(), NLMISC::IStream::serialContPolyPtr(), NLMISC::IStream::serialVersion(), sint, and uint32.
00081 {
00082 NL3D_MEM_ANIMATION
00083 // Serial a header
00084 f.serialCheck ((uint32)'_LEN');
00085 f.serialCheck ((uint32)'MINA');
00086
00087 // Serial a version
00088 sint version=f.serialVersion (1);
00089
00090 // Serial the name
00091 f.serial (_Name);
00092
00093 // Serial the name/id map
00094 f.serialCont(_IdByName);
00095
00096 // Serial the vector
00097 f.serialContPolyPtr (_TrackVector);
00098
00099 // Serial the min end time
00100 if (version>=1)
00101 {
00102 f.serial (_MinEndTime);
00103 }
00104 }
|
|
|
Set animation min end time.
Definition at line 251 of file animation.cpp. References _MinEndTime, NL3D_MEM_ANIMATION, and NL3D::TAnimationTime. Referenced by NL3D::CAnimationOptimizer::optimize().
00252 {
00253 NL3D_MEM_ANIMATION
00254 _MinEndTime = minEndTime;
00255 }
|
|
|
Definition at line 168 of file animation.h. Referenced by allTrackLoop(). |
|
|
Definition at line 171 of file animation.h. Referenced by addTrack(), and allTrackLoop(). |
|
|
Definition at line 166 of file animation.h. Referenced by getBeginTime(). |
|
|
Definition at line 169 of file animation.h. Referenced by addTrack(), and getBeginTime(). |
|
|
Definition at line 167 of file animation.h. Referenced by getEndTime(). |
|
|
Definition at line 170 of file animation.h. Referenced by addTrack(), and getEndTime(). |
|
|
Definition at line 156 of file animation.h. Referenced by addTrack(), getIdTrackByName(), getTrackNames(), and serial(). |
|
|
Definition at line 162 of file animation.h. Referenced by getEndTime(), serial(), and setMinEndTime(). |
|
|
Definition at line 153 of file animation.h. |
|
|
Definition at line 159 of file animation.h. Referenced by addTrack(), allTrackLoop(), getBeginTime(), getEndTime(), getTrack(), serial(), and ~CAnimation(). |
1.3.6