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