18 #ifndef _H_HBhvBehaviorManager_H
19 #define _H_HBhvBehaviorManager_H
29 #include "HBhvInterpolator.h"
34 class HUtilityXMLGenerator;
108 void SetTargetKey(HC_KEY key) { m_key = key; }
122 bool IsEqual(
const char *target);
136 static void ResolveTarget(
const char *in,
char *result,
char *targettype,
HBaseModel *model,
HBhvCameraType &ctype);
138 static void CreateTargetString(
const char *type,
const char *path,
char *result,
bool addquotes =
false);
172 void SetPivot(
float x,
float y,
float z) { m_Pivot.Set(x,y,z); }
184 void Serialize(HUtilityXMLGenerator *xmlgen);
189 static void *XMLCallback(HUtilityXMLTag *xt,
bool open,
void *m_pExtraData);
209 void SetSerializeFromKey(
bool sfk ) { m_bSerializeFromKey = sfk; }
214 static void CollapseTarget(
const char *target,
char *collapsedtarget);
216 char m_Name[MVO_SMALL_BUFFER_SIZE];
217 char m_Path[MVO_SEGMENT_PATHNAME_BUFFER];
218 char m_ResolvedPath[MVO_SEGMENT_PATHNAME_BUFFER];
219 char m_Type[MVO_SMALL_BUFFER_SIZE];
230 bool m_bSerializeFromKey;
269 void Serialize(HUtilityXMLGenerator *xmlgen);
276 void ScheduleAnimation(
HBhvAnimation* animation,
float currenttime);
299 virtual bool Tick(
float request_time,
float actual_time );
312 void DeleteAllAnimations();
321 HBhvAnimation * FindAnimation(
const char *target,
const char *interpolatortype);
333 void ScheduleAllAnimations(
bool reset =
false);
349 HBhvTargetObject * CreateTargetObjectByPath(
const char *name,
const char *path);
376 void WriteToFile(
const __wchar_t *filename);
378 void WriteToFile(
const unsigned short *filename);
380 void WriteToFile(
const char *filename);
387 static void ReadFromFile(
HBaseModel *model,
const __wchar_t *filename);
389 static void ReadFromFile(
HBaseModel *model,
const unsigned short *filename);
391 static void ReadFromFile(
HBaseModel *model,
const char *filename);
398 static void ProcessXMLData(
HBaseModel *model,
const char *buffer);
403 static void *XMLCallback(HUtilityXMLTag *xt,
bool open,
void *m_pExtraData);
416 void SetCurrentTick(
float tick);
419 void SetCurrentTick();
426 void SetCurrentTickByPercentage(
float percentage);
429 float GetCurrentTickByPercentage();
438 HC_KEY GetActiveSceneKey();
458 bool IsAtFinalTick();
469 int GetNextKeyframe(
int ticknum,
bool forward);
480 bool HasAnimations();
488 HBhvSensor * FindSensorByName(
const char *name);
493 void ExecuteAnimations(
float currenttick,
float starttick);
537 void SetTargetMatrix(
float *mat) {
for (
int i=0;i<16;i++) m_targetmatrix[i] = mat[i]; }
540 void GetTargetMatrix(
float *mat) {
for (
int i=0;i<16;i++) mat[i] = m_targetmatrix[i]; }
552 void DeactivateAllAnimations();
555 void ActivateAllAnimations();
560 void ActivateAnimationByName(
const char *name,
bool AllowPartial =
true);
565 void DeactivateAnimationByName(
const char *name,
bool AllowPartial =
true);
594 void AddPositionKeyframe(
const char *animname,
int tick,
HPoint pos,
bool linear);
601 void AddQuatSquadKeyframe(
const char *animname,
int tick,
HQuat rot,
bool linear);
607 void AddMatrixKeyframe(
const char *animname,
int tick,
float *matrix);
615 void AddSegmentMoveKeyframe(
const char *animname,
int tick,
char *path);
626 void AddTrailKeyframe(
const char *animname,
int tick,
HPoint pos,
bool linear, TrailInterpolatorType *trailtype = 0,
int *weight = 0,
const char *style =0,
const char *color = 0);
633 void AddAxisRotateKeyframe(
const char *animname,
int tick,
float rot,
HPoint *axis = 0);
640 void AddColorKeyframe(
const char *animname,
int tick,
HPoint color,
const char *colorcomponent = 0,
const char *geomtype = 0);
645 void AddScaleKeyframe(
const char *animname,
int tick,
HPoint scale);
651 void AddAttributeSwitchKeyframe(
const char *animname,
int tick,
const char *att);
658 void AddVertexMorphInterpolator(
const char *animname,
int tick,
const char *mident,
bool discrete);
666 void AddColorMorphInterpolator(
const char *animname,
int tick,
const char *mident,
bool discrete);
672 void AddSegmentSwitchKeyframe(
const char *animname,
int tick,
const char *ss);
678 void AddInstanceCreateKeyframe(
const char *animname,
int tick,
const char *instance);
688 void AddVertexMorphDataToAnimation(
const char *animname,
HPoint *md,
int pnum,
HBaseModel *model,
int pos = -1);
697 void AddColorMorphDataToAnimation(
const char *animname,
HPoint *md,
int pnum,
HBaseModel *model,
int pos = -1);
705 void ResolveInstances();
739 float m_positionmatrix[16];
740 float m_targetmatrix[16];
745 bool m_bShellSelectionActive;
void SetStartTime(float time)
Definition: HBhvBehaviorManager.h:571
void SetCurrentTickByTime(float t)
Definition: HBhvBehaviorManager.h:411
void GetPositionMatrix(float *mat)
Definition: HBhvBehaviorManager.h:533
The HBhvTimeline class encpasulates an animation timeline.
Definition: HBhvTimeline.h:42
The HKeyframe class is the base class for all keyframe types.
Definition: HBhvUtility.h:260
const char * GetResolvedPath()
Definition: HBhvBehaviorManager.h:111
void SetMerge(bool merge)
Definition: HBhvBehaviorManager.h:576
int m_LastTick
Definition: HBhvBehaviorManager.h:725
The HQuat class defines the data type of a Quaternion.
Definition: HBhvUtility.h:86
const char * GetName()
Definition: HBhvBehaviorManager.h:100
const char * GetPath()
Definition: HBhvBehaviorManager.h:103
void SetPositionMatrix(float *mat)
Definition: HBhvBehaviorManager.h:531
bool m_bCollision
Definition: HBhvBehaviorManager.h:224
The HBhvBehaviorManager class stores and manages all animation related data.
Definition: HBhvBehaviorManager.h:241
bool m_bInfinitePlay
Definition: HBhvBehaviorManager.h:742
void GetPivot(HPoint &pv)
Definition: HBhvBehaviorManager.h:175
void FlagForCollision()
Definition: HBhvBehaviorManager.h:203
HBhvBehaviorManager * m_pBehaviorManager
Definition: HBhvBehaviorManager.h:221
HPoint m_Pivot
Definition: HBhvBehaviorManager.h:223
bool m_bHasMoved
Definition: HBhvBehaviorManager.h:225
struct vlist_s * m_TargetObjectList
Definition: HBhvBehaviorManager.h:729
HBaseModel * GetModel()
Definition: HBhvBehaviorManager.h:406
#define BHV_MAX_NAME_LENGTH
Maximum Length of "Names" in animations.
Definition: HBhvUtility.h:44
bool m_bMerge
Definition: HBhvBehaviorManager.h:743
void CameraUpdated()
Definition: HBhvBehaviorManager.h:514
float m_fov
Definition: HBhvBehaviorManager.h:741
int m_Tps
Definition: HBhvBehaviorManager.h:721
void SetInfinitePlay(bool inf)
Definition: HBhvBehaviorManager.h:506
void GetTargetMatrix(float *mat)
Definition: HBhvBehaviorManager.h:540
Definition: HTManager.h:162
bool m_bContinuousPlay
Definition: HBhvBehaviorManager.h:737
int GetTicksPerSecond()
Definition: HBhvBehaviorManager.h:263
void SetRenderEveryTick(bool everytick)
Definition: HBhvBehaviorManager.h:452
vlist_s * GetAnimationList()
Definition: HBhvBehaviorManager.h:303
void ResetForCollision()
Definition: HBhvBehaviorManager.h:206
HPoint * GetPivot()
Definition: HBhvBehaviorManager.h:178
struct vlist_s * m_SensorList
Definition: HBhvBehaviorManager.h:730
int m_Delay
Definition: HBhvBehaviorManager.h:722
HBaseView * m_pView
Definition: HBhvBehaviorManager.h:734
The HBhvTargetObject class encapsulates various target types for animations and sensors.
Definition: HBhvBehaviorManager.h:86
There is no camera animation.
Definition: HBhvBehaviorManager.h:46
bool m_bCameraUpdated
Definition: HBhvBehaviorManager.h:738
The HBhvInterpolator class is the abstract base class for all interpolator types. ...
Definition: HBhvInterpolator.h:67
float GetCurrentTick()
Definition: HBhvBehaviorManager.h:422
The camera target is independently defined but works in conjunction with CameraPositionFree.
Definition: HBhvBehaviorManager.h:49
bool GetRenderEveryTick()
Definition: HBhvBehaviorManager.h:448
bool m_bRenderEveryFrame
Definition: HBhvBehaviorManager.h:735
The HBhvSensor class encapsulates an animation sensor.
Definition: HBhvSensor.h:38
bool GetContinuousPlay()
Definition: HBhvBehaviorManager.h:511
The HBaseModel class is used to store and manage model information.
Definition: HBaseModel.h:52
void SetPivot(float x, float y, float z)
Definition: HBhvBehaviorManager.h:172
void GetFov(float fov)
Definition: HBhvBehaviorManager.h:545
bool IsPlaying()
Definition: HBhvBehaviorManager.h:435
The HPoint class is the data type of a three-dimensional point.
Definition: HGlobals.h:126
float m_CurrentTick
Definition: HBhvBehaviorManager.h:724
void SetFov(float fov)
Definition: HBhvBehaviorManager.h:543
The HBaseView class defines and manages a view of model information.
Definition: HBaseView.h:337
HBhvCameraType m_CameraType
Definition: HBhvBehaviorManager.h:222
bool GetMerge()
Definition: HBhvBehaviorManager.h:578
Animation keyframe defines the camera target and position.
Definition: HBhvBehaviorManager.h:51
bool GetCameraUpdated()
Definition: HBhvBehaviorManager.h:517
The HBhvAnimation class defines an animation.
Definition: HBhvAnimation.h:47
bool GetUpdateCamera()
Definition: HBhvBehaviorManager.h:455
virtual bool Tick(float request_time, float actual_time)
Definition: HTManager.h:191
HBhvCameraType GetCameraType()
Definition: HBhvBehaviorManager.h:125
struct vlist_s * m_AnimationList
Definition: HBhvBehaviorManager.h:727
Animation is position driven. The target location is derived from the position location.
Definition: HBhvBehaviorManager.h:48
HBaseModel * m_pModel
Definition: HBhvBehaviorManager.h:732
bool m_bUpdateCamera
Definition: HBhvBehaviorManager.h:736
The camera position is independently defined but works in conjunction with CameraTargetFree.
Definition: HBhvBehaviorManager.h:50
HBhvCameraType
Definition: HBhvBehaviorManager.h:44
#define BHV_MAX_VENDOR_LENGTH
Maximum Length of "Vendor" string.
Definition: HBhvUtility.h:46
void SetContinuousPlay(bool cont)
Definition: HBhvBehaviorManager.h:499
bool m_bPlaying
Definition: HBhvBehaviorManager.h:733
float m_StartTime
Definition: HBhvBehaviorManager.h:723
HBaseView * GetActiveView()
Definition: HBhvBehaviorManager.h:445
Animation is target driven. The position location is derived from the target location.
Definition: HBhvBehaviorManager.h:47
void SetTicksPerSecond(int tps)
Definition: HBhvBehaviorManager.h:260
void SetCollision(bool collision)
Definition: HBhvBehaviorManager.h:162
struct vlist_s * m_ScheduledAnimationList
Definition: HBhvBehaviorManager.h:728
void SetPivot(HPoint pv)
Definition: HBhvBehaviorManager.h:153
bool GetCollision()
Definition: HBhvBehaviorManager.h:165
bool HasMoved()
Definition: HBhvBehaviorManager.h:208
void SetTargetMatrix(float *mat)
Definition: HBhvBehaviorManager.h:537
const char * GetType()
Definition: HBhvBehaviorManager.h:115
HC_KEY m_key
Definition: HBhvBehaviorManager.h:220
void SetUpdateCamera(bool updatecamera)
Definition: HBhvBehaviorManager.h:462
#define BHV_MAX_VERSION_LENGTH
Maximum Length of "Version" string.
Definition: HBhvUtility.h:45