1 //****************************************************************************// 2 // bone.h // 3 // Copyright (C) 2001, 2002 Bruno 'Beosil' Heidelberger // 4 //****************************************************************************// 5 // This library is free software; you can redistribute it and/or modify it // 6 // under the terms of the GNU Lesser General Public License as published by // 7 // the Free Software Foundation; either version 2.1 of the License, or (at // 8 // your option) any later version. // 9 //****************************************************************************// 10 11 #ifndef CAL_BONE_H 12 #define CAL_BONE_H 13 14 15 #include "cal3d/global.h" 16 #include "cal3d/vector.h" 17 #include "cal3d/quaternion.h" 18 #include "cal3d/matrix.h" 19 #include "cal3d/corebone.h" 20 21 22 //class CalCoreBone; 23 class CalSkeleton; 24 class CalModel; 25 class CalCoreModel; 26 27 28 class CAL3D_API CalBone 29 { 30 public: 31 CalBone(CalCoreBone* coreBone); ~CalBone()32 ~CalBone() { } 33 34 void blendState(float weight, const CalVector& translation, const CalQuaternion& rotation); 35 void calculateState(); 36 void clearState(); 37 CalCoreBone *getCoreBone(); 38 void setCoreState(); 39 void setCoreStateRecursive(); 40 void setRotation(const CalQuaternion& rotation); 41 const CalQuaternion& getRotation() const; 42 const CalQuaternion& getRotationAbsolute() const; 43 const CalQuaternion& getRotationBoneSpace() const; 44 void setTranslation(const CalVector& translation); 45 const CalVector& getTranslation() const; 46 const CalVector& getTranslationAbsolute() const; 47 const CalVector& getTranslationBoneSpace() const; 48 const CalMatrix& getTransformMatrix() const; 49 void lockState(); 50 void setSkeleton(CalSkeleton *pSkeleton); 51 void calculateBoundingBox(); 52 CalBoundingBox & getBoundingBox(); 53 54 private: 55 CalCoreBone *m_pCoreBone; 56 CalSkeleton *m_pSkeleton; 57 float m_accumulatedWeight; 58 float m_accumulatedWeightAbsolute; 59 CalVector m_translation; 60 CalQuaternion m_rotation; 61 CalVector m_translationAbsolute; 62 CalQuaternion m_rotationAbsolute; 63 CalVector m_translationBoneSpace; 64 CalQuaternion m_rotationBoneSpace; 65 CalMatrix m_transformMatrix; 66 CalBoundingBox m_boundingBox; 67 }; 68 69 #endif 70 71 //****************************************************************************// 72