20 get_anim_preload()
const {
21 return _anim_preload.get_read_pointer();
29 modify_anim_preload() {
30 return _anim_preload.get_write_pointer();
38 _anim_preload = anim_preload;
46 _anim_preload =
nullptr;
59 nassertv(Thread::get_current_pipeline_stage() == 0);
60 CDWriter cdata(_cycler);
61 cdata->_blend_type = bt;
69 INLINE PartBundle::BlendType PartBundle::
70 get_blend_type()
const {
71 CDReader cdata(_cycler);
72 return cdata->_blend_type;
79 INLINE
bool PartBundle::
80 get_anim_blend_flag()
const {
81 CDReader cdata(_cycler);
82 return cdata->_anim_blend_flag;
104 nassertv(Thread::get_current_pipeline_stage() == 0);
105 CDWriter cdata(_cycler);
106 cdata->_frame_blend_flag = frame_blend_flag;
114 INLINE
bool PartBundle::
115 get_frame_blend_flag()
const {
116 CDReader cdata(_cycler);
117 return cdata->_frame_blend_flag;
126 nassertv(Thread::get_current_pipeline_stage() == 0);
127 CDWriter cdata(_cycler);
128 cdata->_root_xform = root_xform;
129 cdata->_anim_changed =
true;
137 nassertv(Thread::get_current_pipeline_stage() == 0);
139 cdata->_root_xform = cdata->_root_xform * mat;
141 cdata->_anim_changed =
true;
148 INLINE
const LMatrix4 &PartBundle::
149 get_root_xform()
const {
150 CDReader cdata(_cycler);
151 return cdata->_root_xform;
158 INLINE
int PartBundle::
159 get_num_nodes()
const {
160 return _nodes.size();
168 nassertr(n >= 0 && n < (
int)_nodes.size(),
nullptr);
186 nassertv(Thread::get_current_pipeline_stage() == 0);
189 do_set_control_effect(control, effect, cdata);
199 return do_get_control_effect(control, cdata);
209 _update_delay = delay;
This table records data about a list of animations for a particular model, such as number of frames a...
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 a...
CPT(AnimPreloadTable) PartBundle
Returns the AnimPreloadTable associated with the PartBundle.
void xform(const LMatrix4 &mat)
Applies the indicated transform to the root of the animated hierarchy.
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 jo...
void set_anim_preload(AnimPreloadTable *table)
Replaces the AnimPreloadTable associated with the PartBundle.
This template class calls PipelineCycler::read_unlocked(), and then provides a transparent read-only ...
set_root_xform
Specifies the transform matrix which is implicitly applied at the root of the animated hierarchy.
set_frame_blend_flag
Specifies whether the character interpolates (blends) between two sequential frames of an active anim...
PN_stdfloat get_control_effect(AnimControl *control) const
Returns the amount by which the character is affected by the indicated AnimControl and its associated...
This is a node that contains a pointer to an PartBundle.
void clear_anim_preload()
Removes any AnimPreloadTable associated with the PartBundle.
void set_update_delay(double delay)
Specifies the minimum amount of time, in seconds, that should elapse between any two consecutive upda...
set_blend_type
Defines the algorithm that is used when blending multiple frames or multiple animations together,...
This template class calls PipelineCycler::write() in the constructor and PipelineCycler::release_writ...
Controls the timing of a character animation.
get_node
Returns the nth PartBundleNode associated with this PartBundle.