18 #include "pandabase.h" 20 #include "typedWritableReferenceCount.h" 21 #include "pointerTo.h" 51 enum HierarchyMatchFlags {
52 HMF_ok_part_extra = 0x01,
53 HMF_ok_anim_extra = 0x02,
54 HMF_ok_wrong_root_name = 0x04,
62 INLINE
PartGroup(
const string &name =
"");
63 INLINE PartGroup(
const PartGroup ©);
67 PartGroup(PartGroup *parent,
const string &name);
69 virtual bool is_character_joint()
const;
71 virtual PartGroup *make_copy()
const;
72 PartGroup *copy_subgraph()
const;
74 int get_num_children()
const;
75 PartGroup *get_child(
int n)
const;
76 MAKE_SEQ(get_children, get_num_children, get_child);
78 PartGroup *get_child_named(
const string &name)
const;
79 PartGroup *find_child(
const string &name)
const;
80 void sort_descendants();
82 bool apply_freeze(
const TransformState *transform);
84 virtual bool apply_freeze_scalar(PN_stdfloat value);
85 virtual bool apply_control(
PandaNode *node);
86 virtual bool clear_forced_channel();
89 virtual void write(ostream &out,
int indent_level)
const;
90 virtual void write_with_value(ostream &out,
int indent_level)
const;
95 bool check_hierarchy(
const AnimGroup *anim,
96 const PartGroup *parent,
97 int hierarchy_match_flags = 0)
const;
100 PartGroup *parent,
bool parent_changed,
101 bool anim_changed,
Thread *current_thread);
103 virtual void determine_effective_channels(
const CycleData *root_cdata);
106 void write_descendants(ostream &out,
int indent_level)
const;
107 void write_descendants_with_value(ostream &out,
int indent_level)
const;
109 virtual void pick_channel_index(
plist<int> &holes,
int &next)
const;
110 virtual void bind_hierarchy(
AnimGroup *anim,
int channel_index,
111 int &joint_index,
bool is_included,
114 virtual void find_bound_joints(
int &joint_index,
bool is_included,
122 static void register_with_read_factory();
134 return get_class_type();
136 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
142 static void init_type() {
143 TypedWritableReferenceCount::init_type();
144 register_type(_type_handle,
"PartGroup",
145 TypedWritableReferenceCount::get_class_type());
156 #include "partGroup.I" A basic node of the scene graph or data graph.
This is the base class for all three-component vectors and points.
The collection of all the joints and sliders in the character.
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...
A single page of data maintained by a PipelineCycler.
Base class for objects that can be written to and read from Bam files.
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
virtual void fillin(DatagramIterator &scan, BamReader *manager)
This internal function is intended to be called by each class's make_from_bam() method to read in all...
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
A dynamic array with an unlimited number of bits.
Parent class for all animation channels.
A base class for all things which can have a name.
This is the base class for AnimChannel and AnimBundle.
virtual int complete_pointers(TypedWritable **p_list, BamReader *manager)
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin()...
This is a 4-by-4 transform matrix.
An instance of this class is passed to the Factory when requesting it to do its business and construc...
A base class for things which need to inherit from both TypedWritable and from ReferenceCount.
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.
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.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
This is the base class for PartRoot and MovingPart.