58 explicit PartBundle(
const std::string &name =
"");
64 INLINE
void clear_anim_preload();
65 void merge_anim_preloads(
const PartBundle *other);
95 BT_componentwise_quat,
98 INLINE
void set_blend_type(BlendType bt);
99 INLINE BlendType get_blend_type()
const;
101 void set_anim_blend_flag(
bool anim_blend_flag);
102 INLINE
bool get_anim_blend_flag()
const;
104 INLINE
void set_frame_blend_flag(
bool frame_blend_flag);
105 INLINE
bool get_frame_blend_flag()
const;
107 INLINE
void set_root_xform(
const LMatrix4 &root_xform);
108 INLINE
void xform(
const LMatrix4 &mat);
109 INLINE
const LMatrix4 &get_root_xform()
const;
112 INLINE
int get_num_nodes()
const;
114 MAKE_SEQ(get_nodes, get_num_nodes, get_node);
116 MAKE_PROPERTY(blend_type, get_blend_type, set_blend_type);
117 MAKE_PROPERTY(anim_blend_flag, get_anim_blend_flag, set_anim_blend_flag);
118 MAKE_PROPERTY(frame_blend_flag, get_frame_blend_flag, set_frame_blend_flag);
119 MAKE_PROPERTY(root_xform, get_root_xform, set_root_xform);
120 MAKE_SEQ_PROPERTY(nodes, get_num_nodes, get_node);
122 void clear_control_effects();
123 INLINE
void set_control_effect(
AnimControl *control, PN_stdfloat effect);
124 INLINE PN_stdfloat get_control_effect(
AnimControl *control)
const;
126 virtual void output(std::ostream &out)
const;
127 virtual void write(std::ostream &out,
int indent_level)
const;
130 int hierarchy_match_flags = 0,
134 int hierarchy_match_flags,
139 bool freeze_joint(
const std::string &joint_name,
const TransformState *transform);
140 bool freeze_joint(
const std::string &joint_name,
const LVecBase3 &pos,
const LVecBase3 &hpr,
const LVecBase3 &scale);
141 bool freeze_joint(
const std::string &joint_name, PN_stdfloat value);
142 bool control_joint(
const std::string &joint_name,
PandaNode *node);
143 bool release_joint(
const std::string &joint_name);
151 virtual void control_activated(
AnimControl *control);
153 INLINE
void set_update_delay(
double delay);
156 int hierarchy_match_flags,
const PartSubset &subset);
165 void do_set_control_effect(
AnimControl *control, PN_stdfloat effect, CData *cdata);
166 PN_stdfloat do_get_control_effect(
AnimControl *control,
const CData *cdata)
const;
167 void recompute_net_blend(CData *cdata);
168 void clear_and_stop_intersecting(
AnimControl *control, CData *cdata);
178 double _update_delay;
184 CData(
const CData ©);
190 return PartBundle::get_class_type();
193 BlendType _blend_type;
194 bool _anim_blend_flag;
195 bool _frame_blend_flag;
196 LMatrix4 _root_xform;
199 PN_stdfloat _net_blend;
224 return get_class_type();
226 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
230 static void init_type() {
231 PartGroup::init_type();
233 PartGroup::get_class_type());
246 inline std::ostream &operator <<(std::ostream &out,
const PartBundle &bundle) {
251 EXPCL_PANDA_CHAN std::ostream &operator <<(std::ostream &out, PartBundle::BlendType blend_type);
252 EXPCL_PANDA_CHAN std::istream &operator >>(std::istream &in, PartBundle::BlendType &blend_type);
A basic node of the scene graph or data graph.
This table records data about a list of animations for a particular model, such as number of frames a...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual void finalize(BamReader *manager)
Called by the BamReader to perform any final actions needed for setting up the object after all objec...
virtual void output(std::ostream &out) const
Writes a one-line description of the bundle.
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
An animated character, with skeleton-morph animation and either soft- skinned or hard-skinned vertice...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is the root of an AnimChannel hierarchy.
This class is similar to CycleDataWriter, except it allows writing to a particular stage of the pipel...
A single page of data maintained by a PipelineCycler.
Base class for objects that can be written to and read from Bam files.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A convenient class for loading models from disk, in bam or egg format (or any of a number of other fo...
This is the base class for a single animatable piece that may be bound to one channel (or more,...
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
This template class calls PipelineCycler::read_unlocked(), and then provides a transparent read-only ...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void output(std::ostream &out) const
Outputs the Namable.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual void write(std::ostream &out, int indent_level) const
Writes a brief description of the group and all of its descendants.
The name of a file, such as a texture file or an Egg file.
This is a node that contains a pointer to an PartBundle.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This template class calls PipelineCycler::read() in the constructor and PipelineCycler::release_read(...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
An instance of this class is passed to the Factory when requesting it to do its business and construc...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This template class calls PipelineCycler::write() in the constructor and PipelineCycler::release_writ...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class is used to define a subset of part names to apply to the PartBundle::bind_anim() operation...
static void register_with_read_factory()
Factory method to generate a PartGroup object.
This is a particular kind of MovingPart that accepts a scalar each frame.
This is a particular kind of MovingPart that accepts a matrix each frame.
This is the root of a MovingPart hierarchy.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Controls the timing of a character animation.
A class to retrieve the individual data elements previously stored in a Datagram.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
TypeHandle is the identifier used to differentiate C++ class types.
virtual PartGroup * make_copy() const
Allocates and returns a new copy of the node.
virtual void write_datagram(BamWriter *manager, Datagram &me)
Function to write the important information in the particular object to a Datagram.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
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 pointe...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This is the base class for PartRoot and MovingPart.