Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HBhvInterpolator.h
1 //
2 // Copyright (c) 2000 by Tech Soft 3D, LLC.
3 // The information contained herein is confidential and proprietary to
4 // Tech Soft 3D, LLC., and considered a trade secret as defined under
5 // civil and criminal statutes. Tech Soft 3D shall pursue its civil
6 // and criminal remedies in the event of unauthorized use or misappropriation
7 // of its trade secrets. Use of this information by anyone other than
8 // authorized employees of Tech Soft 3D, LLC. is granted only under a
9 // written non-disclosure agreement, expressly prescribing the scope and
10 // manner of such use.
11 //
12 
13 #ifndef _H_HBhvInterpolator_H
14 #define _H_HBhvInterpolator_H
15 
16 #ifdef H_PACK_8
17 #pragma pack(push)
18 #pragma pack(8)
19 #endif
20 
21 #include "HTools.h"
22 #include "HBhvUtility.h"
23 #include "varray.h"
24 
25 
26 class HUtilityXMLGenerator;
27 class HBhvAnimation;
28 
29 #ifdef WINDOWS_SYSTEM
30 template class MVO_API VArray< HKeyframe *>;
31 template class MVO_API VArray< void *>;
32 #endif
33 
34 
38 enum TrailInterpolatorType
39 {
40  Forward,
41  Backward,
42  Full
43 };
44 
45 
46 #define REPLACE_VARRAY(c, pos) { if (m_pArray.Count() > pos) \
47  { \
48  HKeyframe *temp = m_pArray[pos];\
49  delete temp;\
50  } \
51  m_pArray.ReplaceAt(c, pos); }
52 
53 #define REMOVE_VARRAY(pos) { HKeyframe *temp = m_pArray[pos];\
54  delete temp;\
55  m_pArray.RemoveAt(pos); }
56 
57 #define CURVE_ARRAY(pos) ((HKeyframeChannelCurve *)GetAt(pos))
58 
59 
60 
62 
67 class MVO_API HBhvInterpolator
68 {
69 public:
75  HBhvInterpolator(HBhvAnimation *animation = 0, const char *name = 0);
76  virtual ~HBhvInterpolator();
77 
79  virtual const char * GetType() = 0;
80 
86  void SetInstancedInterpolator(HBhvInterpolator *interpolator);
87 
94  virtual HBhvInterpolator *CreateInstance(HBhvAnimation *animationinst) = 0;
95 
101  void Replace(HKeyframe * c, int pos) { REPLACE_VARRAY(c, pos); }
102 
108  void Insert(HKeyframe * piece, int pos = 0) { m_pArray.InsertAt(piece, pos); }
109 
114  void Append(HKeyframe * piece) { m_pArray.InsertAt(piece, m_pArray.Count()); }
115 
120  void Remove(int pos) { REMOVE_VARRAY(pos); }
121 
123  const char * GetName() { return m_Name; }
124 
130  virtual HKeyframe *GetAt(int pos) { return m_pArray[pos]; }
131 
134  HKeyframe **GetArray() { return &m_pArray[0]; }
135 
137  virtual int GetArrayLength() { return m_pArray.Count(); }
138 
146  void Duplicate(int pos, bool replace, bool next);
147 
154  void Copy(int pos, int adpos, bool replace);
155 
159  virtual void Serialize(HUtilityXMLGenerator *xmlgen) { }
160 
166  virtual void Interpolate(int keyframe, float fraction) { };
167  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale) { };
168 
170  HBhvAnimation * GetAnimation() { return m_pAnimation; }
171 
175  void SetAnimation(HBhvAnimation *animation) { m_pAnimation = animation; }
176 
181  void GetTranslationFromMatrix(HPoint &translation);
186  void GetRotationFromMatrix(HQuat &rotation);
187 
191  virtual void Reset() { };
192 
193 protected:
194 
198  void SetTarget();
199 
204  void AddPositionToMatrix(HPoint &trans);
205 
210  void AddRotationToMatrix(float rot[16]);
211 
216  void AddScaleToMatrix(HPoint &scale);
217 
218 
220  VArray< HKeyframe *> m_pArray;
225 };
226 
227 
229 
234 {
235 public:
241  HBhvInterpolatorPosition(HBhvAnimation *animation = 0, const char *name = 0);
242 
243 
245  const char * GetType();
246 
254 
261  void InsertLinear(HPoint pos, int l = 0) { HKeyframeChannelLinear * linear = new HKeyframeChannelLinear;
262  linear->m_cp = pos; m_pArray.InsertAt(linear, l); }
270  c->m_cp = pos; REPLACE_VARRAY(c, l) }
277  void InsertCurve(HPoint pos, int l = 0) { HKeyframeChannelCurve * linear = new HKeyframeChannelCurve;
278  linear->m_cp = pos; m_pArray.InsertAt(linear, l); }
286  c->m_cp = pos; REPLACE_VARRAY(c, l) }
287 
295  d->m_cp = pos; m_pArray.InsertAt(d, l); }
296 
300  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
304  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
305 
311  virtual void Interpolate(int keyframe, float fraction);
312 
313  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
314 
318  virtual void Reset();
319 
326  virtual void CalculatePos(int keyframe, float fraction, HPoint &res);
327 
328 protected:
333  virtual void InterpolateCamera(HPoint &pos, bool simulate = false);
334 
339  virtual void InterpolateCamera2(HPoint &pos, bool simulate = false);
340 
345  virtual void CalculateAllTangents();
346 };
347 
349 
353 {
354 public:
360  HBhvInterpolatorTrail(HBhvAnimation *animation = 0, const char *name = 0);
362 
363 
365  const char * GetType();
366 
374 
378  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
382  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
383 
389  virtual void Interpolate(int keyframe, float fraction);
393  virtual void Reset();
394 
398  void Init();
399  void SetTrailType(TrailInterpolatorType tt) { m_TrailType = tt; }
400  void SetTrailColor(const char *color) { strcpy(m_Color, color); }
401  void SetTrailWeight(int weight) { m_Weight = weight; }
402  void SetTrailStyle(const char *style) { strcpy(m_Style, style); }
403 
404 
405 protected:
406  TrailInterpolatorType m_TrailType;
407  char m_Color[MVO_SMALL_BUFFER_SIZE];
408  int m_Weight;
409  char m_Style[MVO_SMALL_BUFFER_SIZE];
410  HC_KEY m_TrailSegment, m_trailKey;
411  int m_lastkeyframe;
412  bool m_initialized;
413 
414 };
415 
417 
421 {
422 public:
428  HBhvInterpolatorAxisRotate(HBhvAnimation *animation = 0, const char *name = 0);
429 
433  void SetAxis(float x, float y, float z) {m_axis.x = x; m_axis.y = y; m_axis.z = z; }
434 
438  void GetAxis (HPoint &axis) { axis = m_axis; }
439 
441  const char * GetType();
442 
450 
457  void Insert(float angle, int l = 0) { HKeyframeAxisRotation* linear = new HKeyframeAxisRotation;
458  linear->m_angle = angle; m_pArray.InsertAt(linear, l); }
465  void Replace(float angle, int l) { HKeyframeAxisRotation * c = new HKeyframeAxisRotation;
466  c->m_angle = angle; REPLACE_VARRAY(c, l); }
467 
471  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
472 
476  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
477 
478 
484  virtual void Interpolate(int keyframe, float fraction);
485  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
486 
487 protected:
490 };
491 
492 
494 
496 {
497 public:
504  HBhvInterpolatorColor(HBhvAnimation *animation = 0, const char *name = 0);
506  const char * GetType();
507 
515 
523  void Insert(HPoint pos, int l = 0) { HKeyframeChannelLinear* color = new HKeyframeChannelLinear;
524  color->m_cp = pos; m_pArray.InsertAt(color, l); }
533  c->m_cp = pos; REPLACE_VARRAY(c, l); }
534 
538  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
539 
543  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
544 
548  void SetGeomType (const char *geomtype);
549 
551  char * GetGeomType () { return m_GeomType; }
552 
557  void SetColorComponent (const char *ColorComponent);
558 
560  char * GetColorComponent () { return m_ColorComponent; }
561 
567  virtual void Interpolate(int keyframe, float fraction);
568 
569 protected:
570  char m_ColorComponent[MVO_BUFFER_SIZE];
571  char m_GeomType[MVO_BUFFER_SIZE];
573 };
574 
575 
576 /*
577 class MVO_API HBhvInterpolatorQuat : public HBhvInterpolator
578 {
579 public:
580  HBhvInterpolatorQuat(const char *name = 0);
581  const char * GetType();
582 
583  virtual HBhvInterpolatorInstance * CreateInstance(HBhvanimation *ainst);
584  void Insert(HQuat pos, int l) { HKeyframeQuatSlerp * rot = new HKeyframeQuatSlerp;
585  rot->m_quat = pos; m_pArray.InsertAt(rot, l); }
586  void Replace(HQuat pos, int l) { HKeyframeQuatSlerp * c = new HKeyframeQuatSlerp;
587  c->m_quat = pos; REPLACE_VARRAY(c, l); }
588 
589 };
590 
591 
592 
593 class MVO_API HBhvInterpolatorInstanceQuat : public HBhvInterpolatorInstance
594 {
595 public:
596  HBhvInterpolatorInstanceQuat(HBhvInterpolatorQuat *ip, HBhvanimation *ainst) : HBhvInterpolatorInstance((HBhvInterpolator *)ip, ainst) {}
597  virtual void Interpolate(int keyframe, float fraction);
598 
599 protected:
600 
601  virtual void InterpolateCamera(float *quat);
602 
603 };
604 
605 */
606 
607 
608 
610 
612 {
613 public:
614 
621  virtual void CalculatePos(int keyframe, float fraction, HPoint &res);
622 
623 
628  virtual void CalculateAllTangents();
629 
633  virtual void Reset();
634 
640  HBhvInterpolatorScale(HBhvAnimation *animation = 0, const char *name = 0);
641 
643  const char * GetType();
644 
652 
659  void Insert(HPoint pos, int l = 0) { HKeyframeChannelLinear * scale = new HKeyframeChannelLinear;
660  scale->m_cp = pos; m_pArray.InsertAt(scale, l); }
668  c->m_cp = pos; REPLACE_VARRAY(c, l) }
669 
673  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
674 
678  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
679 
685  virtual void Interpolate(int keyframe, float fraction);
686  void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
687 
688 
689 protected:
694  virtual void InterpolateCamera(HPoint &Scale, bool simulate = false);
699  virtual void InterpolateCamera2(HPoint &Scale, bool simulate = false);
700 
701 };
702 
703 
704 
707 {
708 public:
709 
715  HBhvInterpolatorQuatSquad(HBhvAnimation *animation = 0, const char *name = 0);
716 
718  const char * GetType();
719 
727 
734  void Insert(HQuat q, int l = 0) { HKeyframeQuatSquad * rot = new HKeyframeQuatSquad;
735  rot->m_quat = q; m_pArray.InsertAt(rot, l); }
736 
743  void InsertLinear(HQuat q, int l = 0) { HKeyframeQuatSquad * rot = new HKeyframeQuatSquad;
744  rot->m_quat = q; rot->m_bLinear = true; m_pArray.InsertAt(rot, l); }
745 
752  void Replace(HQuat q, int l) { HKeyframeQuatSquad * c = new HKeyframeQuatSquad;
753  c->m_quat = q; REPLACE_VARRAY(c, l); }
761  c->m_quat = q; c->m_bLinear = true; REPLACE_VARRAY(c, l); }
762 
766  void AdjustQuaternions();
767 
771  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
772 
776  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
777 
783  virtual void Interpolate(int keyframe, float fraction);
784  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
785 
792  virtual void CalculateQuat(int keyframe, float fraction, HQuat &res);
793 
794 
795 
796 protected:
801  virtual void InterpolateCamera(HQuat &quat, bool simulate = false);
802 
807  virtual void InterpolateCamera2(HQuat &quat, bool simulate = false);
808 
809 };
810 
811 
812 
813 
815 
819 {
820 public:
826  HBhvInterpolatorAttSwitch(HBhvAnimation *animation = 0, const char *name = 0);
827 
829  const char * GetType();
830 
838 
845  void Insert(const char * t, int l = 0) { HKeyframeString* AttSwitch = new HKeyframeString;
846  AttSwitch->SetTarget(t); m_pArray.InsertAt(AttSwitch, l); }
847 
854  void Replace(const char *spath, int l) { HKeyframeString * c = new HKeyframeString;
855  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
856 
860  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
861 
865  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
866 
872  virtual void Interpolate(int keyframe, float fraction);
873 
874 };
875 
876 
877 
878 
879 
880 
881 
884 {
885 public:
886 
892  HBhvInterpolatorVertexMorph(HBhvAnimation *animation = 0, const char *name = 0);
894 
896  const char * GetType();
897 
905 
915  void Insert(char * mident, int l = 0) { HKeyframeString* VertexMorph = new HKeyframeString;
916  VertexMorph->SetTarget(mident); m_pArray.InsertAt(VertexMorph, l); }
917  void InsertDiscrete(char * mident, int l = 0) { HKeyframeString* VertexMorph = new HKeyframeString;
918  VertexMorph->SetTarget(mident); VertexMorph->m_bDiscrete = true; m_pArray.InsertAt(VertexMorph, l); }
919 
929  void Replace(char *t, int l) { HKeyframeString * c = new HKeyframeString;
930  c->SetTarget(t); REPLACE_VARRAY(c, l) }
931 
935  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
936 
940  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
941 
947  virtual void Interpolate(int keyframe, float fraction);
948 
958  virtual void AddMorphData(HPoint *md, int pnum, HBaseModel *model, int pos = -1);
959 
961  VArray < void *> GetMorphData() { return m_pMorphData; }
962 
964  int GetMorphDataLength() { return m_MorphDataLength; }
965 private:
966 
967  void *GetUserInfo(char *target);
968  void * GetMorphData(int i);
970  VArray < void *> m_pMorphData;
971  HC_KEY m_shelltarget;
972  int m_MorphDataLength;
973 };
974 
975 
976 
979 {
980 public:
981 
987  HBhvInterpolatorColorMorph(HBhvAnimation *animation = 0, const char *name = 0);
989 
991  const char * GetType();
992 
1000 
1010  void Insert(char * mident, int l = 0) { HKeyframeString* ColorMorph = new HKeyframeString;
1011  ColorMorph->SetTarget(mident); m_pArray.InsertAt(ColorMorph, l); }
1012  void InsertDiscrete(char * mident, int l = 0) { HKeyframeString* ColorMorph = new HKeyframeString;
1013  ColorMorph->SetTarget(mident); ColorMorph->m_bDiscrete = true; m_pArray.InsertAt(ColorMorph, l); }
1023  void Replace(char *t, int l) { HKeyframeString * c = new HKeyframeString;
1024  c->SetTarget(t); REPLACE_VARRAY(c, l) }
1025 
1029  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1030 
1034  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1035 
1041  virtual void Interpolate(int keyframe, float fraction);
1042 
1044  VArray < void *> GetMorphData() { return m_pMorphData; }
1045 
1047  int GetMorphDataLength() { return m_MorphDataLength; }
1059  virtual void AddMorphData(HPoint *md, int pnum, HBaseModel *model, int pos = -1);
1060 
1066  virtual void SetUseFIndex(bool tf);
1067 
1068 private:
1069 
1070  void *GetUserInfo(char *target);
1071  void * GetMorphData(int i);
1072  VArray < void *> m_pMorphData;
1073  HC_KEY m_shelltarget;
1074  int m_MorphDataLength;
1075  bool m_bUseFIndex;
1076 };
1077 
1078 
1079 
1080 
1083 {
1084 public:
1085 
1091  HBhvInterpolatorSegSwitch(HBhvAnimation *animation = 0, const char *name = 0);
1093 
1095  const char * GetType();
1096 
1103  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1104 
1111  void Insert(char * t, int l = 0) { HKeyframeString* SegSwitch = new HKeyframeString;
1112  SegSwitch->SetTarget(t); m_pArray.InsertAt(SegSwitch, l); }
1113 
1120  void Replace(char *spath, int l) { HKeyframeString * c = new HKeyframeString;
1121  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
1122 
1126  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1127 
1131  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1132 
1138  virtual void Interpolate(int keyframe, float fraction);
1139 
1143  virtual void Reset();
1144 
1145 };
1146 
1147 
1148 
1149 
1152 {
1153 public:
1154 
1160  HBhvInterpolatorInstanceCreate(HBhvAnimation *animation = 0, const char *name = 0);
1162 
1164  const char * GetType();
1165 
1172  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1173 
1180  void Insert(char * t, char *t2, char *t3, int l = 0) { HKeyframe3String* InstanceCreate = new HKeyframe3String;
1181  InstanceCreate->SetTarget(t,t2,t3); m_pArray.InsertAt(InstanceCreate, l); }
1182 
1189  void Replace(char *t, char *t2, char *t3, int l) { HKeyframe3String * c = new HKeyframe3String;
1190  c->SetTarget(t,t2,t3); REPLACE_VARRAY(c, l) }
1191 
1195  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1196 
1200  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1201 
1207  virtual void Interpolate(int keyframe, float fraction);
1208 
1212  virtual void Reset();
1213 
1214  static void DeciperString(HBhvInterpolatorInstanceCreate *itp, char *text, HBaseModel *model, int &counter);
1215 
1216 
1217 };
1218 
1219 
1220 
1223 {
1224 public:
1225 
1231  HBhvInterpolatorSegMove(HBhvAnimation *animation = 0, const char *name = 0);
1233 
1235  const char * GetType();
1236 
1243  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1244 
1251  void Insert(char * t, int l = 0) { HKeyframeString* SegMove = new HKeyframeString;
1252  SegMove->SetTarget(t); m_pArray.InsertAt(SegMove, l); }
1253 
1260  void Replace(char *spath, int l) { HKeyframeString * c = new HKeyframeString;
1261  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
1262 
1266  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1267 
1271  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1272 
1278  virtual void Interpolate(int keyframe, float fraction);
1279 
1283  virtual void Reset();
1284 
1285 };
1286 
1287 
1288 
1289 
1292 {
1293 public:
1294 
1300  HBhvInterpolatorMatrix(HBhvAnimation *animation = 0, const char *name = 0);
1301 
1303  const char * GetType();
1304 
1311  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1312 
1319  void Insert(float *mat, int l = 0) { HKeyframeMatrix * rot = new HKeyframeMatrix;
1320  for (int i=0;i<16;i++) rot->m_matrix[i] = mat[i]; m_pArray.InsertAt(rot, l); }
1321 
1322 
1323 
1330  void Replace(float * q, int l) { HKeyframeMatrix * c = new HKeyframeMatrix;
1331  for (int i=0;i<16;i++) c->m_matrix[i] = q[i]; REPLACE_VARRAY(c, l); }
1332 
1333 
1337  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1338 
1342  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1343 
1349  virtual void Interpolate(int keyframe, float fraction);
1350 
1351 
1352 protected:
1353 
1354 };
1355 
1356 
1357 
1358 #ifdef H_PACK_8
1359 #pragma pack(pop)
1360 #endif
1361 
1362 #endif
1363 
1364 
1365 
void Append(HKeyframe *piece)
Definition: HBhvInterpolator.h:114
void Replace(const char *spath, int l)
Definition: HBhvInterpolator.h:854
VArray< void * > GetMorphData()
Definition: HBhvInterpolator.h:961
void ReplaceLinear(HQuat q, int l)
Definition: HBhvInterpolator.h:760
void Insert(char *mident, int l=0)
Definition: HBhvInterpolator.h:1010
int m_Weight
Definition: HBhvInterpolator.h:408
The HKeyframe class is the base class for all keyframe types.
Definition: HBhvUtility.h:260
The HKeyframeAxisRotation class is used for rotations around an arbitrary axis.
Definition: HBhvUtility.h:642
The HKeyframeQuatSquad class is used for non-linear quaternion based rotation.
Definition: HBhvUtility.h:716
char m_Name[BHV_MAX_NAME_LENGTH]
Definition: HBhvAnimation.h:280
The HBhvInterpolatorColor class controls color attribute changes.
Definition: HBhvInterpolator.h:495
void ReplaceCurve(HPoint pos, int l)
Definition: HBhvInterpolator.h:285
virtual void Serialize(HUtilityXMLGenerator *xmlgen)
Definition: HBhvInterpolator.h:159
The HQuat class defines the data type of a Quaternion.
Definition: HBhvUtility.h:86
void Insert(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:659
virtual const char * GetType()
Definition: HBhvAnimation.h:61
void Insert(char *t, int l=0)
Definition: HBhvInterpolator.h:1251
HBhvAnimation * m_pAnimation
Definition: HBhvInterpolator.h:221
HC_KEY m_trailKey
Definition: HBhvInterpolator.h:410
HQuat m_quat
Definition: HBhvUtility.h:750
void Replace(float angle, int l)
Definition: HBhvInterpolator.h:465
void Insert(char *mident, int l=0)
Definition: HBhvInterpolator.h:915
void Duplicate(int newkeyframe, int oldkeyframe)
void Insert(char *t, int l=0)
Definition: HBhvInterpolator.h:1111
HBhvAnimation * GetAnimation()
Definition: HBhvInterpolator.h:170
#define HC_KEY
void Insert(char *t, char *t2, char *t3, int l=0)
Definition: HBhvInterpolator.h:1180
void Insert(HKeyframe *piece, int pos=0)
Definition: HBhvInterpolator.h:108
void InsertLinear(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:261
void Replace(char *t, char *t2, char *t3, int l)
Definition: HBhvInterpolator.h:1189
float m_angle
Definition: HBhvUtility.h:677
void Replace(HQuat q, int l)
Definition: HBhvInterpolator.h:752
The HBhvInterpolatorVertexMorph class performs interpolation by interpolating the individual vertex p...
Definition: HBhvInterpolator.h:883
int GetMorphDataLength()
Definition: HBhvInterpolator.h:964
virtual int GetArrayLength()
Definition: HBhvInterpolator.h:137
#define BHV_MAX_NAME_LENGTH
Maximum Length of "Names" in animations.
Definition: HBhvUtility.h:44
virtual HKeyframe * GetAt(int pos)
Definition: HBhvInterpolator.h:130
void GetAxis(HPoint &axis)
Definition: HBhvInterpolator.h:438
The HBhvInterpolatorScale class controls scaling. This class can be used for camera interpolation as ...
Definition: HBhvInterpolator.h:611
void SetAnimation(HBhvAnimation *animation)
Definition: HBhvInterpolator.h:175
The HBhvInterpolatorQuatSquad class controls quaternion based rotation. This class can be used for ca...
Definition: HBhvInterpolator.h:706
HBhvInterpolator * m_pInterpolatorInstance
Definition: HBhvInterpolator.h:222
void Replace(HPoint pos, int l)
Definition: HBhvInterpolator.h:667
HPoint m_cp
Definition: HBhvUtility.h:351
The HBhvInterpolatorPosition class controls positional interpolation.
Definition: HBhvInterpolator.h:233
The HBhvInterpolatorInstanceCreate creates a new instance of the target object at the location in the...
Definition: HBhvInterpolator.h:1151
void InsertCurve(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:277
void Replace(char *t, int l)
Definition: HBhvInterpolator.h:1023
The HBhvInterpolatorSegSwitch performs animation by switching on and off the visibility of segments...
Definition: HBhvInterpolator.h:1082
The HKeyframeChannelDiscrete class is used for discrete interpolation of positional values...
Definition: HBhvUtility.h:406
The HBhvInterpolatorColorMorph class performs an interpolation on the face colors of your target obje...
Definition: HBhvInterpolator.h:978
void Insert(float angle, int l=0)
Definition: HBhvInterpolator.h:457
The HBhvInterpolatorTrail class draws a line trail from one keyframe position to the next...
Definition: HBhvInterpolator.h:352
The HBhvInterpolator class is the abstract base class for all interpolator types. ...
Definition: HBhvInterpolator.h:67
void Replace(char *spath, int l)
Definition: HBhvInterpolator.h:1260
const char * GetName()
Definition: HBhvInterpolator.h:123
The HKeyframeString class is used for any string related keyframes.
Definition: HBhvUtility.h:858
float m_matrix[16]
Definition: HBhvUtility.h:795
The HKeyframeChannelCurve class is used for spline based interpolation of positional values...
Definition: HBhvUtility.h:457
void Insert(const char *t, int l=0)
Definition: HBhvInterpolator.h:845
The HBaseModel class is used to store and manage model information.
Definition: HBaseModel.h:52
void InsertLinear(HQuat q, int l=0)
Definition: HBhvInterpolator.h:743
void Insert(float *mat, int l=0)
Definition: HBhvInterpolator.h:1319
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:126
HKeyframe ** GetArray()
Definition: HBhvInterpolator.h:134
virtual void Reset()
Definition: HBhvInterpolator.h:191
The HKeyframeChannelLinear class is used for linear interpolation of positional values.
Definition: HBhvUtility.h:359
HBhvAnimation * CreateInstance()
void SetTarget(const char *target)
virtual void Serialize(HUtilityXMLGenerator *xmlgen, HUtilityXMLTag *xmlt)
The HBhvAnimation class defines an animation.
Definition: HBhvAnimation.h:47
VArray< void * > GetMorphData()
Definition: HBhvInterpolator.h:1044
bool m_bLinear
Definition: HBhvUtility.h:635
void Insert(HQuat q, int l=0)
Definition: HBhvInterpolator.h:734
void Replace(float *q, int l)
Definition: HBhvInterpolator.h:1330
void Insert(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:523
VArray< HKeyframe * > m_pArray
Definition: HBhvInterpolator.h:220
int GetMorphDataLength()
Definition: HBhvInterpolator.h:1047
static void * XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData)
char * GetGeomType()
Definition: HBhvInterpolator.h:551
The HKeyframeString class is used for any string related keyframes.
Definition: HBhvUtility.h:809
void Replace(HPoint pos, int l)
Definition: HBhvInterpolator.h:532
void SetAxis(float x, float y, float z)
Definition: HBhvInterpolator.h:433
void Replace(char *spath, int l)
Definition: HBhvInterpolator.h:1120
The HBhvInterpolatorAttSwitch class switches attributes on segments.
Definition: HBhvInterpolator.h:818
virtual void Interpolate(int keyframe, float fraction)
Definition: HBhvInterpolator.h:166
void SetTarget(HBhvTargetObject *target)
The HKeyframeQuatSquad class is used for non-linear quaternion based rotation.
Definition: HBhvUtility.h:757
void ReplaceLinear(HPoint pos, int l)
Definition: HBhvInterpolator.h:269
void Replace(HKeyframe *c, int pos)
Definition: HBhvInterpolator.h:101
The HBhvInterpolatorMatrix class controls quaternion based rotation. This class can be used for camer...
Definition: HBhvInterpolator.h:1291
void Remove(int pos)
Definition: HBhvInterpolator.h:120
char * GetColorComponent()
Definition: HBhvInterpolator.h:560
void Replace(char *t, int l)
Definition: HBhvInterpolator.h:929
void InsertDiscrete(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:294
The HBhvInterpolatorSegMove performs animation by switching on and off the visibility of segments...
Definition: HBhvInterpolator.h:1222
TrailInterpolatorType m_TrailType
Definition: HBhvInterpolator.h:406
The HBhvInterpolatorAxisRotate class controls rotation around an arbitrary axis.
Definition: HBhvInterpolator.h:420
HPoint m_axis
Definition: HBhvInterpolator.h:488
HC_KEY m_pTarget
Definition: HBhvInterpolator.h:223