15 #ifndef MOVINGPARTBASE_H
16 #define MOVINGPARTBASE_H
18 #include "pandabase.h"
20 #include "partGroup.h"
21 #include "partBundle.h"
22 #include "animChannelBase.h"
39 MovingPartBase(
PartGroup *parent,
const string &name);
42 INLINE
int get_max_bound()
const;
53 virtual void write(ostream &out,
int indent_level)
const;
55 virtual void output_value(ostream &out)
const=0;
60 bool anim_changed,
Thread *current_thread);
62 virtual void get_blend_value(
const PartBundle *root)=0;
64 bool self_changed,
bool parent_changed,
70 virtual void pick_channel_index(
plist<int> &holes,
int &next)
const;
71 virtual void bind_hierarchy(
AnimGroup *anim,
int channel_index,
72 int &joint_index,
bool is_included,
75 virtual void find_bound_joints(
int &joint_index,
bool is_included,
86 int _num_effective_channels;
109 return get_class_type();
111 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
117 static void init_type() {
118 PartGroup::init_type();
119 register_type(_type_handle,
"MovingPartBase",
120 PartGroup::get_class_type());
127 #include "movingPartBase.I"
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
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...
A single page of data maintained by a PipelineCycler.
Base class for objects that can be written to and read from Bam files.
virtual TypeHandle get_value_type() const
Returns the TypeHandle associated with the ValueType we are concerned with.
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 descendant...
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 AnimChannelBase * get_forced_channel() const
Returns the AnimChannelBase that has been forced to this joint by a previous call to apply_freeze() o...
virtual void write(ostream &out, int indent_level) const
Writes a brief description of the group and all of its descendants.
A dynamic array with an unlimited number of bits.
Parent class for all animation channels.
This is the base class for AnimChannel and AnimBundle.
virtual void determine_effective_channels(const CycleData *root_cdata)
Should be called whenever the ChannelBlend values have changed, this recursively updates the _effecti...
This class is used to define a subset of part names to apply to the PartBundle::bind_anim() operation...
A thread; that is, a lightweight process.
This is the root of a MovingPart hierarchy.
virtual bool clear_forced_channel()
Undoes the effect of a previous call to apply_freeze() or apply_control().
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.