1565844201 3 3 9 libp3char 4 uMZI 12 panda3d.core 44 47 14 CharacterJoint 0 4 91 30 CharacterJoint::CharacterJoint 0 1 1 57 /** * For internal use only. */ /** * */ /** * */ 155 explicit CharacterJoint::CharacterJoint(Character *character, PartBundle *root, PartGroup *parent, std::string const &name, LMatrix4 const &default_value); 48 17 add_net_transform 0 4 91 33 CharacterJoint::add_net_transform 0 1 2 334 /** * Adds the indicated node to the list of nodes that will be updated each * frame with the joint's net transform from the root. Returns true if the * node is successfully added, false if it had already been added. * * A CharacterJointEffect for this joint's Character will automatically be * added to the specified node. */ 56 bool CharacterJoint::add_net_transform(PandaNode *node); 49 20 remove_net_transform 0 4 91 36 CharacterJoint::remove_net_transform 0 1 3 333 /** * Removes the indicated node from the list of nodes that will be updated each * frame with the joint's net transform from the root. Returns true if the * node is successfully removed, false if it was not on the list. * * If the node has a CharacterJointEffect that matches this joint's Character, * it will be cleared. */ 59 bool CharacterJoint::remove_net_transform(PandaNode *node); 50 17 has_net_transform 0 4 91 33 CharacterJoint::has_net_transform 0 1 4 157 /** * Returns true if the node is on the list of nodes that will be updated each * frame with the joint's net transform from the root, false otherwise. */ 62 bool CharacterJoint::has_net_transform(PandaNode *node) const; 51 20 clear_net_transforms 0 4 91 36 CharacterJoint::clear_net_transforms 0 1 5 132 /** * Removes all nodes from the list of nodes that will be updated each frame * with the joint's net transform from the root. */ 48 void CharacterJoint::clear_net_transforms(void); 52 18 get_net_transforms 0 4 91 34 CharacterJoint::get_net_transforms 0 1 6 183 /** * Returns a list of the net transforms set for this node. Note that this * returns a list of NodePaths, even though the net transforms are actually a * list of PandaNodes. */ 60 NodePathCollection CharacterJoint::get_net_transforms(void); 53 19 add_local_transform 0 4 91 35 CharacterJoint::add_local_transform 0 1 7 539 /** * Adds the indicated node to the list of nodes that will be updated each * frame with the joint's local transform from its parent. Returns true if * the node is successfully added, false if it had already been added. * * The Character pointer should be the Character object that owns this joint; * this will be used to create a CharacterJointEffect for this node. If it is * NULL, no such effect will be created. * * A CharacterJointEffect for this joint's Character will automatically be * added to the specified node. */ 58 bool CharacterJoint::add_local_transform(PandaNode *node); 54 22 remove_local_transform 0 4 91 38 CharacterJoint::remove_local_transform 0 1 8 337 /** * Removes the indicated node from the list of nodes that will be updated each * frame with the joint's local transform from its parent. Returns true if * the node is successfully removed, false if it was not on the list. * * If the node has a CharacterJointEffect that matches this joint's Character, * it will be cleared. */ 61 bool CharacterJoint::remove_local_transform(PandaNode *node); 55 19 has_local_transform 0 4 91 35 CharacterJoint::has_local_transform 0 1 9 161 /** * Returns true if the node is on the list of nodes that will be updated each * frame with the joint's local transform from its parent, false otherwise. */ 64 bool CharacterJoint::has_local_transform(PandaNode *node) const; 56 22 clear_local_transforms 0 4 91 38 CharacterJoint::clear_local_transforms 0 1 10 136 /** * Removes all nodes from the list of nodes that will be updated each frame * with the joint's local transform from its parent. */ 50 void CharacterJoint::clear_local_transforms(void); 57 20 get_local_transforms 0 4 91 36 CharacterJoint::get_local_transforms 0 1 11 187 /** * Returns a list of the local transforms set for this node. Note that this * returns a list of NodePaths, even though the local transforms are actually * a list of PandaNodes. */ 62 NodePathCollection CharacterJoint::get_local_transforms(void); 58 13 get_transform 0 4 91 29 CharacterJoint::get_transform 0 2 12 13 128 /** * Returns the transform matrix of the joint */ /** * Copies the joint's current transform into the indicated matrix. */ 128 void CharacterJoint::get_transform(LMatrix4 &transform) const; inline LMatrix4 const &CharacterJoint::get_transform(void) const; 59 19 get_transform_state 0 4 91 35 CharacterJoint::get_transform_state 0 1 14 0 81 ConstPointerTo< TransformState > CharacterJoint::get_transform_state(void) const; 60 17 get_net_transform 0 4 91 33 CharacterJoint::get_net_transform 0 1 15 139 /** * Copies the joint's current net transform (composed from the root of the * character joint hierarchy) into the indicated matrix. */ 66 void CharacterJoint::get_net_transform(LMatrix4 &transform) const; 61 13 get_character 0 4 91 29 CharacterJoint::get_character 0 1 16 54 /** * Returns the Character that owns this joint. */ 53 Character *CharacterJoint::get_character(void) const; 62 14 get_class_type 0 4 91 30 CharacterJoint::get_class_type 0 1 17 0 55 static TypeHandle CharacterJoint::get_class_type(void); 63 15 CharacterSlider 0 4 93 32 CharacterSlider::CharacterSlider 0 1 18 57 /** * For internal use only. */ /** * */ /** * */ 86 explicit CharacterSlider::CharacterSlider(PartGroup *parent, std::string const &name); 64 14 get_class_type 0 4 93 31 CharacterSlider::get_class_type 0 1 19 0 56 static TypeHandle CharacterSlider::get_class_type(void); 65 21 CharacterVertexSlider 0 4 95 44 CharacterVertexSlider::CharacterVertexSlider 0 1 20 216 /** * Constructs an invalid object; used only by the bam loader. */ /** * Constructs a new object that converts vertices from the indicated joint's * coordinate space, into the other indicated joint's space. */ 75 CharacterVertexSlider::CharacterVertexSlider(CharacterSlider *char_slider); 66 15 get_char_slider 0 4 95 38 CharacterVertexSlider::get_char_slider 0 1 21 96 /** * Returns the CharacterSlider object for which this object returns the slider * value. */ 81 inline CharacterSlider const *CharacterVertexSlider::get_char_slider(void) const; 67 14 get_class_type 0 4 95 37 CharacterVertexSlider::get_class_type 0 1 22 0 62 static TypeHandle CharacterVertexSlider::get_class_type(void); 68 20 JointVertexTransform 0 4 97 42 JointVertexTransform::JointVertexTransform 0 1 23 216 /** * Constructs an invalid object; used only by the bam loader. */ /** * Constructs a new object that converts vertices from the indicated joint's * coordinate space, into the other indicated joint's space. */ 66 JointVertexTransform::JointVertexTransform(CharacterJoint *joint); 69 9 get_joint 0 4 97 31 JointVertexTransform::get_joint 0 1 24 73 /** * Returns the joint for which this object returns the transform. */ 73 inline CharacterJoint const *JointVertexTransform::get_joint(void) const; 70 14 get_class_type 0 4 97 36 JointVertexTransform::get_class_type 0 1 25 0 61 static TypeHandle JointVertexTransform::get_class_type(void); 71 9 Character 0 4 99 20 Character::Character 0 2 26 27 78 /** * Use make_copy() or copy_subgraph() to copy a Character. */ /** * */ 113 explicit Character::Character(std::string const &name); inline Character::Character(Character const &) = default; 72 10 get_bundle 0 4 99 21 Character::get_bundle 0 1 28 10 /** * */ 64 inline CharacterJointBundle *Character::get_bundle(int i) const; 73 13 merge_bundles 0 4 99 24 Character::merge_bundles 0 2 29 30 1325 /** * Merges old_bundle with new_bundle. old_bundle must be one of the * PartBundles within this node. At the end of this call, the old_bundle * pointer within this node will be replaced with the new_bundle pointer, and * all geometry within this node will be updated to reference new_bundle. * * This method is deprecated. Use the newer version of this method, below. */ /** * Merges old_bundle_handle->get_bundle() with new_bundle. old_bundle_handle * must be one of the PartBundleHandle within this node. At the end of this * call, the bundle pointer within the old_bundle_handle will be replaced with * that within the new_bundle_handle pointer, and all geometry within this * node will be updated to reference new_bundle. * * Normally, this is called when the two bundles have the same, or nearly the * same, hierarchies. In this case, new_bundle will simply be assigned over * the old_bundle position. However, if any joints are present in one bundle * or the other, new_bundle will be modified to contain the union of all * joints. * * The geometry below this node is also updated to reference new_bundle, * instead of the original old_bundle. * * This method is intended to unify two different models that share a common * skeleton, for instance, different LOD's of the same model. */ 187 void Character::merge_bundles(PartBundle *old_bundle, PartBundle *other_bundle); void Character::merge_bundles(PartBundleHandle *old_bundle_handle, PartBundleHandle *other_bundle_handle); 74 17 set_lod_animation 0 4 99 28 Character::set_lod_animation 0 1 31 1171 /** * Activates a special mode in which the character animates less frequently as * it gets further from the camera. This is intended as a simple optimization * to minimize the effort of computing animation for lots of characters that * may not necessarily be very important to animate every frame. * * If the character is closer to the camera than near_distance, then it is * animated its normal rate, every frame. If the character is exactly * far_distance away, it is animated only every delay_factor seconds (which * should be a number greater than 0). If the character is between * near_distance and far_distance, its animation rate is linearly interpolated * according to its distance between the two. The interpolation function * continues beyond far_distance, so that the character is animated * increasingly less frequently as it gets farther away. * * The distance calculations are made from center, which is a fixed point * relative to the character node, to the camera's lod center or cull center * node (or to the camera node itself). * * If multiple cameras are viewing the character in any given frame, the * closest one counts. */ 136 void Character::set_lod_animation(LPoint3 const ¢er, PN_stdfloat far_distance, PN_stdfloat near_distance, PN_stdfloat delay_factor); 75 19 clear_lod_animation 0 4 99 30 Character::clear_lod_animation 0 1 32 172 /** * Undoes the effect of a recent call to set_lod_animation(). Henceforth, the * character will animate every frame, regardless of its distance from the * camera. */ 42 void Character::clear_lod_animation(void); 76 10 find_joint 0 4 99 21 Character::find_joint 0 1 33 174 /** * Returns a pointer to the joint with the given name, if there is such a * joint, or NULL if there is no such joint. This will not return a pointer * to a slider. */ 69 CharacterJoint *Character::find_joint(std::string const &name) const; 77 11 find_slider 0 4 99 22 Character::find_slider 0 1 34 176 /** * Returns a pointer to the slider with the given name, if there is such a * slider, or NULL if there is no such slider. This will not return a pointer * to a joint. */ 71 CharacterSlider *Character::find_slider(std::string const &name) const; 78 11 write_parts 0 4 99 22 Character::write_parts 0 1 35 129 /** * Writes a list of the Character's joints and sliders, in their hierchical * structure, to the indicated output stream. */ 53 void Character::write_parts(std::ostream &out) const; 79 17 write_part_values 0 4 99 28 Character::write_part_values 0 1 36 166 /** * Writes a list of the Character's joints and sliders, along with each * current position, in their hierchical structure, to the indicated output * stream. */ 59 void Character::write_part_values(std::ostream &out) const; 80 13 update_to_now 0 4 99 24 Character::update_to_now 0 1 37 326 /** * Advances the character's frame to the current time, and then calls * update(). This can be used by show code to force an update of the * character's position to the current frame, regardless of whether the * character is currently onscreen and animating. * * This method is deprecated. Call update() instead. */ 36 void Character::update_to_now(void); 81 6 update 0 4 99 17 Character::update 0 1 38 182 /** * Recalculates the Character's joints and vertices for the current frame. * Normally this is performed automatically during the render and need not be * called explicitly. */ 29 void Character::update(void); 82 12 force_update 0 4 99 23 Character::force_update 0 1 39 74 /** * Recalculates the character even if we think it doesn't need it. */ 35 void Character::force_update(void); 83 14 get_class_type 0 4 99 25 Character::get_class_type 0 1 40 0 50 static TypeHandle Character::get_class_type(void); 84 20 CharacterJointBundle 0 4 101 42 CharacterJointBundle::CharacterJointBundle 0 1 41 232 /** * Normally, you'd use make_copy() or copy_subgraph() to make a copy of this. */ /** * Normally, there is no need to create a CharacterJointBundle directly. The * Character node will automatically create one for itself. */ 82 explicit CharacterJointBundle::CharacterJointBundle(std::string const &name = ""); 85 8 get_node 0 4 101 30 CharacterJointBundle::get_node 0 1 42 69 /** * Returns the nth Character associated with this PartBundle. */ 62 inline Character *CharacterJointBundle::get_node(int n) const; 86 14 get_class_type 0 4 101 36 CharacterJointBundle::get_class_type 0 1 43 0 61 static TypeHandle CharacterJointBundle::get_class_type(void); 87 4 make 0 4 103 26 CharacterJointEffect::make 0 1 44 251 /** * Constructs a new CharacterJointEffect object that references the indicated * character. When a relative get_transform() is called on the node that * contains the CharacterJointEffect, it will implicitly call * character->update() first. */ 87 static ConstPointerTo< RenderEffect > CharacterJointEffect::make(Character *character); 88 13 get_character 0 4 103 35 CharacterJointEffect::get_character 0 1 45 158 /** * Returns the Character that will get update() called on it when this node's * relative transform is queried, or NULL if there is no such character. */ 78 inline PointerTo< Character > CharacterJointEffect::get_character(void) const; 89 14 get_class_type 0 4 103 36 CharacterJointEffect::get_class_type 0 1 46 0 61 static TypeHandle CharacterJointEffect::get_class_type(void); 90 21 ~CharacterJointEffect 0 4 103 43 CharacterJointEffect::~CharacterJointEffect 0 0 0 50 CharacterJointEffect::~CharacterJointEffect(void); 46 1 0 0 7 3 114 0 0 10 /** * */ 5 9 character 1 105 4 root 1 106 6 parent 1 107 4 name 1 109 13 default_value 1 110 2 0 0 6 4 117 0 0 334 /** * Adds the indicated node to the list of nodes that will be updated each * frame with the joint's net transform from the root. Returns true if the * node is successfully added, false if it had already been added. * * A CharacterJointEffect for this joint's Character will automatically be * added to the specified node. */ 2 4 this 3 114 4 node 1 115 3 0 0 6 5 117 0 0 333 /** * Removes the indicated node from the list of nodes that will be updated each * frame with the joint's net transform from the root. Returns true if the * node is successfully removed, false if it was not on the list. * * If the node has a CharacterJointEffect that matches this joint's Character, * it will be cleared. */ 2 4 this 3 114 4 node 1 115 4 0 0 6 6 117 0 0 157 /** * Returns true if the node is on the list of nodes that will be updated each * frame with the joint's net transform from the root, false otherwise. */ 2 4 this 3 118 4 node 1 115 5 0 0 4 7 120 0 0 132 /** * Removes all nodes from the list of nodes that will be updated each frame * with the joint's net transform from the root. */ 1 4 this 3 114 6 0 0 7 8 122 0 0 183 /** * Returns a list of the net transforms set for this node. Note that this * returns a list of NodePaths, even though the net transforms are actually a * list of PandaNodes. */ 1 4 this 3 114 7 0 0 6 9 117 0 0 539 /** * Adds the indicated node to the list of nodes that will be updated each * frame with the joint's local transform from its parent. Returns true if * the node is successfully added, false if it had already been added. * * The Character pointer should be the Character object that owns this joint; * this will be used to create a CharacterJointEffect for this node. If it is * NULL, no such effect will be created. * * A CharacterJointEffect for this joint's Character will automatically be * added to the specified node. */ 2 4 this 3 114 4 node 1 115 8 0 0 6 10 117 0 0 337 /** * Removes the indicated node from the list of nodes that will be updated each * frame with the joint's local transform from its parent. Returns true if * the node is successfully removed, false if it was not on the list. * * If the node has a CharacterJointEffect that matches this joint's Character, * it will be cleared. */ 2 4 this 3 114 4 node 1 115 9 0 0 6 11 117 0 0 161 /** * Returns true if the node is on the list of nodes that will be updated each * frame with the joint's local transform from its parent, false otherwise. */ 2 4 this 3 118 4 node 1 115 10 0 0 4 12 120 0 0 136 /** * Removes all nodes from the list of nodes that will be updated each frame * with the joint's local transform from its parent. */ 1 4 this 3 114 11 0 0 7 13 122 0 0 187 /** * Returns a list of the local transforms set for this node. Note that this * returns a list of NodePaths, even though the local transforms are actually * a list of PandaNodes. */ 1 4 this 3 114 12 0 0 6 14 110 0 0 52 /** * Returns the transform matrix of the joint */ 1 4 this 3 118 13 0 0 4 14 120 0 0 74 /** * Copies the joint's current transform into the indicated matrix. */ 2 4 this 3 118 9 transform 1 123 14 0 0 7 15 126 0 0 0 1 4 this 3 118 15 0 0 4 16 120 0 0 139 /** * Copies the joint's current net transform (composed from the root of the * character joint hierarchy) into the indicated matrix. */ 2 4 this 3 118 9 transform 1 123 16 0 0 7 17 105 0 0 54 /** * Returns the Character that owns this joint. */ 1 4 this 3 118 17 0 0 7 18 128 0 0 0 0 18 0 0 7 21 129 0 0 10 /** * */ 2 6 parent 1 107 4 name 1 109 19 0 0 7 22 128 0 0 0 0 20 0 0 7 25 130 0 0 145 /** * Constructs a new object that converts vertices from the indicated joint's * coordinate space, into the other indicated joint's space. */ 1 11 char_slider 1 129 21 0 0 7 26 134 0 0 96 /** * Returns the CharacterSlider object for which this object returns the slider * value. */ 1 4 this 3 132 22 0 0 7 27 128 0 0 0 0 23 0 0 7 30 135 0 0 145 /** * Constructs a new object that converts vertices from the indicated joint's * coordinate space, into the other indicated joint's space. */ 1 5 joint 1 114 24 0 0 7 31 118 0 0 73 /** * Returns the joint for which this object returns the transform. */ 1 4 this 3 136 25 0 0 7 32 128 0 0 0 0 26 0 0 7 35 105 0 0 0 1 6 param0 0 138 27 0 0 7 35 105 0 0 10 /** * */ 1 4 name 1 109 28 0 0 7 36 141 0 0 10 /** * */ 2 4 this 3 138 1 i 1 140 29 0 0 4 37 120 0 0 381 /** * Merges old_bundle with new_bundle. old_bundle must be one of the * PartBundles within this node. At the end of this call, the old_bundle * pointer within this node will be replaced with the new_bundle pointer, and * all geometry within this node will be updated to reference new_bundle. * * This method is deprecated. Use the newer version of this method, below. */ 3 4 this 3 105 10 old_bundle 1 106 12 other_bundle 1 106 30 0 0 4 37 120 0 0 942 /** * Merges old_bundle_handle->get_bundle() with new_bundle. old_bundle_handle * must be one of the PartBundleHandle within this node. At the end of this * call, the bundle pointer within the old_bundle_handle will be replaced with * that within the new_bundle_handle pointer, and all geometry within this * node will be updated to reference new_bundle. * * Normally, this is called when the two bundles have the same, or nearly the * same, hierarchies. In this case, new_bundle will simply be assigned over * the old_bundle position. However, if any joints are present in one bundle * or the other, new_bundle will be modified to contain the union of all * joints. * * The geometry below this node is also updated to reference new_bundle, * instead of the original old_bundle. * * This method is intended to unify two different models that share a common * skeleton, for instance, different LOD's of the same model. */ 3 4 this 3 105 17 old_bundle_handle 1 142 19 other_bundle_handle 1 142 31 0 0 4 38 120 0 0 1171 /** * Activates a special mode in which the character animates less frequently as * it gets further from the camera. This is intended as a simple optimization * to minimize the effort of computing animation for lots of characters that * may not necessarily be very important to animate every frame. * * If the character is closer to the camera than near_distance, then it is * animated its normal rate, every frame. If the character is exactly * far_distance away, it is animated only every delay_factor seconds (which * should be a number greater than 0). If the character is between * near_distance and far_distance, its animation rate is linearly interpolated * according to its distance between the two. The interpolation function * continues beyond far_distance, so that the character is animated * increasingly less frequently as it gets farther away. * * The distance calculations are made from center, which is a fixed point * relative to the character node, to the camera's lod center or cull center * node (or to the camera node itself). * * If multiple cameras are viewing the character in any given frame, the * closest one counts. */ 5 4 this 3 105 6 center 1 144 12 far_distance 1 148 13 near_distance 1 148 12 delay_factor 1 148 32 0 0 4 39 120 0 0 172 /** * Undoes the effect of a recent call to set_lod_animation(). Henceforth, the * character will animate every frame, regardless of its distance from the * camera. */ 1 4 this 3 105 33 0 0 7 40 114 0 0 174 /** * Returns a pointer to the joint with the given name, if there is such a * joint, or NULL if there is no such joint. This will not return a pointer * to a slider. */ 2 4 this 3 138 4 name 1 109 34 0 0 7 41 129 0 0 176 /** * Returns a pointer to the slider with the given name, if there is such a * slider, or NULL if there is no such slider. This will not return a pointer * to a joint. */ 2 4 this 3 138 4 name 1 109 35 0 0 4 42 120 0 0 129 /** * Writes a list of the Character's joints and sliders, in their hierchical * structure, to the indicated output stream. */ 2 4 this 3 138 3 out 1 150 36 0 0 4 43 120 0 0 166 /** * Writes a list of the Character's joints and sliders, along with each * current position, in their hierchical structure, to the indicated output * stream. */ 2 4 this 3 138 3 out 1 150 37 0 0 4 44 120 0 0 326 /** * Advances the character's frame to the current time, and then calls * update(). This can be used by show code to force an update of the * character's position to the current frame, regardless of whether the * character is currently onscreen and animating. * * This method is deprecated. Call update() instead. */ 1 4 this 3 105 38 0 0 4 45 120 0 0 182 /** * Recalculates the Character's joints and vertices for the current frame. * Normally this is performed automatically during the render and need not be * called explicitly. */ 1 4 this 3 105 39 0 0 4 46 120 0 0 74 /** * Recalculates the character even if we think it doesn't need it. */ 1 4 this 3 105 40 0 0 7 47 128 0 0 0 0 41 0 0 7 50 141 0 0 145 /** * Normally, there is no need to create a CharacterJointBundle directly. The * Character node will automatically create one for itself. */ 1 4 name 1 109 42 0 0 7 51 105 0 0 69 /** * Returns the nth Character associated with this PartBundle. */ 2 4 this 3 152 1 n 1 140 43 0 0 7 52 128 0 0 0 0 44 0 0 7 55 155 0 0 251 /** * Constructs a new CharacterJointEffect object that references the indicated * character. When a relative get_transform() is called on the node that * contains the CharacterJointEffect, it will implicitly call * character->update() first. */ 1 9 character 1 105 45 0 0 7 56 105 0 0 158 /** * Returns the Character that will get update() called on it when this node's * relative transform is queried, or NULL if there is no such character. */ 1 4 this 3 156 46 0 0 7 57 128 0 0 0 0 67 91 14 CharacterJoint 0 75777 14 CharacterJoint 14 CharacterJoint 0 0 0 1 47 0 0 15 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 0 0 1 0 92 0 0 0 0 111 /** * This represents one joint of the character's animation, containing an * animating transform matrix. */ 92 16 MovingPartMatrix 0 2048 16 MovingPartMatrix 16 MovingPartMatrix 0 0 0 0 0 0 0 0 0 0 0 0 84 /** * This is a particular kind of MovingPart that accepts a matrix each frame. */ 93 15 CharacterSlider 0 75777 15 CharacterSlider 15 CharacterSlider 0 0 0 1 63 0 0 1 64 0 0 1 0 94 0 0 0 0 215 /** * This is a morph slider within the character. It's simply a single * floating-point value that animates generally between 0 and 1, that controls * the effects of one or more morphs within the character. */ 94 16 MovingPartScalar 0 2048 16 MovingPartScalar 16 MovingPartScalar 0 0 0 0 0 0 0 0 0 0 0 0 84 /** * This is a particular kind of MovingPart that accepts a scalar each frame. */ 95 21 CharacterVertexSlider 0 75777 21 CharacterVertexSlider 21 CharacterVertexSlider 0 0 0 1 65 0 0 2 66 67 0 0 1 0 96 0 0 0 0 137 /** * This is a specialization on VertexSlider that returns the slider value * associated with a particular CharacterSlider object. */ 96 12 VertexSlider 0 2048 12 VertexSlider 12 VertexSlider 0 0 0 0 0 0 0 0 0 0 0 0 343 /** * This is an abstract base class that retains some slider value, which is a * linear value that typically ranges from 0.0 to 1.0, and is used to control * the animation of morphs (blend shapes). * * It is similar to VertexTransform, which keeps a full 4x4 transform matrix, * but the VertexSlider only keeps a single float value. */ 97 20 JointVertexTransform 0 75777 20 JointVertexTransform 20 JointVertexTransform 0 0 0 1 68 0 0 2 69 70 0 0 1 0 98 0 0 0 0 486 /** * This is a specialization on VertexTransform that returns the transform * necessary to move vertices as if they were assigned to the indicated joint. * The geometry itself should be parented to the scene graph at the level of * the character's root joint; that is, it should not be parented under a node * directly animated by any joints. * * Multiple combinations of these with different weights are used to implement * soft-skinned vertices for an animated character. */ 98 15 VertexTransform 0 2048 15 VertexTransform 15 VertexTransform 0 0 0 0 0 0 0 0 0 0 0 0 305 /** * This is an abstract base class that holds a pointer to some transform, * computed in some arbitrary way, that is to be applied to vertices during * rendering. This is used to implement soft-skinned and animated vertices. * Derived classes will define how the transform is actually computed. */ 99 9 Character 0 75777 9 Character 9 Character 0 0 0 1 71 0 0 12 72 73 74 75 76 77 78 79 80 81 82 83 0 0 1 0 100 0 0 0 0 117 /** * An animated character, with skeleton-morph animation and either soft- * skinned or hard-skinned vertices. */ 100 14 PartBundleNode 0 2048 14 PartBundleNode 14 PartBundleNode 0 0 0 0 0 0 0 0 0 0 0 0 342 /** * 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.) */ 101 20 CharacterJointBundle 0 75777 20 CharacterJointBundle 20 CharacterJointBundle 0 0 0 1 84 0 0 2 85 86 0 0 1 0 102 0 0 0 0 73 /** * The collection of all the joints and sliders in the character. */ 102 10 PartBundle 0 2048 10 PartBundle 10 PartBundle 0 0 0 0 0 0 0 0 0 0 0 0 134 /** * This is the root of a MovingPart hierarchy. It defines the hierarchy of * moving parts that make up an animatable object. */ 103 20 CharacterJointEffect 0 141313 20 CharacterJointEffect 20 CharacterJointEffect 0 0 0 0 90 0 3 87 88 89 0 0 1 0 104 0 0 0 0 340 /** * This effect will be added automatically to a node by * CharacterJoint::add_net_transform() and * CharacterJoint::add_local_transform(). * * The effect binds the node back to the character, so that querying the * relative transform of the affected node will automatically force the * indicated character to be updated first. */ 104 12 RenderEffect 0 2048 12 RenderEffect 12 RenderEffect 0 0 0 0 0 0 0 0 0 0 0 0 901 /** * This is the base class for a number of special render effects that may be * set on scene graph nodes to change the way they render. This includes * BillboardEffect, DecalEffect, etc. * * RenderEffect represents render properties that must be applied as soon as * they are encountered in the scene graph, rather than propagating down to * the leaves. This is different from RenderAttrib, which represents * properties like color and texture that don't do anything until they * propagate down to a GeomNode. * * You should not attempt to create or modify a RenderEffect directly; * instead, use the make() method of the appropriate kind of effect you want. * This will allocate and return a new RenderEffect of the appropriate type, * and it may share pointers if possible. Do not modify the new RenderEffect * if you wish to change its properties; instead, create a new one. */ 105 11 Character * 0 8576 11 Character * 11 Character * 0 0 99 0 0 0 0 0 0 0 0 0 0 106 12 PartBundle * 0 8576 12 PartBundle * 12 PartBundle * 0 0 102 0 0 0 0 0 0 0 0 0 0 107 11 PartGroup * 0 8576 11 PartGroup * 11 PartGroup * 0 0 108 0 0 0 0 0 0 0 0 0 0 108 9 PartGroup 0 2048 9 PartGroup 9 PartGroup 0 0 0 0 0 0 0 0 0 0 0 0 105 /** * This is the base class for PartRoot and MovingPart. It defines a hierarchy * of MovingParts. */ 109 13 atomic string 0 2 13 atomic string 13 atomic string 0 7 0 0 0 0 0 0 0 0 0 0 0 110 16 LMatrix4 const * 0 8576 16 LMatrix4 const * 16 LMatrix4 const * 0 0 111 0 0 0 0 0 0 0 0 0 0 111 14 LMatrix4 const 0 8832 14 LMatrix4 const 14 LMatrix4 const 0 0 112 0 0 0 0 0 0 0 0 0 0 112 8 LMatrix4 0 2105344 8 LMatrix4 8 LMatrix4 0 0 113 0 0 0 0 0 0 0 0 0 0 113 9 LMatrix4f 0 2048 9 LMatrix4f 9 LMatrix4f 0 0 0 0 0 0 0 0 0 0 0 0 45 /** * This is a 4-by-4 transform matrix. */ 114 16 CharacterJoint * 0 8576 16 CharacterJoint * 16 CharacterJoint * 0 0 91 0 0 0 0 0 0 0 0 0 0 115 11 PandaNode * 0 8576 11 PandaNode * 11 PandaNode * 0 0 116 0 0 0 0 0 0 0 0 0 0 116 9 PandaNode 0 2048 9 PandaNode 9 PandaNode 0 0 0 0 0 0 0 0 0 0 0 0 175 /** * 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. */ 117 4 bool 0 8194 4 bool 4 bool 0 4 0 0 0 0 0 0 0 0 0 0 0 118 22 CharacterJoint const * 0 8576 22 CharacterJoint const * 22 CharacterJoint const * 0 0 119 0 0 0 0 0 0 0 0 0 0 119 20 CharacterJoint const 0 8832 20 CharacterJoint const 20 CharacterJoint const 0 0 91 0 0 0 0 0 0 0 0 0 0 120 4 void 0 8194 4 void 4 void 0 6 0 0 0 0 0 0 0 0 0 0 0 121 18 NodePathCollection 0 2048 18 NodePathCollection 18 NodePathCollection 0 0 0 0 0 0 0 0 0 0 0 0 178 /** * This is a set of zero or more NodePaths. It's handy for returning from * functions that need to return multiple NodePaths (for instance, * NodePaths::get_children). */ 122 20 NodePathCollection * 0 8576 20 NodePathCollection * 20 NodePathCollection * 0 0 121 0 0 0 0 0 0 0 0 0 0 123 10 LMatrix4 * 0 8576 10 LMatrix4 * 10 LMatrix4 * 0 0 112 0 0 0 0 0 0 0 0 0 0 124 20 TransformState const 0 8832 20 TransformState const 20 TransformState const 0 0 125 0 0 0 0 0 0 0 0 0 0 125 14 TransformState 0 16779264 14 TransformState 14 TransformState 0 0 0 0 0 0 0 0 0 0 0 0 734 /** * 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. */ 126 22 TransformState const * 0 8576 22 TransformState const * 22 TransformState const * 0 0 124 0 0 0 0 0 0 0 0 0 0 127 10 TypeHandle 0 16779264 10 TypeHandle 10 TypeHandle 0 0 0 0 0 0 0 0 0 0 0 0 732 /** * 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. */ 128 12 TypeHandle * 0 8576 12 TypeHandle * 12 TypeHandle * 0 0 127 0 0 0 0 0 0 0 0 0 0 129 17 CharacterSlider * 0 8576 17 CharacterSlider * 17 CharacterSlider * 0 0 93 0 0 0 0 0 0 0 0 0 0 130 23 CharacterVertexSlider * 0 8576 23 CharacterVertexSlider * 23 CharacterVertexSlider * 0 0 95 0 0 0 0 0 0 0 0 0 0 131 21 CharacterSlider const 0 8832 21 CharacterSlider const 21 CharacterSlider const 0 0 93 0 0 0 0 0 0 0 0 0 0 132 29 CharacterVertexSlider const * 0 8576 29 CharacterVertexSlider const * 29 CharacterVertexSlider const * 0 0 133 0 0 0 0 0 0 0 0 0 0 133 27 CharacterVertexSlider const 0 8832 27 CharacterVertexSlider const 27 CharacterVertexSlider const 0 0 95 0 0 0 0 0 0 0 0 0 0 134 23 CharacterSlider const * 0 8576 23 CharacterSlider const * 23 CharacterSlider const * 0 0 131 0 0 0 0 0 0 0 0 0 0 135 22 JointVertexTransform * 0 8576 22 JointVertexTransform * 22 JointVertexTransform * 0 0 97 0 0 0 0 0 0 0 0 0 0 136 28 JointVertexTransform const * 0 8576 28 JointVertexTransform const * 28 JointVertexTransform const * 0 0 137 0 0 0 0 0 0 0 0 0 0 137 26 JointVertexTransform const 0 8832 26 JointVertexTransform const 26 JointVertexTransform const 0 0 97 0 0 0 0 0 0 0 0 0 0 138 17 Character const * 0 8576 17 Character const * 17 Character const * 0 0 139 0 0 0 0 0 0 0 0 0 0 139 15 Character const 0 8832 15 Character const 15 Character const 0 0 99 0 0 0 0 0 0 0 0 0 0 140 3 int 0 8194 3 int 3 int 0 1 0 0 0 0 0 0 0 0 0 0 0 141 22 CharacterJointBundle * 0 8576 22 CharacterJointBundle * 22 CharacterJointBundle * 0 0 101 0 0 0 0 0 0 0 0 0 0 142 18 PartBundleHandle * 0 8576 18 PartBundleHandle * 18 PartBundleHandle * 0 0 143 0 0 0 0 0 0 0 0 0 0 143 16 PartBundleHandle 0 2048 16 PartBundleHandle 16 PartBundleHandle 0 0 0 0 0 0 0 0 0 0 0 0 546 /** * 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. */ 144 15 LPoint3 const * 0 8576 15 LPoint3 const * 15 LPoint3 const * 0 0 145 0 0 0 0 0 0 0 0 0 0 145 13 LPoint3 const 0 8832 13 LPoint3 const 13 LPoint3 const 0 0 146 0 0 0 0 0 0 0 0 0 0 146 7 LPoint3 0 2105344 7 LPoint3 7 LPoint3 0 0 147 0 0 0 0 0 0 0 0 0 0 147 8 LPoint3f 0 2048 8 LPoint3f 8 LPoint3f 0 0 0 0 0 0 0 0 0 0 0 0 337 /** * This is a three-component point in space (as opposed to a three-component * vector, which represents a direction and a distance). Some of the methods * are slightly different between LPoint3 and LVector3; in particular, * subtraction of two points yields a vector, while addition of a vector and a * point yields a point. */ 148 11 PN_stdfloat 0 2105344 11 PN_stdfloat 11 PN_stdfloat 0 0 149 0 0 0 0 0 0 0 0 0 0 149 5 float 0 8194 5 float 5 float 0 2 0 0 0 0 0 0 0 0 0 0 0 150 9 ostream * 0 8576 14 std::ostream * 14 std::ostream * 0 0 151 0 0 0 0 0 0 0 0 0 0 151 7 ostream 0 2048 12 std::ostream 12 std::ostream 0 0 0 0 0 0 0 0 0 0 0 0 0 152 28 CharacterJointBundle const * 0 8576 28 CharacterJointBundle const * 28 CharacterJointBundle const * 0 0 153 0 0 0 0 0 0 0 0 0 0 153 26 CharacterJointBundle const 0 8832 26 CharacterJointBundle const 26 CharacterJointBundle const 0 0 101 0 0 0 0 0 0 0 0 0 0 154 18 RenderEffect const 0 8832 18 RenderEffect const 18 RenderEffect const 0 0 104 0 0 0 0 0 0 0 0 0 0 155 20 RenderEffect const * 0 8576 20 RenderEffect const * 20 RenderEffect const * 0 0 154 0 0 0 0 0 0 0 0 0 0 156 28 CharacterJointEffect const * 0 8576 28 CharacterJointEffect const * 28 CharacterJointEffect const * 0 0 157 0 0 0 0 0 0 0 0 0 0 157 26 CharacterJointEffect const 0 8832 26 CharacterJointEffect const 26 CharacterJointEffect const 0 0 103 0 0 0 0 0 0 0 0 0 0 0 0 0