Panda3D
|
This is the root of a MovingPart hierarchy. More...
#include "partBundle.h"
Public Types | |
enum | BlendType { BT_linear, BT_normalized_linear, BT_componentwise, BT_componentwise_quat } |
typedef pmap< AnimControl *, PN_stdfloat > | ChannelBlend |
![]() | |
enum | HierarchyMatchFlags { HMF_ok_part_extra = 0x01, HMF_ok_anim_extra = 0x02, HMF_ok_wrong_root_name = 0x04 } |
Public Member Functions | |
PartBundle (const string &name="") | |
Normally, a PartBundle constructor should not be called directly–it will get created when a PartBundleNode is created. More... | |
void | clear_anim_preload () |
Removes any AnimPreloadTable associated with the PartBundle. More... | |
void | clear_control_effects () |
Sets the control effect of all AnimControls to zero (but does not "stop" the AnimControls). More... | |
virtual int | complete_pointers (TypedWritable **p_list, BamReader *manager) |
Takes in a vector of pointers to TypedWritable objects that correspond to all the requests for pointers that this object made to BamReader. More... | |
virtual void | control_activated (AnimControl *control) |
Called by the AnimControl whenever it starts an animation. More... | |
bool | control_joint (const string &joint_name, PandaNode *node) |
Specifies that the joint with the indicated name should be animated with the transform on the indicated node. More... | |
CPT (AnimPreloadTable) get_anim_preload() const | |
bool | do_bind_anim (AnimControl *control, AnimBundle *anim, int hierarchy_match_flags, const PartSubset &subset) |
The internal implementation of bind_anim(), this receives a pointer to an uninitialized AnimControl and fills it in if the bind is successful. More... | |
virtual void | finalize (BamReader *manager) |
Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed. More... | |
virtual TypeHandle | force_init_type () |
bool | force_update () |
Updates all the parts in the bundle to reflect the data for the current frame, whether we believe it needs it or not. More... | |
bool | freeze_joint (const string &joint_name, const TransformState *transform) |
Specifies that the joint with the indicated name should be frozen with the specified transform. More... | |
bool | freeze_joint (const string &joint_name, const LVecBase3 &pos, const LVecBase3 &hpr, const LVecBase3 &scale) |
Specifies that the joint with the indicated name should be frozen with the specified transform. More... | |
bool | freeze_joint (const string &joint_name, PN_stdfloat value) |
Specifies that the joint with the indicated name should be frozen with the specified transform. More... | |
bool | get_anim_blend_flag () const |
Returns whether the character allows multiple different animations to be bound simultaneously. More... | |
BlendType | get_blend_type () const |
Returns the algorithm that is used when blending multiple frames or multiple animations together, when either anim_blend_flag or frame_blend_flag is set to true. More... | |
PN_stdfloat | get_control_effect (AnimControl *control) const |
Returns the amount by which the character is affected by the indicated AnimControl and its associated animation. More... | |
bool | get_frame_blend_flag () const |
Returns whether the character interpolates (blends) between two sequential animation frames, or whether it holds the current frame until the next one is ready. More... | |
PartBundleNode * | get_node (int n) const |
Returns the nth PartBundleNode associated with this PartBundle. More... | |
int | get_num_nodes () const |
Returns the number of PartBundleNodes that contain a pointer to this PartBundle. More... | |
const LMatrix4 & | get_root_xform () const |
Returns the transform matrix which is implicitly applied at the root of the animated hierarchy. More... | |
virtual TypeHandle | get_type () const |
virtual PartGroup * | make_copy () const |
Allocates and returns a new copy of the node. More... | |
MAKE_SEQ (get_nodes, get_num_nodes, get_node) | |
void | merge_anim_preloads (const PartBundle *other) |
Copies the contents of the other PartBundle's preload table into this one. More... | |
virtual void | output (ostream &out) const |
Writes a one-line description of the bundle. More... | |
PT (AnimPreloadTable) modify_anim_preload() | |
PT (PartBundle) apply_transform(const TransformState *transform) | |
PT (AnimControl) bind_anim(AnimBundle *anim | |
PT (AnimControl) load_bind_anim(Loader *loader | |
bool | release_joint (const string &joint_name) |
Releases the named joint from the effects of a previous call to freeze_joint() or control_joint(). More... | |
void | set_anim_blend_flag (bool anim_blend_flag) |
Defines the way the character responds to multiple calls to set_control_effect()). More... | |
void | set_anim_preload (AnimPreloadTable *table) |
Replaces the AnimPreloadTable associated with the PartBundle. More... | |
void | set_blend_type (BlendType bt) |
Defines the algorithm that is used when blending multiple frames or multiple animations together, when either anim_blend_flag or frame_blend_flag is set to true. More... | |
void | set_control_effect (AnimControl *control, PN_stdfloat effect) |
Sets the amount by which the character is affected by the indicated AnimControl (and its associated animation). More... | |
void | set_frame_blend_flag (bool frame_blend_flag) |
Specifies whether the character interpolates (blends) between two sequential frames of an active animation, showing a smooth intra-frame motion, or whether it holds each frame until the next frame is ready, showing precisely the specified animation. More... | |
void | set_root_xform (const LMatrix4 &root_xform) |
Specifies the transform matrix which is implicitly applied at the root of the animated hierarchy. More... | |
void | set_update_delay (double delay) |
Specifies the minimum amount of time, in seconds, that should elapse between any two consecutive updates. More... | |
bool | update () |
Updates all the parts in the bundle to reflect the data for the current frame (as set in each of the AnimControls). More... | |
void | wait_pending () |
Blocks the current thread until all currently-pending AnimControls, with a nonzero control effect, have been loaded and are properly bound. More... | |
virtual void | write (ostream &out, int indent_level) const |
Writes a brief description of the bundle and all of its descendants. More... | |
virtual void | write_datagram (BamWriter *manager, Datagram &dg) |
Writes the contents of this object to the datagram for shipping out to a Bam file. More... | |
void | xform (const LMatrix4 &mat) |
Applies the indicated transform to the root of the animated hierarchy. More... | |
![]() | |
PartGroup (PartGroup *parent, const string &name) | |
Creates the PartGroup, and adds it to the indicated parent. More... | |
virtual bool | apply_control (PandaNode *node) |
Specifies a node to influence this particular joint so that it will always hold the node's transform. More... | |
bool | apply_freeze (const TransformState *transform) |
Freezes this particular joint so that it will always hold the specified transform. More... | |
virtual bool | apply_freeze_matrix (const LVecBase3 &pos, const LVecBase3 &hpr, const LVecBase3 &scale) |
Freezes this particular joint so that it will always hold the specified transform. More... | |
virtual bool | apply_freeze_scalar (PN_stdfloat value) |
Freezes this particular joint so that it will always hold the specified transform. More... | |
bool | check_hierarchy (const AnimGroup *anim, const PartGroup *parent, int hierarchy_match_flags=0) const |
Walks the part hierarchy in tandem with the indicated anim hierarchy, and returns true if the hierarchies match, false otherwise. More... | |
virtual bool | clear_forced_channel () |
Undoes the effect of a previous call to apply_freeze() or apply_control(). More... | |
PartGroup * | copy_subgraph () const |
Allocates and returns a new copy of this node and of all of its children. More... | |
virtual void | determine_effective_channels (const CycleData *root_cdata) |
Should be called whenever the ChannelBlend values have changed, this recursively updates the _effective_channel member in each part. More... | |
virtual bool | do_update (PartBundle *root, const CycleData *root_cdata, PartGroup *parent, bool parent_changed, bool anim_changed, Thread *current_thread) |
Recursively update this particular part and all of its descendents for the current frame. More... | |
virtual void | do_xform (const LMatrix4 &mat, const LMatrix4 &inv_mat) |
Called by PartBundle::xform(), this indicates the indicated transform is being applied to the root joint. More... | |
PartGroup * | find_child (const string &name) const |
Returns the first descendant found with the indicated name, or NULL if no such descendant exists. More... | |
PartGroup * | get_child (int n) const |
Returns the nth child of the group. More... | |
PartGroup * | get_child_named (const string &name) const |
Returns the first child found with the indicated name, or NULL if no such child exists. More... | |
virtual AnimChannelBase * | get_forced_channel () const |
Returns the AnimChannelBase that has been forced to this joint by a previous call to apply_freeze() or apply_control(), or NULL if no such channel has been applied. More... | |
int | get_num_children () const |
Returns the number of child nodes of the group. More... | |
virtual TypeHandle | get_value_type () const |
Returns the TypeHandle associated with the ValueType we are concerned with. More... | |
virtual bool | is_character_joint () const |
Returns true if this part is a CharacterJoint, false otherwise. More... | |
MAKE_SEQ (get_children, get_num_children, get_child) | |
void | sort_descendants () |
Sorts the children nodes at each level of the hierarchy into alphabetical order. More... | |
virtual void | write_with_value (ostream &out, int indent_level) const |
Writes a brief description of the group, showing its current value, and that of all of its descendants. More... | |
![]() | |
TypedWritableReferenceCount (const TypedWritableReferenceCount ©) | |
virtual ReferenceCount * | as_reference_count () |
Returns the pointer cast to a ReferenceCount pointer, if it is in fact of that type. More... | |
void | operator= (const TypedWritableReferenceCount ©) |
![]() | |
TypedWritable (const TypedWritable ©) | |
string | encode_to_bam_stream () const |
Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a string string. More... | |
bool | encode_to_bam_stream (string &data, BamWriter *writer=NULL) const |
Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string. More... | |
UpdateSeq | get_bam_modified () const |
Returns the current bam_modified counter. More... | |
void | mark_bam_modified () |
Increments the bam_modified counter, so that this object will be invalidated and retransmitted on any open bam streams. More... | |
void | operator= (const TypedWritable ©) |
virtual bool | require_fully_complete () const |
Some objects require all of their nested pointers to have been completed before the objects themselves can be completed. More... | |
virtual void | update_bam_nested (BamWriter *manager) |
Called by the BamWriter when this object has not itself been modified recently, but it should check its nested objects for updates. More... | |
![]() | |
TypedObject (const TypedObject ©) | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
int | get_best_parent_from_Set (const std::set< int > &) const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. More... | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. More... | |
void | operator= (const TypedObject ©) |
![]() | |
int | get_ref_count () const |
Returns the current reference count. More... | |
WeakReferenceList * | get_weak_list () const |
Returns the WeakReferenceList associated with this ReferenceCount object. More... | |
bool | has_weak_list () const |
Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. More... | |
void | local_object () |
This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. More... | |
void | ref () const |
Explicitly increments the reference count. More... | |
bool | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. More... | |
bool | test_ref_count_nonzero () const |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More... | |
virtual bool | unref () const |
Explicitly decrements the reference count. More... | |
void | weak_ref (WeakPointerToVoid *ptv) |
Adds the indicated PointerToVoid as a weak reference to this object. More... | |
void | weak_unref (WeakPointerToVoid *ptv) |
Removes the indicated PointerToVoid as a weak reference to this object. More... | |
![]() | |
Namable (const string &initial_name="") | |
Namable (const Namable ©) | |
void | clear_name () |
Resets the Namable's name to empty. More... | |
const string & | get_name () const |
bool | has_name () const |
Returns true if the Namable has a nonempty name set, false if the name is empty. More... | |
Namable & | operator= (const Namable &other) |
void | output (ostream &out) const |
Outputs the Namable. More... | |
void | set_name (const string &name) |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
static void | register_with_read_factory () |
Factory method to generate a PartBundle object. More... | |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
static TypedWritable * | make_PartGroup (const FactoryParams ¶ms) |
Factory method to generate a PartGroup object. More... | |
static void | register_with_read_factory () |
Factory method to generate a PartGroup object. More... | |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
static | PT (TypedWritableReferenceCount) decode_from_bam_stream(const string &data |
![]() | |
static bool | decode_raw_from_bam_stream (TypedWritable *&ptr, ReferenceCount *&ref_ptr, const string &data, BamReader *reader=NULL) |
Reads the string created by a previous call to encode_to_bam_stream(), and extracts the single object on that string. More... | |
static TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. More... | |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
Public Attributes | |
const Filename int const PartSubset bool | allow_async |
const Filename & | filename |
int | hierarchy_match_flags = 0 |
const Filename int | hierarchy_match_flags |
int const PartSubset & | subset = PartSubset()) |
const Filename int const PartSubset & | subset |
![]() | |
static BamReader * | reader = NULL) |
Friends | |
class | Character |
class | MovingPartBase |
class | MovingPartMatrix |
class | MovingPartScalar |
class | PartBundleNode |
Additional Inherited Members | |
![]() | |
static TypedWritable *const | Null = (TypedWritable*)0L |
This is the root of a MovingPart hierarchy.
It defines the hierarchy of moving parts that make up an animatable object.
Definition at line 49 of file partBundle.h.
PartBundle::PartBundle | ( | const string & | name = "" | ) |
Normally, a PartBundle constructor should not be called directly–it will get created when a PartBundleNode is created.
Definition at line 76 of file partBundle.cxx.
References make_copy().
|
inline |
Removes any AnimPreloadTable associated with the PartBundle.
Definition at line 58 of file partBundle.I.
References set_blend_type().
Referenced by set_anim_preload().
void PartBundle::clear_control_effects | ( | ) |
Sets the control effect of all AnimControls to zero (but does not "stop" the AnimControls).
The character will no longer be affected by any animation, and will return to its default pose (unless restore-initial-pose is false).
The AnimControls which are no longer associated will not be using any CPU cycles, but they may still be in the "playing" state; if they are later reassociated with the PartBundle they will resume at their current frame as if they'd been running all along.
Definition at line 216 of file partBundle.cxx.
References PartGroup::determine_effective_channels(), Thread::get_current_pipeline_stage(), and output().
Referenced by set_anim_blend_flag().
|
virtual |
Takes in a vector of pointers to TypedWritable objects that correspond to all the requests for pointers that this object made to BamReader.
Reimplemented from PartGroup.
Definition at line 855 of file partBundle.cxx.
References PartGroup::complete_pointers(), DatagramIterator::get_bool(), BamReader::get_file_minor_ver(), BamReader::read_cdata(), BamReader::read_pointer(), BamReader::register_finalize(), and register_with_read_factory().
Referenced by write_datagram().
|
virtual |
Called by the AnimControl whenever it starts an animation.
This is just a hook so the bundle can do something, if necessary, before the animation starts.
Definition at line 606 of file partBundle.cxx.
References do_bind_anim(), Thread::get_current_pipeline_stage(), and AnimControl::get_part().
Referenced by force_update(), and AnimControl::mark_channels().
bool PartBundle::control_joint | ( | const string & | joint_name, |
PandaNode * | node | ||
) |
Specifies that the joint with the indicated name should be animated with the transform on the indicated node.
It will henceforth always follow the node's transform, regardless of any animations that may subsequently be bound to the joint.
Returns true if the joint is successfully controlled, or false if the named child is not a joint (or slider) or does not exist.
Definition at line 497 of file partBundle.cxx.
References PartGroup::apply_control(), PartGroup::find_child(), and release_joint().
Referenced by freeze_joint().
bool PartBundle::do_bind_anim | ( | AnimControl * | control, |
AnimBundle * | anim, | ||
int | hierarchy_match_flags, | ||
const PartSubset & | subset | ||
) |
The internal implementation of bind_anim(), this receives a pointer to an uninitialized AnimControl and fills it in if the bind is successful.
Returns true if successful, false otherwise.
Definition at line 629 of file partBundle.cxx.
References BitArray::all_on(), PartGroup::check_hierarchy(), PartGroup::determine_effective_channels(), finalize(), AnimControl::get_bound_joints(), Thread::get_current_pipeline_stage(), AnimControl::get_part(), BitArray::has_bits_in_common(), PartSubset::is_include_empty(), AnimControl::setup_anim(), and AnimInterface::stop().
Referenced by control_activated(), and write().
|
virtual |
Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed.
Reimplemented from TypedWritable.
Definition at line 828 of file partBundle.cxx.
References PartGroup::do_update(), Thread::get_current_thread(), and write_datagram().
Referenced by do_bind_anim().
bool PartBundle::force_update | ( | ) |
Updates all the parts in the bundle to reflect the data for the current frame, whether we believe it needs it or not.
Definition at line 580 of file partBundle.cxx.
References control_activated(), PartGroup::do_update(), Thread::get_current_thread(), and AnimControl::mark_channels().
Referenced by update().
bool PartBundle::freeze_joint | ( | const string & | joint_name, |
const TransformState * | transform | ||
) |
Specifies that the joint with the indicated name should be frozen with the specified transform.
It will henceforth always hold this fixed transform, regardless of any animations that may subsequently be bound to the joint.
Returns true if the joint is successfully frozen, or false if the named child is not a joint (or slider) or does not exist.
Definition at line 419 of file partBundle.cxx.
References PartGroup::apply_freeze(), and PartGroup::find_child().
Referenced by freeze_joint(), and wait_pending().
bool PartBundle::freeze_joint | ( | const string & | joint_name, |
const LVecBase3 & | pos, | ||
const LVecBase3 & | hpr, | ||
const LVecBase3 & | scale | ||
) |
Specifies that the joint with the indicated name should be frozen with the specified transform.
It will henceforth always hold this fixed transform, regardless of any animations that may subsequently be bound to the joint.
Returns true if the joint is successfully frozen, or false if the named child is not a joint (or slider) or does not exist.
Definition at line 445 of file partBundle.cxx.
References PartGroup::apply_freeze_matrix(), PartGroup::find_child(), and freeze_joint().
bool PartBundle::freeze_joint | ( | const string & | joint_name, |
PN_stdfloat | value | ||
) |
Specifies that the joint with the indicated name should be frozen with the specified transform.
It will henceforth always hold this fixed transform, regardless of any animations that may subsequently be bound to the joint.
Returns true if the joint is successfully frozen, or false if the named child is not a joint (or slider) or does not exist.
Definition at line 471 of file partBundle.cxx.
References PartGroup::apply_freeze_scalar(), control_joint(), and PartGroup::find_child().
|
inline |
Returns whether the character allows multiple different animations to be bound simultaneously.
Definition at line 102 of file partBundle.I.
References set_frame_blend_flag().
Referenced by get_blend_type().
|
inline |
Returns the algorithm that is used when blending multiple frames or multiple animations together, when either anim_blend_flag or frame_blend_flag is set to true.
Definition at line 89 of file partBundle.I.
References get_anim_blend_flag().
Referenced by set_blend_type().
|
inline |
Returns the amount by which the character is affected by the indicated AnimControl and its associated animation.
See set_control_effect().
Definition at line 247 of file partBundle.I.
References set_update_delay().
Referenced by set_control_effect().
|
inline |
Returns whether the character interpolates (blends) between two sequential animation frames, or whether it holds the current frame until the next one is ready.
Definition at line 145 of file partBundle.I.
References set_root_xform().
Referenced by set_frame_blend_flag().
|
inline |
Returns the nth PartBundleNode associated with this PartBundle.
Definition at line 209 of file partBundle.I.
References set_control_effect().
Referenced by CharacterJointBundle::get_node(), and get_num_nodes().
|
inline |
Returns the number of PartBundleNodes that contain a pointer to this PartBundle.
Definition at line 198 of file partBundle.I.
References get_node().
Referenced by CharacterJointBundle::CharacterJointBundle(), get_root_xform(), and PartBundleNode::xform().
|
inline |
Returns the transform matrix which is implicitly applied at the root of the animated hierarchy.
Definition at line 186 of file partBundle.I.
References get_num_nodes().
Referenced by CharacterJoint::update_internals(), and xform().
|
virtual |
Allocates and returns a new copy of the node.
Children are not copied, but see copy_subgraph().
Reimplemented from PartGroup.
Definition at line 89 of file partBundle.cxx.
References merge_anim_preloads().
Referenced by PartBundle().
void PartBundle::merge_anim_preloads | ( | const PartBundle * | other | ) |
Copies the contents of the other PartBundle's preload table into this one.
Definition at line 100 of file partBundle.cxx.
References set_anim_blend_flag().
Referenced by make_copy(), and Character::merge_bundles().
|
virtual |
Writes a one-line description of the bundle.
Definition at line 235 of file partBundle.cxx.
References write().
Referenced by clear_control_effects().
|
static |
Factory method to generate a PartBundle object.
Definition at line 910 of file partBundle.cxx.
References Datagram::add_bool(), Datagram::add_uint8(), DatagramIterator::get_bool(), BamReader::get_factory(), DatagramIterator::get_uint8(), LMatrix4f::ident_mat(), and Factory< Type >::register_factory().
Referenced by complete_pointers().
bool PartBundle::release_joint | ( | const string & | joint_name | ) |
Releases the named joint from the effects of a previous call to freeze_joint() or control_joint().
It will henceforth once again follow whatever transforms are dictated by the animation.
Returns true if the joint is released, or false if the named child was not previously controlled or frozen, or it does not exist.
Definition at line 522 of file partBundle.cxx.
References PartGroup::clear_forced_channel(), PartGroup::find_child(), and update().
Referenced by control_joint().
void PartBundle::set_anim_blend_flag | ( | bool | anim_blend_flag | ) |
Defines the way the character responds to multiple calls to set_control_effect()).
By default, this flag is set false, which disallows multiple animations. When this flag is false, it is not necessary to explicitly set the control_effect when starting an animation; starting the animation will implicitly remove the control_effect from the previous animation and set it on the current one.
However, if this flag is set true, the control_effect must be explicitly set via set_control_effect() whenever an animation is to affect the character.
Definition at line 135 of file partBundle.cxx.
References clear_control_effects(), PartGroup::copy_subgraph(), and Thread::get_current_pipeline_stage().
Referenced by merge_anim_preloads().
|
inline |
Replaces the AnimPreloadTable associated with the PartBundle.
Definition at line 47 of file partBundle.I.
References clear_anim_preload().
|
inline |
Defines the algorithm that is used when blending multiple frames or multiple animations together, when either anim_blend_flag or frame_blend_flag is set to true.
See partBundle.h for a description of the meaning of each of the BlendType values.
Definition at line 74 of file partBundle.I.
References get_blend_type(), and Thread::get_current_pipeline_stage().
Referenced by clear_anim_preload().
|
inline |
Sets the amount by which the character is affected by the indicated AnimControl (and its associated animation).
Normally, this will only be zero or one. Zero indicates the animation does not affect the character, and one means it does.
If the _anim_blend_flag is not false (see set_anim_blend_flag()), it is possible to have multiple AnimControls in effect simultaneously. In this case, the effect is a weight that indicates the relative importance of each AnimControl to the final animation.
Definition at line 232 of file partBundle.I.
References get_control_effect(), and Thread::get_current_pipeline_stage().
Referenced by AnimControl::fail_anim(), and get_node().
|
inline |
Specifies whether the character interpolates (blends) between two sequential frames of an active animation, showing a smooth intra-frame motion, or whether it holds each frame until the next frame is ready, showing precisely the specified animation.
When this value is false, the character holds each frame until the next is ready. When this is true, the character will interpolate between two consecutive frames of animation for each frame the animation is onscreen, according to the amount of time elapsed between the frames.
The default value of this flag is determined by the interpolate-frames Config.prc variable.
Use set_blend_type() to change the algorithm that the character uses to interpolate matrix positions.
Definition at line 130 of file partBundle.I.
References Thread::get_current_pipeline_stage(), and get_frame_blend_flag().
Referenced by get_anim_blend_flag().
|
inline |
Specifies the transform matrix which is implicitly applied at the root of the animated hierarchy.
Definition at line 157 of file partBundle.I.
References Thread::get_current_pipeline_stage(), and xform().
Referenced by get_frame_blend_flag().
|
inline |
Specifies the minimum amount of time, in seconds, that should elapse between any two consecutive updates.
This is normally used by Character::set_lod_animation(), and should not be called directly.
Definition at line 262 of file partBundle.I.
Referenced by get_control_effect().
bool PartBundle::update | ( | ) |
Updates all the parts in the bundle to reflect the data for the current frame (as set in each of the AnimControls).
Returns true if any part has changed as a result of this, or false otherwise.
Definition at line 545 of file partBundle.cxx.
References PartGroup::do_update(), force_update(), Thread::get_current_thread(), ClockObject::get_frame_time(), ClockObject::get_global_clock(), and AnimControl::mark_channels().
Referenced by release_joint().
void PartBundle::wait_pending | ( | ) |
Blocks the current thread until all currently-pending AnimControls, with a nonzero control effect, have been loaded and are properly bound.
Definition at line 391 of file partBundle.cxx.
References freeze_joint(), and AnimControl::wait_pending().
Referenced by write().
|
virtual |
Writes a brief description of the bundle and all of its descendants.
Reimplemented from PartGroup.
Definition at line 246 of file partBundle.cxx.
References do_bind_anim(), AnimBundleNode::find_anim_bundle(), Filename::get_basename(), Filename::get_basename_wo_extension(), PartSubset::is_include_empty(), Thread::is_threading_supported(), AnimControl::set_anim_model(), AsyncTask::set_priority(), and wait_pending().
Referenced by output().
Writes the contents of this object to the datagram for shipping out to a Bam file.
Reimplemented from PartGroup.
Definition at line 841 of file partBundle.cxx.
References complete_pointers(), BamWriter::write_cdata(), PartGroup::write_datagram(), and BamWriter::write_pointer().
Referenced by finalize().
|
inline |
Applies the indicated transform to the root of the animated hierarchy.
Definition at line 171 of file partBundle.I.
References PartGroup::do_xform(), Thread::get_current_pipeline_stage(), and get_root_xform().
Referenced by set_root_xform(), and PartBundleNode::xform().