The HBhvAnimation class defines an animation. More...
#include <HBhvAnimation.h>
Public Member Functions | |
void | AddChildAnimation (HBhvAnimation *childanimation) |
void | AddInterpolator (HBhvInterpolator *interpolator) |
void | AdjustKeyframe (int keyframe, int delta, bool doall=true, bool relative=false) |
void | AdjustToTick (int totalticks) |
virtual bool | Animate (float currenttime) |
virtual bool | Animate (float currenttime, float starttime) |
void | CleanWithoutDelete () |
HBhvAnimation * | CreateInstance () |
void | DeleteKeyframe (int keyframe) |
void | Duplicate (int newkeyframe, int oldkeyframe) |
void | DuplicateNextOrPrevious (int keyframe, bool next) |
void | Evaluate (float currenttick, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale) |
bool | ExecuteOnce () |
HBhvBehaviorManager * | GetBehaviorManager () |
struct vlist_s * | GetChildAnimationList () |
bool | GetCurrentlyRunning () |
float | GetCurrentTick () |
bool | GetDefaultActive () |
int | GetDelay () |
int | GetFirstTick () |
HBhvAnimation * | GetInstancedAnimation () |
HBhvInterpolator * | GetInterpolator () |
bool | GetInterpolator (int time, int &interval, HKeyframe **keyframe) |
struct vlist_s * | GetInterpolatorList () |
int | GetLastTick () |
int | GetLoop () |
const char * | GetName () |
HBhvAnimation * | GetParentAnimation () |
HBhvTargetObject * | GetTarget () |
float * | GetTargetScaleMatrix () |
HBhvTimeline * | GetTimeline () |
virtual const char * | GetType () |
HBhvAnimation (const char *name, HBhvBehaviorManager *BehaviorManager, HBhvAnimation *parentanimation=0) | |
void | PlotCurve (bool rotations) |
void | Reset () |
virtual void | Serialize (HUtilityXMLGenerator *xmlgen, HUtilityXMLTag *xmlt) |
virtual void | Serialize (HUtilityXMLGenerator *xmlgen) |
void | SetBehaviorManager (HBhvBehaviorManager *behaviourmanager) |
void | SetCurrentlyRunning (bool running) |
void | SetDefaultActive (bool active) |
void | SetDelay (int delay) |
void | SetExecuteOnce (bool once) |
void | SetInstancedAnimation (HBhvAnimation *animation) |
void | SetLoop (int loop) |
void | SetName (const char *name) |
void | SetTarget (HBhvTargetObject *target) |
void | SetTargetByPath (const char *targetpath) |
void | SetTargetByPath (const char *name, const char *targetpath) |
void | SetTargetScaleMatrix (float const *target_matrix) |
void | SetTimeline (HBhvTimeline *timeline) |
virtual | ~HBhvAnimation () |
Static Public Member Functions | |
static void * | XMLCallback (HUtilityXMLTag *xt, bool open, void *m_pExtraData) |
Protected Member Functions | |
virtual bool | AnimateInternal (float currenttick) |
void | CloneAnimation () |
virtual void | SerializeTarget (HUtilityXMLTag *xmlt) |
void | SetInstanceOf (const char *name) |
Protected Attributes | |
bool | m_bCurrentlyRunning |
bool | m_bDefaultActive |
bool | m_bExecuteOnce |
struct vlist_s * | m_ChildAnimationList |
int | m_Delay |
char | m_InstanceOf [BHV_MAX_NAME_LENGTH] |
struct vlist_s * | m_InterpolatorList |
int | m_Loop |
char | m_Name [BHV_MAX_NAME_LENGTH] |
HBhvBehaviorManager * | m_pBehaviorManager |
HBhvAnimation * | m_pInstancedAnimation |
HBhvAnimation * | m_pParentAnimation |
HBhvTimeline * | m_pTimeline |
HBhvTimelineInstance * | m_pTimelineInstance |
HBhvTargetObject * | m_Target |
float | m_TargetScaleMatrix [16] |
The HBhvAnimation class defines an animation.
By combining a timeline with one or more interpolators and a target object, the animation class defines a single animation. Animations must be added to the behaviour manager for execution. They can either be active by default or be activated by a sensor action. The animation class also defines various helper functions to manage interpolator keyframes and to set and retrieve various properties of the animation.
HBhvAnimation::HBhvAnimation | ( | const char * | name, |
HBhvBehaviorManager * | BehaviorManager, | ||
HBhvAnimation * | parentanimation = 0 |
||
) |
Constructs an HBhvAnimation object.
name | Name of the animation. This name should be unique. |
BehaviorManager | A pointer to HBhvBehaviorManager object that this animation belongs to. |
parentanimation | A pointer to parent animation if it exists. This value can be null if there is not parent animation. |
virtual HBhvAnimation::~HBhvAnimation | ( | ) | [virtual] |
Destructor of the HBhvAnimation object.
void HBhvAnimation::AddChildAnimation | ( | HBhvAnimation * | childanimation | ) |
Adds an animation to the child animation list.
childanimation | The child animation to be added. |
void HBhvAnimation::AddInterpolator | ( | HBhvInterpolator * | interpolator | ) |
Adds an interpolator to the interpolator list.
interpolator | The interpolator to be added. |
void HBhvAnimation::AdjustKeyframe | ( | int | keyframe, |
int | delta, | ||
bool | doall = true , |
||
bool | relative = false |
||
) |
Adjusts keyframe intervals by the given number of ticks.
keyframe | Start keyframe to adjust. |
delta | Amount of ticks to offset the keyframe time. |
doall | Pass true to adjust all keyframes after the start keyframe. |
relative | Adjust keyframes all keyframes after the given keyframe so that they will also have an additional delta offset between the next keyframe. |
void HBhvAnimation::AdjustToTick | ( | int | totalticks | ) |
This method has been deprecated.
virtual bool HBhvAnimation::Animate | ( | float | currenttime | ) | [virtual] |
Performs animation based on the given time.
currenttime | Time (in ticks) relative to start time of overall animation. |
virtual bool HBhvAnimation::Animate | ( | float | currenttime, |
float | starttime | ||
) | [virtual] |
Performs animation based on the given time in relation to given start time.
currenttime | Time (in ticks) relative to given start time (second parameter) |
starttime | Start time (in ticks) to evaluate animation from |
virtual bool HBhvAnimation::AnimateInternal | ( | float | currenttick | ) | [protected, virtual] |
This is a helper function for Animate(). It checks that the current tick is valid for the associated timeline and then animates the interpolators.
currenttick | Current Time in ticks of animation |
void HBhvAnimation::CleanWithoutDelete | ( | ) |
This method set disassociates the current timeline from this animation and clears the interpolator list without deleting any of the previous associated timeline or interpolator objects.
void HBhvAnimation::CloneAnimation | ( | ) | [protected] |
Creates an animation instance.
HBhvAnimation* HBhvAnimation::CreateInstance | ( | ) |
In special cases, you may want an animation that references this animation without changing it. Use this method to create such an animation.
void HBhvAnimation::DeleteKeyframe | ( | int | keyframe | ) |
This method deletes a given keyframe in the timeline and interpolators for this animation.
keyframe | Number of keyframe |
void HBhvAnimation::Duplicate | ( | int | newkeyframe, |
int | oldkeyframe | ||
) |
This method makes a copy of newkeyframe and then replaces oldkeyframe with the copy.
newkeyframe | Keyframe to copy to |
oldkeyframe | Keyframe to copy from |
void HBhvAnimation::DuplicateNextOrPrevious | ( | int | keyframe, |
bool | next | ||
) |
Copies the next or previous keyframe to the given target keyframe.
keyframe | The keyframe to copy to. |
next | Pass false for the previous keyframe and true for the next keyframe. |
bool HBhvAnimation::ExecuteOnce | ( | ) | [inline] |
HBhvBehaviorManager* HBhvAnimation::GetBehaviorManager | ( | ) | [inline] |
struct vlist_s* HBhvAnimation::GetChildAnimationList | ( | ) | [inline, read] |
bool HBhvAnimation::GetCurrentlyRunning | ( | ) | [inline] |
float HBhvAnimation::GetCurrentTick | ( | ) |
bool HBhvAnimation::GetDefaultActive | ( | ) | [inline] |
int HBhvAnimation::GetDelay | ( | ) | [inline] |
int HBhvAnimation::GetFirstTick | ( | ) |
HBhvAnimation* HBhvAnimation::GetInstancedAnimation | ( | ) | [inline] |
HBhvInterpolator* HBhvAnimation::GetInterpolator | ( | ) |
bool HBhvAnimation::GetInterpolator | ( | int | time, |
int & | interval, | ||
HKeyframe ** | keyframe | ||
) |
For a given time, this method finds the closest keyframe and interval in the interpolator.
time | Time in which you are looking for the closest keyframe. |
interval | Returns the interval in timeline which the given time falls between. |
keyframe | Returns an Hkeyframe object for given time. |
struct vlist_s* HBhvAnimation::GetInterpolatorList | ( | ) | [inline, read] |
int HBhvAnimation::GetLastTick | ( | ) |
int HBhvAnimation::GetLoop | ( | ) | [inline] |
const char* HBhvAnimation::GetName | ( | ) | [inline] |
HBhvAnimation* HBhvAnimation::GetParentAnimation | ( | ) | [inline] |
HBhvTargetObject* HBhvAnimation::GetTarget | ( | ) | [inline] |
HBhvTimeline* HBhvAnimation::GetTimeline | ( | ) | [inline] |
virtual const char* HBhvAnimation::GetType | ( | ) | [inline, virtual] |
void HBhvAnimation::PlotCurve | ( | bool | rotations | ) |
This method plots a curve on the scene representing the path of this animation.
rotations | Pass true to include rotation in the curve or false to not include it. |
void HBhvAnimation::Reset | ( | ) |
Stop the animation if it is currently running and resets all the interpolators associated with this animation.
virtual void HBhvAnimation::Serialize | ( | HUtilityXMLGenerator * | xmlgen, |
HUtilityXMLTag * | xmlt | ||
) | [virtual] |
This method writes XML data to a buffer.
virtual void HBhvAnimation::Serialize | ( | HUtilityXMLGenerator * | xmlgen | ) | [virtual] |
This method writes XML data to a buffer.
virtual void HBhvAnimation::SerializeTarget | ( | HUtilityXMLTag * | xmlt | ) | [protected, virtual] |
This method writes XML Data for this animation's target to a buffer.
void HBhvAnimation::SetBehaviorManager | ( | HBhvBehaviorManager * | behaviourmanager | ) | [inline] |
Sets the HBhvBehaviorManager Object associated to this animation.
void HBhvAnimation::SetCurrentlyRunning | ( | bool | running | ) | [inline] |
Sets the currently running flag which indicates whether an animation is currently executing.
running | Pass true to indicate that this animation is currently running and false if it is not running. |
void HBhvAnimation::SetDefaultActive | ( | bool | active | ) | [inline] |
Sets default active parameter for this animation. If you pass false, then the animation is inactive by default which means that it can only be triggered by a sensor action.
active | Pass true if you want this animation to be active by default or false if otherwise. |
void HBhvAnimation::SetDelay | ( | int | delay | ) | [inline] |
Sets initial delay time for this animation. A delay can be used to prevent this animation from occuring at exactly the same time as other items in the HBhvBehaviorManager's animation list.
void HBhvAnimation::SetExecuteOnce | ( | bool | once | ) | [inline] |
Use this method to indicate if this animation should only run for one update.
once | Pass true if you want the animation to be disabled after the next update or false if you want to the animation to run normally. |
void HBhvAnimation::SetInstancedAnimation | ( | HBhvAnimation * | animation | ) | [inline] |
Sets pointer to animation that you want this animation to reference.
animation | A pointer to the animation to reference. |
void HBhvAnimation::SetInstanceOf | ( | const char * | name | ) | [protected] |
Sets name of the animation that this animation references.
name | The name of the referenced animation. |
void HBhvAnimation::SetLoop | ( | int | loop | ) | [inline] |
Use this method to indicate if animation is looped or plays once.
loop | Pass 1 if the animation should loop or 0 if the animation should stop when it reaches the end of the timeline. |
void HBhvAnimation::SetName | ( | const char * | name | ) |
Sets the name of the animation.
void HBhvAnimation::SetTarget | ( | HBhvTargetObject * | target | ) |
Associates a given target object with this animation.
void HBhvAnimation::SetTargetByPath | ( | const char * | targetpath | ) |
This method creates a target object using the given target path and then attaches it to this animation.
targetpath | Segment path to target |
void HBhvAnimation::SetTargetByPath | ( | const char * | name, |
const char * | targetpath | ||
) |
This method creates a target object using the given target path and name. Then it attaches the newly created target to this animation.
name | Name of newly created target object |
targetpath | Segment path to target |
void HBhvAnimation::SetTargetScaleMatrix | ( | float const * | target_matrix | ) |
Given the target modelling matrix, it extracts its scaling elements.
void HBhvAnimation::SetTimeline | ( | HBhvTimeline * | timeline | ) |
This method associates the passed timeline with this animation.
timeline | The timeline to be associated with this animation. |
static void* HBhvAnimation::XMLCallback | ( | HUtilityXMLTag * | xt, |
bool | open, | ||
void * | m_pExtraData | ||
) | [static] |
This is XML read callback which parses XML data and then populates the member variables with the associated values.
bool HBhvAnimation::m_bCurrentlyRunning [protected] |
The value is true if the animation is currently running and false if otherwise.
bool HBhvAnimation::m_bDefaultActive [protected] |
The value is true if the animation is active by default and false if otherwise.
bool HBhvAnimation::m_bExecuteOnce [protected] |
A flag that determines if animation should only run for one update.
struct vlist_s* HBhvAnimation::m_ChildAnimationList [protected] |
A pointer to the list of child animations.
int HBhvAnimation::m_Delay [protected] |
Initial delay for this animation
char HBhvAnimation::m_InstanceOf[BHV_MAX_NAME_LENGTH] [protected] |
The name of the referenced animation.
struct vlist_s* HBhvAnimation::m_InterpolatorList [protected] |
A pointer to the interpolator list.
int HBhvAnimation::m_Loop [protected] |
A value of 1 means that this animation should be looped while a value of 0 means the animation should stop when it reaches the end of the timeline.
char HBhvAnimation::m_Name[BHV_MAX_NAME_LENGTH] [protected] |
Name of this animation.
Referenced by HBhvInterpolator::GetName().
HBhvBehaviorManager* HBhvAnimation::m_pBehaviorManager [protected] |
A pointer to the BehaviorManager object that this animation belongs to.
HBhvAnimation* HBhvAnimation::m_pInstancedAnimation [protected] |
A pointer to the referenced animation (if any).
HBhvAnimation* HBhvAnimation::m_pParentAnimation [protected] |
A pointer to the parent animation.
HBhvTimeline* HBhvAnimation::m_pTimeline [protected] |
A pointer to the timeline object.
HBhvTimelineInstance* HBhvAnimation::m_pTimelineInstance [protected] |
A pointer to the referenced timeline (if any).
HBhvTargetObject* HBhvAnimation::m_Target [protected] |
A pointer to the target object of this animation.
float HBhvAnimation::m_TargetScaleMatrix[16] [protected] |
The target scale matrix.