Changeset 462
- Timestamp:
- 01/11/12 12:40:26 (4 months ago)
- Location:
- cafu/trunk/Libs/Models
- Files:
-
- 2 modified
-
AnimExpr.cpp (modified) (2 diffs)
-
AnimExpr.hpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cafu/trunk/Libs/Models/AnimExpr.cpp
r461 r462 41 41 { 42 42 NormalizeInput(); 43 }44 45 46 void AnimExprStandardT::NormalizeInput()47 {48 const ArrayT<CafuModelT::AnimT>& Anims=GetModel().GetAnims();49 50 // m_SequNr==-1 means "use the bind pose from the model file only (no anim)".51 if (m_SequNr < -1) m_SequNr = -1;52 if (m_SequNr >= int(Anims.Size())) m_SequNr = -1;53 if (m_SequNr != -1 && (Anims[m_SequNr].FPS<0.0 || Anims[m_SequNr].Frames.Size()==0)) m_SequNr = -1;54 55 m_FrameNr=std::max(m_FrameNr, 0.0f);56 m_FrameNr=(m_SequNr==-1) ? 0.0f : fmod(m_FrameNr, float(Anims[m_SequNr].Frames.Size()));57 43 } 58 44 … … 176 162 177 163 164 void AnimExprStandardT::NormalizeInput() 165 { 166 const ArrayT<CafuModelT::AnimT>& Anims=GetModel().GetAnims(); 167 168 // m_SequNr==-1 means "use the bind pose from the model file only (no anim)". 169 if (m_SequNr < -1) m_SequNr = -1; 170 if (m_SequNr >= int(Anims.Size())) m_SequNr = -1; 171 if (m_SequNr != -1 && (Anims[m_SequNr].FPS<0.0 || Anims[m_SequNr].Frames.Size()==0)) m_SequNr = -1; 172 173 m_FrameNr=std::max(m_FrameNr, 0.0f); 174 m_FrameNr=(m_SequNr==-1) ? 0.0f : fmod(m_FrameNr, float(Anims[m_SequNr].Frames.Size())); 175 } 176 177 178 178 /***********************/ 179 179 /*** AnimExprFilterT ***/ -
cafu/trunk/Libs/Models/AnimExpr.hpp
r461 r462 139 139 AnimExprFilterT(const CafuModelT& Model, AnimExpressionPtrT SubExpr, const std::string& ChannelName); 140 140 141 // Implementations and overrides for base class methods. 142 virtual void GetData(unsigned int JointNr, float& Weight, Vector3fT& Pos, cf::math::QuaternionfT& Quat, Vector3fT& Scale) const; 143 virtual void AdvanceTime(float Time, bool ForceLoop=false) { m_SubExpr->AdvanceTime(Time, ForceLoop); } 144 virtual AnimExpressionPtrT Clone() const; // Unfortunately, the proper covariant return type cannot be used with smart pointers. 145 virtual bool IsEqual(const AnimExpressionPtrT& AE) const; 146 141 147 /// Re-initializes this anim expression, so that it can be re-used with different parameters (on the same model). 142 148 void ReInit(AnimExpressionPtrT SubExpr, unsigned int ChannelNr); 143 149 144 // Implementations and overrides for base class methods.145 virtual void GetData(unsigned int JointNr, float& Weight, Vector3fT& Pos, cf::math::QuaternionfT& Quat, Vector3fT& Scale) const;146 virtual void AdvanceTime(float Time, bool ForceLoop=false) { m_SubExpr->AdvanceTime(Time, ForceLoop); }147 virtual AnimExpressionPtrT Clone() const; // Unfortunately, the proper covariant return type cannot be used with smart pointers.148 virtual bool IsEqual(const AnimExpressionPtrT& AE) const;149 150 150 151 151 private: … … 162 162 AnimExprCombineT(const CafuModelT& Model, AnimExpressionPtrT A, AnimExpressionPtrT B); 163 163 164 // Implementations and overrides for base class methods. 165 virtual void GetData(unsigned int JointNr, float& Weight, Vector3fT& Pos, cf::math::QuaternionfT& Quat, Vector3fT& Scale) const; 166 virtual void AdvanceTime(float Time, bool ForceLoop=false); 167 virtual AnimExpressionPtrT Clone() const; // Unfortunately, the proper covariant return type cannot be used with smart pointers. 168 virtual bool IsEqual(const AnimExpressionPtrT& AE) const; 169 164 170 /// Re-initializes this anim expression, so that it can be re-used with different parameters (on the same model). 165 171 void ReInit(AnimExpressionPtrT A, AnimExpressionPtrT B); 166 172 167 // Implementations and overrides for base class methods.168 virtual void GetData(unsigned int JointNr, float& Weight, Vector3fT& Pos, cf::math::QuaternionfT& Quat, Vector3fT& Scale) const;169 virtual void AdvanceTime(float Time, bool ForceLoop=false);170 virtual AnimExpressionPtrT Clone() const; // Unfortunately, the proper covariant return type cannot be used with smart pointers.171 virtual bool IsEqual(const AnimExpressionPtrT& AE) const;172 173 173 174 174 private: … … 184 184 185 185 AnimExprBlendT(const CafuModelT& Model, AnimExpressionPtrT A, AnimExpressionPtrT B, float Duration); 186 187 // Implementations and overrides for base class methods. 188 virtual void GetData(unsigned int JointNr, float& Weight, Vector3fT& Pos, cf::math::QuaternionfT& Quat, Vector3fT& Scale) const; 189 virtual void AdvanceTime(float Time, bool ForceLoop=false); 190 virtual AnimExpressionPtrT Clone() const; // Unfortunately, the proper covariant return type cannot be used with smart pointers. 191 virtual bool IsEqual(const AnimExpressionPtrT& AE) const; 186 192 187 193 /// Re-initializes this anim expression, so that it can be re-used with different parameters (on the same model). … … 198 204 /// Returns how far the blend has advanced. 199 205 float GetFrac() const { return m_Frac; } 200 201 // Implementations and overrides for base class methods.202 virtual void GetData(unsigned int JointNr, float& Weight, Vector3fT& Pos, cf::math::QuaternionfT& Quat, Vector3fT& Scale) const;203 virtual void AdvanceTime(float Time, bool ForceLoop=false);204 virtual AnimExpressionPtrT Clone() const; // Unfortunately, the proper covariant return type cannot be used with smart pointers.205 virtual bool IsEqual(const AnimExpressionPtrT& AE) const;206 206 207 207
