# AnimControl

from pandac.PandaModules import AnimControl

Class : AnimControl
Description : Controls the timing of a character animation. An AnimControl object is created for each character/bundle binding and manages the state of the animation: whether started, stopped, or looping, and the current frame number and play rate.

## Inheritance:

AnimControl: ReferenceCount AnimInterface
ReferenceCount:
AnimInterface:

## Methods of AnimControl:

getAnim
getBoundJoints
getChannelIndex
getClassType
getPart
output

## Methods of ReferenceCount:

getClassType
getRefCount
ref
testRefCountIntegrity
testRefCountNonzero
unref

## Methods of AnimInterface:

getClassType
getFrac
getFrame
getFrameRate
getFullFframe
getFullFrame
getNextFrame
getNumFrames
getPlayRate
isPlaying
loop
output
pingpong
play
pose
setPlayRate
stop

getAnim AnimBundle *AnimControl::get_anim(void) const; Filename: animControl.I Created by: drose (19Feb99) PANDA 3D SOFTWARE Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved All use of this software is subject to the terms of the Panda 3d Software license. You should have received a copy of this license along with this source code; you will also find a current copy of the license at http://etc.cmu.edu/panda3d/docs/license/ . To contact the maintainers of this program write to panda3d-general@lists.sourceforge.net . Description: Returns the AnimBundle bound in with this AnimControl.

getBoundJoints BitArray const &AnimControl::get_bound_joints(void) const; Description: Returns the subset of joints controlled by this AnimControl. Most of the time, this will be BitArray::all_on(), for a normal full-body animation. For a subset animation, however, this will be just a subset of those bits, corresponding to the set of joints and sliders actually bound (as enumerated by bind_hierarchy() in depth-first LIFO order).

getChannelIndex int AnimControl::get_channel_index(void) const; Description: Returns the particular channel index associated with this AnimControl. This channel index is the slot on which each AnimGroup is bound to its associated PartGroup, for each joint in the animation. It will be true that get_part()->find_child("n")->get_bound(get_channel_index()) == get_anim()->find_child("n"), for each joint "n".

getClassType static TypeHandle AnimControl::get_class_type(void); Undocumented function.

getPart PartBundle *AnimControl::get_part(void) const; Description: Returns the PartBundle bound in with this AnimControl.

output virtual void AnimControl::output(ostream &out) const; Description:

getClassType static TypeHandle ReferenceCount::get_class_type(void); Undocumented function.

getRefCount int ReferenceCount::get_ref_count(void) const; Description: Returns the current reference count.

ref void ReferenceCount::ref(void) const; Description: Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.

testRefCountIntegrity bool ReferenceCount::test_ref_count_integrity(void) const; Description: Does some easy checks to make sure that the reference count isn't completely bogus. Returns true if ok, false otherwise.

testRefCountNonzero bool ReferenceCount::test_ref_count_nonzero(void) const; Description: Does some easy checks to make sure that the reference count isn't zero, or completely bogus. Returns true if ok, false otherwise.

unref bool ReferenceCount::unref(void) const; Description: Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic; plus, we don't have a virtual destructor anyway.) However, see the helper function unref_delete(). User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is true if the new reference count is nonzero, false if it is zero.

getClassType static TypeHandle AnimInterface::get_class_type(void); Undocumented function.

getFrac double AnimInterface::get_frac(void) const; Description: Returns the fractional part of the current frame. Normally, this is in the range 0.0 <= f < 1.0, but in the one special case of an animation playing to its end frame and stopping, it might exactly equal 1.0. It will always be true that get_full_frame() + get_frac() == get_full_fframe().

getFrame int AnimInterface::get_frame(void) const; Description: Returns the current integer frame number. This number will be in the range 0 <= f < get_num_frames().

getFrameRate double AnimInterface::get_frame_rate(void) const; Description: Returns the native frame rate of the animation. This is the number of frames per second that will elapse when the play_rate is set to 1.0. It is a fixed property of the animation and may not be adjusted by the user.

getFullFframe double AnimInterface::get_full_fframe(void) const; Description: Returns the current floating-point frame number. Unlike the value returned by get_frame(), this frame number may extend beyond the range of get_num_frames() if the frame range passed to play(), loop(), etc. did. Unlike the value returned by get_full_frame(), this return value may equal (to_frame + 1.0), when the animation has played to its natural end. However, in this case the return value of get_full_frame() will be to_frame, not (to_frame + 1).

getFullFrame int AnimInterface::get_full_frame(void) const; Description: Returns the current integer frame number. Unlike the value returned by get_frame(), this frame number may extend beyond the range of get_num_frames() if the frame range passed to play(), loop(), etc. did. Unlike the value returned by get_full_fframe(), this return value will never exceed the value passed to to_frame in the play() method.

getNextFrame int AnimInterface::get_next_frame(void) const; Description: Returns the current integer frame number + 1, constrained to the range 0 <= f < get_num_frames(). If the play mode is PM_play, this will clamp to the same value as get_frame() at the end of the animation. If the play mode is any other value, this will wrap around to frame 0 at the end of the animation.

getNumFrames virtual int AnimInterface::get_num_frames(void) const; Description: Returns the number of frames in the animation. This is a property of the animation and may not be directly adjusted by the user (although it may change without warning with certain kinds of animations, since this is a virtual method that may be overridden).

getPlayRate double AnimInterface::get_play_rate(void) const; Description: Returns the rate at which the animation plays. See set_play_rate().

isPlaying bool AnimInterface::is_playing(void) const; Description: Returns true if the animation is currently playing, false if it is stopped (e.g. because stop() or pose() was called, or because it reached the end of the animation after play() was called).

loop void AnimInterface::loop(bool restart); Description: Starts the entire animation looping. If restart is true, the animation is restarted from the beginning; otherwise, it continues from the current frame. Description: Loops the animation from the frame "from" to and including the frame "to", indefinitely. If restart is true, the animation is restarted from the beginning; otherwise, it continues from the current frame.

output virtual void AnimInterface::output(ostream &out) const; Description:

pingpong void AnimInterface::pingpong(bool restart); Description: Starts the entire animation bouncing back and forth between its first frame and last frame. If restart is true, the animation is restarted from the beginning; otherwise, it continues from the current frame. Description: Loops the animation from the frame "from" to and including the frame "to", and then back in the opposite direction, indefinitely.

play void AnimInterface::play(void); Filename: animInterface.I Created by: drose (20Sep05) PANDA 3D SOFTWARE Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved All use of this software is subject to the terms of the Panda 3d Software license. You should have received a copy of this license along with this source code; you will also find a current copy of the license at http://etc.cmu.edu/panda3d/docs/license/ . To contact the maintainers of this program write to panda3d-general@lists.sourceforge.net . Description: Runs the entire animation from beginning to end and stops. Description: Runs the animation from the frame "from" to and including the frame "to", at which point the animation is stopped. Both "from" and "to" frame numbers may be outside the range (0, get_num_frames()) and the animation will follow the range correctly, reporting numbers modulo get_num_frames(). For instance, play(0, get_num_frames() * 2) will play the animation twice and then stop.

pose void AnimInterface::pose(double frame); Description: Sets the animation to the indicated frame and holds it there.

setPlayRate void AnimInterface::set_play_rate(double play_rate); Description: Changes the rate at which the animation plays. 1.0 is the normal speed, 2.0 is twice normal speed, and 0.5 is half normal speed. 0.0 is legal to pause the animation, and a negative value will play the animation backwards.

stop void AnimInterface::stop(void); Description: Stops a currently playing or looping animation right where it is. The animation remains posed at the current frame.