newspeoplefor developersdocumentationdownloads

nuvanimator.h

Go to the documentation of this file.
00001 #ifndef N_UVANIMATOR_H
00002 #define N_UVANIMATOR_H
00003 //------------------------------------------------------------------------------
00017 #include "scene/nanimator.h"
00018 #include "util/nanimkeyarray.h"
00019 #include "gfx2/ngfxserver2.h"
00020 
00021 //------------------------------------------------------------------------------
00022 class nUvAnimator : public nAnimator
00023 {
00024 public:
00026     nUvAnimator();
00028     virtual ~nUvAnimator();
00030     virtual bool SaveCmds(nPersistServer* ps);
00031 
00033     virtual Type GetAnimatorType() const;
00035     virtual void Animate(nSceneNode* sceneNode, nRenderContext* renderContext);
00037     void AddPosKey(uint texLayer, float time, const vector2& key);
00039     void AddEulerKey(uint texLayer, float time, const vector3& key);
00041     void AddScaleKey(uint texLayer, float time, const vector2& key);
00043     int GetNumPosKeys(uint texLayer) const;
00045     void GetPosKeyAt(uint texLayer, uint keyIndex, float& time, vector2& key) const;
00047     int GetNumEulerKeys(uint texLayer) const;
00049     void GetEulerKeyAt(uint texLayer, uint keyIndex, float& time, vector3& key) const;
00051     int GetNumScaleKeys(uint texLayer) const;
00053     void GetScaleKeyAt(uint texLayer, uint keyIndex, float& time, vector2& key) const;
00054 
00055 private:
00056     nAnimKeyArray<nAnimKey<vector2> > posArray[nGfxServer2::MaxTextureStages];
00057     nAnimKeyArray<nAnimKey<vector3> > eulerArray[nGfxServer2::MaxTextureStages];
00058     nAnimKeyArray<nAnimKey<vector2> > scaleArray[nGfxServer2::MaxTextureStages];
00059 };
00060 
00061 //------------------------------------------------------------------------------
00064 inline
00065 void
00066 nUvAnimator::AddPosKey(uint texLayer, float time, const vector2& key)
00067 {
00068     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00069     nAnimKey<vector2> newKey(time, key);
00070     this->posArray[texLayer].Append(newKey);
00071 }
00072 
00073 //------------------------------------------------------------------------------
00077 inline
00078 void
00079 nUvAnimator::AddEulerKey(uint texLayer, float time, const vector3& key)
00080 {
00081     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00082     nAnimKey<vector3> newKey(time, key);
00083     this->eulerArray[texLayer].Append(newKey);
00084 }
00085 
00086 //------------------------------------------------------------------------------
00089 inline
00090 void
00091 nUvAnimator::AddScaleKey(uint texLayer, float time, const vector2& key)
00092 {
00093     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00094     nAnimKey<vector2> newKey(time, key);
00095     this->scaleArray[texLayer].Append(newKey);
00096 }
00097 
00098 //------------------------------------------------------------------------------
00101 inline
00102 int
00103 nUvAnimator::GetNumPosKeys(uint texLayer) const
00104 {
00105     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00106     return this->posArray[texLayer].Size();
00107 }
00108 
00109 //------------------------------------------------------------------------------
00112 inline
00113 int
00114 nUvAnimator::GetNumEulerKeys(uint texLayer) const
00115 {
00116     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00117     return this->eulerArray[texLayer].Size();
00118 }
00119 
00120 //------------------------------------------------------------------------------
00123 inline
00124 int
00125 nUvAnimator::GetNumScaleKeys(uint texLayer) const
00126 {
00127     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00128     return this->scaleArray[texLayer].Size();
00129 }
00130 
00131 //------------------------------------------------------------------------------
00140 inline
00141 void
00142 nUvAnimator::GetPosKeyAt(uint texLayer, uint keyIndex, float& time, vector2& key) const
00143 {
00144     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00145     const nAnimKey<vector2>& k = this->posArray[texLayer][keyIndex];
00146     time = k.GetTime();
00147     key = k.GetValue();
00148 }
00149 
00150 //------------------------------------------------------------------------------
00161 inline
00162 void
00163 nUvAnimator::GetEulerKeyAt(uint texLayer, uint keyIndex, float& time, vector3& key) const
00164 {
00165     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00166     const nAnimKey<vector3>& k = this->eulerArray[texLayer][keyIndex];
00167     time = k.GetTime();
00168     key = k.GetValue();
00169 }
00170 
00171 //------------------------------------------------------------------------------
00180 inline
00181 void
00182 nUvAnimator::GetScaleKeyAt(uint texLayer, uint keyIndex, float& time, vector2& key) const
00183 {
00184     n_assert(texLayer < nGfxServer2::MaxTextureStages);
00185     const nAnimKey<vector2>& k = this->scaleArray[texLayer][keyIndex];
00186     time = k.GetTime();
00187     key = k.GetValue();
00188 }
00189 //------------------------------------------------------------------------------
00190 #endif
00191 

Copyright © 1999-2005 by the contributing authors. Ideas, requests, problems: Send feedback.