Introduction

Getting Started

Programming Guides

API Reference

Additional Resources

HBhvInterpolator.h
1 // Copyright (c) Tech Soft 3D
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 
76  virtual const char * GetType() = 0;
77 
83  void SetInstancedInterpolator(HBhvInterpolator *interpolator);
84 
91  virtual HBhvInterpolator *CreateInstance(HBhvAnimation *animationinst) = 0;
92 
98  void Replace(HKeyframe * c, int pos) { REPLACE_VARRAY(c, pos); }
99 
105  void Insert(HKeyframe * piece, int pos = 0) { m_pArray.InsertAt(piece, pos); }
106 
111  void Append(HKeyframe * piece) { m_pArray.InsertAt(piece, m_pArray.Count()); }
112 
117  void Remove(int pos) { REMOVE_VARRAY(pos); }
118 
120  const char * GetName() { return m_Name; }
121 
127  virtual HKeyframe *GetAt(int pos) { return m_pArray[pos]; }
128 
131  HKeyframe **GetArray() { return &m_pArray[0]; }
132 
134  virtual int GetArrayLength() { return (int)m_pArray.Count(); }
135 
143  void Duplicate(int pos, bool replace, bool next);
144 
151  void Copy(int pos, int adpos, bool replace);
152 
156  virtual void Serialize(HUtilityXMLGenerator *xmlgen) {
157  UNREFERENCED(xmlgen);
158  }
159 
165  virtual void Interpolate(int keyframe, float fraction) {
166  UNREFERENCED(keyframe);
167  UNREFERENCED(fraction);
168  }
169 
170  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale) {
171  UNREFERENCED(keyframe);
172  UNREFERENCED(fraction);
173  UNREFERENCED(hasPos);
174  UNREFERENCED(pos);
175  UNREFERENCED(hasQuat);
176  UNREFERENCED(quat);
177  UNREFERENCED(hasScale);
178  UNREFERENCED(scale);
179  }
180 
182  HBhvAnimation * GetAnimation() { return m_pAnimation; }
183 
187  void SetAnimation(HBhvAnimation *animation) { m_pAnimation = animation; }
188 
193  void GetTranslationFromMatrix(HPoint &translation);
198  void GetRotationFromMatrix(HQuat &rotation);
199 
203  virtual void Reset() { };
204 
205 protected:
206 
210  void SetTarget();
211 
216  void AddPositionToMatrix(HPoint &trans);
217 
222  void AddRotationToMatrix(float rot[16]);
223 
228  void AddScaleToMatrix(HPoint &scale);
229 
230 
232  VArray< HKeyframe *> m_pArray;
237 };
238 
239 
241 
246 {
247 public:
253  HBhvInterpolatorPosition(HBhvAnimation *animation = 0, const char *name = 0);
254 
255 
257  const char * GetType();
258 
266 
273  void InsertLinear(HPoint pos, int l = 0) { HKeyframeChannelLinear * linear = new HKeyframeChannelLinear;
274  linear->m_cp = pos; m_pArray.InsertAt(linear, l); }
282  c->m_cp = pos; REPLACE_VARRAY(c, l) }
289  void InsertCurve(HPoint pos, int l = 0) { HKeyframeChannelCurve * linear = new HKeyframeChannelCurve;
290  linear->m_cp = pos; m_pArray.InsertAt(linear, l); }
298  c->m_cp = pos; REPLACE_VARRAY(c, l) }
299 
307  d->m_cp = pos; m_pArray.InsertAt(d, l); }
308 
312  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
316  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
317 
323  virtual void Interpolate(int keyframe, float fraction);
324 
325  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
326 
330  virtual void Reset();
331 
338  virtual void CalculatePos(int keyframe, float fraction, HPoint &res);
339 
340 protected:
345  virtual void InterpolateCamera(HPoint &pos, bool simulate = false);
346 
351  virtual void InterpolateCamera2(HPoint &pos, bool simulate = false);
352 
357  virtual void CalculateAllTangents();
358 };
359 
361 
365 {
366 public:
372  HBhvInterpolatorTrail(HBhvAnimation *animation = 0, const char *name = 0);
374 
375 
377  const char * GetType();
378 
386 
390  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
394  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
395 
401  virtual void Interpolate(int keyframe, float fraction);
405  virtual void Reset();
406 
410  void Init();
411  void SetTrailType(TrailInterpolatorType tt) { m_TrailType = tt; }
412  void SetTrailColor(const char *color) { strncpy(m_Color, color, sizeof(m_Color)); }
413  void SetTrailWeight(int weight) { m_Weight = weight; }
414  void SetTrailStyle(const char *style) { strncpy(m_Style, style, sizeof(m_Style)); }
415 
416 
417 protected:
418  TrailInterpolatorType m_TrailType;
419  char m_Color[MVO_SMALL_BUFFER_SIZE];
420  int m_Weight;
421  char m_Style[MVO_SMALL_BUFFER_SIZE];
422  HC_KEY m_TrailSegment, m_trailKey;
423  int m_lastkeyframe;
424  bool m_initialized;
425 
426 };
427 
429 
433 {
434 public:
440  HBhvInterpolatorAxisRotate(HBhvAnimation *animation = 0, const char *name = 0);
441 
445  void SetAxis(float x, float y, float z) {m_axis.x = x; m_axis.y = y; m_axis.z = z; }
446 
450  void GetAxis (HPoint &axis) { axis = m_axis; }
451 
453  const char * GetType();
454 
462 
469  void Insert(float angle, int l = 0) { HKeyframeAxisRotation* linear = new HKeyframeAxisRotation;
470  linear->m_angle = angle; m_pArray.InsertAt(linear, l); }
477  void Replace(float angle, int l) { HKeyframeAxisRotation * c = new HKeyframeAxisRotation;
478  c->m_angle = angle; REPLACE_VARRAY(c, l); }
479 
483  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
484 
488  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
489 
490 
496  virtual void Interpolate(int keyframe, float fraction);
497  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
498 
499 protected:
502 };
503 
504 
506 
508 {
509 public:
516  HBhvInterpolatorColor(HBhvAnimation *animation = 0, const char *name = 0);
518  const char * GetType();
519 
527 
535  void Insert(HPoint pos, int l = 0) { HKeyframeChannelLinear* color = new HKeyframeChannelLinear;
536  color->m_cp = pos; m_pArray.InsertAt(color, l); }
545  c->m_cp = pos; REPLACE_VARRAY(c, l); }
546 
550  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
551 
555  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
556 
560  void SetGeomType (const char *geomtype);
561 
563  char * GetGeomType () { return m_GeomType; }
564 
569  void SetColorComponent (const char *ColorComponent);
570 
572  char * GetColorComponent () { return m_ColorComponent; }
573 
579  virtual void Interpolate(int keyframe, float fraction);
580 
581 protected:
582  char m_ColorComponent[MVO_BUFFER_SIZE];
583  char m_GeomType[MVO_BUFFER_SIZE];
585 };
586 
587 
588 /*
589 class MVO_API HBhvInterpolatorQuat : public HBhvInterpolator
590 {
591 public:
592  HBhvInterpolatorQuat(const char *name = 0);
593  const char * GetType();
594 
595  virtual HBhvInterpolatorInstance * CreateInstance(HBhvanimation *ainst);
596  void Insert(HQuat pos, int l) { HKeyframeQuatSlerp * rot = new HKeyframeQuatSlerp;
597  rot->m_quat = pos; m_pArray.InsertAt(rot, l); }
598  void Replace(HQuat pos, int l) { HKeyframeQuatSlerp * c = new HKeyframeQuatSlerp;
599  c->m_quat = pos; REPLACE_VARRAY(c, l); }
600 
601 };
602 
603 
604 
605 class MVO_API HBhvInterpolatorInstanceQuat : public HBhvInterpolatorInstance
606 {
607 public:
608  HBhvInterpolatorInstanceQuat(HBhvInterpolatorQuat *ip, HBhvanimation *ainst) : HBhvInterpolatorInstance((HBhvInterpolator *)ip, ainst) {}
609  virtual void Interpolate(int keyframe, float fraction);
610 
611 protected:
612 
613  virtual void InterpolateCamera(float *quat);
614 
615 };
616 
617 */
618 
619 
620 
622 
624 {
625 public:
626 
633  virtual void CalculatePos(int keyframe, float fraction, HPoint &res);
634 
635 
640  virtual void CalculateAllTangents();
641 
645  virtual void Reset();
646 
652  HBhvInterpolatorScale(HBhvAnimation *animation = 0, const char *name = 0);
653 
655  const char * GetType();
656 
664 
671  void Insert(HPoint pos, int l = 0) { HKeyframeChannelLinear * scale = new HKeyframeChannelLinear;
672  scale->m_cp = pos; m_pArray.InsertAt(scale, l); }
680  c->m_cp = pos; REPLACE_VARRAY(c, l) }
681 
685  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
686 
690  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
691 
697  virtual void Interpolate(int keyframe, float fraction);
698  void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
699 
700 
701 protected:
706  virtual void InterpolateCamera(HPoint &Scale, bool simulate = false);
711  virtual void InterpolateCamera2(HPoint &Scale, bool simulate = false);
712 
713 };
714 
715 
716 
719 {
720 public:
721 
727  HBhvInterpolatorQuatSquad(HBhvAnimation *animation = 0, const char *name = 0);
728 
730  const char * GetType();
731 
739 
746  void Insert(HQuat q, int l = 0) { HKeyframeQuatSquad * rot = new HKeyframeQuatSquad;
747  rot->m_quat = q; m_pArray.InsertAt(rot, l); }
748 
755  void InsertLinear(HQuat q, int l = 0) { HKeyframeQuatSquad * rot = new HKeyframeQuatSquad;
756  rot->m_quat = q; rot->m_bLinear = true; m_pArray.InsertAt(rot, l); }
757 
764  void Replace(HQuat q, int l) { HKeyframeQuatSquad * c = new HKeyframeQuatSquad;
765  c->m_quat = q; REPLACE_VARRAY(c, l); }
773  c->m_quat = q; c->m_bLinear = true; REPLACE_VARRAY(c, l); }
774 
778  void AdjustQuaternions();
779 
783  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
784 
788  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
789 
795  virtual void Interpolate(int keyframe, float fraction);
796  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale);
797 
804  virtual void CalculateQuat(int keyframe, float fraction, HQuat &res);
805 
806 
807 
808 protected:
813  virtual void InterpolateCamera(HQuat &quat, bool simulate = false);
814 
819  virtual void InterpolateCamera2(HQuat &quat, bool simulate = false);
820 
821 };
822 
823 
824 
825 
827 
831 {
832 public:
838  HBhvInterpolatorAttSwitch(HBhvAnimation *animation = 0, const char *name = 0);
839 
841  const char * GetType();
842 
850 
857  void Insert(const char * t, int l = 0) { HKeyframeString* AttSwitch = new HKeyframeString;
858  AttSwitch->SetTarget(t); m_pArray.InsertAt(AttSwitch, l); }
859 
866  void Replace(const char *spath, int l) { HKeyframeString * c = new HKeyframeString;
867  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
868 
872  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
873 
877  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
878 
884  virtual void Interpolate(int keyframe, float fraction);
885 
886 };
887 
888 
889 
890 
891 
892 
893 
896 {
897 public:
898 
904  HBhvInterpolatorVertexMorph(HBhvAnimation *animation = 0, const char *name = 0);
906 
908  const char * GetType();
909 
917 
927  void Insert(char * mident, int l = 0) { HKeyframeString* VertexMorph = new HKeyframeString;
928  VertexMorph->SetTarget(mident); m_pArray.InsertAt(VertexMorph, l); }
929  void InsertDiscrete(char * mident, int l = 0) { HKeyframeString* VertexMorph = new HKeyframeString;
930  VertexMorph->SetTarget(mident); VertexMorph->m_bDiscrete = true; m_pArray.InsertAt(VertexMorph, l); }
931 
941  void Replace(char *t, int l) { HKeyframeString * c = new HKeyframeString;
942  c->SetTarget(t); REPLACE_VARRAY(c, l) }
943 
947  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
948 
952  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
953 
959  virtual void Interpolate(int keyframe, float fraction);
960 
970  virtual void AddMorphData(HPoint *md, int pnum, HBaseModel *model, int pos = -1);
971 
973  VArray < void *> GetMorphData() { return m_pMorphData; }
974 
976  int GetMorphDataLength() { return m_MorphDataLength; }
977 private:
978 
979  void *GetUserInfo(char *target);
980  void * GetMorphData(int i);
982  VArray < void *> m_pMorphData;
983  HC_KEY m_shelltarget;
984  int m_MorphDataLength;
985 };
986 
987 
988 
991 {
992 public:
993 
999  HBhvInterpolatorColorMorph(HBhvAnimation *animation = 0, const char *name = 0);
1001 
1003  const char * GetType();
1004 
1011  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1012 
1022  void Insert(char * mident, int l = 0) { HKeyframeString* ColorMorph = new HKeyframeString;
1023  ColorMorph->SetTarget(mident); m_pArray.InsertAt(ColorMorph, l); }
1024  void InsertDiscrete(char * mident, int l = 0) { HKeyframeString* ColorMorph = new HKeyframeString;
1025  ColorMorph->SetTarget(mident); ColorMorph->m_bDiscrete = true; m_pArray.InsertAt(ColorMorph, l); }
1035  void Replace(char *t, int l) { HKeyframeString * c = new HKeyframeString;
1036  c->SetTarget(t); REPLACE_VARRAY(c, l) }
1037 
1041  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1042 
1046  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1047 
1053  virtual void Interpolate(int keyframe, float fraction);
1054 
1056  VArray < void *> GetMorphData() { return m_pMorphData; }
1057 
1059  int GetMorphDataLength() { return m_MorphDataLength; }
1071  virtual void AddMorphData(HPoint *md, int pnum, HBaseModel *model, int pos = -1);
1072 
1078  virtual void SetUseFIndex(bool tf);
1079 
1080 private:
1081 
1082  void *GetUserInfo(char *target);
1083  void * GetMorphData(int i);
1084  VArray < void *> m_pMorphData;
1085  HC_KEY m_shelltarget;
1086  int m_MorphDataLength;
1087  bool m_bUseFIndex;
1088 };
1089 
1090 
1091 
1092 
1095 {
1096 public:
1097 
1103  HBhvInterpolatorSegSwitch(HBhvAnimation *animation = 0, const char *name = 0);
1105 
1107  const char * GetType();
1108 
1115  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1116 
1123  void Insert(char * t, int l = 0) { HKeyframeString* SegSwitch = new HKeyframeString;
1124  SegSwitch->SetTarget(t); m_pArray.InsertAt(SegSwitch, l); }
1125 
1132  void Replace(char *spath, int l) { HKeyframeString * c = new HKeyframeString;
1133  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
1134 
1138  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1139 
1143  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1144 
1150  virtual void Interpolate(int keyframe, float fraction);
1151 
1155  virtual void Reset();
1156 
1157 };
1158 
1159 
1160 
1161 
1164 {
1165 public:
1166 
1172  HBhvInterpolatorInstanceCreate(HBhvAnimation *animation = 0, const char *name = 0);
1174 
1176  const char * GetType();
1177 
1184  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1185 
1192  void Insert(char * t, char *t2, char *t3, int l = 0) { HKeyframe3String* InstanceCreate = new HKeyframe3String;
1193  InstanceCreate->SetTarget(t,t2,t3); m_pArray.InsertAt(InstanceCreate, l); }
1194 
1201  void Replace(char *t, char *t2, char *t3, int l) { HKeyframe3String * c = new HKeyframe3String;
1202  c->SetTarget(t,t2,t3); REPLACE_VARRAY(c, l) }
1203 
1207  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1208 
1212  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1213 
1219  virtual void Interpolate(int keyframe, float fraction);
1220 
1224  virtual void Reset();
1225 
1226  static void DeciperString(HBhvInterpolatorInstanceCreate *itp, char *text, HBaseModel *model, int &counter);
1227 
1228 
1229 };
1230 
1231 
1232 
1235 {
1236 public:
1237 
1243  HBhvInterpolatorSegMove(HBhvAnimation *animation = 0, const char *name = 0);
1245 
1247  const char * GetType();
1248 
1255  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1256 
1263  void Insert(char * t, int l = 0) { HKeyframeString* SegMove = new HKeyframeString;
1264  SegMove->SetTarget(t); m_pArray.InsertAt(SegMove, l); }
1265 
1272  void Replace(char *spath, int l) { HKeyframeString * c = new HKeyframeString;
1273  c->SetTarget(spath); REPLACE_VARRAY(c, l) }
1274 
1278  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1279 
1283  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1284 
1290  virtual void Interpolate(int keyframe, float fraction);
1291 
1295  virtual void Reset();
1296 
1297 };
1298 
1299 
1300 
1301 
1304 {
1305 public:
1306 
1312  HBhvInterpolatorMatrix(HBhvAnimation *animation = 0, const char *name = 0);
1313 
1315  const char * GetType();
1316 
1323  virtual HBhvInterpolator * CreateInstance(HBhvAnimation *ainst);
1324 
1331  void Insert(float *mat, int l = 0) { HKeyframeMatrix * rot = new HKeyframeMatrix;
1332  for (int i=0;i<16;i++) rot->m_matrix[i] = mat[i]; m_pArray.InsertAt(rot, l); }
1333 
1334 
1335 
1342  void Replace(float * q, int l) { HKeyframeMatrix * c = new HKeyframeMatrix;
1343  for (int i=0;i<16;i++) c->m_matrix[i] = q[i]; REPLACE_VARRAY(c, l); }
1344 
1345 
1349  virtual void Serialize(HUtilityXMLGenerator *xmlgen);
1350 
1354  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData);
1355 
1361  virtual void Interpolate(int keyframe, float fraction);
1362 
1363 
1364 protected:
1365 
1366 };
1367 
1368 
1369 
1370 #ifdef H_PACK_8
1371 #pragma pack(pop)
1372 #endif
1373 
1374 #endif
1375 
1376 
1377 
void Append(HKeyframe *piece)
Definition: HBhvInterpolator.h:111
void Replace(const char *spath, int l)
Definition: HBhvInterpolator.h:866
VArray< void * > GetMorphData()
Definition: HBhvInterpolator.h:973
void ReplaceLinear(HQuat q, int l)
Definition: HBhvInterpolator.h:772
void Insert(char *mident, int l=0)
Definition: HBhvInterpolator.h:1022
int m_Weight
Definition: HBhvInterpolator.h:420
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:507
void ReplaceCurve(HPoint pos, int l)
Definition: HBhvInterpolator.h:297
virtual void Serialize(HUtilityXMLGenerator *xmlgen)
Definition: HBhvInterpolator.h:156
The HQuat class defines the data type of a Quaternion.
Definition: HBhvUtility.h:83
void Insert(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:671
virtual const char * GetType()
Definition: HBhvAnimation.h:57
void Insert(char *t, int l=0)
Definition: HBhvInterpolator.h:1263
HBhvAnimation * m_pAnimation
Definition: HBhvInterpolator.h:233
HC_KEY m_trailKey
Definition: HBhvInterpolator.h:422
HQuat m_quat
Definition: HBhvUtility.h:755
void Replace(float angle, int l)
Definition: HBhvInterpolator.h:477
void Insert(char *mident, int l=0)
Definition: HBhvInterpolator.h:927
void Duplicate(int newkeyframe, int oldkeyframe)
void Insert(char *t, int l=0)
Definition: HBhvInterpolator.h:1123
HBhvAnimation * GetAnimation()
Definition: HBhvInterpolator.h:182
void Insert(char *t, char *t2, char *t3, int l=0)
Definition: HBhvInterpolator.h:1192
void Insert(HKeyframe *piece, int pos=0)
Definition: HBhvInterpolator.h:105
void InsertLinear(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:273
void Replace(char *t, char *t2, char *t3, int l)
Definition: HBhvInterpolator.h:1201
float m_angle
Definition: HBhvUtility.h:682
void Replace(HQuat q, int l)
Definition: HBhvInterpolator.h:764
The HBhvInterpolatorVertexMorph class performs interpolation by interpolating the individual vertex p...
Definition: HBhvInterpolator.h:895
int GetMorphDataLength()
Definition: HBhvInterpolator.h:976
virtual int GetArrayLength()
Definition: HBhvInterpolator.h:134
#define BHV_MAX_NAME_LENGTH
Maximum Length of "Names" in animations.
Definition: HBhvUtility.h:41
virtual HKeyframe * GetAt(int pos)
Definition: HBhvInterpolator.h:127
void GetAxis(HPoint &axis)
Definition: HBhvInterpolator.h:450
The HBhvInterpolatorScale class controls scaling. This class can be used for camera interpolation as ...
Definition: HBhvInterpolator.h:623
#define HC_KEY
void SetAnimation(HBhvAnimation *animation)
Definition: HBhvInterpolator.h:187
The HBhvInterpolatorQuatSquad class controls quaternion based rotation. This class can be used for ca...
Definition: HBhvInterpolator.h:718
HBhvInterpolator * m_pInterpolatorInstance
Definition: HBhvInterpolator.h:234
void Replace(HPoint pos, int l)
Definition: HBhvInterpolator.h:679
HPoint m_cp
Definition: HBhvUtility.h:356
The HBhvInterpolatorPosition class controls positional interpolation.
Definition: HBhvInterpolator.h:245
The HBhvInterpolatorInstanceCreate creates a new instance of the target object at the location in the...
Definition: HBhvInterpolator.h:1163
void InsertCurve(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:289
void Replace(char *t, int l)
Definition: HBhvInterpolator.h:1035
The HBhvInterpolatorSegSwitch performs animation by switching on and off the visibility of segments...
Definition: HBhvInterpolator.h:1094
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:990
void Insert(float angle, int l=0)
Definition: HBhvInterpolator.h:469
The HBhvInterpolatorTrail class draws a line trail from one keyframe position to the next...
Definition: HBhvInterpolator.h:364
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:1272
const char * GetName()
Definition: HBhvInterpolator.h:120
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:857
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:755
void Insert(float *mat, int l=0)
Definition: HBhvInterpolator.h:1331
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:131
virtual void Reset()
Definition: HBhvInterpolator.h:203
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:1056
bool m_bLinear
Definition: HBhvUtility.h:640
void Insert(HQuat q, int l=0)
Definition: HBhvInterpolator.h:746
void Replace(float *q, int l)
Definition: HBhvInterpolator.h:1342
void Insert(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:535
VArray< HKeyframe * > m_pArray
Definition: HBhvInterpolator.h:232
int GetMorphDataLength()
Definition: HBhvInterpolator.h:1059
static void * XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData)
char * GetGeomType()
Definition: HBhvInterpolator.h:563
The HKeyframeString class is used for any string related keyframes.
Definition: HBhvUtility.h:814
void Replace(HPoint pos, int l)
Definition: HBhvInterpolator.h:544
void SetAxis(float x, float y, float z)
Definition: HBhvInterpolator.h:445
void Replace(char *spath, int l)
Definition: HBhvInterpolator.h:1132
The HBhvInterpolatorAttSwitch class switches attributes on segments.
Definition: HBhvInterpolator.h:830
virtual void Interpolate(int keyframe, float fraction)
Definition: HBhvInterpolator.h:165
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:281
void Replace(HKeyframe *c, int pos)
Definition: HBhvInterpolator.h:98
The HBhvInterpolatorMatrix class controls quaternion based rotation. This class can be used for camer...
Definition: HBhvInterpolator.h:1303
void Remove(int pos)
Definition: HBhvInterpolator.h:117
char * GetColorComponent()
Definition: HBhvInterpolator.h:572
void Replace(char *t, int l)
Definition: HBhvInterpolator.h:941
void InsertDiscrete(HPoint pos, int l=0)
Definition: HBhvInterpolator.h:306
The HBhvInterpolatorSegMove performs animation by switching on and off the visibility of segments...
Definition: HBhvInterpolator.h:1234
TrailInterpolatorType m_TrailType
Definition: HBhvInterpolator.h:418
The HBhvInterpolatorAxisRotate class controls rotation around an arbitrary axis.
Definition: HBhvInterpolator.h:432
HPoint m_axis
Definition: HBhvInterpolator.h:500
HC_KEY m_pTarget
Definition: HBhvInterpolator.h:235