12#ifndef TT_INCLUDE__HTREECLASS_H
13#define TT_INCLUDE__HTREECLASS_H
24 Matrix3D BaseTransform;
28 Matrix3D CapTransform;
29 bool WorldSpaceTranslation;
31 PivotClass() : Index(0), Parent(0), BaseTransform(true), Transform(true), IsVisible(true), IsCaptured(false), CapTransform(true), WorldSpaceTranslation(false)
37 if (WorldSpaceTranslation)
39 Matrix3D CapOrientation = CapTransform;
40 CapOrientation[0].W = 0;
41 CapOrientation[1].W = 0;
42 CapOrientation[2].W = 0;
43 Matrix3D::Multiply(Transform,CapOrientation,&Transform);
44 Transform[0].W += CapTransform[0].W;
45 Transform[1].W += CapTransform[1].W;
46 Transform[2].W += CapTransform[2].W;
50 Matrix3D::Multiply(Transform,CapTransform,&Transform);
64 static HTreeClass* Create_Interpolated(
const HTreeClass* base,
const HTreeClass* a,
const HTreeClass* b,
float weightA,
float weightB);
65 HTreeClass(
const HTreeClass& that);
68 WW3DErrorType Load_W3D(ChunkLoadClass& cload);
70 const char *Get_Name()
const
74 int Num_Pivots()
const
78 int Get_Bone_Index(
const char *)
const;
79 const char *Get_Bone_Name(
int)
const;
80 int Get_Parent_Index(
int boneidx)
const;
81 void Base_Update(
const Matrix3D& root);
82 void Anim_Update(Matrix3D
const&, HAnimClass *,
float);
83 void Blend_Update(Matrix3D
const&, HAnimClass *,
float, HAnimClass *,
float,
float);
84 void Combo_Update(Matrix3D
const&, HAnimComboClass *);
85 const Matrix3D& Get_Transform(
int pivot)
const
87 return this->Pivot[pivot].Transform;
89 bool Get_Visibility(
int pivot)
const
91 return this->Pivot[pivot].IsVisible;
93 const Matrix3D& Get_Root_Transform()
const
95 return this->Pivot[0].Transform;
97 void Capture_Bone(
int boneindex);
98 void Release_Bone(
int boneindex);
99 bool Is_Bone_Captured(
int boneindex);
100 void Control_Bone(
int boneindex, Matrix3D
const &relative_tm,
bool world_space_translation);
101 bool Simple_Evaluate_Pivot(HAnimClass *motion,
int pivot_index,
float frame,
const Matrix3D &obj_tm, Matrix3D *end_tm)
const;
102 bool Simple_Evaluate_Pivot(
int pivot_index,
const Matrix3D &obj_tm, Matrix3D *end_tm)
const;
103 void Scale(
float factor);
105 void Get_Bone_Control(
int, Matrix3D&)
const;
107 HTreeClass& operator = (
const HTreeClass& that);
108 WW3DErrorType read_pivots(ChunkLoadClass& cload,
bool create_root);