1412102906
2 2
9 libp3chan 4 8NZB 12 panda3d.core 
218
216 37 upcast_to_TypedWritableReferenceCount 0 12 434 48 AnimGroup::upcast_to_TypedWritableReferenceCount 0 1 10 52
upcast from AnimGroup to TypedWritableReferenceCount
84
TypedWritableReferenceCount *AnimGroup::upcast_to_TypedWritableReferenceCount(void);

217 21 downcast_to_AnimGroup 0 12 435 50 TypedWritableReferenceCount::downcast_to_AnimGroup 0 1 11 54
downcast from TypedWritableReferenceCount to AnimGroup
68
AnimGroup *TypedWritableReferenceCount::downcast_to_AnimGroup(void);

218 17 upcast_to_Namable 0 12 434 28 AnimGroup::upcast_to_Namable 0 1 12 32
upcast from AnimGroup to Namable
44
Namable *AnimGroup::upcast_to_Namable(void);

219 21 downcast_to_AnimGroup 0 12 436 30 Namable::downcast_to_AnimGroup 0 1 13 34
downcast from Namable to AnimGroup
48
AnimGroup *Namable::downcast_to_AnimGroup(void);

220 9 AnimGroup 0 4 434 20 AnimGroup::AnimGroup 0 1 1 1392
// This is the normal AnimGroup constructor.

////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::Default Constructor
//       Access: Protected
//  Description: The default constructor is protected: don't try to
//               create an AnimGroup without a parent.  To create an
//               AnimChannel hierarchy, you must first create an
//               AnimBundle, and use that to create any subsequent
//               children.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::Copy Constructor
//       Access: Protected
//  Description: Creates a new AnimGroup, just like this one, without
//               copying any children.  The new copy is added to the
//               indicated parent.  Intended to be called by
//               make_copy() only.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::Constructor
//       Access: Published
//  Description: Creates the AnimGroup, and adds it to the indicated
//               parent.  The only way to delete it subsequently is to
//               delete the entire hierarchy.
////////////////////////////////////////////////////////////////////
74
AnimGroup::AnimGroup(AnimGroup *parent, basic_string< char > const &name);

221 10 ~AnimGroup 0 6 434 21 AnimGroup::~AnimGroup 0 0 276
// This is the normal AnimGroup constructor.

////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::Destructor
//       Access: Published, Virtual
//  Description: 
////////////////////////////////////////////////////////////////////
36
virtual AnimGroup::~AnimGroup(void);

222 16 get_num_children 0 4 434 27 AnimGroup::get_num_children 0 1 2 274
////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::get_num_children
//       Access: Published
//  Description: Returns the number of child nodes of the group.
////////////////////////////////////////////////////////////////////
44
int AnimGroup::get_num_children(void) const;

223 9 get_child 0 4 434 20 AnimGroup::get_child 0 1 3 255
////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::get_child
//       Access: Published
//  Description: Returns the nth child of the group.
////////////////////////////////////////////////////////////////////
45
AnimGroup *AnimGroup::get_child(int n) const;

224 15 get_child_named 0 4 434 26 AnimGroup::get_child_named 0 1 4 524
////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::get_child_named
//       Access: Published
//  Description: Returns the first child found with the indicated
//               name, or NULL if no such child exists.  This method
//               searches only the children of this particular
//               AnimGroup; it does not recursively search the entire
//               graph.  See also find_child().
////////////////////////////////////////////////////////////////////
78
AnimGroup *AnimGroup::get_child_named(basic_string< char > const &name) const;

225 10 find_child 0 4 434 21 AnimGroup::find_child 0 1 5 465
////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::find_child
//       Access: Published
//  Description: Returns the first descendant found with the indicated
//               name, or NULL if no such descendant exists.  This
//               method searches the entire graph beginning at this
//               AnimGroup; see also get_child_named().
////////////////////////////////////////////////////////////////////
73
AnimGroup *AnimGroup::find_child(basic_string< char > const &name) const;

226 16 sort_descendants 0 4 434 27 AnimGroup::sort_descendants 0 1 6 537
////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::sort_descendants
//       Access: Published
//  Description: Sorts the children nodes at each level of the
//               hierarchy into alphabetical order.  This should be
//               done after creating the hierarchy, to guarantee that
//               the correct names will match up together when the
//               AnimBundle is later bound to a PlayerRoot.
////////////////////////////////////////////////////////////////////
39
void AnimGroup::sort_descendants(void);

227 6 output 0 6 434 17 AnimGroup::output 0 1 7 269
////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::output
//       Access: Published, Virtual
//  Description: Writes a one-line description of the group.
////////////////////////////////////////////////////////////////////
51
virtual void AnimGroup::output(ostream &out) const;

228 5 write 0 6 434 16 AnimGroup::write 0 1 8 309
////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::write
//       Access: Published, Virtual
//  Description: Writes a brief description of the group and all of
//               its descendants.
////////////////////////////////////////////////////////////////////
68
virtual void AnimGroup::write(ostream &out, int indent_level) const;

229 14 get_class_type 0 4 434 25 AnimGroup::get_class_type 0 1 9 0
50
static TypeHandle AnimGroup::get_class_type(void);

230 10 AnimBundle 0 4 437 22 AnimBundle::AnimBundle 0 1 14 1374
// Filename: animBundle.I
// Created by:  drose (21Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::Copy Constructor
//       Access: Protected
//  Description: Creates a new AnimBundle, just like this one, without
//               copying any children.  The new copy is added to the
//               indicated parent.  Intended to be called by
//               make_copy() only.
////////////////////////////////////////////////////////////////////
91
inline AnimBundle::AnimBundle(basic_string< char > const &name, float fps, int num_frames);

231 11 copy_bundle 0 4 437 23 AnimBundle::copy_bundle 0 1 15 511
////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::copy_bundle
//       Access: Published
//  Description: Returns a full copy of the bundle and its entire tree
//               of nested AnimGroups.  However, the actual data
//               stored in the leaves--that is, animation tables, such
//               as those stored in an AnimChannelMatrixXfmTable--will
//               be shared.
////////////////////////////////////////////////////////////////////
60
PointerTo< AnimBundle > AnimBundle::copy_bundle(void) const;

232 19 get_base_frame_rate 0 4 437 31 AnimBundle::get_base_frame_rate 0 1 16 600
////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::get_base_frame_rate
//       Access: Public
//  Description: Returns the ideal number of frames per second of the
//               animation, when it is running at normal speed.  This
//               may not be the same as the actual playing frame rate,
//               as it might have been adjusted through
//               set_play_rate() on the AnimControl object.  See
//               AnimControl::get_effective_frame_rate().
////////////////////////////////////////////////////////////////////
58
inline double AnimBundle::get_base_frame_rate(void) const;

233 14 get_num_frames 0 4 437 26 AnimBundle::get_num_frames 0 1 17 335
////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::get_num_frames
//       Access: Public
//  Description: Returns the number of frames of animation, or 0 if
//               the animation has no fixed number of frames.
////////////////////////////////////////////////////////////////////
50
inline int AnimBundle::get_num_frames(void) const;

234 14 get_class_type 0 4 437 26 AnimBundle::get_class_type 0 1 18 0
51
static TypeHandle AnimBundle::get_class_type(void);

235 11 ~AnimBundle 0 4 437 23 AnimBundle::~AnimBundle 0 0 0
30
AnimBundle::~AnimBundle(void);

236 14 AnimBundleNode 0 4 438 30 AnimBundleNode::AnimBundleNode 0 1 19 1557
// Filename: animBundleNode.I
// Created by:  drose (06Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimBundleNode::Constructor
//       Access: Public
//  Description: The AnimBundle and its node should be constructed
//               together.  Generally, the derived classes of
//               AnimBundleNode will automatically create a AnimBundle
//               of the appropriate type, and pass it up to this
//               constructor.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimBundleNode::Default Constructor
//       Access: Protected
//  Description: For internal use only.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimBundleNode::Copy Constructor
//       Access: Protected
//  Description: Use make_copy() or copy_subgraph() to copy one of
//               these.
////////////////////////////////////////////////////////////////////
92
inline AnimBundleNode::AnimBundleNode(basic_string< char > const &name, AnimBundle *bundle);

237 10 get_bundle 0 4 438 26 AnimBundleNode::get_bundle 0 1 20 222
////////////////////////////////////////////////////////////////////
//     Function: AnimBundleNode::get_bundle
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
58
inline AnimBundle *AnimBundleNode::get_bundle(void) const;

238 16 find_anim_bundle 0 4 438 32 AnimBundleNode::find_anim_bundle 0 1 21 480
////////////////////////////////////////////////////////////////////
//     Function: AnimBundleNode::find_anim_bundle
//       Access: Published, Static
//  Description: Recursively walks the scene graph beginning at the
//               indicated node (which need not be an AnimBundleNode),
//               and returns the first AnimBundle found.  Returns NULL
//               if no AnimBundle can be found.
////////////////////////////////////////////////////////////////////
69
static AnimBundle *AnimBundleNode::find_anim_bundle(PandaNode *root);

239 14 get_class_type 0 4 438 30 AnimBundleNode::get_class_type 0 1 22 0
55
static TypeHandle AnimBundleNode::get_class_type(void);

240 15 ~AnimBundleNode 0 4 438 31 AnimBundleNode::~AnimBundleNode 0 0 0
38
AnimBundleNode::~AnimBundleNode(void);

241 37 upcast_to_TypedWritableReferenceCount 0 12 440 48 PartGroup::upcast_to_TypedWritableReferenceCount 0 1 41 52
upcast from PartGroup to TypedWritableReferenceCount
84
TypedWritableReferenceCount *PartGroup::upcast_to_TypedWritableReferenceCount(void);

242 21 downcast_to_PartGroup 0 12 435 50 TypedWritableReferenceCount::downcast_to_PartGroup 0 1 42 54
downcast from TypedWritableReferenceCount to PartGroup
68
PartGroup *TypedWritableReferenceCount::downcast_to_PartGroup(void);

243 17 upcast_to_Namable 0 12 440 28 PartGroup::upcast_to_Namable 0 1 43 32
upcast from PartGroup to Namable
44
Namable *PartGroup::upcast_to_Namable(void);

244 21 downcast_to_PartGroup 0 12 436 30 Namable::downcast_to_PartGroup 0 1 44 34
downcast from Namable to PartGroup
48
PartGroup *Namable::downcast_to_PartGroup(void);

245 9 PartGroup 0 4 440 20 PartGroup::PartGroup 0 1 23 1727
// This is the normal PartGroup constructor.

// Filename: partGroup.I
// Created by:  drose (22Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::Default Constructor
//       Access: Protected
//  Description: This constructor is only intended for interal use and
//               for derived classes.  You should normally use the
//               non-default constructor, below.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PartGroup::Copy Constructor
//       Access: Protected
//  Description: This constructor is only intended for interal use and
//               for derived classes.  You should normally use the
//               make_copy() interface to make copies..
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PartGroup::Constructor
//       Access: Published
//  Description: Creates the PartGroup, and adds it to the indicated
//               parent.  The only way to delete it subsequently is to
//               delete the entire hierarchy.
////////////////////////////////////////////////////////////////////
74
PartGroup::PartGroup(PartGroup *parent, basic_string< char > const &name);

246 10 ~PartGroup 0 6 440 21 PartGroup::~PartGroup 0 0 266
// This is the normal PartGroup constructor.

////////////////////////////////////////////////////////////////////
//     Function: PartGroup::Destructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
36
virtual PartGroup::~PartGroup(void);

247 18 is_character_joint 0 6 440 29 PartGroup::is_character_joint 0 1 24 414
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::is_character_joint
//       Access: Published, Virtual
//  Description: Returns true if this part is a CharacterJoint, false
//               otherwise.  This is a tiny optimization over
//               is_of_type(CharacterType::get_class_type()).
////////////////////////////////////////////////////////////////////
55
virtual bool PartGroup::is_character_joint(void) const;

248 9 make_copy 0 6 440 20 PartGroup::make_copy 0 1 25 341
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::make_copy
//       Access: Published, Virtual
//  Description: Allocates and returns a new copy of the node.
//               Children are not copied, but see copy_subgraph().
////////////////////////////////////////////////////////////////////
52
virtual PartGroup *PartGroup::make_copy(void) const;

249 13 copy_subgraph 0 4 440 24 PartGroup::copy_subgraph 0 1 26 314
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::copy_subgraph
//       Access: Published
//  Description: Allocates and returns a new copy of this node and of
//               all of its children.
////////////////////////////////////////////////////////////////////
48
PartGroup *PartGroup::copy_subgraph(void) const;

250 16 get_num_children 0 4 440 27 PartGroup::get_num_children 0 1 27 274
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::get_num_children
//       Access: Published
//  Description: Returns the number of child nodes of the group.
////////////////////////////////////////////////////////////////////
44
int PartGroup::get_num_children(void) const;

251 9 get_child 0 4 440 20 PartGroup::get_child 0 1 28 255
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::get_child
//       Access: Published
//  Description: Returns the nth child of the group.
////////////////////////////////////////////////////////////////////
45
PartGroup *PartGroup::get_child(int n) const;

252 15 get_child_named 0 4 440 26 PartGroup::get_child_named 0 1 29 524
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::get_child_named
//       Access: Published
//  Description: Returns the first child found with the indicated
//               name, or NULL if no such child exists.  This method
//               searches only the children of this particular
//               PartGroup; it does not recursively search the entire
//               graph.  See also find_child().
////////////////////////////////////////////////////////////////////
78
PartGroup *PartGroup::get_child_named(basic_string< char > const &name) const;

253 10 find_child 0 4 440 21 PartGroup::find_child 0 1 30 465
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::find_child
//       Access: Published
//  Description: Returns the first descendant found with the indicated
//               name, or NULL if no such descendant exists.  This
//               method searches the entire graph beginning at this
//               PartGroup; see also get_child_named().
////////////////////////////////////////////////////////////////////
73
PartGroup *PartGroup::find_child(basic_string< char > const &name) const;

254 16 sort_descendants 0 4 440 27 PartGroup::sort_descendants 0 1 31 537
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::sort_descendants
//       Access: Published
//  Description: Sorts the children nodes at each level of the
//               hierarchy into alphabetical order.  This should be
//               done after creating the hierarchy, to guarantee that
//               the correct names will match up together when the
//               AnimBundle is later bound to a PlayerRoot.
////////////////////////////////////////////////////////////////////
39
void PartGroup::sort_descendants(void);

255 12 apply_freeze 0 4 440 23 PartGroup::apply_freeze 0 1 32 572
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::apply_freeze
//       Access: Published
//  Description: Freezes this particular joint so that it will always
//               hold the specified transform.  Returns true if this
//               is a joint that can be so frozen, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::freeze_joint(), but you may also call it
//               directly.
////////////////////////////////////////////////////////////////////
62
bool PartGroup::apply_freeze(TransformState const *transform);

256 19 apply_freeze_matrix 0 6 440 30 PartGroup::apply_freeze_matrix 0 1 33 588
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::apply_freeze_matrix
//       Access: Published, Virtual
//  Description: Freezes this particular joint so that it will always
//               hold the specified transform.  Returns true if this
//               is a joint that can be so frozen, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::freeze_joint(), but you may also call it
//               directly.
////////////////////////////////////////////////////////////////////
115
virtual bool PartGroup::apply_freeze_matrix(LVecBase3f const &pos, LVecBase3f const &hpr, LVecBase3f const &scale);

257 19 apply_freeze_scalar 0 6 440 30 PartGroup::apply_freeze_scalar 0 1 34 588
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::apply_freeze_scalar
//       Access: Published, Virtual
//  Description: Freezes this particular joint so that it will always
//               hold the specified transform.  Returns true if this
//               is a joint that can be so frozen, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::freeze_joint(), but you may also call it
//               directly.
////////////////////////////////////////////////////////////////////
57
virtual bool PartGroup::apply_freeze_scalar(float value);

258 13 apply_control 0 6 440 24 PartGroup::apply_control 0 1 35 622
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::apply_control
//       Access: Published, Virtual
//  Description: Specifies a node to influence this particular joint
//               so that it will always hold the node's transform.
//               Returns true if this is a joint that can be so
//               controlled, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::control_joint(), but you may also call it
//               directly.
////////////////////////////////////////////////////////////////////
55
virtual bool PartGroup::apply_control(PandaNode *node);

259 20 clear_forced_channel 0 6 440 31 PartGroup::clear_forced_channel 0 1 36 567
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::clear_forced_channel
//       Access: Published, Virtual
//  Description: Undoes the effect of a previous call to
//               apply_freeze() or apply_control().  Returns true if
//               the joint was modified, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::release_joint(), but you may also call it
//               directly.
////////////////////////////////////////////////////////////////////
51
virtual bool PartGroup::clear_forced_channel(void);

260 18 get_forced_channel 0 6 440 29 PartGroup::get_forced_channel 0 1 37 453
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::get_forced_channel
//       Access: Published, Virtual
//  Description: Returns the AnimChannelBase that has been forced to
//               this joint by a previous call to apply_freeze() or
//               apply_control(), or NULL if no such channel has been
//               applied.
////////////////////////////////////////////////////////////////////
67
virtual AnimChannelBase *PartGroup::get_forced_channel(void) const;

261 5 write 0 6 440 16 PartGroup::write 0 1 38 309
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::write
//       Access: Published, Virtual
//  Description: Writes a brief description of the group and all of
//               its descendants.
////////////////////////////////////////////////////////////////////
68
virtual void PartGroup::write(ostream &out, int indent_level) const;

262 16 write_with_value 0 6 440 27 PartGroup::write_with_value 0 1 39 356
////////////////////////////////////////////////////////////////////
//     Function: PartGroup::write_with_value
//       Access: Published, Virtual
//  Description: Writes a brief description of the group, showing its
//               current value, and that of all of its descendants.
////////////////////////////////////////////////////////////////////
79
virtual void PartGroup::write_with_value(ostream &out, int indent_level) const;

263 14 get_class_type 0 4 440 25 PartGroup::get_class_type 0 1 40 0
50
static TypeHandle PartGroup::get_class_type(void);

264 29 upcast_to_TypedReferenceCount 0 12 442 42 AnimControl::upcast_to_TypedReferenceCount 0 1 58 46
upcast from AnimControl to TypedReferenceCount
70
TypedReferenceCount *AnimControl::upcast_to_TypedReferenceCount(void);

265 23 downcast_to_AnimControl 0 12 443 44 TypedReferenceCount::downcast_to_AnimControl 0 1 59 48
downcast from TypedReferenceCount to AnimControl
64
AnimControl *TypedReferenceCount::downcast_to_AnimControl(void);

266 23 upcast_to_AnimInterface 0 12 442 36 AnimControl::upcast_to_AnimInterface 0 1 60 40
upcast from AnimControl to AnimInterface
58
AnimInterface *AnimControl::upcast_to_AnimInterface(void);

267 23 downcast_to_AnimControl 0 12 444 38 AnimInterface::downcast_to_AnimControl 0 1 61 42
downcast from AnimInterface to AnimControl
58
AnimControl *AnimInterface::downcast_to_AnimControl(void);

268 17 upcast_to_Namable 0 12 442 30 AnimControl::upcast_to_Namable 0 1 62 34
upcast from AnimControl to Namable
46
Namable *AnimControl::upcast_to_Namable(void);

269 23 downcast_to_AnimControl 0 12 436 32 Namable::downcast_to_AnimControl 0 1 63 36
downcast from Namable to AnimControl
52
AnimControl *Namable::downcast_to_AnimControl(void);

270 12 ~AnimControl 0 6 442 25 AnimControl::~AnimControl 0 0 231
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::Destructor
//       Access: Published, Virtual
//  Description:
////////////////////////////////////////////////////////////////////
40
virtual AnimControl::~AnimControl(void);

271 10 is_pending 0 4 442 23 AnimControl::is_pending 0 1 45 1061
// Filename: animControl.I
// Created by:  drose (19Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::is_pending
//       Access: Published
//  Description: Returns true if the AnimControl is being bound
//               asynchronously, and has not yet finished.  If this is
//               true, the AnimControl's interface is still available
//               and will be perfectly useful (though get_anim() might
//               return NULL), but nothing visible will happen
//               immediately.
////////////////////////////////////////////////////////////////////
48
inline bool AnimControl::is_pending(void) const;

272 12 wait_pending 0 4 442 25 AnimControl::wait_pending 0 1 46 330
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::wait_pending
//       Access: Published
//  Description: Blocks the current thread until the AnimControl has
//               finished loading and is fully bound.
////////////////////////////////////////////////////////////////////
37
void AnimControl::wait_pending(void);

273 8 has_anim 0 4 442 21 AnimControl::has_anim 0 1 47 395
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::has_anim
//       Access: Published
//  Description: Returns true if the AnimControl was successfully
//               loaded, or false if there was a problem.  This may
//               return false while is_pending() is true.
////////////////////////////////////////////////////////////////////
46
inline bool AnimControl::has_anim(void) const;

274 22 set_pending_done_event 0 4 442 35 AnimControl::set_pending_done_event 0 1 48 474
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::set_pending_done_event
//       Access: Published
//  Description: Specifies an event name that will be thrown when the
//               AnimControl is finished binding asynchronously.  If
//               the AnimControl has already finished binding, the
//               event will be thrown immediately.
////////////////////////////////////////////////////////////////////
81
void AnimControl::set_pending_done_event(basic_string< char > const &done_event);

275 22 get_pending_done_event 0 4 442 35 AnimControl::get_pending_done_event 0 1 49 351
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_pending_done_event
//       Access: Published
//  Description: Returns the event name that will be thrown when the
//               AnimControl is finished binding asynchronously.
////////////////////////////////////////////////////////////////////
69
basic_string< char > AnimControl::get_pending_done_event(void) const;

276 8 get_part 0 4 442 21 AnimControl::get_part 0 1 50 292
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_part
//       Access: Published
//  Description: Returns the PartBundle bound in with this
//               AnimControl.
////////////////////////////////////////////////////////////////////
46
PartBundle *AnimControl::get_part(void) const;

277 8 get_anim 0 4 442 21 AnimControl::get_anim 0 1 51 292
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_anim
//       Access: Published
//  Description: Returns the AnimBundle bound in with this
//               AnimControl.
////////////////////////////////////////////////////////////////////
53
inline AnimBundle *AnimControl::get_anim(void) const;

278 17 get_channel_index 0 4 442 30 AnimControl::get_channel_index 0 1 52 665
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_channel_index
//       Access: Published
//  Description: Returns the particular channel index associated with
//               this AnimControl.  This channel index is the slot on
//               which each AnimGroup is bound to its associated
//               PartGroup, for each joint in the animation.
//
//               It will be true that
//               get_part()->find_child("n")->get_bound(get_channel_index())
//               == get_anim()->find_child("n"), for each joint "n".
////////////////////////////////////////////////////////////////////
54
inline int AnimControl::get_channel_index(void) const;

279 16 get_bound_joints 0 4 442 29 AnimControl::get_bound_joints 0 1 53 677
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_bound_joints
//       Access: Published
//  Description: Returns the subset of joints controlled by this
//               AnimControl.  Most of the time, this will be
//               BitArray::all_on(), for a normal full-body animation.
//               For a subset animation, however, this will be just a
//               subset of those bits, corresponding to the set of
//               joints and sliders actually bound (as enumerated by
//               bind_hierarchy() in depth-first LIFO order).
////////////////////////////////////////////////////////////////////
65
inline BitArray const &AnimControl::get_bound_joints(void) const;

280 14 set_anim_model 0 4 442 27 AnimControl::set_anim_model 0 1 54 883
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::set_anim_model
//       Access: Published
//  Description: Associates the indicated PandaNode with the
//               AnimControl.  By convention, this node represents the
//               root node of the model file that corresponds to this
//               AnimControl's animation file, though nothing in this
//               code makes this assumption or indeed does anything
//               with this node.
//
//               The purpose of this is simply to allow the
//               AnimControl to keep a reference count on the
//               ModelRoot node that generated it, so that the model
//               will not disappear from the model pool until it is no
//               longer referenced.
////////////////////////////////////////////////////////////////////
58
inline void AnimControl::set_anim_model(PandaNode *model);

281 14 get_anim_model 0 4 442 27 AnimControl::get_anim_model 0 1 55 314
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_anim_model
//       Access: Published
//  Description: Retrieves the pointer set via set_anim_model().  See
//               set_anim_model().
////////////////////////////////////////////////////////////////////
58
inline PandaNode *AnimControl::get_anim_model(void) const;

282 6 output 0 6 442 19 AnimControl::output 0 1 56 218
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::output
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
53
virtual void AnimControl::output(ostream &out) const;

283 14 get_class_type 0 4 442 27 AnimControl::get_class_type 0 1 57 0
52
static TypeHandle AnimControl::get_class_type(void);

284 8 get_type 0 6 445 25 AnimChannelBase::get_type 0 1 64 0
57
virtual TypeHandle AnimChannelBase::get_type(void) const;

285 14 get_class_type 0 4 445 31 AnimChannelBase::get_class_type 0 1 65 0
56
static TypeHandle AnimChannelBase::get_class_type(void);

286 16 ~AnimChannelBase 0 4 445 33 AnimChannelBase::~AnimChannelBase 0 0 0
40
AnimChannelBase::~AnimChannelBase(void);

287 9 get_value 0 6 446 44 AnimChannel< ACMatrixSwitchType >::get_value 0 1 66 0
93
virtual void ::AnimChannel< ACMatrixSwitchType >::get_value(int frame, LMatrix4f &value) = 0;

288 24 get_value_no_scale_shear 0 6 446 59 AnimChannel< ACMatrixSwitchType >::get_value_no_scale_shear 0 1 67 72
// These transform-component methods only have meaning for matrix types.
104
virtual void ::AnimChannel< ACMatrixSwitchType >::get_value_no_scale_shear(int frame, LMatrix4f &value);

289 9 get_scale 0 6 446 44 AnimChannel< ACMatrixSwitchType >::get_scale 0 1 68 72
// These transform-component methods only have meaning for matrix types.
90
virtual void ::AnimChannel< ACMatrixSwitchType >::get_scale(int frame, LVecBase3f &scale);

290 7 get_hpr 0 6 446 42 AnimChannel< ACMatrixSwitchType >::get_hpr 0 1 69 0
86
virtual void ::AnimChannel< ACMatrixSwitchType >::get_hpr(int frame, LVecBase3f &hpr);

291 8 get_quat 0 6 446 43 AnimChannel< ACMatrixSwitchType >::get_quat 0 1 70 0
90
virtual void ::AnimChannel< ACMatrixSwitchType >::get_quat(int frame, LQuaternionf &quat);

292 7 get_pos 0 6 446 42 AnimChannel< ACMatrixSwitchType >::get_pos 0 1 71 0
86
virtual void ::AnimChannel< ACMatrixSwitchType >::get_pos(int frame, LVecBase3f &pos);

293 9 get_shear 0 6 446 44 AnimChannel< ACMatrixSwitchType >::get_shear 0 1 72 0
90
virtual void ::AnimChannel< ACMatrixSwitchType >::get_shear(int frame, LVecBase3f &shear);

294 14 get_value_type 0 6 446 49 AnimChannel< ACMatrixSwitchType >::get_value_type 0 1 73 0
83
virtual TypeHandle ::AnimChannel< ACMatrixSwitchType >::get_value_type(void) const;

295 14 get_class_type 0 4 446 49 AnimChannel< ACMatrixSwitchType >::get_class_type 0 1 74 0
76
static TypeHandle ::AnimChannel< ACMatrixSwitchType >::get_class_type(void);

296 9 get_value 0 6 447 44 AnimChannel< ACScalarSwitchType >::get_value 0 0 0
89
virtual void ::AnimChannel< ACScalarSwitchType >::get_value(int frame, float &value) = 0;

297 24 get_value_no_scale_shear 0 6 447 59 AnimChannel< ACScalarSwitchType >::get_value_no_scale_shear 0 0 72
// These transform-component methods only have meaning for matrix types.
100
virtual void ::AnimChannel< ACScalarSwitchType >::get_value_no_scale_shear(int frame, float &value);

298 9 get_scale 0 6 447 44 AnimChannel< ACScalarSwitchType >::get_scale 0 1 75 72
// These transform-component methods only have meaning for matrix types.
90
virtual void ::AnimChannel< ACScalarSwitchType >::get_scale(int frame, LVecBase3f &scale);

299 7 get_hpr 0 6 447 42 AnimChannel< ACScalarSwitchType >::get_hpr 0 1 76 0
86
virtual void ::AnimChannel< ACScalarSwitchType >::get_hpr(int frame, LVecBase3f &hpr);

300 8 get_quat 0 6 447 43 AnimChannel< ACScalarSwitchType >::get_quat 0 1 77 0
90
virtual void ::AnimChannel< ACScalarSwitchType >::get_quat(int frame, LQuaternionf &quat);

301 7 get_pos 0 6 447 42 AnimChannel< ACScalarSwitchType >::get_pos 0 1 78 0
86
virtual void ::AnimChannel< ACScalarSwitchType >::get_pos(int frame, LVecBase3f &pos);

302 9 get_shear 0 6 447 44 AnimChannel< ACScalarSwitchType >::get_shear 0 1 79 0
90
virtual void ::AnimChannel< ACScalarSwitchType >::get_shear(int frame, LVecBase3f &shear);

303 14 get_value_type 0 6 447 49 AnimChannel< ACScalarSwitchType >::get_value_type 0 1 80 0
83
virtual TypeHandle ::AnimChannel< ACScalarSwitchType >::get_value_type(void) const;

304 14 get_class_type 0 4 447 49 AnimChannel< ACScalarSwitchType >::get_class_type 0 1 81 0
76
static TypeHandle ::AnimChannel< ACScalarSwitchType >::get_class_type(void);

305 9 set_value 0 4 448 35 AnimChannelMatrixDynamic::set_value 0 2 82 83 615
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::set_value
//       Access: Published
//  Description: Explicitly sets the matrix value.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::set_value
//       Access: Published
//  Description: Explicitly sets the matrix value, using the indicated
//               TransformState object as a convenience.
////////////////////////////////////////////////////////////////////
136
void AnimChannelMatrixDynamic::set_value(LMatrix4f const &value);
void AnimChannelMatrixDynamic::set_value(TransformState const *value);

306 14 set_value_node 0 4 448 40 AnimChannelMatrixDynamic::set_value_node 0 1 84 384
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::set_value_node
//       Access: Published
//  Description: Specifies a node whose transform will be queried each
//               frame to implicitly specify the transform of this
//               joint.
////////////////////////////////////////////////////////////////////
63
void AnimChannelMatrixDynamic::set_value_node(PandaNode *node);

307 19 get_value_transform 0 4 448 45 AnimChannelMatrixDynamic::get_value_transform 0 1 85 841
// Filename: animChannelMatrixDynamic.I
// Created by:  drose (20Oct03)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::get_value_transform
//       Access: Published
//  Description: Returns the explicit TransformState value that was
//               set via set_value(), if any.
////////////////////////////////////////////////////////////////////
87
inline TransformState const *AnimChannelMatrixDynamic::get_value_transform(void) const;

308 14 get_value_node 0 4 448 40 AnimChannelMatrixDynamic::get_value_node 0 1 86 316
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::get_value_node
//       Access: Published
//  Description: Returns the node that was set via set_value_node(),
//               if any.
////////////////////////////////////////////////////////////////////
71
inline PandaNode *AnimChannelMatrixDynamic::get_value_node(void) const;

309 14 get_class_type 0 4 448 40 AnimChannelMatrixDynamic::get_class_type 0 1 87 0
65
static TypeHandle AnimChannelMatrixDynamic::get_class_type(void);

310 25 ~AnimChannelMatrixDynamic 0 4 448 51 AnimChannelMatrixDynamic::~AnimChannelMatrixDynamic 0 0 0
58
AnimChannelMatrixDynamic::~AnimChannelMatrixDynamic(void);

311 25 AnimChannelMatrixXfmTable 0 4 449 52 AnimChannelMatrixXfmTable::AnimChannelMatrixXfmTable 0 1 88 970
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::Constructor
//       Access: Protected
//  Description: Used only for bam loader.
/////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::Copy Constructor
//       Access: Protected
//  Description: Creates a new AnimChannelMatrixXfmTable, just like
//               this one, without copying any children.  The new copy
//               is added to the indicated parent.  Intended to be
//               called by make_copy() only.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
106
AnimChannelMatrixXfmTable::AnimChannelMatrixXfmTable(AnimGroup *parent, basic_string< char > const &name);

312 11 is_valid_id 0 4 449 38 AnimChannelMatrixXfmTable::is_valid_id 0 1 89 830
// Filename: animChannelMatrixXfmTable.I
// Created by:  drose (21Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::is_valid_id
//       Access: Public, Static
//  Description: Returns true if the given letter is one of the nine
//               valid table id's.
////////////////////////////////////////////////////////////////////
73
static inline bool AnimChannelMatrixXfmTable::is_valid_id(char table_id);

313 9 set_table 0 4 449 36 AnimChannelMatrixXfmTable::set_table 0 1 90 536
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::set_table
//       Access: Public
//  Description: Assigns the indicated table.  table_id is one of 'i',
//               'j', 'k', for scale, 'a', 'b', 'c' for shear, 'h',
//               'p', 'r', for rotation, and 'x', 'y', 'z', for
//               translation.  The new table must have either zero,
//               one, or get_num_frames() frames.
////////////////////////////////////////////////////////////////////
100
void AnimChannelMatrixXfmTable::set_table(char table_id, ConstPointerToArray< float > const &table);

314 9 get_table 0 4 449 36 AnimChannelMatrixXfmTable::get_table 0 1 91 339
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::get_table
//       Access: Public
//  Description: Returns a pointer to the indicated subtable's data,
//               if it exists, or NULL if it does not.
////////////////////////////////////////////////////////////////////
94
inline ConstPointerToArray< float > AnimChannelMatrixXfmTable::get_table(char table_id) const;

315 16 clear_all_tables 0 4 449 43 AnimChannelMatrixXfmTable::clear_all_tables 0 1 92 336
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::clear_all_tables
//       Access: Published
//  Description: Removes all the tables from the channel, and resets
//               it to its initial state.
////////////////////////////////////////////////////////////////////
55
void AnimChannelMatrixXfmTable::clear_all_tables(void);

316 9 has_table 0 4 449 36 AnimChannelMatrixXfmTable::has_table 0 1 93 310
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::has_table
//       Access: Published
//  Description: Returns true if the indicated subtable has been
//               assigned.
////////////////////////////////////////////////////////////////////
70
inline bool AnimChannelMatrixXfmTable::has_table(char table_id) const;

317 11 clear_table 0 4 449 38 AnimChannelMatrixXfmTable::clear_table 0 1 94 286
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::clear_table
//       Access: Published
//  Description: Removes the indicated table from the definition.
////////////////////////////////////////////////////////////////////
66
inline void AnimChannelMatrixXfmTable::clear_table(char table_id);

318 14 get_class_type 0 4 449 41 AnimChannelMatrixXfmTable::get_class_type 0 1 95 0
66
static TypeHandle AnimChannelMatrixXfmTable::get_class_type(void);

319 9 set_value 0 4 450 35 AnimChannelScalarDynamic::set_value 0 1 96 261
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarDynamic::set_value
//       Access: Published
//  Description: Explicitly sets the value.
////////////////////////////////////////////////////////////////////
54
void AnimChannelScalarDynamic::set_value(float value);

320 14 set_value_node 0 4 450 40 AnimChannelScalarDynamic::set_value_node 0 1 97 384
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarDynamic::set_value_node
//       Access: Published
//  Description: Specifies a node whose transform will be queried each
//               frame to implicitly specify the transform of this
//               joint.
////////////////////////////////////////////////////////////////////
63
void AnimChannelScalarDynamic::set_value_node(PandaNode *node);

321 14 get_class_type 0 4 450 40 AnimChannelScalarDynamic::get_class_type 0 1 98 0
65
static TypeHandle AnimChannelScalarDynamic::get_class_type(void);

322 25 ~AnimChannelScalarDynamic 0 4 450 51 AnimChannelScalarDynamic::~AnimChannelScalarDynamic 0 0 0
58
AnimChannelScalarDynamic::~AnimChannelScalarDynamic(void);

323 9 set_table 0 4 451 33 AnimChannelScalarTable::set_table 0 1 99 253
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarTable::set_table
//       Access: Public
//  Description: Assigns the data table.
////////////////////////////////////////////////////////////////////
82
void AnimChannelScalarTable::set_table(ConstPointerToArray< float > const &table);

324 9 get_table 0 4 451 33 AnimChannelScalarTable::get_table 0 1 100 821
// Filename: animChannelScalarTable.I
// Created by:  drose (22Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarTable::get_table
//       Access: Public
//  Description: Returns a pointer to the table's data,
//               if it exists, or NULL if it does not.
////////////////////////////////////////////////////////////////////
82
inline ConstPointerToArray< float > AnimChannelScalarTable::get_table(void) const;

325 9 has_table 0 4 451 33 AnimChannelScalarTable::has_table 0 1 101 282
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarTable::has_table
//       Access: Published
//  Description: Returns true if the data table has been assigned.
////////////////////////////////////////////////////////////////////
58
inline bool AnimChannelScalarTable::has_table(void) const;

326 11 clear_table 0 4 451 35 AnimChannelScalarTable::clear_table 0 1 102 258
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarTable::clear_table
//       Access: Published
//  Description: Empties the data table.
////////////////////////////////////////////////////////////////////
54
inline void AnimChannelScalarTable::clear_table(void);

327 14 get_class_type 0 4 451 38 AnimChannelScalarTable::get_class_type 0 1 103 0
63
static TypeHandle AnimChannelScalarTable::get_class_type(void);

328 23 ~AnimChannelScalarTable 0 4 451 47 AnimChannelScalarTable::~AnimChannelScalarTable 0 0 0
54
AnimChannelScalarTable::~AnimChannelScalarTable(void);

329 21 AnimControlCollection 0 4 452 44 AnimControlCollection::AnimControlCollection 0 1 104 354
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::Constructor
//       Access: Published
//  Description: Returns the AnimControl associated with the given
//               name, or NULL if no such control has been associated.
////////////////////////////////////////////////////////////////////
51
AnimControlCollection::AnimControlCollection(void);

330 22 ~AnimControlCollection 0 4 452 45 AnimControlCollection::~AnimControlCollection 0 0 232
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::Destructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
52
AnimControlCollection::~AnimControlCollection(void);

331 10 store_anim 0 4 452 33 AnimControlCollection::store_anim 0 1 105 529
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::store_anim
//       Access: Published
//  Description: Associates the given AnimControl with this collection
//               under the given name.  The AnimControl will remain
//               associated until a new AnimControl is associated with
//               the same name later, or until unbind_anim() is called
//               with this name.
////////////////////////////////////////////////////////////////////
95
void AnimControlCollection::store_anim(AnimControl *control, basic_string< char > const &name);

332 9 find_anim 0 4 452 32 AnimControlCollection::find_anim 0 1 106 352
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::find_anim
//       Access: Published
//  Description: Returns the AnimControl associated with the given
//               name, or NULL if no such control has been associated.
////////////////////////////////////////////////////////////////////
86
AnimControl *AnimControlCollection::find_anim(basic_string< char > const &name) const;

333 11 unbind_anim 0 4 452 34 AnimControlCollection::unbind_anim 0 1 107 452
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::unbind_anim
//       Access: Published
//  Description: Removes the AnimControl associated with the given
//               name, if any.  Returns true if an AnimControl was
//               removed, false if there was no AnimControl with the
//               indicated name.
////////////////////////////////////////////////////////////////////
74
bool AnimControlCollection::unbind_anim(basic_string< char > const &name);

334 13 get_num_anims 0 4 452 36 AnimControlCollection::get_num_anims 0 1 108 320
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_num_anims
//       Access: Published
//  Description: Returns the number of AnimControls associated with
//               this collection.
////////////////////////////////////////////////////////////////////
53
int AnimControlCollection::get_num_anims(void) const;

335 8 get_anim 0 4 452 31 AnimControlCollection::get_anim 0 1 109 308
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_anim
//       Access: Published
//  Description: Returns the nth AnimControl associated with
//               this collection.
////////////////////////////////////////////////////////////////////
58
AnimControl *AnimControlCollection::get_anim(int n) const;

336 13 get_anim_name 0 4 452 36 AnimControlCollection::get_anim_name 0 1 110 325
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_anim_name
//       Access: Published
//  Description: Returns the name of the nth AnimControl associated
//               with this collection.
////////////////////////////////////////////////////////////////////
71
basic_string< char > AnimControlCollection::get_anim_name(int n) const;

337 11 clear_anims 0 4 452 34 AnimControlCollection::clear_anims 0 1 111 279
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::clear_anims
//       Access: Published
//  Description: Disassociates all anims from this collection.
////////////////////////////////////////////////////////////////////
46
void AnimControlCollection::clear_anims(void);

338 4 play 0 4 452 27 AnimControlCollection::play 0 2 112 113 1146
// The following functions are convenience functions that vector
// directly into the AnimControl's functionality by anim name.

// Filename: animControlCollection.I
// Created by:  drose (22Feb00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::play
//       Access: Public
//  Description: Starts the named animation playing.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::play
//       Access: Public
//  Description: Starts the named animation playing.
////////////////////////////////////////////////////////////////////
177
inline bool AnimControlCollection::play(basic_string< char > const &anim_name);
inline bool AnimControlCollection::play(basic_string< char > const &anim_name, int from, int to);

339 4 loop 0 4 452 27 AnimControlCollection::loop 0 2 114 115 520
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::loop
//       Access: Public
//  Description: Starts the named animation looping.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::loop
//       Access: Public
//  Description: Starts the named animation looping.
////////////////////////////////////////////////////////////////////
205
inline bool AnimControlCollection::loop(basic_string< char > const &anim_name, bool restart);
inline bool AnimControlCollection::loop(basic_string< char > const &anim_name, bool restart, int from, int to);

340 4 stop 0 4 452 27 AnimControlCollection::stop 0 1 116 250
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::stop
//       Access: Public
//  Description: Stops the named animation.
////////////////////////////////////////////////////////////////////
79
inline bool AnimControlCollection::stop(basic_string< char > const &anim_name);

341 4 pose 0 4 452 27 AnimControlCollection::pose 0 1 117 274
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::pose
//       Access: Public
//  Description: Sets to a particular frame in the named animation.
////////////////////////////////////////////////////////////////////
90
inline bool AnimControlCollection::pose(basic_string< char > const &anim_name, int frame);

342 8 play_all 0 4 452 31 AnimControlCollection::play_all 0 2 118 119 624
// These functions operate on all anims at once.

// These functions operate on all anims at once.

////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::play_all
//       Access: Published
//  Description: Starts all animations playing.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::play_all
//       Access: Published
//  Description: Starts all animations playing.
////////////////////////////////////////////////////////////////////
99
void AnimControlCollection::play_all(void);
void AnimControlCollection::play_all(int from, int to);

343 8 loop_all 0 4 452 31 AnimControlCollection::loop_all 0 2 120 121 524
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::loop_all
//       Access: Published
//  Description: Starts all animations looping.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::loop_all
//       Access: Published
//  Description: Starts all animations looping.
////////////////////////////////////////////////////////////////////
121
void AnimControlCollection::loop_all(bool restart);
void AnimControlCollection::loop_all(bool restart, int from, int to);

344 8 stop_all 0 4 452 31 AnimControlCollection::stop_all 0 1 122 378
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::stop_all
//       Access: Published
//  Description: Stops all currently playing animations.  Returns true
//               if any animations were stopped, false if none were
//               playing.
////////////////////////////////////////////////////////////////////
43
bool AnimControlCollection::stop_all(void);

345 8 pose_all 0 4 452 31 AnimControlCollection::pose_all 0 1 123 274
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::pose_all
//       Access: Published
//  Description: Sets all animations to the indicated frame.
////////////////////////////////////////////////////////////////////
48
void AnimControlCollection::pose_all(int frame);

346 9 get_frame 0 4 452 32 AnimControlCollection::get_frame 0 2 124 125 635
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_frame
//       Access: Public
//  Description: Returns the current frame in the named animation, or
//               0 if the animation is not found.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_frame
//       Access: Public
//  Description: Returns the current frame in the last-started
//               animation.
////////////////////////////////////////////////////////////////////
146
inline int AnimControlCollection::get_frame(basic_string< char > const &anim_name) const;
inline int AnimControlCollection::get_frame(void) const;

347 14 get_num_frames 0 4 452 37 AnimControlCollection::get_num_frames 0 2 126 127 663
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_num_frames
//       Access: Public
//  Description: Returns the total number of frames in the named
//               animation, or 0 if the animation is not found.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_num_frames
//       Access: Public
//  Description: Returns the total number of frames in the
//               last-started animation.
////////////////////////////////////////////////////////////////////
156
inline int AnimControlCollection::get_num_frames(basic_string< char > const &anim_name) const;
inline int AnimControlCollection::get_num_frames(void) const;

348 10 is_playing 0 4 452 33 AnimControlCollection::is_playing 0 2 128 129 651
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::is_playing
//       Access: Public
//  Description: Returns true if the named animation is currently
//               playing, false otherwise.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::is_playing
//       Access: Public
//  Description: Returns true if the last-started animation is
//               currently playing, false otherwise.
////////////////////////////////////////////////////////////////////
150
inline bool AnimControlCollection::is_playing(basic_string< char > const &anim_name) const;
inline bool AnimControlCollection::is_playing(void) const;

349 18 which_anim_playing 0 4 452 41 AnimControlCollection::which_anim_playing 0 1 130 458
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::which_anim_playing
//       Access: Published
//  Description: Returns the name of the bound AnimControl currently
//               playing, if any.  If more than one AnimControl is
//               currently playing, returns all of the names separated
//               by spaces.
////////////////////////////////////////////////////////////////////
75
basic_string< char > AnimControlCollection::which_anim_playing(void) const;

350 6 output 0 4 452 29 AnimControlCollection::output 0 1 131 229
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::output
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
55
void AnimControlCollection::output(ostream &out) const;

351 5 write 0 4 452 28 AnimControlCollection::write 0 1 132 228
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::write
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
54
void AnimControlCollection::write(ostream &out) const;

352 16 AnimPreloadTable 0 4 453 34 AnimPreloadTable::AnimPreloadTable 0 1 133 229
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
41
AnimPreloadTable::AnimPreloadTable(void);

353 13 get_num_anims 0 4 453 31 AnimPreloadTable::get_num_anims 0 1 134 284
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::get_num_anims
//       Access: Published
//  Description: Returns the number of animation records in the table.
////////////////////////////////////////////////////////////////////
48
int AnimPreloadTable::get_num_anims(void) const;

354 9 find_anim 0 4 453 27 AnimPreloadTable::find_anim 0 1 135 610
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::find_anim
//       Access: Published
//  Description: Returns the index number in the table of the
//               animation record with the indicated name, or -1 if
//               the name is not present.  By convention, the basename
//               is the filename of the egg or bam file, without the
//               directory part and without the extension.  That is,
//               it is Filename::get_basename_wo_extension().
////////////////////////////////////////////////////////////////////
76
int AnimPreloadTable::find_anim(basic_string< char > const &basename) const;

355 12 get_basename 0 4 453 30 AnimPreloadTable::get_basename 0 1 136 322
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::get_basename
//       Access: Published
//  Description: Returns the basename stored for the nth animation
//               record.  See find_anim().
////////////////////////////////////////////////////////////////////
72
inline basic_string< char > AnimPreloadTable::get_basename(int n) const;

356 19 get_base_frame_rate 0 4 453 37 AnimPreloadTable::get_base_frame_rate 0 1 137 313
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::get_base_frame_rate
//       Access: Published
//  Description: Returns the frame rate stored for the nth animation
//               record.
////////////////////////////////////////////////////////////////////
64
inline float AnimPreloadTable::get_base_frame_rate(int n) const;

357 14 get_num_frames 0 4 453 32 AnimPreloadTable::get_num_frames 0 1 138 314
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::get_num_frames
//       Access: Published
//  Description: Returns the number of frames stored for the nth
//               animation record.
////////////////////////////////////////////////////////////////////
57
inline int AnimPreloadTable::get_num_frames(int n) const;

358 11 clear_anims 0 4 453 29 AnimPreloadTable::clear_anims 0 1 139 274
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::clear_anims
//       Access: Published
//  Description: Removes all animation records from the table.
////////////////////////////////////////////////////////////////////
41
void AnimPreloadTable::clear_anims(void);

359 11 remove_anim 0 4 453 29 AnimPreloadTable::remove_anim 0 1 140 344
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::remove_anim
//       Access: Published
//  Description: Removes the nth animation records from the table.
//               This renumbers indexes for following animations.
////////////////////////////////////////////////////////////////////
42
void AnimPreloadTable::remove_anim(int n);

360 8 add_anim 0 4 453 26 AnimPreloadTable::add_anim 0 1 141 505
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::add_anim
//       Access: Published
//  Description: Adds a new animation record to the table.  If there
//               is already a record of this name, no operation is
//               performed (the original record is unchanged).  See
//               find_anim().  This will invalidate existing index
//               numbers.
////////////////////////////////////////////////////////////////////
109
void AnimPreloadTable::add_anim(basic_string< char > const &basename, float base_frame_rate, int num_frames);

361 14 add_anims_from 0 4 453 32 AnimPreloadTable::add_anims_from 0 1 142 412
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::add_anims_from
//       Access: Published
//  Description: Copies the animation records from the other table
//               into this one.  If a given record name exists in both
//               tables, the record in this one supercedes.
////////////////////////////////////////////////////////////////////
69
void AnimPreloadTable::add_anims_from(AnimPreloadTable const *other);

362 6 output 0 6 453 24 AnimPreloadTable::output 0 1 143 224
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::output
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
58
virtual void AnimPreloadTable::output(ostream &out) const;

363 5 write 0 6 453 23 AnimPreloadTable::write 0 1 144 223
////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::write
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
75
virtual void AnimPreloadTable::write(ostream &out, int indent_level) const;

364 14 get_class_type 0 4 453 32 AnimPreloadTable::get_class_type 0 1 145 0
57
static TypeHandle AnimPreloadTable::get_class_type(void);

365 9 auto_bind 0 1 0 9 auto_bind 0 2 214 215 962
////////////////////////////////////////////////////////////////////
//     Function: auto_bind
//  Description: Walks the scene graph or subgraph beginning at the
//               indicated node, and attempts to bind any AnimBundles
//               found to their matching PartBundles, when possible.
//
//               The list of all resulting AnimControls created is
//               filled into controls.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: auto_bind
//  Description: Walks the scene graph or subgraph beginning at the
//               indicated node, and attempts to bind any AnimBundles
//               found to their matching PartBundles, when possible.
//
//               The list of all resulting AnimControls created is
//               filled into controls.
////////////////////////////////////////////////////////////////////
103
void auto_bind(PandaNode *root_node, AnimControlCollection &controls, int hierarchy_match_flags = (0));

366 10 PartSubset 0 4 455 22 PartSubset::PartSubset 0 2 146 147 453
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PartSubset::Copy Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
77
PartSubset::PartSubset(void);
PartSubset::PartSubset(PartSubset const &copy);

367 10 operator = 0 4 455 22 PartSubset::operator = 0 1 148 236
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::Copy Assignment Operator
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
52
void PartSubset::operator =(PartSubset const &copy);

368 17 add_include_joint 0 4 455 29 PartSubset::add_include_joint 0 1 149 650
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::add_include_joint
//       Access: Published
//  Description: Adds the named joint to the list of joints that will
//               be explicitly included in the subset.  Any joint at
//               or below a named node will be included in the subset
//               (unless a lower node is also listed in the exclude
//               list).
//
//               Since the name is a GlobPattern, it may of course
//               include filename globbing characters like * and ?.
////////////////////////////////////////////////////////////////////
60
void PartSubset::add_include_joint(GlobPattern const &name);

369 17 add_exclude_joint 0 4 455 29 PartSubset::add_exclude_joint 0 1 150 657
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::add_exclude_joint
//       Access: Published
//  Description: Adds the named joint to the list of joints that will
//               be explicitly exlcluded from the subset.  Any joint at
//               or below a named node will not be included in the
//               subset (unless a lower node is also listed in the
//               include list).
//
//               Since the name is a GlobPattern, it may of course
//               include filename globbing characters like * and ?.
////////////////////////////////////////////////////////////////////
60
void PartSubset::add_exclude_joint(GlobPattern const &name);

370 6 append 0 4 455 18 PartSubset::append 0 1 151 319
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::append
//       Access: Published
//  Description: Appends the include and exclude list from the other
//               object onto this object's lists.
////////////////////////////////////////////////////////////////////
49
void PartSubset::append(PartSubset const &other);

371 6 output 0 4 455 18 PartSubset::output 0 1 152 218
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::output
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
44
void PartSubset::output(ostream &out) const;

372 16 is_include_empty 0 4 455 28 PartSubset::is_include_empty 0 1 153 395
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::is_include_empty
//       Access: Published
//  Description: Returns true if the include list is completely empty,
//               false otherwise.  If it is empty, it is the same
//               thing as including all joints.
////////////////////////////////////////////////////////////////////
46
bool PartSubset::is_include_empty(void) const;

373 15 matches_include 0 4 455 27 PartSubset::matches_include 0 1 154 331
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::matches_include
//       Access: Published
//  Description: Returns true if the indicated name matches a name on
//               the include list, false otherwise.
////////////////////////////////////////////////////////////////////
79
bool PartSubset::matches_include(basic_string< char > const &joint_name) const;

374 15 matches_exclude 0 4 455 27 PartSubset::matches_exclude 0 1 155 331
////////////////////////////////////////////////////////////////////
//     Function: PartSubset::matches_exclude
//       Access: Published
//  Description: Returns true if the indicated name matches a name on
//               the exclude list, false otherwise.
////////////////////////////////////////////////////////////////////
79
bool PartSubset::matches_exclude(basic_string< char > const &joint_name) const;

375 11 ~PartSubset 0 4 455 23 PartSubset::~PartSubset 0 0 0
30
PartSubset::~PartSubset(void);

376 15 BindAnimRequest 0 4 456 32 BindAnimRequest::BindAnimRequest 0 1 156 225
////////////////////////////////////////////////////////////////////
//     Function: BindAnimRequest::Constructor
//       Access: Public
//  Description: 
////////////////////////////////////////////////////////////////////
214
BindAnimRequest::BindAnimRequest(basic_string< char > const &name, Filename const &filename, LoaderOptions const &options, Loader *loader, AnimControl *control, int hierarchy_match_flags, PartSubset const &subset);

377 14 get_class_type 0 4 456 31 BindAnimRequest::get_class_type 0 1 157 0
56
static TypeHandle BindAnimRequest::get_class_type(void);

378 16 ~BindAnimRequest 0 4 456 33 BindAnimRequest::~BindAnimRequest 0 0 0
40
BindAnimRequest::~BindAnimRequest(void);

379 10 PartBundle 0 4 458 22 PartBundle::PartBundle 0 2 158 159 694
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::Copy Constructor
//       Access: Protected
//  Description: Normally, you'd use make_copy() or copy_subgraph() to
//               make a copy of this.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PartBundle::Constructor
//       Access: Public
//  Description: Normally, a PartBundle constructor should not be
//               called directly--it will get created when a
//               PartBundleNode is created.
////////////////////////////////////////////////////////////////////
64
PartBundle::PartBundle(basic_string< char > const &name = (""));

380 16 get_anim_preload 0 4 458 28 PartBundle::get_anim_preload 0 1 160 929
// Filename: partBundle.I
// Created by:  drose (22Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_anim_preload
//       Access: Published
//  Description: Returns the AnimPreloadTable associated with
//               the PartBundle.  This table, if present, can be used
//               for the benefit of load_bind_anim() to allow
//               asynchronous binding.
////////////////////////////////////////////////////////////////////
83
inline ConstPointerTo< AnimPreloadTable > PartBundle::get_anim_preload(void) const;

381 19 modify_anim_preload 0 4 458 31 PartBundle::modify_anim_preload 0 1 161 340
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::modify_anim_preload
//       Access: Published
//  Description: Returns a modifiable pointer to the AnimPreloadTable
//               associated with the PartBundle, if any.
////////////////////////////////////////////////////////////////////
75
inline PointerTo< AnimPreloadTable > PartBundle::modify_anim_preload(void);

382 16 set_anim_preload 0 4 458 28 PartBundle::set_anim_preload 0 1 162 306
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_anim_preload
//       Access: Published
//  Description: Replaces the AnimPreloadTable associated with
//               the PartBundle.
////////////////////////////////////////////////////////////////////
66
inline void PartBundle::set_anim_preload(AnimPreloadTable *table);

383 18 clear_anim_preload 0 4 458 30 PartBundle::clear_anim_preload 0 1 163 307
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::clear_anim_preload
//       Access: Published
//  Description: Removes any AnimPreloadTable associated with
//               the PartBundle.
////////////////////////////////////////////////////////////////////
49
inline void PartBundle::clear_anim_preload(void);

384 19 merge_anim_preloads 0 4 458 31 PartBundle::merge_anim_preloads 0 1 164 322
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::merge_anim_preloads
//       Access: Published
//  Description: Copies the contents of the other PartBundle's preload
//               table into this one.
////////////////////////////////////////////////////////////////////
62
void PartBundle::merge_anim_preloads(PartBundle const *other);

385 14 set_blend_type 0 4 458 26 PartBundle::set_blend_type 0 1 165 558
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_blend_type
//       Access: Published
//  Description: Defines the algorithm that is used when blending
//               multiple frames or multiple animations together, when
//               either anim_blend_flag or frame_blend_flag is set
//               to true.
//
//               See partBundle.h for a description of the meaning of
//               each of the BlendType values.
////////////////////////////////////////////////////////////////////
65
inline void PartBundle::set_blend_type(PartBundle::BlendType bt);

386 14 get_blend_type 0 4 458 26 PartBundle::get_blend_type 0 1 166 438
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_blend_type
//       Access: Published
//  Description: Returns the algorithm that is used when blending
//               multiple frames or multiple animations together, when
//               either anim_blend_flag or frame_blend_flag is set
//               to true.
////////////////////////////////////////////////////////////////////
68
inline PartBundle::BlendType PartBundle::get_blend_type(void) const;

387 19 set_anim_blend_flag 0 4 458 31 PartBundle::set_anim_blend_flag 0 1 167 947
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_anim_blend_flag
//       Access: Published
//  Description: Defines the way the character responds to multiple
//               calls to set_control_effect()).  By default, this
//               flag is set false, which disallows multiple
//               animations.  When this flag is false, it is not
//               necessary to explicitly set the control_effect when
//               starting an animation; starting the animation will
//               implicitly remove the control_effect from the
//               previous animation and set it on the current one.
//
//               However, if this flag is set true, the control_effect
//               must be explicitly set via set_control_effect()
//               whenever an animation is to affect the character.
////////////////////////////////////////////////////////////////////
59
void PartBundle::set_anim_blend_flag(bool anim_blend_flag);

388 19 get_anim_blend_flag 0 4 458 31 PartBundle::get_anim_blend_flag 0 1 168 387
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_anim_blend_flag
//       Access: Published
//  Description: Returns whether the character allows multiple
//               different animations to be bound simultaneously.  See
//               set_anim_blend_flag().
////////////////////////////////////////////////////////////////////
56
inline bool PartBundle::get_anim_blend_flag(void) const;

389 20 set_frame_blend_flag 0 4 458 32 PartBundle::set_frame_blend_flag 0 1 169 1201
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_frame_blend_flag
//       Access: Published
//  Description: Specifies whether the character interpolates (blends)
//               between two sequential frames of an active animation,
//               showing a smooth intra-frame motion, or whether it
//               holds each frame until the next frame is ready,
//               showing precisely the specified animation.
//
//               When this value is false, the character holds each
//               frame until the next is ready.  When this is true,
//               the character will interpolate between two
//               consecutive frames of animation for each frame the
//               animation is onscreen, according to the amount of
//               time elapsed between the frames.
//
//               The default value of this flag is determined by the
//               interpolate-frames Config.prc variable.
//
//               Use set_blend_type() to change the algorithm that the
//               character uses to interpolate matrix positions.
////////////////////////////////////////////////////////////////////
68
inline void PartBundle::set_frame_blend_flag(bool frame_blend_flag);

390 20 get_frame_blend_flag 0 4 458 32 PartBundle::get_frame_blend_flag 0 1 170 471
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_frame_blend_flag
//       Access: Published
//  Description: Returns whether the character interpolates (blends)
//               between two sequential animation frames, or whether
//               it holds the current frame until the next one is
//               ready.  See set_frame_blend_flag().
////////////////////////////////////////////////////////////////////
57
inline bool PartBundle::get_frame_blend_flag(void) const;

391 14 set_root_xform 0 4 458 26 PartBundle::set_root_xform 0 1 171 340
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_root_xform
//       Access: Published
//  Description: Specifies the transform matrix which is implicitly
//               applied at the root of the animated hierarchy.
////////////////////////////////////////////////////////////////////
68
inline void PartBundle::set_root_xform(LMatrix4f const &root_xform);

392 5 xform 0 4 458 17 PartBundle::xform 0 1 172 304
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::xform
//       Access: Published
//  Description: Applies the indicated transform to the root of the
//               animated hierarchy.
////////////////////////////////////////////////////////////////////
52
inline void PartBundle::xform(LMatrix4f const &mat);

393 14 get_root_xform 0 4 458 26 PartBundle::get_root_xform 0 1 173 338
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_root_xform
//       Access: Published
//  Description: Returns the transform matrix which is implicitly
//               applied at the root of the animated hierarchy.
////////////////////////////////////////////////////////////////////
63
inline LMatrix4f const &PartBundle::get_root_xform(void) const;

394 15 apply_transform 0 4 458 27 PartBundle::apply_transform 0 1 174 487
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::apply_transform
//       Access: Published
//  Description: Returns a PartBundle that is a duplicate of this one,
//               but with the indicated transform applied.  If this is
//               called multiple times with the same TransformState
//               pointer, it returns the same PartBundle each time.
////////////////////////////////////////////////////////////////////
85
PointerTo< PartBundle > PartBundle::apply_transform(TransformState const *transform);

395 13 get_num_nodes 0 4 458 25 PartBundle::get_num_nodes 0 1 175 322
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_num_nodes
//       Access: Published
//  Description: Returns the number of PartBundleNodes that contain a
//               pointer to this PartBundle.
////////////////////////////////////////////////////////////////////
49
inline int PartBundle::get_num_nodes(void) const;

396 8 get_node 0 4 458 20 PartBundle::get_node 0 1 176 300
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_node
//       Access: Published
//  Description: Returns the nth PartBundleNode associated with
//               this PartBundle.
////////////////////////////////////////////////////////////////////
57
inline PartBundleNode *PartBundle::get_node(int n) const;

397 21 clear_control_effects 0 4 458 33 PartBundle::clear_control_effects 0 1 177 872
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::clear_control_effects
//       Access: Published
//  Description: Sets the control effect of all AnimControls to zero
//               (but does not "stop" the AnimControls).  The
//               character will no longer be affected by any
//               animation, and will return to its default
//               pose (unless restore-initial-pose is false).
//
//               The AnimControls which are no longer associated will
//               not be using any CPU cycles, but they may still be in
//               the "playing" state; if they are later reassociated
//               with the PartBundle they will resume at their current
//               frame as if they'd been running all along.
////////////////////////////////////////////////////////////////////
45
void PartBundle::clear_control_effects(void);

398 18 set_control_effect 0 4 458 30 PartBundle::set_control_effect 0 1 178 897
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_control_effect
//       Access: Published
//  Description: Sets the amount by which the character is affected by
//               the indicated AnimControl (and its associated
//               animation).  Normally, this will only be zero or one.
//               Zero indicates the animation does not affect the
//               character, and one means it does.
//
//               If the _anim_blend_flag is not false (see
//               set_anim_blend_flag()), it is possible to have
//               multiple AnimControls in effect simultaneously.  In
//               this case, the effect is a weight that indicates the
//               relative importance of each AnimControl to the final
//               animation.
////////////////////////////////////////////////////////////////////
79
inline void PartBundle::set_control_effect(AnimControl *control, float effect);

399 18 get_control_effect 0 4 458 30 PartBundle::get_control_effect 0 1 179 403
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_control_effect
//       Access: Published
//  Description: Returns the amount by which the character is affected
//               by the indicated AnimControl and its associated
//               animation.  See set_control_effect().
////////////////////////////////////////////////////////////////////
72
inline float PartBundle::get_control_effect(AnimControl *control) const;

400 6 output 0 6 458 18 PartBundle::output 0 1 180 271
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::output
//       Access: Published, Virtual
//  Description: Writes a one-line description of the bundle.
////////////////////////////////////////////////////////////////////
52
virtual void PartBundle::output(ostream &out) const;

401 9 bind_anim 0 4 458 21 PartBundle::bind_anim 0 3 181 182 183 1221
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::bind_anim
//       Access: Published
//  Description: Binds the animation to the bundle, if possible, and
//               returns a new AnimControl that can be used to start
//               and stop the animation.  If the anim hierarchy does
//               not match the part hierarchy, returns NULL.
//
//               If hierarchy_match_flags is 0, only an exact match is
//               accepted; otherwise, it may contain a union of
//               PartGroup::HierarchyMatchFlags values indicating
//               conditions that will be tolerated (but warnings will
//               still be issued).
//
//               If subset is specified, it restricts the binding only
//               to the named subtree of joints.
//
//               The AnimControl is not stored within the PartBundle;
//               it is the user's responsibility to maintain the
//               pointer.  The animation will automatically unbind
//               itself when the AnimControl destructs (i.e. its
//               reference count goes to zero).
////////////////////////////////////////////////////////////////////
133
PointerTo< AnimControl > PartBundle::bind_anim(AnimBundle *anim, int hierarchy_match_flags = (0), PartSubset const &subset = ((())));

402 14 load_bind_anim 0 4 458 26 PartBundle::load_bind_anim 0 1 184 1614
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::load_bind_anim
//       Access: Published
//  Description: Binds an animation to the bundle.  The animation is
//               loaded from the disk via the indicated Loader object.
//               In other respects, this behaves similarly to
//               bind_anim(), with the addition of asynchronous
//               support.
//
//               If allow_aysnc is true, the load will be asynchronous
//               if possible.  This requires that the animation
//               basename can be found in the PartBundle's preload
//               table (see get_anim_preload()).
//
//               In an asynchronous load, the animation file will be
//               loaded and bound in a sub-thread.  This means that
//               the animation will not necessarily be available at
//               the time this method returns.  You may still use the
//               returned AnimControl immediately, though, but no
//               visible effect will occur until the animation
//               eventually becomes available.
//
//               You can test AnimControl::is_pending() to see if the
//               animation has been loaded yet, or wait for it to
//               finish with AnimControl::wait_pending() or even
//               PartBundle::wait_pending().  You can also set an
//               event to be triggered when the animation finishes
//               loading with AnimControl::set_pending_done_event().
////////////////////////////////////////////////////////////////////
165
PointerTo< AnimControl > PartBundle::load_bind_anim(Loader *loader, Filename const &filename, int hierarchy_match_flags, PartSubset const &subset, bool allow_async);

403 12 wait_pending 0 4 458 24 PartBundle::wait_pending 0 1 185 397
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::wait_pending
//       Access: Published
//  Description: Blocks the current thread until all currently-pending
//               AnimControls, with a nonzero control effect, have
//               been loaded and are properly bound.
////////////////////////////////////////////////////////////////////
36
void PartBundle::wait_pending(void);

404 12 freeze_joint 0 4 458 24 PartBundle::freeze_joint 0 3 186 187 188 2083
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::freeze_joint
//       Access: Published
//  Description: Specifies that the joint with the indicated name
//               should be frozen with the specified transform.  It
//               will henceforth always hold this fixed transform,
//               regardless of any animations that may subsequently be
//               bound to the joint.
//
//               Returns true if the joint is successfully frozen, or
//               false if the named child is not a joint (or slider)
//               or does not exist.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PartBundle::freeze_joint
//       Access: Published
//  Description: Specifies that the joint with the indicated name
//               should be frozen with the specified transform.  It
//               will henceforth always hold this fixed transform,
//               regardless of any animations that may subsequently be
//               bound to the joint.
//
//               Returns true if the joint is successfully frozen, or
//               false if the named child is not a joint (or slider)
//               or does not exist.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PartBundle::freeze_joint
//       Access: Published
//  Description: Specifies that the joint with the indicated name
//               should be frozen with the specified transform.  It
//               will henceforth always hold this fixed transform,
//               regardless of any animations that may subsequently be
//               bound to the joint.
//
//               Returns true if the joint is successfully frozen, or
//               false if the named child is not a joint (or slider)
//               or does not exist.
////////////////////////////////////////////////////////////////////
329
bool PartBundle::freeze_joint(basic_string< char > const &joint_name, TransformState const *transform);
bool PartBundle::freeze_joint(basic_string< char > const &joint_name, LVecBase3f const &pos, LVecBase3f const &hpr, LVecBase3f const &scale);
bool PartBundle::freeze_joint(basic_string< char > const &joint_name, float value);

405 13 control_joint 0 4 458 25 PartBundle::control_joint 0 1 189 714
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::control_joint
//       Access: Published
//  Description: Specifies that the joint with the indicated name
//               should be animated with the transform on the
//               indicated node.  It will henceforth always follow the
//               node's transform, regardless of any animations that
//               may subsequently be bound to the joint.
//
//               Returns true if the joint is successfully controlled,
//               or false if the named child is not a joint (or
//               slider) or does not exist.
////////////////////////////////////////////////////////////////////
88
bool PartBundle::control_joint(basic_string< char > const &joint_name, PandaNode *node);

406 13 release_joint 0 4 458 25 PartBundle::release_joint 0 1 190 646
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::release_joint
//       Access: Published
//  Description: Releases the named joint from the effects of a
//               previous call to freeze_joint() or control_joint().
//               It will henceforth once again follow whatever
//               transforms are dictated by the animation.
//
//               Returns true if the joint is released, or false if
//               the named child was not previously controlled or
//               frozen, or it does not exist.
////////////////////////////////////////////////////////////////////
71
bool PartBundle::release_joint(basic_string< char > const &joint_name);

407 6 update 0 4 458 18 PartBundle::update 0 1 191 482
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::update
//       Access: Published
//  Description: Updates all the parts in the bundle to reflect the
//               data for the current frame (as set in each of the
//               AnimControls).
//
//               Returns true if any part has changed as a result of
//               this, or false otherwise.
////////////////////////////////////////////////////////////////////
30
bool PartBundle::update(void);

408 12 force_update 0 4 458 24 PartBundle::force_update 0 1 192 375
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::force_update
//       Access: Published
//  Description: Updates all the parts in the bundle to reflect the
//               data for the current frame, whether we believe it
//               needs it or not.
////////////////////////////////////////////////////////////////////
36
bool PartBundle::force_update(void);

409 14 get_class_type 0 4 458 26 PartBundle::get_class_type 0 1 193 0
51
static TypeHandle PartBundle::get_class_type(void);

410 11 ~PartBundle 0 4 458 23 PartBundle::~PartBundle 0 0 0
30
PartBundle::~PartBundle(void);

411 13 get_max_bound 0 4 460 29 MovingPartBase::get_max_bound 0 1 194 604
////////////////////////////////////////////////////////////////////
//     Function: MovingPartBase::get_max_bound
//       Access: Published
//  Description: Returns the number of channels that might be bound to
//               this PartGroup.  This might not be the actual number
//               of channels, since there might be holes in the list;
//               it is one more than the index number of the highest
//               bound channel.  Thus, it is called get_max_bound()
//               instead of get_num_bound().
////////////////////////////////////////////////////////////////////
53
inline int MovingPartBase::get_max_bound(void) const;

412 9 get_bound 0 4 460 25 MovingPartBase::get_bound 0 1 195 690
////////////////////////////////////////////////////////////////////
//     Function: MovingPartBase::get_bound
//       Access: Published
//  Description: Returns the nth bound channel on this PartGroup.  n
//               can be determined by iterating from 0 to one less
//               than get_max_bound(); or n might be
//               AnimControl::get_channel_index().
//
//               This will return NULL if there is no channel bound on
//               the indicated index.  It is an error to call this if
//               n is less than zero or greater than or equal to
//               get_max_bound().
////////////////////////////////////////////////////////////////////
63
inline AnimChannelBase *MovingPartBase::get_bound(int n) const;

413 12 output_value 0 6 460 28 MovingPartBase::output_value 0 1 196 0
66
virtual void MovingPartBase::output_value(ostream &out) const = 0;

414 14 get_class_type 0 4 460 30 MovingPartBase::get_class_type 0 1 197 0
55
static TypeHandle MovingPartBase::get_class_type(void);

415 15 ~MovingPartBase 0 4 460 31 MovingPartBase::~MovingPartBase 0 0 0
38
MovingPartBase::~MovingPartBase(void);

416 14 get_class_type 0 4 462 48 MovingPart< ACMatrixSwitchType >::get_class_type 0 1 199 0
75
static TypeHandle ::MovingPart< ACMatrixSwitchType >::get_class_type(void);

417 9 get_value 0 4 462 43 MovingPart< ACMatrixSwitchType >::get_value 0 1 200 0
75
inline LMatrix4f ::MovingPart< ACMatrixSwitchType >::get_value(void) const;

418 17 get_default_value 0 4 462 51 MovingPart< ACMatrixSwitchType >::get_default_value 0 1 201 0
83
inline LMatrix4f ::MovingPart< ACMatrixSwitchType >::get_default_value(void) const;

419 11 ~MovingPart 0 4 462 45 MovingPart< ACMatrixSwitchType >::~MovingPart 0 0 0
54
::MovingPart< ACMatrixSwitchType >::~MovingPart(void);

420 14 get_class_type 0 4 461 32 MovingPartMatrix::get_class_type 0 1 198 0
57
static TypeHandle MovingPartMatrix::get_class_type(void);

421 14 get_class_type 0 4 464 48 MovingPart< ACScalarSwitchType >::get_class_type 0 1 203 0
75
static TypeHandle ::MovingPart< ACScalarSwitchType >::get_class_type(void);

422 9 get_value 0 4 464 43 MovingPart< ACScalarSwitchType >::get_value 0 1 204 0
71
inline float ::MovingPart< ACScalarSwitchType >::get_value(void) const;

423 17 get_default_value 0 4 464 51 MovingPart< ACScalarSwitchType >::get_default_value 0 1 205 0
79
inline float ::MovingPart< ACScalarSwitchType >::get_default_value(void) const;

424 11 ~MovingPart 0 4 464 45 MovingPart< ACScalarSwitchType >::~MovingPart 0 0 0
54
::MovingPart< ACScalarSwitchType >::~MovingPart(void);

425 14 get_class_type 0 4 463 32 MovingPartScalar::get_class_type 0 1 202 0
57
static TypeHandle MovingPartScalar::get_class_type(void);

426 16 PartBundleHandle 0 4 465 34 PartBundleHandle::PartBundleHandle 0 1 206 721
// Filename: partBundleHandle.I
// Created by:  drose (01Oct07)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PartBundleHandle::Constructor
//       Access: Published
//  Description: 
////////////////////////////////////////////////////////////////////
62
inline PartBundleHandle::PartBundleHandle(PartBundle *bundle);

427 10 get_bundle 0 4 465 28 PartBundleHandle::get_bundle 0 1 207 302
////////////////////////////////////////////////////////////////////
//     Function: PartBundleHandle::get_bundle
//       Access: Published
//  Description: Returns the actual PartBundle embedded within the
//               handle.
////////////////////////////////////////////////////////////////////
54
inline PartBundle *PartBundleHandle::get_bundle(void);

428 10 set_bundle 0 4 465 28 PartBundleHandle::set_bundle 0 1 208 302
////////////////////////////////////////////////////////////////////
//     Function: PartBundleHandle::set_bundle
//       Access: Published
//  Description: Changes the actual PartBundle embedded within the
//               handle.
////////////////////////////////////////////////////////////////////
61
inline void PartBundleHandle::set_bundle(PartBundle *bundle);

429 14 PartBundleNode 0 4 467 30 PartBundleNode::PartBundleNode 0 1 209 1631
// Filename: partBundleNode.I
// Created by:  drose (06Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::Constructor
//       Access: Public
//  Description: The PartBundle and its node should be constructed
//               together.  Generally, the derived classes of
//               PartBundleNode will automatically create a PartBundle
//               of the appropriate type, and pass it up to this
//               constructor.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::Default Constructor
//       Access: Protected
//  Description: For internal use only.
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::Copy Constructor
//       Access: Protected
//  Description: Use make_copy() or copy_subgraph() to copy one of
//               these.  
//
//               This constructor does not copy the bundle pointers.
////////////////////////////////////////////////////////////////////
92
inline PartBundleNode::PartBundleNode(basic_string< char > const &name, PartBundle *bundle);

430 15 get_num_bundles 0 4 467 31 PartBundleNode::get_num_bundles 0 1 210 227
////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::get_num_bundles
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
55
inline int PartBundleNode::get_num_bundles(void) const;

431 10 get_bundle 0 4 467 26 PartBundleNode::get_bundle 0 1 211 222
////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::get_bundle
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
59
inline PartBundle *PartBundleNode::get_bundle(int n) const;

432 17 get_bundle_handle 0 4 467 33 PartBundleNode::get_bundle_handle 0 1 212 469
////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::get_bundle_handle
//       Access: Public
//  Description: Returns the PartBundleHandle that wraps around the
//               actual nth PartBundle.  While the PartBundle pointer
//               might later change due to a future flatten operation,
//               the PartBundleHandle will not.
////////////////////////////////////////////////////////////////////
72
inline PartBundleHandle *PartBundleNode::get_bundle_handle(int n) const;

433 14 get_class_type 0 4 467 30 PartBundleNode::get_class_type 0 1 213 0
55
static TypeHandle PartBundleNode::get_class_type(void);

215
1 14 Dtool_8NZBvzKt 0 7 8 468 221 14 Dtool_8NZBvzKt 390 ////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::Constructor
//       Access: Published
//  Description: Creates the AnimGroup, and adds it to the indicated
//               parent.  The only way to delete it subsequently is to
//               delete the entire hierarchy.
//////////////////////////////////////////////////////////////////// 2 6 parent 1 468  4 name 1 469  
2 14 Dtool_8NZBW3b6 0 6 10 472 0 14 Dtool_8NZBW3b6 274 ////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::get_num_children
//       Access: Published
//  Description: Returns the number of child nodes of the group.
//////////////////////////////////////////////////////////////////// 1 4 this 3 470  
3 14 Dtool_8NZB6J5P 0 7 11 468 221 14 Dtool_8NZB6J5P 255 ////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::get_child
//       Access: Published
//  Description: Returns the nth child of the group.
//////////////////////////////////////////////////////////////////// 2 4 this 3 470  1 n 1 472  
4 14 Dtool_8NZBDdOk 0 7 12 468 221 14 Dtool_8NZBDdOk 524 ////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::get_child_named
//       Access: Published
//  Description: Returns the first child found with the indicated
//               name, or NULL if no such child exists.  This method
//               searches only the children of this particular
//               AnimGroup; it does not recursively search the entire
//               graph.  See also find_child().
//////////////////////////////////////////////////////////////////// 2 4 this 3 470  4 name 1 469  
5 14 Dtool_8NZBsjDj 0 7 13 468 221 14 Dtool_8NZBsjDj 465 ////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::find_child
//       Access: Published
//  Description: Returns the first descendant found with the indicated
//               name, or NULL if no such descendant exists.  This
//               method searches the entire graph beginning at this
//               AnimGroup; see also get_child_named().
//////////////////////////////////////////////////////////////////// 2 4 this 3 470  4 name 1 469  
6 14 Dtool_8NZBCmR1 0 4 14 473 0 14 Dtool_8NZBCmR1 537 ////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::sort_descendants
//       Access: Published
//  Description: Sorts the children nodes at each level of the
//               hierarchy into alphabetical order.  This should be
//               done after creating the hierarchy, to guarantee that
//               the correct names will match up together when the
//               AnimBundle is later bound to a PlayerRoot.
//////////////////////////////////////////////////////////////////// 1 4 this 3 468  
7 14 Dtool_8NZB7_Rm 0 4 15 473 0 14 Dtool_8NZB7_Rm 269 ////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::output
//       Access: Published, Virtual
//  Description: Writes a one-line description of the group.
//////////////////////////////////////////////////////////////////// 2 4 this 3 470  3 out 1 474  
8 14 Dtool_8NZB5QWd 0 4 16 473 0 14 Dtool_8NZB5QWd 309 ////////////////////////////////////////////////////////////////////
//     Function: AnimGroup::write
//       Access: Published, Virtual
//  Description: Writes a brief description of the group and all of
//               its descendants.
//////////////////////////////////////////////////////////////////// 3 4 this 3 470  3 out 1 474  12 indent_level 1 472  
9 14 Dtool_8NZBXRDS 0 7 17 477 0 14 Dtool_8NZBXRDS 0 0 
10 14 Dtool_8NZBnzi7 0 7 3 478 0 14 Dtool_8NZBnzi7 0 1 4 this 3 468  
11 14 Dtool_8NZBrs9M 0 7 4 468 221 14 Dtool_8NZBrs9M 0 1 4 this 3 478  
12 14 Dtool_8NZBGlFu 0 6 6 479 0 14 Dtool_8NZBGlFu 0 1 4 this 3 468  
13 14 Dtool_8NZB4p9k 0 7 7 468 221 14 Dtool_8NZB4p9k 0 1 4 this 3 479  
14 14 Dtool_8NZB3LBr 0 7 19 481 235 14 Dtool_8NZB3LBr 705 // Filename: animBundle.I
// Created by:  drose (21Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 3 4 name 1 469  3 fps 1 480  10 num_frames 1 472  
15 14 Dtool_8NZB_BG9 0 7 20 481 235 14 Dtool_8NZB_BG9 511 ////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::copy_bundle
//       Access: Published
//  Description: Returns a full copy of the bundle and its entire tree
//               of nested AnimGroups.  However, the actual data
//               stored in the leaves--that is, animation tables, such
//               as those stored in an AnimChannelMatrixXfmTable--will
//               be shared.
//////////////////////////////////////////////////////////////////// 1 4 this 3 482  
16 14 Dtool_8NZB6Ty_ 0 6 21 484 0 14 Dtool_8NZB6Ty_ 600 ////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::get_base_frame_rate
//       Access: Public
//  Description: Returns the ideal number of frames per second of the
//               animation, when it is running at normal speed.  This
//               may not be the same as the actual playing frame rate,
//               as it might have been adjusted through
//               set_play_rate() on the AnimControl object.  See
//               AnimControl::get_effective_frame_rate().
//////////////////////////////////////////////////////////////////// 1 4 this 3 482  
17 14 Dtool_8NZBRxeQ 0 6 22 472 0 14 Dtool_8NZBRxeQ 335 ////////////////////////////////////////////////////////////////////
//     Function: AnimBundle::get_num_frames
//       Access: Public
//  Description: Returns the number of frames of animation, or 0 if
//               the animation has no fixed number of frames.
//////////////////////////////////////////////////////////////////// 1 4 this 3 482  
18 14 Dtool_8NZBzlnG 0 7 23 477 0 14 Dtool_8NZBzlnG 0 0 
19 14 Dtool_8NZB0P9l 0 7 27 485 240 14 Dtool_8NZB0P9l 991 // Filename: animBundleNode.I
// Created by:  drose (06Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimBundleNode::Constructor
//       Access: Public
//  Description: The AnimBundle and its node should be constructed
//               together.  Generally, the derived classes of
//               AnimBundleNode will automatically create a AnimBundle
//               of the appropriate type, and pass it up to this
//               constructor.
//////////////////////////////////////////////////////////////////// 2 4 name 1 469  6 bundle 1 481  
20 14 Dtool_8NZBwwyB 0 7 28 481 235 14 Dtool_8NZBwwyB 222 ////////////////////////////////////////////////////////////////////
//     Function: AnimBundleNode::get_bundle
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 this 3 486  
21 14 Dtool_8NZBbUiF 0 7 29 481 235 14 Dtool_8NZBbUiF 480 ////////////////////////////////////////////////////////////////////
//     Function: AnimBundleNode::find_anim_bundle
//       Access: Published, Static
//  Description: Recursively walks the scene graph beginning at the
//               indicated node (which need not be an AnimBundleNode),
//               and returns the first AnimBundle found.  Returns NULL
//               if no AnimBundle can be found.
//////////////////////////////////////////////////////////////////// 1 4 root 1 488  
22 14 Dtool_8NZBYNUG 0 7 30 477 0 14 Dtool_8NZBYNUG 0 0 
23 14 Dtool_8NZBpKA7 0 7 38 489 246 14 Dtool_8NZBpKA7 390 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::Constructor
//       Access: Published
//  Description: Creates the PartGroup, and adds it to the indicated
//               parent.  The only way to delete it subsequently is to
//               delete the entire hierarchy.
//////////////////////////////////////////////////////////////////// 2 6 parent 1 489  4 name 1 469  
24 14 Dtool_8NZB7E2m 0 6 40 492 0 14 Dtool_8NZB7E2m 414 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::is_character_joint
//       Access: Published, Virtual
//  Description: Returns true if this part is a CharacterJoint, false
//               otherwise.  This is a tiny optimization over
//               is_of_type(CharacterType::get_class_type()).
//////////////////////////////////////////////////////////////////// 1 4 this 3 490  
25 14 Dtool_8NZBd3Bk 0 7 41 489 246 14 Dtool_8NZBd3Bk 341 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::make_copy
//       Access: Published, Virtual
//  Description: Allocates and returns a new copy of the node.
//               Children are not copied, but see copy_subgraph().
//////////////////////////////////////////////////////////////////// 1 4 this 3 490  
26 14 Dtool_8NZBqhPC 0 7 42 489 246 14 Dtool_8NZBqhPC 314 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::copy_subgraph
//       Access: Published
//  Description: Allocates and returns a new copy of this node and of
//               all of its children.
//////////////////////////////////////////////////////////////////// 1 4 this 3 490  
27 14 Dtool_8NZBwfp4 0 6 43 472 0 14 Dtool_8NZBwfp4 274 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::get_num_children
//       Access: Published
//  Description: Returns the number of child nodes of the group.
//////////////////////////////////////////////////////////////////// 1 4 this 3 490  
28 14 Dtool_8NZBMhIO 0 7 44 489 246 14 Dtool_8NZBMhIO 255 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::get_child
//       Access: Published
//  Description: Returns the nth child of the group.
//////////////////////////////////////////////////////////////////// 2 4 this 3 490  1 n 1 472  
29 14 Dtool_8NZBDwci 0 7 45 489 246 14 Dtool_8NZBDwci 524 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::get_child_named
//       Access: Published
//  Description: Returns the first child found with the indicated
//               name, or NULL if no such child exists.  This method
//               searches only the children of this particular
//               PartGroup; it does not recursively search the entire
//               graph.  See also find_child().
//////////////////////////////////////////////////////////////////// 2 4 this 3 490  4 name 1 469  
30 14 Dtool_8NZB6aSh 0 7 46 489 246 14 Dtool_8NZB6aSh 465 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::find_child
//       Access: Published
//  Description: Returns the first descendant found with the indicated
//               name, or NULL if no such descendant exists.  This
//               method searches the entire graph beginning at this
//               PartGroup; see also get_child_named().
//////////////////////////////////////////////////////////////////// 2 4 this 3 490  4 name 1 469  
31 14 Dtool_8NZBEvgz 0 4 47 473 0 14 Dtool_8NZBEvgz 537 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::sort_descendants
//       Access: Published
//  Description: Sorts the children nodes at each level of the
//               hierarchy into alphabetical order.  This should be
//               done after creating the hierarchy, to guarantee that
//               the correct names will match up together when the
//               AnimBundle is later bound to a PlayerRoot.
//////////////////////////////////////////////////////////////////// 1 4 this 3 489  
32 14 Dtool_8NZBC4lG 0 6 48 492 0 14 Dtool_8NZBC4lG 572 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::apply_freeze
//       Access: Published
//  Description: Freezes this particular joint so that it will always
//               hold the specified transform.  Returns true if this
//               is a joint that can be so frozen, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::freeze_joint(), but you may also call it
//               directly.
//////////////////////////////////////////////////////////////////// 2 4 this 3 489  9 transform 1 493  
33 14 Dtool_8NZBR9o1 0 6 49 492 0 14 Dtool_8NZBR9o1 588 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::apply_freeze_matrix
//       Access: Published, Virtual
//  Description: Freezes this particular joint so that it will always
//               hold the specified transform.  Returns true if this
//               is a joint that can be so frozen, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::freeze_joint(), but you may also call it
//               directly.
//////////////////////////////////////////////////////////////////// 4 4 this 3 489  3 pos 1 496  3 hpr 1 496  5 scale 1 496  
34 14 Dtool_8NZBSV2B 0 6 50 492 0 14 Dtool_8NZBSV2B 588 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::apply_freeze_scalar
//       Access: Published, Virtual
//  Description: Freezes this particular joint so that it will always
//               hold the specified transform.  Returns true if this
//               is a joint that can be so frozen, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::freeze_joint(), but you may also call it
//               directly.
//////////////////////////////////////////////////////////////////// 2 4 this 3 489  5 value 1 480  
35 14 Dtool_8NZBDCfX 0 6 51 492 0 14 Dtool_8NZBDCfX 622 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::apply_control
//       Access: Published, Virtual
//  Description: Specifies a node to influence this particular joint
//               so that it will always hold the node's transform.
//               Returns true if this is a joint that can be so
//               controlled, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::control_joint(), but you may also call it
//               directly.
//////////////////////////////////////////////////////////////////// 2 4 this 3 489  4 node 1 488  
36 14 Dtool_8NZB_lyG 0 6 52 492 0 14 Dtool_8NZB_lyG 567 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::clear_forced_channel
//       Access: Published, Virtual
//  Description: Undoes the effect of a previous call to
//               apply_freeze() or apply_control().  Returns true if
//               the joint was modified, false otherwise.
//
//               This is normally only called internally by
//               PartBundle::release_joint(), but you may also call it
//               directly.
//////////////////////////////////////////////////////////////////// 1 4 this 3 489  
37 14 Dtool_8NZBO88w 0 7 53 499 286 14 Dtool_8NZBO88w 453 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::get_forced_channel
//       Access: Published, Virtual
//  Description: Returns the AnimChannelBase that has been forced to
//               this joint by a previous call to apply_freeze() or
//               apply_control(), or NULL if no such channel has been
//               applied.
//////////////////////////////////////////////////////////////////// 1 4 this 3 490  
38 14 Dtool_8NZBNFkb 0 4 54 473 0 14 Dtool_8NZBNFkb 309 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::write
//       Access: Published, Virtual
//  Description: Writes a brief description of the group and all of
//               its descendants.
//////////////////////////////////////////////////////////////////// 3 4 this 3 490  3 out 1 474  12 indent_level 1 472  
39 14 Dtool_8NZB6PSE 0 4 55 473 0 14 Dtool_8NZB6PSE 356 ////////////////////////////////////////////////////////////////////
//     Function: PartGroup::write_with_value
//       Access: Published, Virtual
//  Description: Writes a brief description of the group, showing its
//               current value, and that of all of its descendants.
//////////////////////////////////////////////////////////////////// 3 4 this 3 490  3 out 1 474  12 indent_level 1 472  
40 14 Dtool_8NZBHmRQ 0 7 56 477 0 14 Dtool_8NZBHmRQ 0 0 
41 14 Dtool_8NZBnLw5 0 7 33 478 0 14 Dtool_8NZBnLw5 0 1 4 this 3 489  
42 14 Dtool_8NZB0Te7 0 7 34 489 246 14 Dtool_8NZB0Te7 0 1 4 this 3 478  
43 14 Dtool_8NZBEyTs 0 6 35 479 0 14 Dtool_8NZBEyTs 0 1 4 this 3 489  
44 14 Dtool_8NZBoV3X 0 7 36 489 246 14 Dtool_8NZBoV3X 0 1 4 this 3 479  
45 14 Dtool_8NZBj5H5 0 6 67 492 0 14 Dtool_8NZBj5H5 1061 // Filename: animControl.I
// Created by:  drose (19Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimControl::is_pending
//       Access: Published
//  Description: Returns true if the AnimControl is being bound
//               asynchronously, and has not yet finished.  If this is
//               true, the AnimControl's interface is still available
//               and will be perfectly useful (though get_anim() might
//               return NULL), but nothing visible will happen
//               immediately.
//////////////////////////////////////////////////////////////////// 1 4 this 3 500  
46 14 Dtool_8NZBX93W 0 4 68 473 0 14 Dtool_8NZBX93W 330 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::wait_pending
//       Access: Published
//  Description: Blocks the current thread until the AnimControl has
//               finished loading and is fully bound.
//////////////////////////////////////////////////////////////////// 1 4 this 3 502  
47 14 Dtool_8NZBHAER 0 6 69 492 0 14 Dtool_8NZBHAER 395 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::has_anim
//       Access: Published
//  Description: Returns true if the AnimControl was successfully
//               loaded, or false if there was a problem.  This may
//               return false while is_pending() is true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 500  
48 14 Dtool_8NZBxoCU 0 4 70 473 0 14 Dtool_8NZBxoCU 474 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::set_pending_done_event
//       Access: Published
//  Description: Specifies an event name that will be thrown when the
//               AnimControl is finished binding asynchronously.  If
//               the AnimControl has already finished binding, the
//               event will be thrown immediately.
//////////////////////////////////////////////////////////////////// 2 4 this 3 502  10 done_event 1 469  
49 14 Dtool_8NZBRLbr 0 6 71 469 0 14 Dtool_8NZBRLbr 351 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_pending_done_event
//       Access: Published
//  Description: Returns the event name that will be thrown when the
//               AnimControl is finished binding asynchronously.
//////////////////////////////////////////////////////////////////// 1 4 this 3 500  
50 14 Dtool_8NZBinR8 0 7 72 503 410 14 Dtool_8NZBinR8 292 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_part
//       Access: Published
//  Description: Returns the PartBundle bound in with this
//               AnimControl.
//////////////////////////////////////////////////////////////////// 1 4 this 3 500  
51 14 Dtool_8NZBfBvN 0 7 73 481 235 14 Dtool_8NZBfBvN 292 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_anim
//       Access: Published
//  Description: Returns the AnimBundle bound in with this
//               AnimControl.
//////////////////////////////////////////////////////////////////// 1 4 this 3 500  
52 14 Dtool_8NZBMgs9 0 6 74 472 0 14 Dtool_8NZBMgs9 665 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_channel_index
//       Access: Published
//  Description: Returns the particular channel index associated with
//               this AnimControl.  This channel index is the slot on
//               which each AnimGroup is bound to its associated
//               PartGroup, for each joint in the animation.
//
//               It will be true that
//               get_part()->find_child("n")->get_bound(get_channel_index())
//               == get_anim()->find_child("n"), for each joint "n".
//////////////////////////////////////////////////////////////////// 1 4 this 3 500  
53 14 Dtool_8NZBmv5w 0 6 75 504 0 14 Dtool_8NZBmv5w 677 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_bound_joints
//       Access: Published
//  Description: Returns the subset of joints controlled by this
//               AnimControl.  Most of the time, this will be
//               BitArray::all_on(), for a normal full-body animation.
//               For a subset animation, however, this will be just a
//               subset of those bits, corresponding to the set of
//               joints and sliders actually bound (as enumerated by
//               bind_hierarchy() in depth-first LIFO order).
//////////////////////////////////////////////////////////////////// 1 4 this 3 500  
54 14 Dtool_8NZBn_I7 0 4 76 473 0 14 Dtool_8NZBn_I7 883 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::set_anim_model
//       Access: Published
//  Description: Associates the indicated PandaNode with the
//               AnimControl.  By convention, this node represents the
//               root node of the model file that corresponds to this
//               AnimControl's animation file, though nothing in this
//               code makes this assumption or indeed does anything
//               with this node.
//
//               The purpose of this is simply to allow the
//               AnimControl to keep a reference count on the
//               ModelRoot node that generated it, so that the model
//               will not disappear from the model pool until it is no
//               longer referenced.
//////////////////////////////////////////////////////////////////// 2 4 this 3 502  5 model 1 488  
55 14 Dtool_8NZBECae 0 7 77 488 0 14 Dtool_8NZBECae 314 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::get_anim_model
//       Access: Published
//  Description: Retrieves the pointer set via set_anim_model().  See
//               set_anim_model().
//////////////////////////////////////////////////////////////////// 1 4 this 3 500  
56 14 Dtool_8NZBmvA5 0 4 78 473 0 14 Dtool_8NZBmvA5 218 ////////////////////////////////////////////////////////////////////
//     Function: AnimControl::output
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 this 3 500  3 out 1 474  
57 14 Dtool_8NZBsoch 0 7 79 477 0 14 Dtool_8NZBsoch 0 0 
58 14 Dtool_8NZBajPq 0 7 59 507 0 14 Dtool_8NZBajPq 0 1 4 this 3 502  
59 14 Dtool_8NZBkxia 0 7 60 502 270 14 Dtool_8NZBkxia 0 1 4 this 3 507  
60 14 Dtool_8NZBEgr1 0 6 62 508 0 14 Dtool_8NZBEgr1 0 1 4 this 3 502  
61 14 Dtool_8NZBVM10 0 7 63 502 270 14 Dtool_8NZBVM10 0 1 4 this 3 508  
62 14 Dtool_8NZBqvu2 0 6 64 479 0 14 Dtool_8NZBqvu2 0 1 4 this 3 502  
63 14 Dtool_8NZBGYjo 0 7 65 502 270 14 Dtool_8NZBGYjo 0 1 4 this 3 479  
64 14 Dtool_8NZBP9Rv 0 7 81 477 0 14 Dtool_8NZBP9Rv 0 1 4 this 3 509  
65 14 Dtool_8NZBORV4 0 7 82 477 0 14 Dtool_8NZBORV4 0 0 
66 14 Dtool_8NZBqZzQ 0 4 85 473 0 14 Dtool_8NZBqZzQ 0 3 4 this 3 511  5 frame 1 472  5 value 1 512  
67 14 Dtool_8NZB5C0s 0 4 86 473 0 14 Dtool_8NZB5C0s 72 // These transform-component methods only have meaning for matrix types. 3 4 this 3 511  5 frame 1 472  5 value 1 512  
68 14 Dtool_8NZBz_3E 0 4 87 473 0 14 Dtool_8NZBz_3E 72 // These transform-component methods only have meaning for matrix types. 3 4 this 3 511  5 frame 1 472  5 scale 1 514  
69 14 Dtool_8NZBUEM9 0 4 88 473 0 14 Dtool_8NZBUEM9 0 3 4 this 3 511  5 frame 1 472  3 hpr 1 514  
70 14 Dtool_8NZBOmSj 0 4 89 473 0 14 Dtool_8NZBOmSj 0 3 4 this 3 511  5 frame 1 472  4 quat 1 515  
71 14 Dtool_8NZBqs83 0 4 90 473 0 14 Dtool_8NZBqs83 0 3 4 this 3 511  5 frame 1 472  3 pos 1 514  
72 14 Dtool_8NZBl2ej 0 4 91 473 0 14 Dtool_8NZBl2ej 0 3 4 this 3 511  5 frame 1 472  5 shear 1 514  
73 14 Dtool_8NZBdaSG 0 7 92 477 0 14 Dtool_8NZBdaSG 0 1 4 this 3 517  
74 14 Dtool_8NZB7LXI 0 7 93 477 0 14 Dtool_8NZB7LXI 0 0 
75 14 Dtool_8NZBIOa5 0 4 97 473 0 14 Dtool_8NZBIOa5 72 // These transform-component methods only have meaning for matrix types. 3 4 this 3 519  5 frame 1 472  5 scale 1 514  
76 14 Dtool_8NZBNRwx 0 4 98 473 0 14 Dtool_8NZBNRwx 0 3 4 this 3 519  5 frame 1 472  3 hpr 1 514  
77 14 Dtool_8NZBEl2X 0 4 99 473 0 14 Dtool_8NZBEl2X 0 3 4 this 3 519  5 frame 1 472  4 quat 1 515  
78 14 Dtool_8NZBU_gs 0 4 100 473 0 14 Dtool_8NZBU_gs 0 3 4 this 3 519  5 frame 1 472  3 pos 1 514  
79 14 Dtool_8NZBzYDY 0 4 101 473 0 14 Dtool_8NZBzYDY 0 3 4 this 3 519  5 frame 1 472  5 shear 1 514  
80 14 Dtool_8NZBzf26 0 7 102 477 0 14 Dtool_8NZBzf26 0 1 4 this 3 520  
81 14 Dtool_8NZBdX78 0 7 103 477 0 14 Dtool_8NZBdX78 0 0 
82 14 Dtool_8NZBwi1P 0 4 105 473 0 14 Dtool_8NZBwi1P 268 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::set_value
//       Access: Published
//  Description: Explicitly sets the matrix value.
//////////////////////////////////////////////////////////////////// 2 4 this 3 522  5 value 1 523  
83 14 Dtool_8NZB4XtZ 0 4 105 473 0 14 Dtool_8NZB4XtZ 345 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::set_value
//       Access: Published
//  Description: Explicitly sets the matrix value, using the indicated
//               TransformState object as a convenience.
//////////////////////////////////////////////////////////////////// 2 4 this 3 522  5 value 1 493  
84 14 Dtool_8NZBAd6G 0 4 106 473 0 14 Dtool_8NZBAd6G 384 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::set_value_node
//       Access: Published
//  Description: Specifies a node whose transform will be queried each
//               frame to implicitly specify the transform of this
//               joint.
//////////////////////////////////////////////////////////////////// 2 4 this 3 522  4 node 1 488  
85 14 Dtool_8NZBAlQj 0 7 107 493 0 14 Dtool_8NZBAlQj 841 // Filename: animChannelMatrixDynamic.I
// Created by:  drose (20Oct03)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::get_value_transform
//       Access: Published
//  Description: Returns the explicit TransformState value that was
//               set via set_value(), if any.
//////////////////////////////////////////////////////////////////// 1 4 this 3 525  
86 14 Dtool_8NZBA0Lo 0 7 108 488 0 14 Dtool_8NZBA0Lo 316 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixDynamic::get_value_node
//       Access: Published
//  Description: Returns the node that was set via set_value_node(),
//               if any.
//////////////////////////////////////////////////////////////////// 1 4 this 3 525  
87 14 Dtool_8NZBdU9M 0 7 109 477 0 14 Dtool_8NZBdU9M 0 0 
88 14 Dtool_8NZBeBw0 0 7 112 527 286 14 Dtool_8NZBeBw0 234 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 2 6 parent 1 468  4 name 1 469  
89 14 Dtool_8NZBKOH5 0 6 113 492 0 14 Dtool_8NZBKOH5 830 // Filename: animChannelMatrixXfmTable.I
// Created by:  drose (21Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::is_valid_id
//       Access: Public, Static
//  Description: Returns true if the given letter is one of the nine
//               valid table id's.
//////////////////////////////////////////////////////////////////// 1 8 table_id 1 528  
90 14 Dtool_8NZBF4Yg 0 4 114 473 0 14 Dtool_8NZBF4Yg 536 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::set_table
//       Access: Public
//  Description: Assigns the indicated table.  table_id is one of 'i',
//               'j', 'k', for scale, 'a', 'b', 'c' for shear, 'h',
//               'p', 'r', for rotation, and 'x', 'y', 'z', for
//               translation.  The new table must have either zero,
//               one, or get_num_frames() frames.
//////////////////////////////////////////////////////////////////// 3 4 this 3 527  8 table_id 1 528  5 table 1 529  
91 14 Dtool_8NZB091i 0 7 115 534 0 14 Dtool_8NZB091i 339 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::get_table
//       Access: Public
//  Description: Returns a pointer to the indicated subtable's data,
//               if it exists, or NULL if it does not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 532  8 table_id 1 528  
92 14 Dtool_8NZBvh4K 0 4 116 473 0 14 Dtool_8NZBvh4K 336 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::clear_all_tables
//       Access: Published
//  Description: Removes all the tables from the channel, and resets
//               it to its initial state.
//////////////////////////////////////////////////////////////////// 1 4 this 3 527  
93 14 Dtool_8NZBZcqj 0 6 117 492 0 14 Dtool_8NZBZcqj 310 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::has_table
//       Access: Published
//  Description: Returns true if the indicated subtable has been
//               assigned.
//////////////////////////////////////////////////////////////////// 2 4 this 3 532  8 table_id 1 528  
94 14 Dtool_8NZBO_k0 0 4 118 473 0 14 Dtool_8NZBO_k0 286 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelMatrixXfmTable::clear_table
//       Access: Published
//  Description: Removes the indicated table from the definition.
//////////////////////////////////////////////////////////////////// 2 4 this 3 527  8 table_id 1 528  
95 14 Dtool_8NZBBX4a 0 7 119 477 0 14 Dtool_8NZBBX4a 0 0 
96 14 Dtool_8NZBVD_1 0 4 121 473 0 14 Dtool_8NZBVD_1 261 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarDynamic::set_value
//       Access: Published
//  Description: Explicitly sets the value.
//////////////////////////////////////////////////////////////////// 2 4 this 3 535  5 value 1 480  
97 14 Dtool_8NZB6Avw 0 4 122 473 0 14 Dtool_8NZB6Avw 384 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarDynamic::set_value_node
//       Access: Published
//  Description: Specifies a node whose transform will be queried each
//               frame to implicitly specify the transform of this
//               joint.
//////////////////////////////////////////////////////////////////// 2 4 this 3 535  4 node 1 488  
98 14 Dtool_8NZBxwy2 0 7 123 477 0 14 Dtool_8NZBxwy2 0 0 
99 14 Dtool_8NZB8JvW 0 4 126 473 0 14 Dtool_8NZB8JvW 253 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarTable::set_table
//       Access: Public
//  Description: Assigns the data table.
//////////////////////////////////////////////////////////////////// 2 4 this 3 536  5 table 1 529  
100 14 Dtool_8NZB8IHc 0 7 127 534 0 14 Dtool_8NZB8IHc 821 // Filename: animChannelScalarTable.I
// Created by:  drose (22Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarTable::get_table
//       Access: Public
//  Description: Returns a pointer to the table's data,
//               if it exists, or NULL if it does not.
//////////////////////////////////////////////////////////////////// 1 4 this 3 537  
101 14 Dtool_8NZB1YIG 0 6 128 492 0 14 Dtool_8NZB1YIG 282 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarTable::has_table
//       Access: Published
//  Description: Returns true if the data table has been assigned.
//////////////////////////////////////////////////////////////////// 1 4 this 3 537  
102 14 Dtool_8NZBPoPB 0 4 129 473 0 14 Dtool_8NZBPoPB 258 ////////////////////////////////////////////////////////////////////
//     Function: AnimChannelScalarTable::clear_table
//       Access: Published
//  Description: Empties the data table.
//////////////////////////////////////////////////////////////////// 1 4 this 3 536  
103 14 Dtool_8NZBptvC 0 7 130 477 0 14 Dtool_8NZBptvC 0 0 
104 14 Dtool_8NZBEVyR 0 7 133 539 330 14 Dtool_8NZBEVyR 354 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::Constructor
//       Access: Published
//  Description: Returns the AnimControl associated with the given
//               name, or NULL if no such control has been associated.
//////////////////////////////////////////////////////////////////// 0 
105 14 Dtool_8NZBJmt2 0 4 135 473 0 14 Dtool_8NZBJmt2 529 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::store_anim
//       Access: Published
//  Description: Associates the given AnimControl with this collection
//               under the given name.  The AnimControl will remain
//               associated until a new AnimControl is associated with
//               the same name later, or until unbind_anim() is called
//               with this name.
//////////////////////////////////////////////////////////////////// 3 4 this 3 539  7 control 1 502  4 name 1 469  
106 14 Dtool_8NZBDivI 0 7 136 502 270 14 Dtool_8NZBDivI 352 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::find_anim
//       Access: Published
//  Description: Returns the AnimControl associated with the given
//               name, or NULL if no such control has been associated.
//////////////////////////////////////////////////////////////////// 2 4 this 3 540  4 name 1 469  
107 14 Dtool_8NZBe9bu 0 6 137 492 0 14 Dtool_8NZBe9bu 452 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::unbind_anim
//       Access: Published
//  Description: Removes the AnimControl associated with the given
//               name, if any.  Returns true if an AnimControl was
//               removed, false if there was no AnimControl with the
//               indicated name.
//////////////////////////////////////////////////////////////////// 2 4 this 3 539  4 name 1 469  
108 14 Dtool_8NZBoONk 0 6 138 472 0 14 Dtool_8NZBoONk 320 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_num_anims
//       Access: Published
//  Description: Returns the number of AnimControls associated with
//               this collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 540  
109 14 Dtool_8NZBVtrB 0 7 139 502 270 14 Dtool_8NZBVtrB 308 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_anim
//       Access: Published
//  Description: Returns the nth AnimControl associated with
//               this collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 540  1 n 1 472  
110 14 Dtool_8NZBBXsg 0 6 140 469 0 14 Dtool_8NZBBXsg 325 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_anim_name
//       Access: Published
//  Description: Returns the name of the nth AnimControl associated
//               with this collection.
//////////////////////////////////////////////////////////////////// 2 4 this 3 540  1 n 1 472  
111 14 Dtool_8NZBNiLN 0 4 141 473 0 14 Dtool_8NZBNiLN 279 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::clear_anims
//       Access: Published
//  Description: Disassociates all anims from this collection.
//////////////////////////////////////////////////////////////////// 1 4 this 3 539  
112 14 Dtool_8NZBUNjN 0 6 142 492 0 14 Dtool_8NZBUNjN 756 // Filename: animControlCollection.I
// Created by:  drose (22Feb00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::play
//       Access: Public
//  Description: Starts the named animation playing.
//////////////////////////////////////////////////////////////////// 2 4 this 3 539  9 anim_name 1 469  
113 14 Dtool_8NZB_GRl 0 6 142 492 0 14 Dtool_8NZB_GRl 259 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::play
//       Access: Public
//  Description: Starts the named animation playing.
//////////////////////////////////////////////////////////////////// 4 4 this 3 539  9 anim_name 1 469  4 from 1 472  2 to 1 472  
114 14 Dtool_8NZBBJEH 0 6 143 492 0 14 Dtool_8NZBBJEH 259 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::loop
//       Access: Public
//  Description: Starts the named animation looping.
//////////////////////////////////////////////////////////////////// 3 4 this 3 539  9 anim_name 1 469  7 restart 1 492  
115 14 Dtool_8NZBTOG2 0 6 143 492 0 14 Dtool_8NZBTOG2 259 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::loop
//       Access: Public
//  Description: Starts the named animation looping.
//////////////////////////////////////////////////////////////////// 5 4 this 3 539  9 anim_name 1 469  7 restart 1 492  4 from 1 472  2 to 1 472  
116 14 Dtool_8NZBunhQ 0 6 144 492 0 14 Dtool_8NZBunhQ 250 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::stop
//       Access: Public
//  Description: Stops the named animation.
//////////////////////////////////////////////////////////////////// 2 4 this 3 539  9 anim_name 1 469  
117 14 Dtool_8NZBmA9Z 0 6 145 492 0 14 Dtool_8NZBmA9Z 274 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::pose
//       Access: Public
//  Description: Sets to a particular frame in the named animation.
//////////////////////////////////////////////////////////////////// 3 4 this 3 539  9 anim_name 1 469  5 frame 1 472  
118 14 Dtool_8NZBtiz5 0 4 146 473 0 14 Dtool_8NZBtiz5 261 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::play_all
//       Access: Published
//  Description: Starts all animations playing.
//////////////////////////////////////////////////////////////////// 1 4 this 3 539  
119 14 Dtool_8NZBc5qb 0 4 146 473 0 14 Dtool_8NZBc5qb 261 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::play_all
//       Access: Published
//  Description: Starts all animations playing.
//////////////////////////////////////////////////////////////////// 3 4 this 3 539  4 from 1 472  2 to 1 472  
120 14 Dtool_8NZBMeO5 0 4 147 473 0 14 Dtool_8NZBMeO5 261 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::loop_all
//       Access: Published
//  Description: Starts all animations looping.
//////////////////////////////////////////////////////////////////// 2 4 this 3 539  7 restart 1 492  
121 14 Dtool_8NZBRl09 0 4 147 473 0 14 Dtool_8NZBRl09 261 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::loop_all
//       Access: Published
//  Description: Starts all animations looping.
//////////////////////////////////////////////////////////////////// 4 4 this 3 539  7 restart 1 492  4 from 1 472  2 to 1 472  
122 14 Dtool_8NZBXUx8 0 6 148 492 0 14 Dtool_8NZBXUx8 378 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::stop_all
//       Access: Published
//  Description: Stops all currently playing animations.  Returns true
//               if any animations were stopped, false if none were
//               playing.
//////////////////////////////////////////////////////////////////// 1 4 this 3 539  
123 14 Dtool_8NZBJter 0 4 149 473 0 14 Dtool_8NZBJter 274 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::pose_all
//       Access: Published
//  Description: Sets all animations to the indicated frame.
//////////////////////////////////////////////////////////////////// 2 4 this 3 539  5 frame 1 472  
124 14 Dtool_8NZBhXpY 0 6 150 472 0 14 Dtool_8NZBhXpY 302 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_frame
//       Access: Public
//  Description: Returns the current frame in the last-started
//               animation.
//////////////////////////////////////////////////////////////////// 1 4 this 3 540  
125 14 Dtool_8NZB6Cy2 0 6 150 472 0 14 Dtool_8NZB6Cy2 331 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_frame
//       Access: Public
//  Description: Returns the current frame in the named animation, or
//               0 if the animation is not found.
//////////////////////////////////////////////////////////////////// 2 4 this 3 540  9 anim_name 1 469  
126 14 Dtool_8NZBfa0S 0 6 151 472 0 14 Dtool_8NZBfa0S 316 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_num_frames
//       Access: Public
//  Description: Returns the total number of frames in the
//               last-started animation.
//////////////////////////////////////////////////////////////////// 1 4 this 3 540  
127 14 Dtool_8NZBvkKP 0 6 151 472 0 14 Dtool_8NZBvkKP 345 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::get_num_frames
//       Access: Public
//  Description: Returns the total number of frames in the named
//               animation, or 0 if the animation is not found.
//////////////////////////////////////////////////////////////////// 2 4 this 3 540  9 anim_name 1 469  
128 14 Dtool_8NZB6Fhs 0 6 152 492 0 14 Dtool_8NZB6Fhs 328 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::is_playing
//       Access: Public
//  Description: Returns true if the last-started animation is
//               currently playing, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 540  
129 14 Dtool_8NZBme5y 0 6 152 492 0 14 Dtool_8NZBme5y 321 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::is_playing
//       Access: Public
//  Description: Returns true if the named animation is currently
//               playing, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 540  9 anim_name 1 469  
130 14 Dtool_8NZBBIcV 0 6 153 469 0 14 Dtool_8NZBBIcV 458 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::which_anim_playing
//       Access: Published
//  Description: Returns the name of the bound AnimControl currently
//               playing, if any.  If more than one AnimControl is
//               currently playing, returns all of the names separated
//               by spaces.
//////////////////////////////////////////////////////////////////// 1 4 this 3 540  
131 14 Dtool_8NZBV3NB 0 4 154 473 0 14 Dtool_8NZBV3NB 229 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::output
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 540  3 out 1 474  
132 14 Dtool_8NZBI5P2 0 4 155 473 0 14 Dtool_8NZBI5P2 228 ////////////////////////////////////////////////////////////////////
//     Function: AnimControlCollection::write
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 540  3 out 1 474  
133 14 Dtool_8NZBvxTH 0 7 158 542 0 14 Dtool_8NZBvxTH 229 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 0 
134 14 Dtool_8NZB9WAE 0 6 159 472 0 14 Dtool_8NZB9WAE 284 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::get_num_anims
//       Access: Published
//  Description: Returns the number of animation records in the table.
//////////////////////////////////////////////////////////////////// 1 4 this 3 543  
135 14 Dtool_8NZB_zP2 0 6 160 472 0 14 Dtool_8NZB_zP2 610 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::find_anim
//       Access: Published
//  Description: Returns the index number in the table of the
//               animation record with the indicated name, or -1 if
//               the name is not present.  By convention, the basename
//               is the filename of the egg or bam file, without the
//               directory part and without the extension.  That is,
//               it is Filename::get_basename_wo_extension().
//////////////////////////////////////////////////////////////////// 2 4 this 3 543  8 basename 1 469  
136 14 Dtool_8NZB_AA_ 0 6 161 469 0 14 Dtool_8NZB_AA_ 322 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::get_basename
//       Access: Published
//  Description: Returns the basename stored for the nth animation
//               record.  See find_anim().
//////////////////////////////////////////////////////////////////// 2 4 this 3 543  1 n 1 472  
137 14 Dtool_8NZBFxd3 0 6 162 480 0 14 Dtool_8NZBFxd3 313 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::get_base_frame_rate
//       Access: Published
//  Description: Returns the frame rate stored for the nth animation
//               record.
//////////////////////////////////////////////////////////////////// 2 4 this 3 543  1 n 1 472  
138 14 Dtool_8NZBmhkv 0 6 163 472 0 14 Dtool_8NZBmhkv 314 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::get_num_frames
//       Access: Published
//  Description: Returns the number of frames stored for the nth
//               animation record.
//////////////////////////////////////////////////////////////////// 2 4 this 3 543  1 n 1 472  
139 14 Dtool_8NZBheg4 0 4 164 473 0 14 Dtool_8NZBheg4 274 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::clear_anims
//       Access: Published
//  Description: Removes all animation records from the table.
//////////////////////////////////////////////////////////////////// 1 4 this 3 542  
140 14 Dtool_8NZBSDsJ 0 4 165 473 0 14 Dtool_8NZBSDsJ 344 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::remove_anim
//       Access: Published
//  Description: Removes the nth animation records from the table.
//               This renumbers indexes for following animations.
//////////////////////////////////////////////////////////////////// 2 4 this 3 542  1 n 1 472  
141 14 Dtool_8NZB1l8l 0 4 166 473 0 14 Dtool_8NZB1l8l 505 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::add_anim
//       Access: Published
//  Description: Adds a new animation record to the table.  If there
//               is already a record of this name, no operation is
//               performed (the original record is unchanged).  See
//               find_anim().  This will invalidate existing index
//               numbers.
//////////////////////////////////////////////////////////////////// 4 4 this 3 542  8 basename 1 469  15 base_frame_rate 1 480  10 num_frames 1 472  
142 14 Dtool_8NZB52_x 0 4 167 473 0 14 Dtool_8NZB52_x 412 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::add_anims_from
//       Access: Published
//  Description: Copies the animation records from the other table
//               into this one.  If a given record name exists in both
//               tables, the record in this one supercedes.
//////////////////////////////////////////////////////////////////// 2 4 this 3 542  5 other 1 543  
143 14 Dtool_8NZBlofy 0 4 168 473 0 14 Dtool_8NZBlofy 224 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::output
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 543  3 out 1 474  
144 14 Dtool_8NZBhkgD 0 4 169 473 0 14 Dtool_8NZBhkgD 223 ////////////////////////////////////////////////////////////////////
//     Function: AnimPreloadTable::write
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 3 4 this 3 543  3 out 1 474  12 indent_level 1 472  
145 14 Dtool_8NZBAKZD 0 7 170 477 0 14 Dtool_8NZBAKZD 0 0 
146 14 Dtool_8NZBoGGG 0 7 173 545 375 14 Dtool_8NZBoGGG 223 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 0 
147 14 Dtool_8NZB_gKp 0 7 173 545 375 14 Dtool_8NZB_gKp 228 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::Copy Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 4 copy 1 546  
148 14 Dtool_8NZBxWwX 0 6 174 545 0 14 Dtool_8NZBxWwX 236 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::Copy Assignment Operator
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 545  4 copy 1 546  
149 14 Dtool_8NZB0f2j 0 4 175 473 0 14 Dtool_8NZB0f2j 650 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::add_include_joint
//       Access: Published
//  Description: Adds the named joint to the list of joints that will
//               be explicitly included in the subset.  Any joint at
//               or below a named node will be included in the subset
//               (unless a lower node is also listed in the exclude
//               list).
//
//               Since the name is a GlobPattern, it may of course
//               include filename globbing characters like * and ?.
//////////////////////////////////////////////////////////////////// 2 4 this 3 545  4 name 1 548  
150 14 Dtool_8NZBMvgq 0 4 176 473 0 14 Dtool_8NZBMvgq 657 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::add_exclude_joint
//       Access: Published
//  Description: Adds the named joint to the list of joints that will
//               be explicitly exlcluded from the subset.  Any joint at
//               or below a named node will not be included in the
//               subset (unless a lower node is also listed in the
//               include list).
//
//               Since the name is a GlobPattern, it may of course
//               include filename globbing characters like * and ?.
//////////////////////////////////////////////////////////////////// 2 4 this 3 545  4 name 1 548  
151 14 Dtool_8NZB69Ls 0 4 177 473 0 14 Dtool_8NZB69Ls 319 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::append
//       Access: Published
//  Description: Appends the include and exclude list from the other
//               object onto this object's lists.
//////////////////////////////////////////////////////////////////// 2 4 this 3 545  5 other 1 546  
152 14 Dtool_8NZB80i_ 0 4 178 473 0 14 Dtool_8NZB80i_ 218 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::output
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 2 4 this 3 546  3 out 1 474  
153 14 Dtool_8NZBpRPq 0 6 179 492 0 14 Dtool_8NZBpRPq 395 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::is_include_empty
//       Access: Published
//  Description: Returns true if the include list is completely empty,
//               false otherwise.  If it is empty, it is the same
//               thing as including all joints.
//////////////////////////////////////////////////////////////////// 1 4 this 3 546  
154 14 Dtool_8NZBFDUF 0 6 180 492 0 14 Dtool_8NZBFDUF 331 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::matches_include
//       Access: Published
//  Description: Returns true if the indicated name matches a name on
//               the include list, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 546  10 joint_name 1 469  
155 14 Dtool_8NZBEavl 0 6 181 492 0 14 Dtool_8NZBEavl 331 ////////////////////////////////////////////////////////////////////
//     Function: PartSubset::matches_exclude
//       Access: Published
//  Description: Returns true if the indicated name matches a name on
//               the exclude list, false otherwise.
//////////////////////////////////////////////////////////////////// 2 4 this 3 546  10 joint_name 1 469  
156 14 Dtool_8NZBZ6lN 0 7 185 559 378 14 Dtool_8NZBZ6lN 225 ////////////////////////////////////////////////////////////////////
//     Function: BindAnimRequest::Constructor
//       Access: Public
//  Description: 
//////////////////////////////////////////////////////////////////// 7 4 name 1 469  8 filename 1 551  7 options 1 554  6 loader 1 557  7 control 1 502  21 hierarchy_match_flags 1 472  6 subset 1 546  
157 14 Dtool_8NZBzTZe 0 7 186 477 0 14 Dtool_8NZBzTZe 0 0 
158 14 Dtool_8NZB9LiC 0 7 189 503 410 14 Dtool_8NZB9LiC 373 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::Constructor
//       Access: Public
//  Description: Normally, a PartBundle constructor should not be
//               called directly--it will get created when a
//               PartBundleNode is created.
//////////////////////////////////////////////////////////////////// 1 4 name 1 469  
159 14 Dtool_8NZBDIqj 0 7 189 503 410 14 Dtool_8NZBDIqj 373 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::Constructor
//       Access: Public
//  Description: Normally, a PartBundle constructor should not be
//               called directly--it will get created when a
//               PartBundleNode is created.
//////////////////////////////////////////////////////////////////// 0 
160 14 Dtool_8NZBrxqe 0 7 190 543 0 14 Dtool_8NZBrxqe 929 // Filename: partBundle.I
// Created by:  drose (22Feb99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_anim_preload
//       Access: Published
//  Description: Returns the AnimPreloadTable associated with
//               the PartBundle.  This table, if present, can be used
//               for the benefit of load_bind_anim() to allow
//               asynchronous binding.
//////////////////////////////////////////////////////////////////// 1 4 this 3 560  
161 14 Dtool_8NZB2f0z 0 7 191 542 0 14 Dtool_8NZB2f0z 340 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::modify_anim_preload
//       Access: Published
//  Description: Returns a modifiable pointer to the AnimPreloadTable
//               associated with the PartBundle, if any.
//////////////////////////////////////////////////////////////////// 1 4 this 3 503  
162 14 Dtool_8NZBA3Kk 0 4 192 473 0 14 Dtool_8NZBA3Kk 306 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_anim_preload
//       Access: Published
//  Description: Replaces the AnimPreloadTable associated with
//               the PartBundle.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  5 table 1 542  
163 14 Dtool_8NZBYoFV 0 4 193 473 0 14 Dtool_8NZBYoFV 307 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::clear_anim_preload
//       Access: Published
//  Description: Removes any AnimPreloadTable associated with
//               the PartBundle.
//////////////////////////////////////////////////////////////////// 1 4 this 3 503  
164 14 Dtool_8NZBtRk3 0 4 194 473 0 14 Dtool_8NZBtRk3 322 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::merge_anim_preloads
//       Access: Published
//  Description: Copies the contents of the other PartBundle's preload
//               table into this one.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  5 other 1 560  
165 14 Dtool_8NZB0WPI 0 4 196 473 0 14 Dtool_8NZB0WPI 558 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_blend_type
//       Access: Published
//  Description: Defines the algorithm that is used when blending
//               multiple frames or multiple animations together, when
//               either anim_blend_flag or frame_blend_flag is set
//               to true.
//
//               See partBundle.h for a description of the meaning of
//               each of the BlendType values.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  2 bt 1 459  
166 14 Dtool_8NZByXKU 0 6 197 459 0 14 Dtool_8NZByXKU 438 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_blend_type
//       Access: Published
//  Description: Returns the algorithm that is used when blending
//               multiple frames or multiple animations together, when
//               either anim_blend_flag or frame_blend_flag is set
//               to true.
//////////////////////////////////////////////////////////////////// 1 4 this 3 560  
167 14 Dtool_8NZBjAPZ 0 4 198 473 0 14 Dtool_8NZBjAPZ 947 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_anim_blend_flag
//       Access: Published
//  Description: Defines the way the character responds to multiple
//               calls to set_control_effect()).  By default, this
//               flag is set false, which disallows multiple
//               animations.  When this flag is false, it is not
//               necessary to explicitly set the control_effect when
//               starting an animation; starting the animation will
//               implicitly remove the control_effect from the
//               previous animation and set it on the current one.
//
//               However, if this flag is set true, the control_effect
//               must be explicitly set via set_control_effect()
//               whenever an animation is to affect the character.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  15 anim_blend_flag 1 492  
168 14 Dtool_8NZBZe_K 0 6 199 492 0 14 Dtool_8NZBZe_K 387 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_anim_blend_flag
//       Access: Published
//  Description: Returns whether the character allows multiple
//               different animations to be bound simultaneously.  See
//               set_anim_blend_flag().
//////////////////////////////////////////////////////////////////// 1 4 this 3 560  
169 14 Dtool_8NZBgaSG 0 4 200 473 0 14 Dtool_8NZBgaSG 1201 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_frame_blend_flag
//       Access: Published
//  Description: Specifies whether the character interpolates (blends)
//               between two sequential frames of an active animation,
//               showing a smooth intra-frame motion, or whether it
//               holds each frame until the next frame is ready,
//               showing precisely the specified animation.
//
//               When this value is false, the character holds each
//               frame until the next is ready.  When this is true,
//               the character will interpolate between two
//               consecutive frames of animation for each frame the
//               animation is onscreen, according to the amount of
//               time elapsed between the frames.
//
//               The default value of this flag is determined by the
//               interpolate-frames Config.prc variable.
//
//               Use set_blend_type() to change the algorithm that the
//               character uses to interpolate matrix positions.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  16 frame_blend_flag 1 492  
170 14 Dtool_8NZBfbl_ 0 6 201 492 0 14 Dtool_8NZBfbl_ 471 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_frame_blend_flag
//       Access: Published
//  Description: Returns whether the character interpolates (blends)
//               between two sequential animation frames, or whether
//               it holds the current frame until the next one is
//               ready.  See set_frame_blend_flag().
//////////////////////////////////////////////////////////////////// 1 4 this 3 560  
171 14 Dtool_8NZBt3hG 0 4 202 473 0 14 Dtool_8NZBt3hG 340 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_root_xform
//       Access: Published
//  Description: Specifies the transform matrix which is implicitly
//               applied at the root of the animated hierarchy.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  10 root_xform 1 523  
172 14 Dtool_8NZBr7Q9 0 4 203 473 0 14 Dtool_8NZBr7Q9 304 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::xform
//       Access: Published
//  Description: Applies the indicated transform to the root of the
//               animated hierarchy.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  3 mat 1 523  
173 14 Dtool_8NZBuoWS 0 6 204 523 0 14 Dtool_8NZBuoWS 338 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_root_xform
//       Access: Published
//  Description: Returns the transform matrix which is implicitly
//               applied at the root of the animated hierarchy.
//////////////////////////////////////////////////////////////////// 1 4 this 3 560  
174 14 Dtool_8NZB_za4 0 7 205 503 410 14 Dtool_8NZB_za4 487 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::apply_transform
//       Access: Published
//  Description: Returns a PartBundle that is a duplicate of this one,
//               but with the indicated transform applied.  If this is
//               called multiple times with the same TransformState
//               pointer, it returns the same PartBundle each time.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  9 transform 1 493  
175 14 Dtool_8NZBOYYz 0 6 206 472 0 14 Dtool_8NZBOYYz 322 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_num_nodes
//       Access: Published
//  Description: Returns the number of PartBundleNodes that contain a
//               pointer to this PartBundle.
//////////////////////////////////////////////////////////////////// 1 4 this 3 560  
176 14 Dtool_8NZBAJLi 0 7 207 562 0 14 Dtool_8NZBAJLi 300 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_node
//       Access: Published
//  Description: Returns the nth PartBundleNode associated with
//               this PartBundle.
//////////////////////////////////////////////////////////////////// 2 4 this 3 560  1 n 1 472  
177 14 Dtool_8NZBXSiY 0 4 208 473 0 14 Dtool_8NZBXSiY 872 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::clear_control_effects
//       Access: Published
//  Description: Sets the control effect of all AnimControls to zero
//               (but does not "stop" the AnimControls).  The
//               character will no longer be affected by any
//               animation, and will return to its default
//               pose (unless restore-initial-pose is false).
//
//               The AnimControls which are no longer associated will
//               not be using any CPU cycles, but they may still be in
//               the "playing" state; if they are later reassociated
//               with the PartBundle they will resume at their current
//               frame as if they'd been running all along.
//////////////////////////////////////////////////////////////////// 1 4 this 3 503  
178 14 Dtool_8NZBc9Oe 0 4 209 473 0 14 Dtool_8NZBc9Oe 897 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::set_control_effect
//       Access: Published
//  Description: Sets the amount by which the character is affected by
//               the indicated AnimControl (and its associated
//               animation).  Normally, this will only be zero or one.
//               Zero indicates the animation does not affect the
//               character, and one means it does.
//
//               If the _anim_blend_flag is not false (see
//               set_anim_blend_flag()), it is possible to have
//               multiple AnimControls in effect simultaneously.  In
//               this case, the effect is a weight that indicates the
//               relative importance of each AnimControl to the final
//               animation.
//////////////////////////////////////////////////////////////////// 3 4 this 3 503  7 control 1 502  6 effect 1 480  
179 14 Dtool_8NZBSOyr 0 6 210 480 0 14 Dtool_8NZBSOyr 403 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::get_control_effect
//       Access: Published
//  Description: Returns the amount by which the character is affected
//               by the indicated AnimControl and its associated
//               animation.  See set_control_effect().
//////////////////////////////////////////////////////////////////// 2 4 this 3 560  7 control 1 502  
180 14 Dtool_8NZBGRkL 0 4 211 473 0 14 Dtool_8NZBGRkL 271 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::output
//       Access: Published, Virtual
//  Description: Writes a one-line description of the bundle.
//////////////////////////////////////////////////////////////////// 2 4 this 3 560  3 out 1 474  
181 14 Dtool_8NZBfmGJ 0 7 212 502 270 14 Dtool_8NZBfmGJ 1221 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::bind_anim
//       Access: Published
//  Description: Binds the animation to the bundle, if possible, and
//               returns a new AnimControl that can be used to start
//               and stop the animation.  If the anim hierarchy does
//               not match the part hierarchy, returns NULL.
//
//               If hierarchy_match_flags is 0, only an exact match is
//               accepted; otherwise, it may contain a union of
//               PartGroup::HierarchyMatchFlags values indicating
//               conditions that will be tolerated (but warnings will
//               still be issued).
//
//               If subset is specified, it restricts the binding only
//               to the named subtree of joints.
//
//               The AnimControl is not stored within the PartBundle;
//               it is the user's responsibility to maintain the
//               pointer.  The animation will automatically unbind
//               itself when the AnimControl destructs (i.e. its
//               reference count goes to zero).
//////////////////////////////////////////////////////////////////// 4 4 this 3 503  4 anim 1 481  21 hierarchy_match_flags 1 472  6 subset 1 546  
182 14 Dtool_8NZB9D6Q 0 7 212 502 270 14 Dtool_8NZB9D6Q 1221 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::bind_anim
//       Access: Published
//  Description: Binds the animation to the bundle, if possible, and
//               returns a new AnimControl that can be used to start
//               and stop the animation.  If the anim hierarchy does
//               not match the part hierarchy, returns NULL.
//
//               If hierarchy_match_flags is 0, only an exact match is
//               accepted; otherwise, it may contain a union of
//               PartGroup::HierarchyMatchFlags values indicating
//               conditions that will be tolerated (but warnings will
//               still be issued).
//
//               If subset is specified, it restricts the binding only
//               to the named subtree of joints.
//
//               The AnimControl is not stored within the PartBundle;
//               it is the user's responsibility to maintain the
//               pointer.  The animation will automatically unbind
//               itself when the AnimControl destructs (i.e. its
//               reference count goes to zero).
//////////////////////////////////////////////////////////////////// 3 4 this 3 503  4 anim 1 481  21 hierarchy_match_flags 1 472  
183 14 Dtool_8NZBesSx 0 7 212 502 270 14 Dtool_8NZBesSx 1221 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::bind_anim
//       Access: Published
//  Description: Binds the animation to the bundle, if possible, and
//               returns a new AnimControl that can be used to start
//               and stop the animation.  If the anim hierarchy does
//               not match the part hierarchy, returns NULL.
//
//               If hierarchy_match_flags is 0, only an exact match is
//               accepted; otherwise, it may contain a union of
//               PartGroup::HierarchyMatchFlags values indicating
//               conditions that will be tolerated (but warnings will
//               still be issued).
//
//               If subset is specified, it restricts the binding only
//               to the named subtree of joints.
//
//               The AnimControl is not stored within the PartBundle;
//               it is the user's responsibility to maintain the
//               pointer.  The animation will automatically unbind
//               itself when the AnimControl destructs (i.e. its
//               reference count goes to zero).
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  4 anim 1 481  
184 14 Dtool_8NZBq47d 0 7 213 502 270 14 Dtool_8NZBq47d 1614 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::load_bind_anim
//       Access: Published
//  Description: Binds an animation to the bundle.  The animation is
//               loaded from the disk via the indicated Loader object.
//               In other respects, this behaves similarly to
//               bind_anim(), with the addition of asynchronous
//               support.
//
//               If allow_aysnc is true, the load will be asynchronous
//               if possible.  This requires that the animation
//               basename can be found in the PartBundle's preload
//               table (see get_anim_preload()).
//
//               In an asynchronous load, the animation file will be
//               loaded and bound in a sub-thread.  This means that
//               the animation will not necessarily be available at
//               the time this method returns.  You may still use the
//               returned AnimControl immediately, though, but no
//               visible effect will occur until the animation
//               eventually becomes available.
//
//               You can test AnimControl::is_pending() to see if the
//               animation has been loaded yet, or wait for it to
//               finish with AnimControl::wait_pending() or even
//               PartBundle::wait_pending().  You can also set an
//               event to be triggered when the animation finishes
//               loading with AnimControl::set_pending_done_event().
//////////////////////////////////////////////////////////////////// 6 4 this 3 503  6 loader 1 557  8 filename 1 551  21 hierarchy_match_flags 1 472  6 subset 1 546  11 allow_async 1 492  
185 14 Dtool_8NZBZehs 0 4 214 473 0 14 Dtool_8NZBZehs 397 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::wait_pending
//       Access: Published
//  Description: Blocks the current thread until all currently-pending
//               AnimControls, with a nonzero control effect, have
//               been loaded and are properly bound.
//////////////////////////////////////////////////////////////////// 1 4 this 3 503  
186 14 Dtool_8NZB2fei 0 6 215 492 0 14 Dtool_8NZB2fei 693 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::freeze_joint
//       Access: Published
//  Description: Specifies that the joint with the indicated name
//               should be frozen with the specified transform.  It
//               will henceforth always hold this fixed transform,
//               regardless of any animations that may subsequently be
//               bound to the joint.
//
//               Returns true if the joint is successfully frozen, or
//               false if the named child is not a joint (or slider)
//               or does not exist.
//////////////////////////////////////////////////////////////////// 5 4 this 3 503  10 joint_name 1 469  3 pos 1 496  3 hpr 1 496  5 scale 1 496  
187 14 Dtool_8NZBOh7z 0 6 215 492 0 14 Dtool_8NZBOh7z 693 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::freeze_joint
//       Access: Published
//  Description: Specifies that the joint with the indicated name
//               should be frozen with the specified transform.  It
//               will henceforth always hold this fixed transform,
//               regardless of any animations that may subsequently be
//               bound to the joint.
//
//               Returns true if the joint is successfully frozen, or
//               false if the named child is not a joint (or slider)
//               or does not exist.
//////////////////////////////////////////////////////////////////// 3 4 this 3 503  10 joint_name 1 469  9 transform 1 493  
188 14 Dtool_8NZBQo4o 0 6 215 492 0 14 Dtool_8NZBQo4o 693 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::freeze_joint
//       Access: Published
//  Description: Specifies that the joint with the indicated name
//               should be frozen with the specified transform.  It
//               will henceforth always hold this fixed transform,
//               regardless of any animations that may subsequently be
//               bound to the joint.
//
//               Returns true if the joint is successfully frozen, or
//               false if the named child is not a joint (or slider)
//               or does not exist.
//////////////////////////////////////////////////////////////////// 3 4 this 3 503  10 joint_name 1 469  5 value 1 480  
189 14 Dtool_8NZBoboc 0 6 216 492 0 14 Dtool_8NZBoboc 714 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::control_joint
//       Access: Published
//  Description: Specifies that the joint with the indicated name
//               should be animated with the transform on the
//               indicated node.  It will henceforth always follow the
//               node's transform, regardless of any animations that
//               may subsequently be bound to the joint.
//
//               Returns true if the joint is successfully controlled,
//               or false if the named child is not a joint (or
//               slider) or does not exist.
//////////////////////////////////////////////////////////////////// 3 4 this 3 503  10 joint_name 1 469  4 node 1 488  
190 14 Dtool_8NZB_6LW 0 6 217 492 0 14 Dtool_8NZB_6LW 646 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::release_joint
//       Access: Published
//  Description: Releases the named joint from the effects of a
//               previous call to freeze_joint() or control_joint().
//               It will henceforth once again follow whatever
//               transforms are dictated by the animation.
//
//               Returns true if the joint is released, or false if
//               the named child was not previously controlled or
//               frozen, or it does not exist.
//////////////////////////////////////////////////////////////////// 2 4 this 3 503  10 joint_name 1 469  
191 14 Dtool_8NZBKsqa 0 6 218 492 0 14 Dtool_8NZBKsqa 482 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::update
//       Access: Published
//  Description: Updates all the parts in the bundle to reflect the
//               data for the current frame (as set in each of the
//               AnimControls).
//
//               Returns true if any part has changed as a result of
//               this, or false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 503  
192 14 Dtool_8NZB6YPx 0 6 219 492 0 14 Dtool_8NZB6YPx 375 ////////////////////////////////////////////////////////////////////
//     Function: PartBundle::force_update
//       Access: Published
//  Description: Updates all the parts in the bundle to reflect the
//               data for the current frame, whether we believe it
//               needs it or not.
//////////////////////////////////////////////////////////////////// 1 4 this 3 503  
193 14 Dtool_8NZB7Q2E 0 7 220 477 0 14 Dtool_8NZB7Q2E 0 0 
194 14 Dtool_8NZBTdB6 0 6 223 472 0 14 Dtool_8NZBTdB6 604 ////////////////////////////////////////////////////////////////////
//     Function: MovingPartBase::get_max_bound
//       Access: Published
//  Description: Returns the number of channels that might be bound to
//               this PartGroup.  This might not be the actual number
//               of channels, since there might be holes in the list;
//               it is one more than the index number of the highest
//               bound channel.  Thus, it is called get_max_bound()
//               instead of get_num_bound().
//////////////////////////////////////////////////////////////////// 1 4 this 3 563  
195 14 Dtool_8NZBY4V7 0 7 224 499 286 14 Dtool_8NZBY4V7 690 ////////////////////////////////////////////////////////////////////
//     Function: MovingPartBase::get_bound
//       Access: Published
//  Description: Returns the nth bound channel on this PartGroup.  n
//               can be determined by iterating from 0 to one less
//               than get_max_bound(); or n might be
//               AnimControl::get_channel_index().
//
//               This will return NULL if there is no channel bound on
//               the indicated index.  It is an error to call this if
//               n is less than zero or greater than or equal to
//               get_max_bound().
//////////////////////////////////////////////////////////////////// 2 4 this 3 563  1 n 1 472  
196 14 Dtool_8NZBunKd 0 4 225 473 0 14 Dtool_8NZBunKd 0 2 4 this 3 563  3 out 1 474  
197 14 Dtool_8NZBhPU6 0 7 226 477 0 14 Dtool_8NZBhPU6 0 0 
198 14 Dtool_8NZB56Kh 0 7 234 477 0 14 Dtool_8NZB56Kh 0 0 
199 14 Dtool_8NZB_XwN 0 7 230 477 0 14 Dtool_8NZB_XwN 0 0 
200 14 Dtool_8NZB9Cqq 0 7 231 512 0 14 Dtool_8NZB9Cqq 0 1 4 this 3 565  
201 14 Dtool_8NZBpgNw 0 7 232 512 0 14 Dtool_8NZBpgNw 0 1 4 this 3 565  
202 14 Dtool_8NZBOseE 0 7 241 477 0 14 Dtool_8NZBOseE 0 0 
203 14 Dtool_8NZBaeah 0 7 237 477 0 14 Dtool_8NZBaeah 0 0 
204 14 Dtool_8NZBjrS_ 0 6 238 480 0 14 Dtool_8NZBjrS_ 0 1 4 this 3 567  
205 14 Dtool_8NZBpo2D 0 6 239 480 0 14 Dtool_8NZBpo2D 0 1 4 this 3 567  
206 14 Dtool_8NZBiUxe 0 7 244 569 0 14 Dtool_8NZBiUxe 721 // Filename: partBundleHandle.I
// Created by:  drose (01Oct07)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PartBundleHandle::Constructor
//       Access: Published
//  Description: 
//////////////////////////////////////////////////////////////////// 1 6 bundle 1 503  
207 14 Dtool_8NZB5Mw5 0 7 245 503 410 14 Dtool_8NZB5Mw5 302 ////////////////////////////////////////////////////////////////////
//     Function: PartBundleHandle::get_bundle
//       Access: Published
//  Description: Returns the actual PartBundle embedded within the
//               handle.
//////////////////////////////////////////////////////////////////// 1 4 this 3 569  
208 14 Dtool_8NZBBXx_ 0 4 246 473 0 14 Dtool_8NZBBXx_ 302 ////////////////////////////////////////////////////////////////////
//     Function: PartBundleHandle::set_bundle
//       Access: Published
//  Description: Changes the actual PartBundle embedded within the
//               handle.
//////////////////////////////////////////////////////////////////// 2 4 this 3 569  6 bundle 1 503  
209 14 Dtool_8NZBWbFa 0 7 248 562 0 14 Dtool_8NZBWbFa 991 // Filename: partBundleNode.I
// Created by:  drose (06Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::Constructor
//       Access: Public
//  Description: The PartBundle and its node should be constructed
//               together.  Generally, the derived classes of
//               PartBundleNode will automatically create a PartBundle
//               of the appropriate type, and pass it up to this
//               constructor.
//////////////////////////////////////////////////////////////////// 2 4 name 1 469  6 bundle 1 503  
210 14 Dtool_8NZByDbo 0 6 249 472 0 14 Dtool_8NZByDbo 227 ////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::get_num_bundles
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 this 3 570  
211 14 Dtool_8NZBibzW 0 7 250 503 410 14 Dtool_8NZBibzW 222 ////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::get_bundle
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 2 4 this 3 570  1 n 1 472  
212 14 Dtool_8NZBILd9 0 7 251 569 0 14 Dtool_8NZBILd9 469 ////////////////////////////////////////////////////////////////////
//     Function: PartBundleNode::get_bundle_handle
//       Access: Public
//  Description: Returns the PartBundleHandle that wraps around the
//               actual nth PartBundle.  While the PartBundle pointer
//               might later change due to a future flatten operation,
//               the PartBundleHandle will not.
//////////////////////////////////////////////////////////////////// 2 4 this 3 570  1 n 1 472  
213 14 Dtool_8NZBGgiE 0 7 252 477 0 14 Dtool_8NZBGgiE 0 0 
214 14 Dtool_8NZBknU_ 0 4 171 473 0 14 Dtool_8NZBknU_ 480 ////////////////////////////////////////////////////////////////////
//     Function: auto_bind
//  Description: Walks the scene graph or subgraph beginning at the
//               indicated node, and attempts to bind any AnimBundles
//               found to their matching PartBundles, when possible.
//
//               The list of all resulting AnimControls created is
//               filled into controls.
//////////////////////////////////////////////////////////////////// 3 9 root_node 1 488  8 controls 1 539  21 hierarchy_match_flags 1 472  
215 14 Dtool_8NZBP30i 0 4 171 473 0 14 Dtool_8NZBP30i 480 ////////////////////////////////////////////////////////////////////
//     Function: auto_bind
//  Description: Walks the scene graph or subgraph beginning at the
//               indicated node, and attempts to bind any AnimBundles
//               found to their matching PartBundles, when possible.
//
//               The list of all resulting AnimControls created is
//               filled into controls.
//////////////////////////////////////////////////////////////////// 2 9 root_node 1 488  8 controls 1 539  
139
434 9 AnimGroup 0 26625 9 AnimGroup 9 AnimGroup 0 0 0 1 220 221 0 8 222 223 224 225 226 227 228 229 1 573 0 2 3 435 216 217 3 436 218 219 0 0 381
////////////////////////////////////////////////////////////////////
//       Class : AnimGroup
// Description : This is the base class for AnimChannel and
//               AnimBundle.  It implements a hierarchy of
//               AnimChannels.  The root of the hierarchy must be an
//               AnimBundle.
////////////////////////////////////////////////////////////////////

435 27 TypedWritableReferenceCount 0 2049 27 TypedWritableReferenceCount 27 TypedWritableReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 722
////////////////////////////////////////////////////////////////////
//       Class : TypedWritableReferenceCount
// Description : A base class for things which need to inherit from
//               both TypedWritable and from ReferenceCount.  It's
//               convenient to define this intermediate base class
//               instead of multiply inheriting from the two classes
//               each time they are needed, so that we can sensibly
//               pass around pointers to things which are both
//               TypedWritables and ReferenceCounters.
//               
//               See also TypedObject for detailed instructions.
////////////////////////////////////////////////////////////////////

436 7 Namable 0 2049 7 Namable 7 Namable 0 0 0 0 0 0 0 0 0 0 0 0 324
////////////////////////////////////////////////////////////////////
//       Class : Namable
// Description : A base class for all things which can have a name.
//               The name is either empty or nonempty, but it is never
//               NULL.
////////////////////////////////////////////////////////////////////

437 10 AnimBundle 0 141313 10 AnimBundle 10 AnimBundle 0 0 0 1 230 235 0 4 231 232 233 234 0 0 1 0 434 0 0 0 0 369
////////////////////////////////////////////////////////////////////
//       Class : AnimBundle
// Description : This is the root of an AnimChannel hierarchy.  It
//               knows the frame rate and number of frames of all the
//               channels in the hierarchy (which must all match).
////////////////////////////////////////////////////////////////////

438 14 AnimBundleNode 0 141313 14 AnimBundleNode 14 AnimBundleNode 0 0 0 1 236 240 0 3 237 238 239 0 0 1 0 439 0 0 0 0 373
////////////////////////////////////////////////////////////////////
//       Class : AnimBundleNode
// Description : This is a node that contains a pointer to an
//               AnimBundle.  Like PartBundleNode, it exists solely to
//               make it easy to store AnimBundles in the scene graph.
////////////////////////////////////////////////////////////////////

439 9 PandaNode 0 2049 9 PandaNode 9 PandaNode 0 0 0 0 0 0 0 0 0 0 0 0 374
////////////////////////////////////////////////////////////////////
//       Class : PandaNode
// Description : A basic node of the scene graph or data graph.  This
//               is the base class of all specialized nodes, and also
//               serves as a generic node with no special properties.
////////////////////////////////////////////////////////////////////

440 9 PartGroup 0 26625 9 PartGroup 9 PartGroup 0 0 0 1 245 246 0 17 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 1 574 0 2 3 435 241 242 3 436 243 244 0 1 441 290
////////////////////////////////////////////////////////////////////
//       Class : PartGroup
// Description : This is the base class for PartRoot and
//               MovingPart.  It defines a hierarchy of MovingParts.
////////////////////////////////////////////////////////////////////

441 19 HierarchyMatchFlags 0 794624 30 PartGroup::HierarchyMatchFlags 30 PartGroup::HierarchyMatchFlags 440 0 0 0 0 0 0 0 0 0 3 17 HMF_ok_part_extra 28 PartGroup::HMF_ok_part_extra 1 17 HMF_ok_anim_extra 28 PartGroup::HMF_ok_anim_extra 2 22 HMF_ok_wrong_root_name 33 PartGroup::HMF_ok_wrong_root_name 4 0 218
// This enum defines bits which may be passed into check_hierarchy()
// and PartBundle::bind_anim() to allow an inexact match of channel
// hierarchies.  This specifies conditions that we don't care about
// enforcing.

442 11 AnimControl 0 26625 11 AnimControl 11 AnimControl 0 0 0 0 270 0 13 271 272 273 274 275 276 277 278 279 280 281 282 283 0 0 3 3 443 264 265 3 444 266 267 3 436 268 269 0 0 487
////////////////////////////////////////////////////////////////////
//       Class : AnimControl
// Description : Controls the timing of a character animation.  An
//               AnimControl object is created for each
//               character/bundle binding and manages the state of the
//               animation: whether started, stopped, or looping, and
//               the current frame number and play rate.
////////////////////////////////////////////////////////////////////

443 19 TypedReferenceCount 0 2049 19 TypedReferenceCount 19 TypedReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 710
////////////////////////////////////////////////////////////////////
//       Class : TypedReferenceCount
// Description : A base class for things which need to inherit from
//               both TypedObject and from ReferenceCount.  It's
//               convenient to define this intermediate base class
//               instead of multiply inheriting from the two classes
//               each time they are needed, so that we can sensibly
//               pass around pointers to things which are both
//               TypedObjects and ReferenceCounters.
//               
//               See also TypedObject for detailed instructions.
////////////////////////////////////////////////////////////////////

444 13 AnimInterface 0 2049 13 AnimInterface 13 AnimInterface 0 0 0 0 0 0 0 0 0 0 0 0 464
////////////////////////////////////////////////////////////////////
//       Class : AnimInterface
// Description : This is the fundamental interface for things that
//               have a play/loop/stop type interface for frame-based
//               animation, such as animated characters.  This is the
//               base class for AnimControl and other, similar
//               classes.
////////////////////////////////////////////////////////////////////

445 15 AnimChannelBase 0 141313 15 AnimChannelBase 15 AnimChannelBase 0 0 0 0 286 0 2 284 285 0 0 1 0 434 0 0 0 0 489
////////////////////////////////////////////////////////////////////
//       Class : AnimChannelBase
// Description : Parent class for all animation channels.  An
//               AnimChannel is an arbitrary function that changes
//               over time (actually, over frames), usually defined by
//               a table read from an egg file (but possibly computed
//               or generated in any other way).
////////////////////////////////////////////////////////////////////

446 17 AnimChannelMatrix 0 75777 33 AnimChannel< ACMatrixSwitchType > 33 AnimChannel< ACMatrixSwitchType > 0 0 0 0 286 0 9 287 288 289 290 291 292 293 294 295 0 0 1 0 445 0 0 0 0 0

447 17 AnimChannelScalar 0 75777 33 AnimChannel< ACScalarSwitchType > 33 AnimChannel< ACScalarSwitchType > 0 0 0 0 286 0 9 296 297 298 299 300 301 302 303 304 0 0 1 0 445 0 0 0 0 0

448 24 AnimChannelMatrixDynamic 0 141313 24 AnimChannelMatrixDynamic 24 AnimChannelMatrixDynamic 0 0 0 0 310 0 5 305 306 307 308 309 0 0 1 0 446 0 0 0 0 683
////////////////////////////////////////////////////////////////////
//       Class : AnimChannelMatrixDynamic
// Description : An animation channel that accepts a matrix each frame
//               from some dynamic input provided by code.
//
//               This object operates in two modes: in explicit mode,
//               the programmer should call set_value() each frame to
//               indicate the new value; in implicit mode, the
//               programmer should call set_value_node() to indicate
//               the node whose transform will be copied to the joint
//               each frame.
////////////////////////////////////////////////////////////////////

449 25 AnimChannelMatrixXfmTable 0 75777 25 AnimChannelMatrixXfmTable 25 AnimChannelMatrixXfmTable 0 0 0 1 311 286 0 7 312 313 314 315 316 317 318 0 0 1 0 446 0 0 0 0 509
////////////////////////////////////////////////////////////////////
//       Class : AnimChannelMatrixXfmTable
// Description : An animation channel that issues a matrix each frame,
//               read from a table such as might have been read from
//               an egg file.  The table actually consists of nine
//               sub-tables, each representing one component of the
//               transform: scale, rotate, translate.
////////////////////////////////////////////////////////////////////

450 24 AnimChannelScalarDynamic 0 141313 24 AnimChannelScalarDynamic 24 AnimChannelScalarDynamic 0 0 0 0 322 0 3 319 320 321 0 0 1 0 447 0 0 0 0 686
////////////////////////////////////////////////////////////////////
//       Class : AnimChannelScalarDynamic
// Description : An animation channel that accepts a scalar each frame
//               from some dynamic input provided by code.
//
//               This object operates in two modes: in explicit mode,
//               the programmer should call set_value() each frame to
//               indicate the new value; in implicit mode, the
//               programmer should call set_value_node() to indicate
//               the node whose X component will be copied to the
//               scalar each frame.
////////////////////////////////////////////////////////////////////

451 22 AnimChannelScalarTable 0 141313 22 AnimChannelScalarTable 22 AnimChannelScalarTable 0 0 0 0 328 0 5 323 324 325 326 327 0 0 1 0 447 0 0 0 0 347
////////////////////////////////////////////////////////////////////
//       Class : AnimChannelScalarTable
// Description : An animation channel that issues a scalar each frame,
//               read from a table such as might have been read from
//               an egg file.
////////////////////////////////////////////////////////////////////

452 21 AnimControlCollection 0 26625 21 AnimControlCollection 21 AnimControlCollection 0 0 0 1 329 330 0 21 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 2 575 576 0 0 0 0 628
////////////////////////////////////////////////////////////////////
//       Class : AnimControlCollection
// Description : This is a named collection of AnimControl pointers.
//               An AnimControl may be added to the collection by
//               name.  While an AnimControl is associated, its
//               reference count is maintained; associating a new
//               AnimControl with the same name will decrement the
//               previous control's reference count (and possibly
//               delete it, unbinding its animation).
////////////////////////////////////////////////////////////////////

453 16 AnimPreloadTable 0 75777 16 AnimPreloadTable 16 AnimPreloadTable 0 0 0 1 352 0 0 12 353 354 355 356 357 358 359 360 361 362 363 364 0 0 1 0 454 0 0 0 0 514
////////////////////////////////////////////////////////////////////
//       Class : AnimPreloadTable
// Description : This table records data about a list of animations
//               for a particular model, such as number of frames and
//               frame rate.  It's used for implementating
//               asynchronous binding.
//
//               This table is normally built by an offline tool, such
//               as egg-optchar.
////////////////////////////////////////////////////////////////////

454 17 CopyOnWriteObject 0 2049 17 CopyOnWriteObject 17 CopyOnWriteObject 0 0 0 0 0 0 0 0 0 0 0 0 376
////////////////////////////////////////////////////////////////////
//       Class : CopyOnWriteObject
// Description : This base class provides basic reference counting,
//               but also can be used with a CopyOnWritePointer to
//               provide get_read_pointer() and get_write_pointer().
////////////////////////////////////////////////////////////////////

455 10 PartSubset 0 141313 10 PartSubset 10 PartSubset 0 0 0 1 366 375 0 8 367 368 369 370 371 372 373 374 0 0 0 0 0 406
////////////////////////////////////////////////////////////////////
//       Class : PartSubset
// Description : This class is used to define a subset of part names
//               to apply to the PartBundle::bind_anim() operation.
//               Only those part names within the subset will be
//               included in the bind.
////////////////////////////////////////////////////////////////////

456 15 BindAnimRequest 0 141313 15 BindAnimRequest 15 BindAnimRequest 0 0 0 1 376 378 0 1 377 0 0 1 0 457 0 0 0 0 344
////////////////////////////////////////////////////////////////////
//       Class : BindAnimRequest
// Description : This class object manages an asynchronous
//               load-and-bind animation request, as issued through
//               PartBundle::load_bind_anim().
////////////////////////////////////////////////////////////////////

457 16 ModelLoadRequest 0 2049 16 ModelLoadRequest 16 ModelLoadRequest 0 0 0 0 0 0 0 0 0 0 0 0 415
////////////////////////////////////////////////////////////////////
//       Class : ModelLoadRequest
// Description : A class object that manages a single asynchronous
//               model load request.  Create a new ModelLoadRequest,
//               and add it to the loader via load_async(), to begin
//               an asynchronous load.
////////////////////////////////////////////////////////////////////

458 10 PartBundle 0 141313 10 PartBundle 10 PartBundle 0 0 0 1 379 410 0 30 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 1 577 0 1 0 440 0 0 0 1 459 337
////////////////////////////////////////////////////////////////////
//       Class : PartBundle
// Description : This is the root of a MovingPart hierarchy.  It
//               defines the hierarchy of moving parts that make up an
//               animatable object.
////////////////////////////////////////////////////////////////////

459 9 BlendType 0 794624 21 PartBundle::BlendType 21 PartBundle::BlendType 458 0 0 0 0 0 0 0 0 0 4 9 BT_linear 21 PartBundle::BT_linear 0 20 BT_normalized_linear 32 PartBundle::BT_normalized_linear 1 16 BT_componentwise 28 PartBundle::BT_componentwise 2 21 BT_componentwise_quat 33 PartBundle::BT_componentwise_quat 3 0 240
// This is the parameter to set_blend_type() and specifies the kind
// of blending operation to be performed when multiple controls are
// in effect simultaneously (see set_control_effect()) or between
// sequential frames of the animation.

460 14 MovingPartBase 0 141313 14 MovingPartBase 14 MovingPartBase 0 0 0 0 415 0 4 411 412 413 414 0 0 1 0 440 0 0 0 0 580
////////////////////////////////////////////////////////////////////
//       Class : MovingPartBase
// Description : This is the base class for a single animatable piece
//               that may be bound to one channel (or more, if
//               blending is in effect).  It corresponds to, for
//               instance, a single joint or slider of a character.
//
//               MovingPartBase does not have a particular value type.
//               See the derived template class, MovingPart, for this.
////////////////////////////////////////////////////////////////////

461 16 MovingPartMatrix 0 75777 16 MovingPartMatrix 16 MovingPartMatrix 0 0 0 0 419 0 1 420 0 0 1 0 462 0 0 0 0 279
////////////////////////////////////////////////////////////////////
//       Class : MovingPartMatrix
// Description : This is a particular kind of MovingPart that accepts
//               a matrix each frame.
////////////////////////////////////////////////////////////////////

462 32 MovingPart< ACMatrixSwitchType > 0 141313 32 MovingPart< ACMatrixSwitchType > 32 MovingPart< ACMatrixSwitchType > 0 0 0 0 419 0 3 416 417 418 0 0 1 0 460 0 0 0 0 0

463 16 MovingPartScalar 0 75777 16 MovingPartScalar 16 MovingPartScalar 0 0 0 0 424 0 1 425 0 0 1 0 464 0 0 0 0 279
////////////////////////////////////////////////////////////////////
//       Class : MovingPartScalar
// Description : This is a particular kind of MovingPart that accepts
//               a scalar each frame.
////////////////////////////////////////////////////////////////////

464 32 MovingPart< ACScalarSwitchType > 0 141313 32 MovingPart< ACScalarSwitchType > 32 MovingPart< ACScalarSwitchType > 0 0 0 0 424 0 3 421 422 423 0 0 1 0 460 0 0 0 0 0

465 16 PartBundleHandle 0 75777 16 PartBundleHandle 16 PartBundleHandle 0 0 0 1 426 0 0 2 427 428 0 0 1 0 466 0 0 0 0 890
////////////////////////////////////////////////////////////////////
//       Class : PartBundleHandle
// Description : This is a trivial class returned by
//               PartBundleNode::get_bundle().  Its purpose is to hold
//               the actual PartBundle pointer contained within the
//               PartBundleNode, so that scene graph flatten
//               operations can safely combine or duplicate
//               PartBundles as necessary without affecting high-level
//               bundle operations.
//
//               The high-level Actor class defined in
//               direct/src/actor, for instance, will store a list of
//               PartBundleHandles instead of on actual PartBundles,
//               so that it will be immune to changes from these
//               flatten operations.
////////////////////////////////////////////////////////////////////

466 14 ReferenceCount 0 2049 14 ReferenceCount 14 ReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 425
////////////////////////////////////////////////////////////////////
//       Class : ReferenceCount
// Description : A base class for all things that want to be
//               reference-counted.  ReferenceCount works in
//               conjunction with PointerTo to automatically delete
//               objects when the last pointer to them goes away.
////////////////////////////////////////////////////////////////////

467 14 PartBundleNode 0 75777 14 PartBundleNode 14 PartBundleNode 0 0 0 1 429 0 0 4 430 431 432 433 2 578 579 0 1 0 439 0 0 0 0 605
////////////////////////////////////////////////////////////////////
//       Class : PartBundleNode
// Description : This is a node that contains a pointer to an
//               PartBundle.  Like AnimBundleNode, it exists to make
//               it easy to store PartBundles in the scene graph.
//
//               (Unlike AnimBundleNode, however, PartBundleNode has
//               an additional function: it is also the base class of
//               the Character node type, which adds additional
//               functionality.)
////////////////////////////////////////////////////////////////////

468 11 AnimGroup * 0 8576 11 AnimGroup * 11 AnimGroup * 0 0 434 0 0 0 0 0 0 0 0 0 0

469 13 atomic string 0 2 13 atomic string 13 atomic string 0 7 0 0 0 0 0 0 0 0 0 0 0

470 17 AnimGroup const * 0 8576 17 AnimGroup const * 17 AnimGroup const * 0 0 471 0 0 0 0 0 0 0 0 0 0

471 15 AnimGroup const 0 8832 15 AnimGroup const 15 AnimGroup const 0 0 434 0 0 0 0 0 0 0 0 0 0

472 3 int 0 8194 3 int 3 int 0 1 0 0 0 0 0 0 0 0 0 0 0

473 4 void 0 8194 4 void 4 void 0 6 0 0 0 0 0 0 0 0 0 0 0

474 9 ostream * 0 8576 9 ostream * 9 ostream * 0 0 475 0 0 0 0 0 0 0 0 0 0

475 7 ostream 0 2048 7 ostream 7 ostream 0 0 0 0 0 0 0 0 0 0 0 0 0

476 10 TypeHandle 0 2048 10 TypeHandle 10 TypeHandle 0 0 0 0 0 0 0 0 0 0 0 0 1098
////////////////////////////////////////////////////////////////////
//       Class : TypeHandle
// Description : TypeHandle is the identifier used to differentiate
//               C++ class types.  Any C++ classes that inherit from
//               some base class, and must be differentiated at run
//               time, should store a static TypeHandle object that
//               can be queried through a static member function
//               named get_class_type().  Most of the time, it is also
//               desirable to inherit from TypedObject, which provides
//               some virtual functions to return the TypeHandle for a
//               particular instance.
//
//               At its essence, a TypeHandle is simply a unique
//               identifier that is assigned by the TypeRegistry.  The
//               TypeRegistry stores a tree of TypeHandles, so that
//               ancestry of a particular type may be queried, and the
//               type name may be retrieved for run-time display.
////////////////////////////////////////////////////////////////////

477 12 TypeHandle * 0 8576 12 TypeHandle * 12 TypeHandle * 0 0 476 0 0 0 0 0 0 0 0 0 0

478 29 TypedWritableReferenceCount * 0 8576 29 TypedWritableReferenceCount * 29 TypedWritableReferenceCount * 0 0 435 0 0 0 0 0 0 0 0 0 0

479 9 Namable * 0 8576 9 Namable * 9 Namable * 0 0 436 0 0 0 0 0 0 0 0 0 0

480 5 float 0 8194 5 float 5 float 0 2 0 0 0 0 0 0 0 0 0 0 0

481 12 AnimBundle * 0 8576 12 AnimBundle * 12 AnimBundle * 0 0 437 0 0 0 0 0 0 0 0 0 0

482 18 AnimBundle const * 0 8576 18 AnimBundle const * 18 AnimBundle const * 0 0 483 0 0 0 0 0 0 0 0 0 0

483 16 AnimBundle const 0 8832 16 AnimBundle const 16 AnimBundle const 0 0 437 0 0 0 0 0 0 0 0 0 0

484 6 double 0 8194 6 double 6 double 0 3 0 0 0 0 0 0 0 0 0 0 0

485 16 AnimBundleNode * 0 8576 16 AnimBundleNode * 16 AnimBundleNode * 0 0 438 0 0 0 0 0 0 0 0 0 0

486 22 AnimBundleNode const * 0 8576 22 AnimBundleNode const * 22 AnimBundleNode const * 0 0 487 0 0 0 0 0 0 0 0 0 0

487 20 AnimBundleNode const 0 8832 20 AnimBundleNode const 20 AnimBundleNode const 0 0 438 0 0 0 0 0 0 0 0 0 0

488 11 PandaNode * 0 8576 11 PandaNode * 11 PandaNode * 0 0 439 0 0 0 0 0 0 0 0 0 0

489 11 PartGroup * 0 8576 11 PartGroup * 11 PartGroup * 0 0 440 0 0 0 0 0 0 0 0 0 0

490 17 PartGroup const * 0 8576 17 PartGroup const * 17 PartGroup const * 0 0 491 0 0 0 0 0 0 0 0 0 0

491 15 PartGroup const 0 8832 15 PartGroup const 15 PartGroup const 0 0 440 0 0 0 0 0 0 0 0 0 0

492 4 bool 0 8194 4 bool 4 bool 0 4 0 0 0 0 0 0 0 0 0 0 0

493 22 TransformState const * 0 8576 22 TransformState const * 22 TransformState const * 0 0 494 0 0 0 0 0 0 0 0 0 0

494 20 TransformState const 0 8832 20 TransformState const 20 TransformState const 0 0 495 0 0 0 0 0 0 0 0 0 0

495 14 TransformState 0 2048 14 TransformState 14 TransformState 0 0 0 0 0 0 0 0 0 0 0 0 1138
////////////////////////////////////////////////////////////////////
//       Class : TransformState
// Description : Indicates a coordinate-system transform on vertices.
//               TransformStates are the primary means for storing
//               transformations on the scene graph.
//
//               Transforms may be specified in one of two ways:
//               componentwise, with a pos-hpr-scale, or with an
//               arbitrary transform matrix.  If you specify a
//               transform componentwise, it will remember its
//               original components.
//
//               TransformState objects are managed very much like
//               RenderState objects.  They are immutable and
//               reference-counted automatically.
//
//               You should not attempt to create or modify a
//               TransformState object directly.  Instead, call one of
//               the make() functions to create one for you.  And
//               instead of modifying a TransformState object, create a
//               new one.
////////////////////////////////////////////////////////////////////

496 18 LVecBase3f const * 0 8576 18 LVecBase3f const * 18 LVecBase3f const * 0 0 497 0 0 0 0 0 0 0 0 0 0

497 16 LVecBase3f const 0 8832 16 LVecBase3f const 16 LVecBase3f const 0 0 498 0 0 0 0 0 0 0 0 0 0

498 10 LVecBase3f 0 2048 10 LVecBase3f 10 LVecBase3f 0 0 0 0 0 0 0 0 0 0 0 0 754
// Filename: lvecBase3_src.h
// Created by:  drose (08Mar00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LVecBase3
// Description : This is the base class for all three-component
//               vectors and points.
////////////////////////////////////////////////////////////////////

499 17 AnimChannelBase * 0 8576 17 AnimChannelBase * 17 AnimChannelBase * 0 0 445 0 0 0 0 0 0 0 0 0 0

500 19 AnimControl const * 0 8576 19 AnimControl const * 19 AnimControl const * 0 0 501 0 0 0 0 0 0 0 0 0 0

501 17 AnimControl const 0 8832 17 AnimControl const 17 AnimControl const 0 0 442 0 0 0 0 0 0 0 0 0 0

502 13 AnimControl * 0 8576 13 AnimControl * 13 AnimControl * 0 0 442 0 0 0 0 0 0 0 0 0 0

503 12 PartBundle * 0 8576 12 PartBundle * 12 PartBundle * 0 0 458 0 0 0 0 0 0 0 0 0 0

504 16 BitArray const * 0 8576 16 BitArray const * 16 BitArray const * 0 0 505 0 0 0 0 0 0 0 0 0 0

505 14 BitArray const 0 8832 14 BitArray const 14 BitArray const 0 0 506 0 0 0 0 0 0 0 0 0 0

506 8 BitArray 0 2048 8 BitArray 8 BitArray 0 0 0 0 0 0 0 0 0 0 0 0 425
////////////////////////////////////////////////////////////////////
//       Class : BitArray
// Description : A dynamic array with an unlimited number of bits.
//
//               This is similar to a BitMask, except it appears to
//               contain an infinite number of bits.  You can use it
//               very much as you would use a BitMask.
////////////////////////////////////////////////////////////////////

507 21 TypedReferenceCount * 0 8576 21 TypedReferenceCount * 21 TypedReferenceCount * 0 0 443 0 0 0 0 0 0 0 0 0 0

508 15 AnimInterface * 0 8576 15 AnimInterface * 15 AnimInterface * 0 0 444 0 0 0 0 0 0 0 0 0 0

509 23 AnimChannelBase const * 0 8576 23 AnimChannelBase const * 23 AnimChannelBase const * 0 0 510 0 0 0 0 0 0 0 0 0 0

510 21 AnimChannelBase const 0 8832 21 AnimChannelBase const 21 AnimChannelBase const 0 0 445 0 0 0 0 0 0 0 0 0 0

511 35 AnimChannel< ACMatrixSwitchType > * 0 8576 35 AnimChannel< ACMatrixSwitchType > * 35 AnimChannel< ACMatrixSwitchType > * 0 0 446 0 0 0 0 0 0 0 0 0 0

512 11 LMatrix4f * 0 8576 11 LMatrix4f * 11 LMatrix4f * 0 0 513 0 0 0 0 0 0 0 0 0 0

513 9 LMatrix4f 0 2048 9 LMatrix4f 9 LMatrix4f 0 0 0 0 0 0 0 3 580 581 582 0 0 0 0 215
////////////////////////////////////////////////////////////////////
//       Class : LMatrix4
// Description : This is a 4-by-4 transform matrix.
////////////////////////////////////////////////////////////////////

514 12 LVecBase3f * 0 8576 12 LVecBase3f * 12 LVecBase3f * 0 0 498 0 0 0 0 0 0 0 0 0 0

515 14 LQuaternionf * 0 8576 14 LQuaternionf * 14 LQuaternionf * 0 0 516 0 0 0 0 0 0 0 0 0 0

516 12 LQuaternionf 0 2048 12 LQuaternionf 12 LQuaternionf 0 0 0 0 0 0 0 0 0 0 0 0 719
// Filename: lquaternion_src.h
// Created by:  frang (06Jun00)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : FLOATNAME(LQuaternion)
// Description : This is the base quaternion class
////////////////////////////////////////////////////////////////////

517 41 AnimChannel< ACMatrixSwitchType > const * 0 8576 41 AnimChannel< ACMatrixSwitchType > const * 41 AnimChannel< ACMatrixSwitchType > const * 0 0 518 0 0 0 0 0 0 0 0 0 0

518 39 AnimChannel< ACMatrixSwitchType > const 0 8832 39 AnimChannel< ACMatrixSwitchType > const 39 AnimChannel< ACMatrixSwitchType > const 0 0 446 0 0 0 0 0 0 0 0 0 0

519 35 AnimChannel< ACScalarSwitchType > * 0 8576 35 AnimChannel< ACScalarSwitchType > * 35 AnimChannel< ACScalarSwitchType > * 0 0 447 0 0 0 0 0 0 0 0 0 0

520 41 AnimChannel< ACScalarSwitchType > const * 0 8576 41 AnimChannel< ACScalarSwitchType > const * 41 AnimChannel< ACScalarSwitchType > const * 0 0 521 0 0 0 0 0 0 0 0 0 0

521 39 AnimChannel< ACScalarSwitchType > const 0 8832 39 AnimChannel< ACScalarSwitchType > const 39 AnimChannel< ACScalarSwitchType > const 0 0 447 0 0 0 0 0 0 0 0 0 0

522 26 AnimChannelMatrixDynamic * 0 8576 26 AnimChannelMatrixDynamic * 26 AnimChannelMatrixDynamic * 0 0 448 0 0 0 0 0 0 0 0 0 0

523 17 LMatrix4f const * 0 8576 17 LMatrix4f const * 17 LMatrix4f const * 0 0 524 0 0 0 0 0 0 0 0 0 0

524 15 LMatrix4f const 0 8832 15 LMatrix4f const 15 LMatrix4f const 0 0 513 0 0 0 0 0 0 0 0 0 0

525 32 AnimChannelMatrixDynamic const * 0 8576 32 AnimChannelMatrixDynamic const * 32 AnimChannelMatrixDynamic const * 0 0 526 0 0 0 0 0 0 0 0 0 0

526 30 AnimChannelMatrixDynamic const 0 8832 30 AnimChannelMatrixDynamic const 30 AnimChannelMatrixDynamic const 0 0 448 0 0 0 0 0 0 0 0 0 0

527 27 AnimChannelMatrixXfmTable * 0 8576 27 AnimChannelMatrixXfmTable * 27 AnimChannelMatrixXfmTable * 0 0 449 0 0 0 0 0 0 0 0 0 0

528 4 char 0 8194 4 char 4 char 0 5 0 0 0 0 0 0 0 0 0 0 0

529 36 ConstPointerToArray< float > const * 0 8576 36 ConstPointerToArray< float > const * 36 ConstPointerToArray< float > const * 0 0 530 0 0 0 0 0 0 0 0 0 0

530 34 ConstPointerToArray< float > const 0 8832 34 ConstPointerToArray< float > const 34 ConstPointerToArray< float > const 0 0 531 0 0 0 0 0 0 0 0 0 0

531 10 CPTA_float 0 2048 28 ConstPointerToArray< float > 28 ConstPointerToArray< float > 0 0 0 0 0 0 0 0 0 0 0 0 0

532 33 AnimChannelMatrixXfmTable const * 0 8576 33 AnimChannelMatrixXfmTable const * 33 AnimChannelMatrixXfmTable const * 0 0 533 0 0 0 0 0 0 0 0 0 0

533 31 AnimChannelMatrixXfmTable const 0 8832 31 AnimChannelMatrixXfmTable const 31 AnimChannelMatrixXfmTable const 0 0 449 0 0 0 0 0 0 0 0 0 0

534 30 ConstPointerToArray< float > * 0 8576 30 ConstPointerToArray< float > * 30 ConstPointerToArray< float > * 0 0 531 0 0 0 0 0 0 0 0 0 0

535 26 AnimChannelScalarDynamic * 0 8576 26 AnimChannelScalarDynamic * 26 AnimChannelScalarDynamic * 0 0 450 0 0 0 0 0 0 0 0 0 0

536 24 AnimChannelScalarTable * 0 8576 24 AnimChannelScalarTable * 24 AnimChannelScalarTable * 0 0 451 0 0 0 0 0 0 0 0 0 0

537 30 AnimChannelScalarTable const * 0 8576 30 AnimChannelScalarTable const * 30 AnimChannelScalarTable const * 0 0 538 0 0 0 0 0 0 0 0 0 0

538 28 AnimChannelScalarTable const 0 8832 28 AnimChannelScalarTable const 28 AnimChannelScalarTable const 0 0 451 0 0 0 0 0 0 0 0 0 0

539 23 AnimControlCollection * 0 8576 23 AnimControlCollection * 23 AnimControlCollection * 0 0 452 0 0 0 0 0 0 0 0 0 0

540 29 AnimControlCollection const * 0 8576 29 AnimControlCollection const * 29 AnimControlCollection const * 0 0 541 0 0 0 0 0 0 0 0 0 0

541 27 AnimControlCollection const 0 8832 27 AnimControlCollection const 27 AnimControlCollection const 0 0 452 0 0 0 0 0 0 0 0 0 0

542 18 AnimPreloadTable * 0 8576 18 AnimPreloadTable * 18 AnimPreloadTable * 0 0 453 0 0 0 0 0 0 0 0 0 0

543 24 AnimPreloadTable const * 0 8576 24 AnimPreloadTable const * 24 AnimPreloadTable const * 0 0 544 0 0 0 0 0 0 0 0 0 0

544 22 AnimPreloadTable const 0 8832 22 AnimPreloadTable const 22 AnimPreloadTable const 0 0 453 0 0 0 0 0 0 0 0 0 0

545 12 PartSubset * 0 8576 12 PartSubset * 12 PartSubset * 0 0 455 0 0 0 0 0 0 0 0 0 0

546 18 PartSubset const * 0 8576 18 PartSubset const * 18 PartSubset const * 0 0 547 0 0 0 0 0 0 0 0 0 0

547 16 PartSubset const 0 8832 16 PartSubset const 16 PartSubset const 0 0 455 0 0 0 0 0 0 0 0 0 0

548 19 GlobPattern const * 0 8576 19 GlobPattern const * 19 GlobPattern const * 0 0 549 0 0 0 0 0 0 0 0 0 0

549 17 GlobPattern const 0 8832 17 GlobPattern const 17 GlobPattern const 0 0 550 0 0 0 0 0 0 0 0 0 0

550 11 GlobPattern 0 2048 11 GlobPattern 11 GlobPattern 0 0 0 0 0 0 0 0 0 0 0 0 859
////////////////////////////////////////////////////////////////////
//       Class : GlobPattern
// Description : This class can be used to test for string matches
//               against standard Unix-shell filename globbing
//               conventions.  It serves as a portable standin for the
//               Posix fnmatch() call.
//
//               A GlobPattern is given a pattern string, which can
//               contain operators like *, ?, and [].  Then it can be
//               tested against any number of candidate strings; for
//               each candidate, it will indicate whether the string
//               matches the pattern or not.  It can be used, for
//               example, to scan a directory for all files matching a
//               particular pattern.
////////////////////////////////////////////////////////////////////

551 16 Filename const * 0 8576 16 Filename const * 16 Filename const * 0 0 552 0 0 0 0 0 0 0 0 0 0

552 14 Filename const 0 8832 14 Filename const 14 Filename const 0 0 553 0 0 0 0 0 0 0 0 0 0

553 8 Filename 0 2048 8 Filename 8 Filename 0 0 0 0 0 0 0 0 0 0 0 0 869
////////////////////////////////////////////////////////////////////
//       Class : Filename
// Description : The name of a file, such as a texture file or an Egg
//               file.  Stores the full pathname, and includes
//               functions for extracting out the directory prefix
//               part and the file extension and stuff.
//
//               A Filename is also aware of the mapping between the
//               Unix-like filename convention we use internally, and
//               the local OS's specific filename convention, and it
//               knows how to perform basic OS-specific I/O, like
//               testing for file existence and searching a
//               searchpath, as well as the best way to open an
//               fstream for reading or writing.
////////////////////////////////////////////////////////////////////

554 21 LoaderOptions const * 0 8576 21 LoaderOptions const * 21 LoaderOptions const * 0 0 555 0 0 0 0 0 0 0 0 0 0

555 19 LoaderOptions const 0 8832 19 LoaderOptions const 19 LoaderOptions const 0 0 556 0 0 0 0 0 0 0 0 0 0

556 13 LoaderOptions 0 2048 13 LoaderOptions 13 LoaderOptions 0 0 0 0 0 0 0 0 0 0 0 0 257
////////////////////////////////////////////////////////////////////
//       Class : LoaderOptions
// Description : Specifies parameters that may be passed to the
//               loader.
////////////////////////////////////////////////////////////////////

557 8 Loader * 0 8576 8 Loader * 8 Loader * 0 0 558 0 0 0 0 0 0 0 0 0 0

558 6 Loader 0 2048 6 Loader 6 Loader 0 0 0 0 0 0 0 0 0 0 0 0 819
////////////////////////////////////////////////////////////////////
//       Class : Loader
// Description : A convenient class for loading models from disk, in
//               bam or egg format (or any of a number of other
//               formats implemented by a LoaderFileType, such as
//               ptloader).
//
//               This class supports synchronous as well as
//               asynchronous loading.  In asynchronous loading, the
//               model is loaded in the background by a thread, and an
//               event will be generated when the model is available.
//               If threading is not available, the asynchronous
//               loading interface may be used, but it loads
//               synchronously.
////////////////////////////////////////////////////////////////////

559 17 BindAnimRequest * 0 8576 17 BindAnimRequest * 17 BindAnimRequest * 0 0 456 0 0 0 0 0 0 0 0 0 0

560 18 PartBundle const * 0 8576 18 PartBundle const * 18 PartBundle const * 0 0 561 0 0 0 0 0 0 0 0 0 0

561 16 PartBundle const 0 8832 16 PartBundle const 16 PartBundle const 0 0 458 0 0 0 0 0 0 0 0 0 0

562 16 PartBundleNode * 0 8576 16 PartBundleNode * 16 PartBundleNode * 0 0 467 0 0 0 0 0 0 0 0 0 0

563 22 MovingPartBase const * 0 8576 22 MovingPartBase const * 22 MovingPartBase const * 0 0 564 0 0 0 0 0 0 0 0 0 0

564 20 MovingPartBase const 0 8832 20 MovingPartBase const 20 MovingPartBase const 0 0 460 0 0 0 0 0 0 0 0 0 0

565 40 MovingPart< ACMatrixSwitchType > const * 0 8576 40 MovingPart< ACMatrixSwitchType > const * 40 MovingPart< ACMatrixSwitchType > const * 0 0 566 0 0 0 0 0 0 0 0 0 0

566 38 MovingPart< ACMatrixSwitchType > const 0 8832 38 MovingPart< ACMatrixSwitchType > const 38 MovingPart< ACMatrixSwitchType > const 0 0 462 0 0 0 0 0 0 0 0 0 0

567 40 MovingPart< ACScalarSwitchType > const * 0 8576 40 MovingPart< ACScalarSwitchType > const * 40 MovingPart< ACScalarSwitchType > const * 0 0 568 0 0 0 0 0 0 0 0 0 0

568 38 MovingPart< ACScalarSwitchType > const 0 8832 38 MovingPart< ACScalarSwitchType > const 38 MovingPart< ACScalarSwitchType > const 0 0 464 0 0 0 0 0 0 0 0 0 0

569 18 PartBundleHandle * 0 8576 18 PartBundleHandle * 18 PartBundleHandle * 0 0 465 0 0 0 0 0 0 0 0 0 0

570 22 PartBundleNode const * 0 8576 22 PartBundleNode const * 22 PartBundleNode const * 0 0 571 0 0 0 0 0 0 0 0 0 0

571 20 PartBundleNode const 0 8832 20 PartBundleNode const 20 PartBundleNode const 0 0 467 0 0 0 0 0 0 0 0 0 0

572 6 string 0 2048 20 basic_string< char > 20 basic_string< char > 0 0 0 0 0 0 0 0 0 0 0 0 0

0
0
10
573 0 0 1 12 get_children 16 get_num_children 9 get_child 
574 0 0 32 12 get_children 16 get_num_children 9 get_child 
575 0 0 132 9 get_anims 13 get_num_anims 8 get_anim 
576 0 0 132 14 get_anim_names 13 get_num_anims 13 get_anim_name 
577 0 0 188 9 get_nodes 13 get_num_nodes 8 get_node 
578 0 0 247 11 get_bundles 15 get_num_bundles 10 get_bundle 
579 0 0 247 18 get_bundle_handles 15 get_num_bundles 17 get_bundle_handle 
580 0 0 366 8 get_rows 4 size 7 get_row 
581 0 0 366 8 get_cols 4 size 7 get_col 
582 0 0 366 9 get_row3s 4 size 8 get_row3 
