14#ifndef MOVINGPARTBASE_H
15#define MOVINGPARTBASE_H
31class EXPCL_PANDA_CHAN MovingPartBase :
public PartGroup {
33 INLINE MovingPartBase(
const MovingPartBase ©);
36 MovingPartBase(PartGroup *parent,
const std::string &name);
50 virtual void write(std::ostream &out,
int indent_level)
const;
52 virtual void output_value(std::ostream &out)
const=0;
56 PartGroup *parent,
bool parent_changed,
57 bool anim_changed,
Thread *current_thread);
59 virtual void get_blend_value(
const PartBundle *root)=0;
61 bool self_changed,
bool parent_changed,
67 virtual void pick_channel_index(
plist<int> &holes,
int &next)
const;
68 virtual void bind_hierarchy(
AnimGroup *anim,
int channel_index,
69 int &joint_index,
bool is_included,
72 virtual void find_bound_joints(
int &joint_index,
bool is_included,
83 int _num_effective_channels;
105 return get_class_type();
107 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
109 static TypeHandle get_class_type() {
113 static void init_type() {
114 PartGroup::init_type();
116 PartGroup::get_class_type());
120 static TypeHandle _type_handle;
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Parent class for all animation channels.
Controls the timing of a character animation.
This is the base class for AnimChannel and AnimBundle.
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
A dynamic array with an unlimited number of bits.
A single page of data maintained by a PipelineCycler.
A class to retrieve the individual data elements previously stored in a Datagram.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
virtual TypeHandle get_value_type() const =0
Returns the TypeHandle associated with the ValueType we are concerned with.
AnimChannelBase * get_bound(int n) const
Returns the nth bound channel on this PartGroup.
virtual bool update_internals(PartBundle *root, PartGroup *parent, bool self_changed, bool parent_changed, Thread *current_thread)
This is called by do_update() whenever the part or some ancestor has changed values.
int get_max_bound() const
Returns the number of channels that might be bound to this PartGroup.
virtual void write(std::ostream &out, int indent_level) const
Writes a brief description of the group and all of its descendants.
virtual void write_datagram(BamWriter *manager, Datagram &me)
Function to write the important information in the particular object to a Datagram.
virtual bool clear_forced_channel()
Undoes the effect of a previous call to apply_freeze() or apply_control().
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_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 descendant...
virtual void determine_effective_channels(const CycleData *root_cdata)
Should be called whenever the ChannelBlend values have changed, this recursively updates the _effecti...
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.
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 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.
TypeHandle is the identifier used to differentiate C++ class types.
This is our own Panda specialization on the default STL list.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...