HBhvInterpolator.h
1 // Copyright (c) Tech Soft 3D, Inc.
2 //
3 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc.,
4 // and considered a trade secret as defined under civil and criminal statutes.
5 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of
6 // unauthorized use or misappropriation of its trade secrets. Use of this information
7 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under
8 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use.
9 
10 #ifndef _H_HBhvInterpolator_H
11 #define _H_HBhvInterpolator_H
12 
13 #ifdef H_PACK_8
14 #pragma pack(push)
15 #pragma pack(8)
16 #endif
17 
18 #include "HTools.h"
19 #include "HBhvUtility.h"
20 #include "varray.h"
21 
22 
23 class HUtilityXMLGenerator;
24 class HBhvAnimation;
25 
26 #ifdef WINDOWS_SYSTEM
27 template class MVO_API VArray< HKeyframe *>;
28 template class MVO_API VArray< void *>;
29 #endif
30 
31 
35 enum TrailInterpolatorType
36 {
37  Forward,
38  Backward,
39  Full
40 };
41 
42 
43 #define REPLACE_VARRAY(c, pos) { if ((int)m_pArray.Count() > pos) \
44  { \
45  HKeyframe *temp = m_pArray[pos];\
46  delete temp;\
47  } \
48  m_pArray.ReplaceAt(c, pos); }
49 
50 #define REMOVE_VARRAY(pos) { HKeyframe *temp = m_pArray[pos];\
51  delete temp;\
52  m_pArray.RemoveAt(pos); }
53 
54 #define CURVE_ARRAY(pos) ((HKeyframeChannelCurve *)GetAt(pos))
55 
56 
57 
59 
64 class MVO_API HBhvInterpolator
65 {
66 public:
72  HBhvInterpolator(HBhvAnimation *animation = 0, const char *name = 0);
73  virtual ~HBhvInterpolator();
74 
75 # if _MSC_VER >= 1900
77 # endif
78 
80  virtual const char * GetType() = 0;
81 
87  void SetInstancedInterpolator(HBhvInterpolator *interpolator);
88 
95  virtual HBhvInterpolator *CreateInstance(HBhvAnimation *animationinst) = 0;
96 
102  void Replace(HKeyframe * c, int pos) { REPLACE_VARRAY(c, pos); }
103 
109  void Insert(HKeyframe * piece, int pos = 0) { m_pArray.InsertAt(piece, pos); }
110 
115  void Append(HKeyframe * piece) { m_pArray.InsertAt(piece, m_pArray.Count()); }
116 
121  void Remove(int pos) { REMOVE_VARRAY(pos); }
122 
124  const char * GetName() { return m_Name; }
125 
131  virtual HKeyframe *GetAt(int pos) { return m_pArray[pos]; }
132 
135  HKeyframe **GetArray() { return &m_pArray[0]; }
136 
138  virtual int GetArrayLength() { return (int)m_pArray.Count(); }
139 
147  void Duplicate(int pos, bool replace, bool next);
148 
155  void Copy(int pos, int adpos, bool replace);
156 
160  virtual void Serialize(HUtilityXMLGenerator *xmlgen) {
161  UNREFERENCED(xmlgen);
162  }
163 
169  virtual void Interpolate(int keyframe, float fraction) {
170  UNREFERENCED(keyframe);
171  UNREFERENCED(fraction);
172  }
173 
174  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale) {
175  UNREFERENCED(keyframe);
176  UNREFERENCED(fraction);
177  UNREFERENCED(hasPos);
178  UNREFERENCED(pos);
179  UNREFERENCED(hasQuat);
180  UNREFERENCED(quat);
181  UNREFERENCED(hasScale);
182  UNREFERENCED(scale);
183  }
184 
186  HBhvAnimation * GetAnimation() { return m_pAnimation; }
187 
191  void SetAnimation(HBhvAnimation *animation) { m_pAnimation = animation; }
192 
197  void GetTranslationFromMatrix(HPoint &translation);
202  void GetRotationFromMatrix(HQuat &rotation);
203 
207  virtual void Reset() { };
208 
209 protected:
210 
214  void SetTarget();
215 
220  void AddPositionToMatrix(HPoint &trans);
221 
226  void AddRotationToMatrix(float rot[16]);
227 
232  void AddScaleToMatrix(HPoint &scale);
233 
234 
236  VArray< HKeyframe *> m_pArray;
239  HC_KEY m_pTarget;
241 };
242 
243 
245 
250 {
251 public:
257  HBhvInterpolatorPosition(HBhvAnimation *animation = 0, const char *name = 0);
258 
259 
261  const char * GetType();
262 
270 
277  void InsertLinear(HPoint pos, int l = 0) { HKeyframeChannelLinear * linear = new HKeyframeChannelLinear;
278  linear->m_cp = pos; m_pArray.InsertAt(linear, l); }
286  c->m_cp = pos; REPLACE_VARRAY(c, l) }
293  void InsertCurve(HPoint pos, int l = 0) { HKeyframeChannelCurve * linear = new HKeyframeChannelCurve;
294  linear->m_cp = pos; m_pArray.InsertAt(linear, l); }
302  c->m_cp = pos; REPLACE_VARRAY(c, l) }
303 
311  d->m_cp = pos; m_pArray.InsertAt(d, l); }
312 
316  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
320  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
321 
327  virtual void Interpolate(int keyframe, float fraction);
328 
329  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
330 
334  virtual void Reset();
335 
342  virtual void CalculatePos(int keyframe, float fraction, HPoint &res);
343 
344 protected:
349  virtual void InterpolateCamera(HPoint &pos, bool simulate = false);
350 
355  virtual void InterpolateCamera2(HPoint &pos, bool simulate = false);
356 
361  virtual void CalculateAllTangents();
362 };
363 
365 
369 {
370 public:
376  HBhvInterpolatorTrail(HBhvAnimation *animation = 0, const char *name = 0);
378 
379 
381  const char * GetType();
382 
390 
394  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
398  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
399 
405  virtual void Interpolate(int keyframe, float fraction);
409  virtual void Reset();
410 
414  void Init();
415  void SetTrailType(TrailInterpolatorType tt) { m_TrailType = tt; }
416  void SetTrailColor(const char *color) { strncpy(m_Color, color, sizeof(m_Color)); }
417  void SetTrailWeight(int weight) { m_Weight = weight; }
418  void SetTrailStyle(const char *style) { strncpy(m_Style, style, sizeof(m_Style)); }
419 
420 
421 protected:
422  TrailInterpolatorType m_TrailType;
423  char m_Color[MVO_SMALL_BUFFER_SIZE];
424  int m_Weight;
425  char m_Style[MVO_SMALL_BUFFER_SIZE];
426  HC_KEY m_TrailSegment, m_trailKey;
427  int m_lastkeyframe;
428  bool m_initialized;
429 
430 };
431 
433 
437 {
438 public:
444  HBhvInterpolatorAxisRotate(HBhvAnimation *animation = 0, const char *name = 0);
445 
449  void SetAxis(float x, float y, float z) {m_axis.x = x; m_axis.y = y; m_axis.z = z; }
450 
454  void GetAxis (HPoint &axis) { axis = m_axis; }
455 
457  const char * GetType();
458 
466 
473  void Insert(float angle, int l = 0) { HKeyframeAxisRotation* linear = new HKeyframeAxisRotation;
474  linear->m_angle = angle; m_pArray.InsertAt(linear, l); }
481  void Replace(float angle, int l) { HKeyframeAxisRotation * c = new HKeyframeAxisRotation;
482  c->m_angle = angle; REPLACE_VARRAY(c, l); }
483 
487  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
488 
492  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
493 
494 
500  virtual void Interpolate(int keyframe, float fraction);
501  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
502 
503 protected:
506 };
507 
508 
510 
512 {
513 public:
520  HBhvInterpolatorColor(HBhvAnimation *animation = 0, const char *name = 0);
522  const char * GetType();
523 
531 
539  void Insert(HPoint pos, int l = 0) { HKeyframeChannelLinear* color = new HKeyframeChannelLinear;
540  color->m_cp = pos; m_pArray.InsertAt(color, l); }
549  c->m_cp = pos; REPLACE_VARRAY(c, l); }
550 
554  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
555 
559  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
560 
564  void SetGeomType (const char *geomtype);
565 
567  char * GetGeomType () { return m_GeomType; }
568 
573  void SetColorComponent (const char *ColorComponent);
574 
576  char * GetColorComponent () { return m_ColorComponent; }
577 
583  virtual void Interpolate(int keyframe, float fraction);
584 
585 protected:
586  char m_ColorComponent[MVO_BUFFER_SIZE];
587  char m_GeomType[MVO_BUFFER_SIZE];
589 };
590 
591 
592 /*
593 class MVO_API HBhvInterpolatorQuat : public HBhvInterpolator
594 {
595 public:
596  HBhvInterpolatorQuat(const char *name = 0);
597  const char * GetType();
598 
599  virtual HBhvInterpolatorInstance * CreateInstance(HBhvanimation *ainst);
600  void Insert(HQuat pos, int l) { HKeyframeQuatSlerp * rot = new HKeyframeQuatSlerp;
601  rot->m_quat = pos; m_pArray.InsertAt(rot, l); }
602  void Replace(HQuat pos, int l) { HKeyframeQuatSlerp * c = new HKeyframeQuatSlerp;
603  c->m_quat = pos; REPLACE_VARRAY(c, l); }
604 
605 };
606 
607 
608 
609 class MVO_API HBhvInterpolatorInstanceQuat : public HBhvInterpolatorInstance
610 {
611 public:
612  HBhvInterpolatorInstanceQuat(HBhvInterpolatorQuat *ip, HBhvanimation *ainst) : HBhvInterpolatorInstance((HBhvInterpolator *)ip, ainst) {}
613  virtual void Interpolate(int keyframe, float fraction);
614 
615 protected:
616 
617  virtual void InterpolateCamera(float *quat);
618 
619 };
620 
621 */
622 
623 
624 
626 
628 {
629 public:
630 
637  virtual void CalculatePos(int keyframe, float fraction, HPoint &res);
638 
639 
644  virtual void CalculateAllTangents();
645 
649  virtual void Reset();
650 
656  HBhvInterpolatorScale(HBhvAnimation *animation = 0, const char *name = 0);
657 
659  const char * GetType();
660 
668 
675  void Insert(HPoint pos, int l = 0) { HKeyframeChannelLinear * scale = new HKeyframeChannelLinear;
676  scale->m_cp = pos; m_pArray.InsertAt(scale, l); }
684  c->m_cp = pos; REPLACE_VARRAY(c, l) }
685 
689  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
690 
694  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
695 
701  virtual void Interpolate(int keyframe, float fraction);
702  void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
703 
704 
705 protected:
710  virtual void InterpolateCamera(HPoint &Scale, bool simulate = false);
715  virtual void InterpolateCamera2(HPoint &Scale, bool simulate = false);
716 
717 };
718 
719 
720 
723 {
724 public:
725 
731  HBhvInterpolatorQuatSquad(HBhvAnimation *animation = 0, const char *name = 0);
732 
734  const char * GetType();
735 
743 
750  void Insert(HQuat q, int l = 0) { HKeyframeQuatSquad * rot = new HKeyframeQuatSquad;
751  rot->m_quat = q; m_pArray.InsertAt(rot, l); }
752 
759  void InsertLinear(HQuat q, int l = 0) { HKeyframeQuatSquad * rot = new HKeyframeQuatSquad;
760  rot->m_quat = q; rot->m_bLinear = true; m_pArray.InsertAt(rot, l); }
761 
769  c->m_quat = q; REPLACE_VARRAY(c, l); }
777  c->m_quat = q; c->m_bLinear = true; REPLACE_VARRAY(c, l); }
778 
782  void AdjustQuaternions();
783 
787  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
788 
792  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
793 
799  virtual void Interpolate(int keyframe, float fraction);
800  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
801 
808  virtual void CalculateQuat(int keyframe, float fraction, HQuat &res);
809 
810 
811 
812 protected:
817  virtual void InterpolateCamera(HQuat &quat, bool simulate = false);
818 
823  virtual void InterpolateCamera2(HQuat &quat, bool simulate = false);
824 
825 };
826 
827 
828 
829 
831 
835 {
836 public:
842  HBhvInterpolatorAttSwitch(HBhvAnimation *animation = 0, const char *name = 0);
843 
845  const char * GetType();
846 
854 
861  void Insert(const char * t, int l = 0) { HKeyframeString* AttSwitch = new HKeyframeString;
862  AttSwitch->SetTarget(t); m_pArray.InsertAt(AttSwitch, l); }
863 
870  void Replace(const char *spath, int l) { HKeyframeString * c = new HKeyframeString;
871  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
872 
876  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
877 
881  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
882 
888  virtual void Interpolate(int keyframe, float fraction);
889 
890 };
891 
892 
893 
894 
895 
896 
897 
900 {
901 public:
902 
908  HBhvInterpolatorVertexMorph(HBhvAnimation *animation = 0, const char *name = 0);
910 
912  const char * GetType();
913 
921 
931  void Insert(char * mident, int l = 0) { HKeyframeString* VertexMorph = new HKeyframeString;
932  VertexMorph->SetTarget(mident); m_pArray.InsertAt(VertexMorph, l); }
933  void InsertDiscrete(char * mident, int l = 0) { HKeyframeString* VertexMorph = new HKeyframeString;
934  VertexMorph->SetTarget(mident); VertexMorph->m_bDiscrete = true; m_pArray.InsertAt(VertexMorph, l); }
935 
945  void Replace(char *t, int l) { HKeyframeString * c = new HKeyframeString;
946  c->SetTarget(t); REPLACE_VARRAY(c, l) }
947 
951  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
952 
956  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
957 
963  virtual void Interpolate(int keyframe, float fraction);
964 
974  virtual void AddMorphData(HPoint *md, int pnum, HBaseModel *model, int pos = -1);
975 
977  VArray < void *> GetMorphData() { return m_pMorphData; }
978 
980  int GetMorphDataLength() { return m_MorphDataLength; }
981 private:
982 
983  void *GetUserInfo(char *target);
984  void * GetMorphData(int i);
986  VArray < void *> m_pMorphData;
987  HC_KEY m_shelltarget;
988  int m_MorphDataLength;
989 };
990 
991 
992 
995 {
996 public:
997 
1003  HBhvInterpolatorColorMorph(HBhvAnimation *animation = 0, const char *name = 0);
1005 
1007  const char * GetType();
1008 
1015  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1016 
1026  void Insert(char * mident, int l = 0) { HKeyframeString* ColorMorph = new HKeyframeString;
1027  ColorMorph->SetTarget(mident); m_pArray.InsertAt(ColorMorph, l); }
1028  void InsertDiscrete(char * mident, int l = 0) { HKeyframeString* ColorMorph = new HKeyframeString;
1029  ColorMorph->SetTarget(mident); ColorMorph->m_bDiscrete = true; m_pArray.InsertAt(ColorMorph, l); }
1039  void Replace(char *t, int l) { HKeyframeString * c = new HKeyframeString;
1040  c->SetTarget(t); REPLACE_VARRAY(c, l) }
1041 
1045  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1046 
1050  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1051 
1057  virtual void Interpolate(int keyframe, float fraction);
1058 
1060  VArray < void *> GetMorphData() { return m_pMorphData; }
1061 
1063  int GetMorphDataLength() { return m_MorphDataLength; }
1075  virtual void AddMorphData(HPoint *md, int pnum, HBaseModel *model, int pos = -1);
1076 
1082  virtual void SetUseFIndex(bool tf);
1083 
1084 private:
1085 
1086  void *GetUserInfo(char *target);
1087  void * GetMorphData(int i);
1088  VArray < void *> m_pMorphData;
1089  HC_KEY m_shelltarget;
1090  int m_MorphDataLength;
1091  bool m_bUseFIndex;
1092 };
1093 
1094 
1095 
1096 
1099 {
1100 public:
1101 
1107  HBhvInterpolatorSegSwitch(HBhvAnimation *animation = 0, const char *name = 0);
1109 
1111  const char * GetType();
1112 
1119  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1120 
1127  void Insert(char * t, int l = 0) { HKeyframeString* SegSwitch = new HKeyframeString;
1128  SegSwitch->SetTarget(t); m_pArray.InsertAt(SegSwitch, l); }
1129 
1136  void Replace(char *spath, int l) { HKeyframeString * c = new HKeyframeString;
1137  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
1138 
1142  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1143 
1147  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1148 
1154  virtual void Interpolate(int keyframe, float fraction);
1155 
1159  virtual void Reset();
1160 
1161 };
1162 
1163 
1164 
1165 
1168 {
1169 public:
1170 
1176  HBhvInterpolatorInstanceCreate(HBhvAnimation *animation = 0, const char *name = 0);
1178 
1180  const char * GetType();
1181 
1188  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1189 
1196  void Insert(char * t, char *t2, char *t3, int l = 0) { HKeyframe3String* InstanceCreate = new HKeyframe3String;
1197  InstanceCreate->SetTarget(t,t2,t3); m_pArray.InsertAt(InstanceCreate, l); }
1198 
1205  void Replace(char *t, char *t2, char *t3, int l) { HKeyframe3String * c = new HKeyframe3String;
1206  c->SetTarget(t,t2,t3); REPLACE_VARRAY(c, l) }
1207 
1211  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1212 
1216  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1217 
1223  virtual void Interpolate(int keyframe, float fraction);
1224 
1228  virtual void Reset();
1229 
1230  static void DeciperString(HBhvInterpolatorInstanceCreate *itp, char *text, HBaseModel *model, int &counter);
1231 
1232 
1233 };
1234 
1235 
1236 
1239 {
1240 public:
1241 
1247  HBhvInterpolatorSegMove(HBhvAnimation *animation = 0, const char *name = 0);
1249 
1251  const char * GetType();
1252 
1259  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1260 
1267  void Insert(char * t, int l = 0) { HKeyframeString* SegMove = new HKeyframeString;
1268  SegMove->SetTarget(t); m_pArray.InsertAt(SegMove, l); }
1269 
1276  void Replace(char *spath, int l) { HKeyframeString * c = new HKeyframeString;
1277  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
1278 
1282  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1283 
1287  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1288 
1294  virtual void Interpolate(int keyframe, float fraction);
1295 
1299  virtual void Reset();
1300 
1301 };
1302 
1303 
1304 
1305 
1308 {
1309 public:
1310 
1316  HBhvInterpolatorMatrix(HBhvAnimation *animation = 0, const char *name = 0);
1317 
1319  const char * GetType();
1320 
1327  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1328 
1335  void Insert(float *mat, int l = 0) { HKeyframeMatrix * rot = new HKeyframeMatrix;
1336  for (int i=0;i<16;i++) { rot->m_matrix[i] = mat[i]; m_pArray.InsertAt(rot, l);} }
1337 
1338 
1339 
1346  void Replace(float * q, int l) { HKeyframeMatrix * c = new HKeyframeMatrix;
1347  for (int i=0;i<16;i++) c->m_matrix[i] = q[i]; REPLACE_VARRAY(c, l); }
1348 
1349 
1353  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1354 
1358  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1359 
1365  virtual void Interpolate(int keyframe, float fraction);
1366 
1367 
1368 protected:
1369 
1370 };
1371 
1372 
1373 
1374 #ifdef H_PACK_8
1375 #pragma pack(pop)
1376 #endif
1377 
1378 #endif
1379 
1380 
1381 
void Append(HKeyframe *piece)
Definition: HBhvInterpolator.h:115
void Replace(const char *spath, int l)
Definition: HBhvInterpolator.h:870
VArray< void * > GetMorphData()
Definition: HBhvInterpolator.h:977
void ReplaceLinear(HQuat q, int l)
Definition: HBhvInterpolator.h:776
void Insert(char *mident, int l=0)
Definition: HBhvInterpolator.h:1026
int m_Weight
Definition: HBhvInterpolator.h:424
The HKeyframe class is the base class for all keyframe types.
Definition: HBhvUtility.h:257
The HKeyframeAxisRotation class is used for rotations around an arbitrary axis.
Definition: HBhvUtility.h:647
The HKeyframeQuatSquad class is used for non-linear quaternion based rotation.
Definition: HBhvUtility.h:721
char m_Name[BHV_MAX_NAME_LENGTH]
Definition: HBhvAnimation.h:280
The HBhvInterpolatorColor class controls color attribute changes.
Definition: HBhvInterpolator.h:511
void ReplaceCurve(HPoint pos, int l)
Definition: HBhvInterpolator.h:301
virtual void Serialize(HUtilityXMLGenerator *xmlgen)
Definition: HBhvInterpolator.h:160
The HQuat class defines the data type of a Quaternion.
Definition: HBhvUtility.h:83
void Insert(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:675
virtual const char * GetType()
Definition: HBhvAnimation.h:57
void Insert(char *t, int l=0)
Definition: HBhvInterpolator.h:1267
HBhvAnimation * m_pAnimation
Definition: HBhvInterpolator.h:237
HC_KEY m_trailKey
Definition: HBhvInterpolator.h:426
HQuat m_quat
Definition: HBhvUtility.h:755
void Replace(float angle, int l)
Definition: HBhvInterpolator.h:481
void Insert(char *mident, int l=0)
Definition: HBhvInterpolator.h:931
void Duplicate(int newkeyframe, int oldkeyframe)
void Insert(char *t, int l=0)
Definition: HBhvInterpolator.h:1127
HBhvAnimation * GetAnimation()
Definition: HBhvInterpolator.h:186
void Insert(char *t, char *t2, char *t3, int l=0)
Definition: HBhvInterpolator.h:1196
void Insert(HKeyframe *piece, int pos=0)
Definition: HBhvInterpolator.h:109
void InsertLinear(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:277
void Replace(char *t, char *t2, char *t3, int l)
Definition: HBhvInterpolator.h:1205
float m_angle
Definition: HBhvUtility.h:682
void Replace(HQuat q, int l)
Definition: HBhvInterpolator.h:768
The HBhvInterpolatorVertexMorph class performs interpolation by interpolating the individual vertex p...
Definition: HBhvInterpolator.h:899
int GetMorphDataLength()
Definition: HBhvInterpolator.h:980
virtual int GetArrayLength()
Definition: HBhvInterpolator.h:138
#define BHV_MAX_NAME_LENGTH
Maximum Length of "Names" in animations.
Definition: HBhvUtility.h:41
virtual HKeyframe * GetAt(int pos)
Definition: HBhvInterpolator.h:131
void GetAxis(HPoint &axis)
Definition: HBhvInterpolator.h:454
The HBhvInterpolatorScale class controls scaling. This class can be used for camera interpolation as ...
Definition: HBhvInterpolator.h:627
void SetAnimation(HBhvAnimation *animation)
Definition: HBhvInterpolator.h:191
The HBhvInterpolatorQuatSquad class controls quaternion based rotation. This class can be used for ca...
Definition: HBhvInterpolator.h:722
HBhvInterpolator * m_pInterpolatorInstance
Definition: HBhvInterpolator.h:238
void Replace(HPoint pos, int l)
Definition: HBhvInterpolator.h:683
HPoint m_cp
Definition: HBhvUtility.h:356
The HBhvInterpolatorPosition class controls positional interpolation.
Definition: HBhvInterpolator.h:249
The HBhvInterpolatorInstanceCreate creates a new instance of the target object at the location in the...
Definition: HBhvInterpolator.h:1167
void InsertCurve(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:293
void Replace(char *t, int l)
Definition: HBhvInterpolator.h:1039
The HBhvInterpolatorSegSwitch performs animation by switching on and off the visibility of segments...
Definition: HBhvInterpolator.h:1098
The HKeyframeChannelDiscrete class is used for discrete interpolation of positional values...
Definition: HBhvUtility.h:411
The HBhvInterpolatorColorMorph class performs an interpolation on the face colors of your target obje...
Definition: HBhvInterpolator.h:994
void Insert(float angle, int l=0)
Definition: HBhvInterpolator.h:473
The HBhvInterpolatorTrail class draws a line trail from one keyframe position to the next...
Definition: HBhvInterpolator.h:368
The HBhvInterpolator class is the abstract base class for all interpolator types. ...
Definition: HBhvInterpolator.h:64
void Replace(char *spath, int l)
Definition: HBhvInterpolator.h:1276
const char * GetName()
Definition: HBhvInterpolator.h:124
The HKeyframeString class is used for any string related keyframes.
Definition: HBhvUtility.h:863
float m_matrix[16]
Definition: HBhvUtility.h:800
The HKeyframeChannelCurve class is used for spline based interpolation of positional values...
Definition: HBhvUtility.h:462
void Insert(const char *t, int l=0)
Definition: HBhvInterpolator.h:861
The HBaseModel class is used to store and manage model information.
Definition: HBaseModel.h:47
void InsertLinear(HQuat q, int l=0)
Definition: HBhvInterpolator.h:759
void Insert(float *mat, int l=0)
Definition: HBhvInterpolator.h:1335
void SetTarget(const char *t1, const char *t2, const char *t3)
The HPoint class is the data type of a three-dimensional point.
Definition: HGlobals.h:121
HKeyframe ** GetArray()
Definition: HBhvInterpolator.h:135
virtual void Reset()
Definition: HBhvInterpolator.h:207
The HKeyframeChannelLinear class is used for linear interpolation of positional values.
Definition: HBhvUtility.h:364
HBhvAnimation * CreateInstance()
void SetTarget(const char *target)
virtual void Serialize(HUtilityXMLGenerator *xmlgen, HUtilityXMLTag *xmlt)
The HBhvAnimation class defines an animation.
Definition: HBhvAnimation.h:43
VArray< void * > GetMorphData()
Definition: HBhvInterpolator.h:1060
bool m_bLinear
Definition: HBhvUtility.h:640
void Insert(HQuat q, int l=0)
Definition: HBhvInterpolator.h:750
void Replace(float *q, int l)
Definition: HBhvInterpolator.h:1346
void Insert(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:539
VArray< HKeyframe * > m_pArray
Definition: HBhvInterpolator.h:236
int GetMorphDataLength()
Definition: HBhvInterpolator.h:1063
static void * XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData)
char * GetGeomType()
Definition: HBhvInterpolator.h:567
The HKeyframeString class is used for any string related keyframes.
Definition: HBhvUtility.h:814
void Replace(HPoint pos, int l)
Definition: HBhvInterpolator.h:548
void SetAxis(float x, float y, float z)
Definition: HBhvInterpolator.h:449
void Replace(char *spath, int l)
Definition: HBhvInterpolator.h:1136
The HBhvInterpolatorAttSwitch class switches attributes on segments.
Definition: HBhvInterpolator.h:834
virtual void Interpolate(int keyframe, float fraction)
Definition: HBhvInterpolator.h:169
void SetTarget(HBhvTargetObject *target)
The HKeyframeQuatSquad class is used for non-linear quaternion based rotation.
Definition: HBhvUtility.h:762
void ReplaceLinear(HPoint pos, int l)
Definition: HBhvInterpolator.h:285
void Replace(HKeyframe *c, int pos)
Definition: HBhvInterpolator.h:102
The HBhvInterpolatorMatrix class controls quaternion based rotation. This class can be used for camer...
Definition: HBhvInterpolator.h:1307
void Remove(int pos)
Definition: HBhvInterpolator.h:121
char * GetColorComponent()
Definition: HBhvInterpolator.h:576
void Replace(char *t, int l)
Definition: HBhvInterpolator.h:945
void InsertDiscrete(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:310
The HBhvInterpolatorSegMove performs animation by switching on and off the visibility of segments...
Definition: HBhvInterpolator.h:1238
TrailInterpolatorType m_TrailType
Definition: HBhvInterpolator.h:422
The HBhvInterpolatorAxisRotate class controls rotation around an arbitrary axis.
Definition: HBhvInterpolator.h:436
HPoint m_axis
Definition: HBhvInterpolator.h:504
HC_KEY m_pTarget
Definition: HBhvInterpolator.h:239