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 |
Public Types inherited from PartGroup | |
enum | HierarchyMatchFlags { HMF_ok_part_extra = 0x01, HMF_ok_anim_extra = 0x02, HMF_ok_wrong_root_name = 0x04 } |
Public Member Functions | |
PartBundle (const std::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 std::string &joint_name, PandaNode *node) |
Specifies that the joint with the indicated name should be animated with the transform on the indicated node. More... | |
void | control_removed (AnimControl *control) |
Called by the AnimControl when it destructs. 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 std::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 std::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 std::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 |
BlendType | get_blend_type () const |
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 |
PartBundleNode * | get_node (int n) const |
int | get_num_nodes () const |
const LMatrix4 & | get_root_xform () const |
virtual TypeHandle | get_type () const |
virtual PartGroup * | make_copy () const |
Allocates and returns a new copy of the node. More... | |
void | merge_anim_preloads (const PartBundle *other) |
Copies the contents of the other PartBundle's preload table into this one. More... | |
virtual void | output (std::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 std::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) |
void | set_anim_preload (AnimPreloadTable *table) |
Replaces the AnimPreloadTable associated with the PartBundle. More... | |
void | set_blend_type (BlendType bt) |
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) |
void | set_root_xform (const LMatrix4 &root_xform) |
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 (std::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... | |
Public Member Functions inherited from PartGroup | |
PartGroup (PartGroup *parent, const std::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 std::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 |
PartGroup * | get_child_named (const std::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 |
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... | |
void | sort_descendants () |
Sorts the children nodes at each level of the hierarchy into alphabetical order. More... | |
virtual void | write_with_value (std::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... | |
Public Member Functions inherited from TypedWritableReferenceCount | |
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 ©) |
Public Member Functions inherited from TypedWritable | |
TypedWritable (const TypedWritable ©) | |
vector_uchar | encode_to_bam_stream () const |
Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a bytes object. More... | |
bool | encode_to_bam_stream (vector_uchar &data, BamWriter *writer=nullptr) 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... | |
Public Member Functions inherited from TypedObject | |
TypedObject (const TypedObject ©)=default | |
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... | |
TypedObject & | operator= (const TypedObject ©)=default |
Public Member Functions inherited from ReferenceCount | |
int | get_ref_count () const |
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 | ref_if_nonzero () const |
Atomically increases the reference count of this object if it is not zero. 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... | |
WeakReferenceList * | weak_ref () |
Adds the indicated PointerToVoid as a weak reference to this object. More... | |
void | weak_unref () |
Removes the indicated PointerToVoid as a weak reference to this object. More... | |
Public Member Functions inherited from Namable | |
Namable (const std::string &initial_name="") | |
void | clear_name () |
Resets the Namable's name to empty. More... | |
const std::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... | |
void | output (std::ostream &out) const |
Outputs the Namable. More... | |
void | set_name (const std::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 Public Member Functions inherited from PartGroup | |
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 Public Member Functions inherited from TypedWritableReferenceCount | |
static TypeHandle | get_class_type () |
static void | init_type () |
static | PT (TypedWritableReferenceCount) decode_from_bam_stream(vector_uchar data |
Static Public Member Functions inherited from TypedWritable | |
static bool | decode_raw_from_bam_stream (TypedWritable *&ptr, ReferenceCount *&ref_ptr, vector_uchar data, BamReader *reader=nullptr) |
Reads the bytes created by a previous call to encode_to_bam_stream(), and extracts the single object on those bytes. More... | |
static TypeHandle | get_class_type () |
static void | init_type () |
Static Public Member Functions inherited from TypedObject | |
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 Public Member Functions inherited from ReferenceCount | |
static TypeHandle | get_class_type () |
static void | init_type () |
Static Public Member Functions inherited from Namable | |
static TypeHandle | get_class_type () |
static void | init_type () |
Public Attributes | |
const Filename int const PartSubset bool | allow_async |
const Filename & | filename |
get_anim_blend_flag | |
Returns whether the character allows multiple different animations to be bound simultaneously. More... | |
get_blend_type | |
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... | |
get_frame_blend_flag | |
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... | |
get_node | |
Returns the nth PartBundleNode associated with this PartBundle. More... | |
get_num_nodes | |
Returns the number of PartBundleNodes that contain a pointer to this PartBundle. More... | |
get_root_xform | |
Returns the transform matrix which is implicitly applied at the root of the animated hierarchy. More... | |
int | hierarchy_match_flags = 0 |
const Filename int | hierarchy_match_flags |
set_anim_blend_flag | |
Defines the way the character responds to multiple calls to set_control_effect()). More... | |
set_blend_type | |
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... | |
set_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... | |
set_root_xform | |
Specifies the transform matrix which is implicitly applied at the root of the animated hierarchy. More... | |
int const PartSubset & | subset = PartSubset()) |
const Filename int const PartSubset & | subset |
Public Attributes inherited from PartGroup | |
get_child | |
Returns the nth child of the group. More... | |
get_num_children | |
Returns the number of child nodes of the group. More... | |
Public Attributes inherited from TypedWritableReferenceCount | |
static BamReader * | reader = nullptr) |
Public Attributes inherited from TypedObject | |
get_type | |
Public Attributes inherited from ReferenceCount | |
get_ref_count | |
Returns the current reference count. More... | |
Public Attributes inherited from Namable | |
get_name | |
set_name | |
Friends | |
class | Character |
class | MovingPartBase |
class | MovingPartMatrix |
class | MovingPartScalar |
class | PartBundleNode |
Additional Inherited Members | |
Static Public Attributes inherited from TypedWritable | |
static TypedWritable *const | Null = nullptr |
This is the root of a MovingPart hierarchy.
It defines the hierarchy of moving parts that make up an animatable object.
Definition at line 46 of file partBundle.h.
|
explicit |
Normally, a PartBundle constructor should not be called directly–it will get created when a PartBundleNode is created.
Definition at line 72 of file partBundle.cxx.
|
inline |
Removes any AnimPreloadTable associated with the PartBundle.
Definition at line 45 of file partBundle.I.
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 197 of file partBundle.cxx.
|
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 781 of file partBundle.cxx.
|
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 533 of file partBundle.cxx.
bool PartBundle::control_joint | ( | const std::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 436 of file partBundle.cxx.
References PartGroup::apply_control(), and PartGroup::find_child().
void PartBundle::control_removed | ( | AnimControl * | control | ) |
Called by the AnimControl when it destructs.
This needs to remove the AnimControl pointer from all pipeline stages.
Definition at line 552 of file partBundle.cxx.
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 579 of file partBundle.cxx.
Referenced by PT().
|
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 759 of file partBundle.cxx.
References PartGroup::do_update().
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 509 of file partBundle.cxx.
References PartGroup::do_update(), and AnimControl::mark_channels().
bool PartBundle::freeze_joint | ( | const std::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 372 of file partBundle.cxx.
References PartGroup::apply_freeze(), and PartGroup::find_child().
bool PartBundle::freeze_joint | ( | const std::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 393 of file partBundle.cxx.
bool PartBundle::freeze_joint | ( | const std::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 414 of file partBundle.cxx.
References PartGroup::apply_freeze_scalar(), and PartGroup::find_child().
|
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 197 of file partBundle.I.
|
virtual |
Allocates and returns a new copy of the node.
Children are not copied, but see copy_subgraph().
Reimplemented from PartGroup.
Definition at line 83 of file partBundle.cxx.
void PartBundle::merge_anim_preloads | ( | const PartBundle * | other | ) |
Copies the contents of the other PartBundle's preload table into this one.
Definition at line 91 of file partBundle.cxx.
Referenced by Character::merge_bundles().
|
virtual |
Writes a one-line description of the bundle.
Definition at line 214 of file partBundle.cxx.
|
static |
Factory method to generate a PartBundle object.
Definition at line 829 of file partBundle.cxx.
References BamReader::get_factory(), and Factory< Type >::register_factory().
bool PartBundle::release_joint | ( | const std::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 457 of file partBundle.cxx.
References PartGroup::clear_forced_channel(), and PartGroup::find_child().
|
inline |
Replaces the AnimPreloadTable associated with the PartBundle.
Definition at line 37 of file partBundle.I.
|
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 185 of file partBundle.I.
|
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 208 of file partBundle.I.
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 477 of file partBundle.cxx.
References PartGroup::do_update(), ClockObject::get_frame_time, ClockObject::get_global_clock(), and AnimControl::mark_channels().
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 349 of file partBundle.cxx.
References AnimControl::wait_pending().
|
virtual |
Writes a brief description of the bundle and all of its descendants.
Reimplemented from PartGroup.
Definition at line 222 of file partBundle.cxx.
References indent().
Writes the contents of this object to the datagram for shipping out to a Bam file.
Reimplemented from PartGroup.
Definition at line 770 of file partBundle.cxx.
References BamWriter::write_cdata(), PartGroup::write_datagram(), and BamWriter::write_pointer().
|
inline |
Applies the indicated transform to the root of the animated hierarchy.
Definition at line 136 of file partBundle.I.
|
inline |
Returns whether the character allows multiple different animations to be bound simultaneously.
Definition at line 117 of file partBundle.h.
|
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 116 of file partBundle.h.
|
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 118 of file partBundle.h.
|
inline |
Returns the nth PartBundleNode associated with this PartBundle.
Definition at line 114 of file partBundle.h.
|
inline |
Returns the number of PartBundleNodes that contain a pointer to this PartBundle.
Definition at line 114 of file partBundle.h.
|
inline |
Returns the transform matrix which is implicitly applied at the root of the animated hierarchy.
Definition at line 119 of file partBundle.h.
void PartBundle::set_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 117 of file partBundle.h.
|
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 116 of file partBundle.h.
|
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 118 of file partBundle.h.
|
inline |
Specifies the transform matrix which is implicitly applied at the root of the animated hierarchy.
Definition at line 119 of file partBundle.h.