# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

NL3D::ITrackKeyFramer Class Template Reference

ITrack interface for keyframer. More...

#include <track_keyframer.h>

Inheritance diagram for NL3D::ITrackKeyFramer:

NL3D::ITrack NL3D::UTrackKeyframer NLMISC::IStreamable NL3D::UTrack NLMISC::IClassable NL3D::CTrackKeyFramerBezier NL3D::CTrackKeyFramerConstBlendable NL3D::CTrackKeyFramerConstNotBlendable NL3D::CTrackKeyFramerLinear NL3D::CTrackKeyFramerTCB List of all members.

Public Types

typedef std::map< TAnimationTime,
CKeyT > 
TMapTimeCKey

Public Methods

 ITrackKeyFramer ()
 ctor. More...

 ~ITrackKeyFramer ()
 Destructor. More...

void addKey (const CKeyT &key, TAnimationTime time)
 Add a key in the keyframer. More...

void unlockRange (TAnimationTime begin, TAnimationTime end)
 set an explicit animation range. (see getBeginTime() / setEndTime() ). More...

void lockRange ()
 range is computed from frist and last key time (default). More...

bool isRangeLocked () const
 return true if Range is locked to first/last key. use getBeginTime and getEndTime to get the effective begin/end range times... More...

TAnimationTime getRangeDelta () const
 rangeDelta is (length of effective Range) - (length of LastKey-FirstKey). NB: if RangeLock, rangeDelta==0. More...

void setLoopMode (bool loop)
 set LoopMode. 2 mode only: "constant" (<=>false), and "loop" (<=> true). same mode for in and out... More...

virtual bool getLoopMode () const
 get LoopMode. From ITrack. More...

virtual void eval (const TAnimationTime &inDate)
 From ITrack. More...

virtual TAnimationTime getBeginTime () const
 Get the begin time of the track. More...

virtual TAnimationTime getEndTime () const
 Get the end time of the track. More...

virtual void serial (NLMISC::IStream &f) throw (NLMISC::EStream)
 Serial the template. More...

void getKeysInRange (TAnimationTime t1, TAnimationTime t2, std::vector< TAnimationTime > &result)
 From UTrackKeyframer, retrieve the keys that are in the given range [t1, t2] of the track. More...


Protected Methods

float getCompiledRangeDelta ()
 This is for Deriver compile(), because _RangeDelta (getRangeDelta()) is himself computed in compile(). More...

virtual void compile ()
 Precalc keyframe runtime infos for interpolation (OODTime...). More...

virtual void evalKey (const CKeyT *previous, const CKeyT *next, TAnimationTime datePrevious, TAnimationTime dateNext, TAnimationTime date)=0
 Evaluate the keyframe interpolation. More...


Protected Attributes

TMapTimeCKey _MapKey

Private Methods

void testAndClean () const

Private Attributes

bool _Dirty
bool _LoopMode
bool _RangeLock
float _RangeBegin
float _RangeEnd
float _RangeDelta
float _LoopStart
float _LoopEnd
float _TotalRange
float _OOTotalRange

Detailed Description

template<class CKeyT>
class NL3D::ITrackKeyFramer< CKeyT >

ITrack interface for keyframer.

The ITrack and animated value types MUST match else assertions will be raised.

Author:
Cyril 'Hulud' Corvazier , Nevrax France
Date:
2001

Definition at line 61 of file track_keyframer.h.


Member Typedef Documentation

template<class CKeyT>
typedef std::map<TAnimationTime, CKeyT> NL3D::ITrackKeyFramer::TMapTimeCKey
 

Definition at line 65 of file track_keyframer.h.


Constructor & Destructor Documentation

template<class CKeyT>
NL3D::ITrackKeyFramer< CKeyT >::ITrackKeyFramer   [inline]
 

ctor.

Definition at line 69 of file track_keyframer.h.

template<class CKeyT>
NL3D::ITrackKeyFramer< CKeyT >::~ITrackKeyFramer   [inline]
 

Destructor.

Definition at line 78 of file track_keyframer.h.


Member Function Documentation

template<class CKeyT>
void NL3D::ITrackKeyFramer< CKeyT >::addKey const CKeyT &    key,
TAnimationTime    time
[inline]
 

Add a key in the keyframer.

The key passed is duplicated in the track.

Parameters:
key  is the key value to add in the keyframer.
time  is the time of the key to add in the keyframer.

Definition at line 90 of file track_keyframer.h.

template<class CKeyT>
virtual void NL3D::ITrackKeyFramer< CKeyT >::compile   [inline, protected, virtual]
 

Precalc keyframe runtime infos for interpolation (OODTime...).

All keys should be processed. This is called by eval when necessary. Deriver should call ITrackKeyFramer::compile() first, to compile basic Key runtime info.

Reimplemented in NL3D::CTrackKeyFramerTCB.

Definition at line 302 of file track_keyframer.h.

template<class CKeyT>
virtual void NL3D::ITrackKeyFramer< CKeyT >::eval const TAnimationTime   inDate [inline, virtual]
 

From ITrack.

Implements NL3D::ITrack.

Definition at line 137 of file track_keyframer.h.

template<class CKeyT>
virtual void NL3D::ITrackKeyFramer< CKeyT >::evalKey const CKeyT *    previous,
const CKeyT *    next,
TAnimationTime    datePrevious,
TAnimationTime    dateNext,
TAnimationTime    date
[protected, pure virtual]
 

Evaluate the keyframe interpolation.

i is the keyframe with the bigger time value that is inferior or equal than date.

Parameters:
previous  is the i key in the keyframe. NULL if no key.
next  is the i+1 key in the keyframe. NULL if no key.

Implemented in NL3D::CTrackKeyFramerConstNotBlendable.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::eval.

template<class CKeyT>
virtual TAnimationTime NL3D::ITrackKeyFramer< CKeyT >::getBeginTime   const [inline, virtual]
 

Get the begin time of the track.

Implements NL3D::UTrack.

Definition at line 224 of file track_keyframer.h.

template<class CKeyT>
float NL3D::ITrackKeyFramer< CKeyT >::getCompiledRangeDelta   [inline, protected]
 

This is for Deriver compile(), because _RangeDelta (getRangeDelta()) is himself computed in compile().

Definition at line 291 of file track_keyframer.h.

template<class CKeyT>
virtual TAnimationTime NL3D::ITrackKeyFramer< CKeyT >::getEndTime   const [inline, virtual]
 

Get the end time of the track.

Implements NL3D::UTrack.

Definition at line 231 of file track_keyframer.h.

template<class T>
void NL3D::ITrackKeyFramer< T >::getKeysInRange TAnimationTime    t1,
TAnimationTime    t2,
std::vector< TAnimationTime > &    result
[virtual]
 

From UTrackKeyframer, retrieve the keys that are in the given range [t1, t2] of the track.

Parameters:
result  a vector that will be cleared, and filled with the date ofthe keys

Implements NL3D::UTrackKeyframer.

Definition at line 35 of file track_keyframer.cpp.

References _MapKey, nlassert, and NL3D::TAnimationTime.

template<class CKeyT>
virtual bool NL3D::ITrackKeyFramer< CKeyT >::getLoopMode   const [inline, virtual]
 

get LoopMode. From ITrack.

Implements NL3D::ITrack.

Definition at line 133 of file track_keyframer.h.

template<class CKeyT>
TAnimationTime NL3D::ITrackKeyFramer< CKeyT >::getRangeDelta   const [inline]
 

rangeDelta is (length of effective Range) - (length of LastKey-FirstKey). NB: if RangeLock, rangeDelta==0.

Definition at line 120 of file track_keyframer.h.

template<class CKeyT>
bool NL3D::ITrackKeyFramer< CKeyT >::isRangeLocked   const [inline]
 

return true if Range is locked to first/last key. use getBeginTime and getEndTime to get the effective begin/end range times...

Definition at line 116 of file track_keyframer.h.

template<class CKeyT>
void NL3D::ITrackKeyFramer< CKeyT >::lockRange   [inline]
 

range is computed from frist and last key time (default).

Definition at line 109 of file track_keyframer.h.

template<class CKeyT>
virtual void NL3D::ITrackKeyFramer< CKeyT >::serial NLMISC::IStream   f throw (NLMISC::EStream) [inline, virtual]
 

Serial the template.

Implements NLMISC::IStreamable.

Definition at line 241 of file track_keyframer.h.

template<class CKeyT>
void NL3D::ITrackKeyFramer< CKeyT >::setLoopMode bool    loop [inline]
 

set LoopMode. 2 mode only: "constant" (<=>false), and "loop" (<=> true). same mode for in and out...

Definition at line 130 of file track_keyframer.h.

template<class CKeyT>
void NL3D::ITrackKeyFramer< CKeyT >::testAndClean   const [inline, private]
 

Definition at line 275 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::eval, NL3D::ITrackKeyFramer< CKeyBezierQuat >::getBeginTime, NL3D::ITrackKeyFramer< CKeyBezierQuat >::getEndTime, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::getRangeDelta.

template<class CKeyT>
void NL3D::ITrackKeyFramer< CKeyT >::unlockRange TAnimationTime    begin,
TAnimationTime    end
[inline]
 

set an explicit animation range. (see getBeginTime() / setEndTime() ).

Definition at line 100 of file track_keyframer.h.


Member Data Documentation

template<class CKeyT>
bool NL3D::ITrackKeyFramer::_Dirty [private]
 

Definition at line 261 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::addKey, NL3D::ITrackKeyFramer< CKeyBezierQuat >::ITrackKeyFramer, NL3D::ITrackKeyFramer< CKeyBezierQuat >::lockRange, NL3D::ITrackKeyFramer< CKeyBezierQuat >::serial, NL3D::ITrackKeyFramer< CKeyBezierQuat >::setLoopMode, NL3D::ITrackKeyFramer< CKeyBezierQuat >::testAndClean, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::unlockRange.

template<class CKeyT>
float NL3D::ITrackKeyFramer::_LoopEnd [private]
 

Definition at line 269 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::compile, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::eval.

template<class CKeyT>
bool NL3D::ITrackKeyFramer::_LoopMode [private]
 

Definition at line 262 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::eval, NL3D::ITrackKeyFramer< CKeyBezierQuat >::getLoopMode, NL3D::ITrackKeyFramer< CKeyBezierQuat >::ITrackKeyFramer, NL3D::ITrackKeyFramer< CKeyBezierQuat >::serial, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::setLoopMode.

template<class CKeyT>
float NL3D::ITrackKeyFramer::_LoopStart [private]
 

Definition at line 268 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::compile, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::eval.

template<class CKeyT>
TMapTimeCKey NL3D::ITrackKeyFramer::_MapKey [protected]
 

Definition at line 287 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::addKey, NL3D::ITrackKeyFramer< CKeyBezierQuat >::compile, NL3D::ITrackKeyFramer< CKeyBezierQuat >::eval, getKeysInRange, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::serial.

template<class CKeyT>
float NL3D::ITrackKeyFramer::_OOTotalRange [private]
 

Definition at line 271 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::compile, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::eval.

template<class CKeyT>
float NL3D::ITrackKeyFramer::_RangeBegin [private]
 

Definition at line 264 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::compile, NL3D::ITrackKeyFramer< CKeyBezierQuat >::getBeginTime, NL3D::ITrackKeyFramer< CKeyBezierQuat >::serial, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::unlockRange.

template<class CKeyT>
float NL3D::ITrackKeyFramer::_RangeDelta [private]
 

Definition at line 267 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::compile, NL3D::ITrackKeyFramer< CKeyBezierQuat >::getCompiledRangeDelta, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::getRangeDelta.

template<class CKeyT>
float NL3D::ITrackKeyFramer::_RangeEnd [private]
 

Definition at line 265 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::compile, NL3D::ITrackKeyFramer< CKeyBezierQuat >::getEndTime, NL3D::ITrackKeyFramer< CKeyBezierQuat >::serial, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::unlockRange.

template<class CKeyT>
bool NL3D::ITrackKeyFramer::_RangeLock [private]
 

Definition at line 263 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::isRangeLocked, NL3D::ITrackKeyFramer< CKeyBezierQuat >::ITrackKeyFramer, NL3D::ITrackKeyFramer< CKeyBezierQuat >::lockRange, NL3D::ITrackKeyFramer< CKeyBezierQuat >::serial, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::unlockRange.

template<class CKeyT>
float NL3D::ITrackKeyFramer::_TotalRange [private]
 

Definition at line 270 of file track_keyframer.h.

Referenced by NL3D::ITrackKeyFramer< CKeyBezierQuat >::compile, and NL3D::ITrackKeyFramer< CKeyBezierQuat >::eval.


The documentation for this class was generated from the following files: