18 #include "pandabase.h"
20 #include "partGroup.h"
21 #include "animControl.h"
22 #include "partSubset.h"
23 #include "animPreloadTable.h"
24 #include "pointerTo.h"
26 #include "cycleData.h"
27 #include "cycleDataLockedReader.h"
28 #include "cycleDataReader.h"
29 #include "cycleDataWriter.h"
32 #include "transformState.h"
33 #include "weakPointerTo.h"
34 #include "copyOnWritePointer.h"
67 INLINE
void clear_anim_preload();
68 void merge_anim_preloads(
const PartBundle *other);
100 BT_componentwise_quat,
103 INLINE
void set_blend_type(BlendType bt);
104 INLINE BlendType get_blend_type()
const;
106 void set_anim_blend_flag(
bool anim_blend_flag);
107 INLINE
bool get_anim_blend_flag()
const;
109 INLINE
void set_frame_blend_flag(
bool frame_blend_flag);
110 INLINE
bool get_frame_blend_flag()
const;
112 INLINE
void set_root_xform(
const LMatrix4 &root_xform);
113 INLINE
void xform(
const LMatrix4 &mat);
114 INLINE
const LMatrix4 &get_root_xform()
const;
115 PT(
PartBundle) apply_transform(
const TransformState *transform);
117 INLINE
int get_num_nodes()
const;
119 MAKE_SEQ(get_nodes, get_num_nodes, get_node);
121 void clear_control_effects();
122 INLINE
void set_control_effect(
AnimControl *control, PN_stdfloat effect);
123 INLINE PN_stdfloat get_control_effect(
AnimControl *control)
const;
125 virtual void output(ostream &out)
const;
126 virtual void write(ostream &out,
int indent_level)
const;
129 int hierarchy_match_flags = 0,
133 int hierarchy_match_flags,
138 bool freeze_joint(
const string &joint_name,
const TransformState *transform);
140 bool freeze_joint(
const string &joint_name, PN_stdfloat value);
141 bool control_joint(
const string &joint_name,
PandaNode *node);
142 bool release_joint(
const string &joint_name);
151 virtual void control_activated(
AnimControl *control);
152 INLINE
void set_update_delay(
double delay);
155 int hierarchy_match_flags,
const PartSubset &subset);
164 void do_set_control_effect(
AnimControl *control, PN_stdfloat effect, CData *cdata);
165 PN_stdfloat do_get_control_effect(
AnimControl *control,
const CData *cdata)
const;
166 void recompute_net_blend(CData *cdata);
167 void clear_and_stop_intersecting(
AnimControl *control, CData *cdata);
177 double _update_delay;
183 CData(
const CData ©);
189 return PartBundle::get_class_type();
192 BlendType _blend_type;
193 bool _anim_blend_flag;
194 bool _frame_blend_flag;
198 PN_stdfloat _net_blend;
222 return get_class_type();
224 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
228 static void init_type() {
229 PartGroup::init_type();
230 register_type(_type_handle,
"PartBundle",
231 PartGroup::get_class_type());
244 inline ostream &operator <<(ostream &out,
const PartBundle &bundle) {
249 ostream &operator <<(ostream &out, PartBundle::BlendType blend_type);
250 istream &operator >>(istream &in, PartBundle::BlendType &blend_type);
252 #include "partBundle.I"
A basic node of the scene graph or data graph.
This is the base class for all three-component vectors and points.
This table records data about a list of animations for a particular model, such as number of frames a...
virtual void finalize(BamReader *manager)
Called by the BamReader to perform any final actions needed for setting up the object after all objec...
virtual PartGroup * make_copy() const
Allocates and returns a new copy of the node.
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 vertices...
This is the root of an AnimChannel hierarchy.
A single page of data maintained by a PipelineCycler.
Base class for objects that can be written to and read from Bam files.
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 ...
virtual void write(ostream &out, int indent_level) const
Writes a brief description of the group and all of its descendants.
This template class calls PipelineCycler::read_unlocked(), and then provides a transparent read-only ...
The name of a file, such as a texture file or an Egg file.
This is a 4-by-4 transform matrix.
This is a node that contains a pointer to an PartBundle.
This template class calls PipelineCycler::read() in the constructor and PipelineCycler::release_read(...
An instance of this class is passed to the Factory when requesting it to do its business and construc...
virtual void output(ostream &out) const
Writes a one-line description of the bundle.
This template class calls PipelineCycler::write() in the constructor and PipelineCycler::release_writ...
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.
void output(ostream &out) const
Outputs the Namable.
This is a particular kind of MovingPart that accepts a matrix each frame.
This is the root of a MovingPart hierarchy.
Controls the timing of a character animation.
A class to retrieve the individual data elements previously stored in a Datagram. ...
TypeHandle is the identifier used to differentiate C++ class types.
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...
This is the base class for PartRoot and MovingPart.