#include <trackball.h>
Inheritance diagram for Trackball:
Public Types | |
enum | BoundingVolumeType { BVT_static, BVT_dynamic_sphere } |
Public Member Functions | |
Trackball (const string &name) | |
~Trackball () | |
void | reset () |
Reinitializes all transforms to identity. | |
float | get_forward_scale () const |
Returns the scale factor applied to forward and backward motion. | |
void | set_forward_scale (float fwdscale) |
Changes the scale factor applied to forward and backward motion. | |
const LPoint3f & | get_pos () const |
**** Translation **** | |
float | get_x () const |
float | get_y () const |
float | get_z () const |
void | set_pos (const LVecBase3f &vec) |
Directly set the offset from the rotational origin. | |
void | set_pos (float x, float y, float z) |
void | set_x (float x) |
void | set_y (float y) |
void | set_z (float z) |
LVecBase3f | get_hpr () const |
**** Rotation **** | |
float | get_h () const |
float | get_p () const |
float | get_r () const |
void | set_hpr (const LVecBase3f &hpr) |
Directly set the mover's orientation. | |
void | set_hpr (float h, float p, float r) |
void | set_h (float h) |
void | set_p (float p) |
void | set_r (float r) |
void | reset_origin_here () |
**** Origin of Rotation **** | |
void | move_origin (float x, float y, float z) |
Moves the center of rotation by the given amount. | |
LPoint3f | get_origin () const |
Returns the current center of rotation. | |
void | set_origin (const LVecBase3f &origin) |
Directly sets the center of rotation. | |
void | set_invert (bool flag) |
**** Misc **** | |
bool | get_invert () const |
Returns the invert flag. | |
void | set_rel_to (const NodePath &_rel_to) |
Sets the NodePath that all trackball manipulations are to be assumed to be relative to. | |
const NodePath & | get_rel_to () const |
Returns the NodePath that all trackball manipulations are relative to, or the empty path. | |
void | set_coordinate_system (CoordinateSystem cs) |
Sets the coordinate system of the Trackball. | |
CoordinateSystem | get_coordinate_system () const |
Returns the coordinate system of the Trackball. | |
void | set_mat (const LMatrix4f &mat) |
Stores the indicated transform in the trackball. | |
const LMatrix4f & | get_mat () const |
Returns the matrix represented by the trackball rotation. | |
const LMatrix4f & | get_trans_mat () const |
Returns the actual transform that will be applied to the scene graph. | |
virtual TypeHandle | get_type () const |
virtual TypeHandle | force_init_type () |
virtual PandaNode * | make_copy () const |
Returns a newly-allocated Node that is a shallow copy of this one. | |
void | transmit_data (const DataNodeTransmit inputs[], DataNodeTransmit &output) |
Collects the data from all of the parent nodes and puts it into one DataNodeTransmit object, for processing; calls do_transmit_data() to read all the inputs and put the result into the indicated output. | |
int | get_num_inputs () const |
Returns the number of different inputs that have been defined for this node using define_input(). | |
int | get_num_outputs () const |
Returns the number of different outputs that have been defined for this node using define_output(). | |
void | write_inputs (ostream &out) const |
Writes to the indicated ostream a list of all the inputs this DataNode might expect to receive. | |
void | write_outputs (ostream &out) const |
Writes to the indicated ostream a list of all the outputs this DataNode might generate. | |
void | write_connections (ostream &out) const |
Writes to the indicated ostream a list of all the connections currently showing between this DataNode and its parent(s). | |
virtual bool | safe_to_flatten () const |
Returns true if it is generally safe to flatten out this particular kind of PandaNode by duplicating instances, false otherwise (for instance, a Camera cannot be safely flattened, because the Camera pointer itself is meaningful). | |
virtual bool | safe_to_transform () const |
Returns true if it is generally safe to transform this particular kind of PandaNode by calling the xform() method, false otherwise. | |
virtual bool | safe_to_modify_transform () const |
Returns true if it is safe to automatically adjust the transform on this kind of node. | |
virtual bool | safe_to_combine () const |
Returns true if it is generally safe to combine this particular kind of PandaNode with other kinds of PandaNodes, adding children or whatever. | |
virtual bool | safe_to_flatten_below () const |
Returns true if a flatten operation may safely continue past this node, or false if it should drop all attributes here and stop. | |
virtual bool | preserve_name () const |
Returns true if the node's name has extrinsic meaning and must be preserved across a flatten operation, false otherwise. | |
virtual int | get_unsafe_to_apply_attribs () const |
Returns the union of all attributes from SceneGraphReducer::AttribTypes that may not safely be applied to the vertices of this node. | |
virtual void | apply_attribs_to_vertices (const AccumulatedAttribs &attribs, int attrib_types, GeomTransformer &transformer) |
Applies whatever attributes are specified in the AccumulatedAttribs object (and by the attrib_types bitmask) to the vertices on this node, if appropriate. | |
virtual void | xform (const LMatrix4f &mat) |
Transforms the contents of this PandaNode by the indicated matrix, if it means anything to do so. | |
virtual PandaNode * | combine_with (PandaNode *other) |
Collapses this PandaNode with the other PandaNode, if possible, and returns a pointer to the combined PandaNode, or NULL if the two PandaNodes cannot safely be combined. | |
virtual ConstPointerTo< TransformState > | calc_tight_bounds (LPoint3f &min_point, LPoint3f &max_point, bool &found_any, const TransformState *transform) const |
This is used to support NodePath::calc_tight_bounds(). | |
virtual bool | has_cull_callback () const |
Should be overridden by derived classes to return true if cull_callback() has been defined. | |
virtual bool | cull_callback (CullTraverser *trav, CullTraverserData &data) |
If has_cull_callback() returns true, this function will be called during the cull traversal to perform any additional operations that should be performed at cull time. | |
virtual bool | has_selective_visibility () const |
Should be overridden by derived classes to return true if this kind of node has some restrictions on the set of children that should be rendered. | |
virtual int | get_first_visible_child () const |
Returns the index number of the first visible child of this node, or a number >= get_num_children() if there are no visible children of this node. | |
virtual int | get_next_visible_child (int n) const |
Returns the index number of the next visible child of this node following the indicated child, or a number >= get_num_children() if there are no more visible children of this node. | |
virtual bool | has_single_child_visibility () const |
Should be overridden by derived classes to return true if this kind of node has the special property that just one of its children is visible at any given time, and furthermore that the particular visible child can be determined without reference to any external information (such as a camera). | |
virtual int | get_visible_child () const |
Returns the index number of the currently visible child of this node. | |
PointerTo< PandaNode > | copy_subgraph () const |
Allocates and returns a complete copy of this PandaNode and the entire scene graph rooted at this PandaNode. | |
int | get_num_parents () const |
Returns the number of parent nodes this node has. | |
PandaNode * | get_parent (int n) const |
Returns the nth parent node of this node. | |
int | find_parent (PandaNode *node) const |
Returns the index of the indicated parent node, if it is a parent, or -1 if it is not. | |
int | get_num_children () const |
Returns the number of child nodes this node has. | |
PandaNode * | get_child (int n) const |
Returns the nth child node of this node. | |
int | get_child_sort (int n) const |
Returns the sort index of the nth child node of this node (that is, the number that was passed to add_child()). | |
int | find_child (PandaNode *node) const |
Returns the index of the indicated child node, if it is a child, or -1 if it is not. | |
void | add_child (PandaNode *child_node, int sort=0) |
Adds a new child to the node. | |
void | remove_child (int n) |
Removes the nth child from the node. | |
bool | remove_child (PandaNode *child_node) |
Removes the indicated child from the node. | |
bool | replace_child (PandaNode *orig_child, PandaNode *new_child) |
Searches for the orig_child node in the node's list of children, and replaces it with the new_child instead. | |
bool | stash_child (PandaNode *child_node) |
Stashes the indicated child node. | |
void | stash_child (int child_index) |
Stashes the indicated child node. | |
bool | unstash_child (PandaNode *child_node) |
Returns the indicated stashed node to normal child status. | |
void | unstash_child (int stashed_index) |
Returns the indicated stashed node to normal child status. | |
int | get_num_stashed () const |
Returns the number of stashed nodes this node has. | |
PandaNode * | get_stashed (int n) const |
Returns the nth stashed node of this node. | |
int | get_stashed_sort (int n) const |
Returns the sort index of the nth stashed node of this node (that is, the number that was passed to add_child()). | |
int | find_stashed (PandaNode *node) const |
Returns the index of the indicated stashed node, if it is a stashed child, or -1 if it is not. | |
void | add_stashed (PandaNode *child_node, int sort=0) |
Adds a new child to the node, directly as a stashed child. | |
void | remove_stashed (int n) |
Removes the nth stashed child from the node. | |
void | remove_all_children () |
Removes all the children from the node at once, including stashed children. | |
void | steal_children (PandaNode *other) |
Moves all the children from the other node onto this node. | |
void | copy_children (PandaNode *other) |
Makes another instance of all the children of the other node, copying them to this node. | |
void | set_attrib (const RenderAttrib *attrib, int override=0) |
Adds the indicated render attribute to the scene graph on this node. | |
const RenderAttrib * | get_attrib (TypeHandle type) const |
Returns the render attribute of the indicated type, if it is defined on the node, or NULL if it is not. | |
bool | has_attrib (TypeHandle type) const |
Returns true if there is a render attribute of the indicated type defined on this node, or false if there is not. | |
void | clear_attrib (TypeHandle type) |
Removes the render attribute of the given type from this node. | |
void | set_effect (const RenderEffect *effect) |
Adds the indicated render effect to the scene graph on this node. | |
const RenderEffect * | get_effect (TypeHandle type) const |
Returns the render effect of the indicated type, if it is defined on the node, or NULL if it is not. | |
bool | has_effect (TypeHandle type) const |
Returns true if there is a render effect of the indicated type defined on this node, or false if there is not. | |
void | clear_effect (TypeHandle type) |
Removes the render effect of the given type from this node. | |
void | set_state (const RenderState *state) |
Sets the complete RenderState that will be applied to all nodes at this level and below. | |
const RenderState * | get_state () const |
Returns the complete RenderState that will be applied to all nodes at this level and below, as set on this node. | |
void | clear_state () |
Resets this node to leave the render state alone. | |
void | set_effects (const RenderEffects *effects) |
Sets the complete RenderEffects that will be applied this node. | |
const RenderEffects * | get_effects () const |
Returns the complete RenderEffects that will be applied to this node. | |
void | clear_effects () |
Resets this node to have no render effects. | |
void | set_transform (const TransformState *transform) |
Sets the transform that will be applied to this node and below. | |
const TransformState * | get_transform () const |
Returns the transform that has been set on this particular node. | |
void | clear_transform () |
Resets the transform on this node to the identity transform. | |
void | set_draw_mask (DrawMask mask) |
Sets the hide/show bits of this particular node. | |
DrawMask | get_draw_mask () const |
Returns the hide/show bits of this particular node. | |
CollideMask | get_net_collide_mask () const |
Returns the union of all into_collide_mask() values set at CollisionNodes at this level and below. | |
virtual void | output (ostream &out) const |
Outputs the Namable. | |
virtual void | write (ostream &out, int indent_level) const |
void | ls (ostream &out, int indent_level) const |
Lists all the nodes at and below the current path hierarchically. | |
void | set_bound (BoundingVolumeType type) |
Sets the type of the external bounding volume that is placed around this node and all of its children. | |
void | set_bound (const BoundingVolume &volume) |
Resets the internal bounding volume so that it is the indicated volume. | |
void | set_bound (BoundingVolumeType type) |
Sets the type of the bounding volume that will be dynamically computed for this particular node. | |
const BoundingVolume & | get_bound () const |
Returns the node's external bounding volume. | |
const BoundingVolume & | get_internal_bound () const |
Returns the node's internal bounding volume. | |
virtual bool | is_geom_node () const |
A simple downcast check. | |
virtual Light * | as_light () |
Cross-casts the node to a Light pointer, if it is one of the four kinds of Light nodes, or returns NULL if it is not. | |
virtual void | set_velocity (const LVector3f &vel) |
Indicates the instantaneous velocity of this node. | |
Children | get_children () const |
Returns an object that can be used to walk through the list of children of the node. | |
ChildrenCopy | get_children_copy () const |
Returns an object that can be used to walk through the list of children of the node. | |
virtual void | write_datagram (BamWriter *manager, Datagram &dg) |
Writes the contents of this object to the datagram for shipping out to a Bam file. | |
virtual int | complete_pointers (TypedWritable **p_list, BamReader *manager) |
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin(). | |
virtual void | finalize () |
Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed. | |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. | |
void | set_name (const string &name) |
void | clear_name () |
Resets the Namable's name to empty. | |
bool | has_name () const |
Returns true if the Namable has a nonempty name set, false if the name is empty. | |
const string & | get_name () const |
bool | mark_bound_stale () |
Marks the current bounding volume as stale, so that it will be recomputed later. | |
void | force_bound_stale () |
Marks the current volume as stale and propagates the effect at least one level, even if it had already been marked stale. | |
bool | is_bound_stale () const |
Returns true if the bound is currently marked stale and will be recomputed the next time get_bound() is called. | |
void | set_final (bool flag) |
Sets the "final" flag on this BoundedObject. | |
bool | is_final () const |
Returns the current state of the "final" flag. | |
int | get_ref_count () const |
Returns the current reference count. | |
int | ref () const |
Explicitly increments the reference count. | |
int | unref () const |
Explicitly decrements the reference count. | |
void | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
Static Public Member Functions | |
TypeHandle | get_class_type () |
void | init_type () |
void | register_with_read_factory () |
Tells the BamReader how to create objects of type PandaNode. | |
Static Public Attributes | |
TypedWritable *const | Null = (TypedWritable*)0L |
Protected Types | |
typedef pmap< PandaNode *, PandaNode * > | InstanceMap |
Protected Member Functions | |
virtual void | do_transmit_data (const DataNodeTransmit &input, DataNodeTransmit &output) |
The virtual implementation of transmit_data(). | |
int | define_input (const string &name, TypeHandle data_type) |
Adds a new input wire with the given name and the indicated data type. | |
int | define_output (const string &name, TypeHandle data_type) |
Adds a new output wire with the given name and the indicated data type. | |
virtual void | parents_changed () |
Called after a scene graph update that either adds or remove parents from this node, this just provides a hook for derived PandaNode objects that need to update themselves based on the set of parents the node has. | |
virtual void | propagate_stale_bound () |
Called by BoundedObject::mark_bound_stale(), this should make sure that all bounding volumes that depend on this one are marked stale also. | |
virtual BoundingVolume * | recompute_bound () |
Recomputes the dynamic bounding volume for this object. | |
virtual BoundingVolume * | recompute_internal_bound () |
Called when needed to recompute the node's _internal_bound object. | |
void | changed_internal_bound () |
Should be called whenever you adjust the _internal_bound member, to force the external bounding volume to be recomputed. | |
virtual void | children_changed () |
Called after a scene graph update that either adds or remove children from this node, this just provides a hook for derived PandaNode objects that need to update themselves based on the set of children the node has. | |
virtual void | transform_changed () |
Called after the node's transform has been changed for any reason, this just provides a hook so derived classes can do something special in this case. | |
void | add_net_collide_mask (CollideMask mask) |
Adds the indicated bits into the net_collide_mask for this node. | |
virtual PointerTo< PandaNode > | r_copy_subgraph (InstanceMap &inst_map) const |
This is the recursive implementation of copy_subgraph(). | |
virtual void | r_copy_children (const PandaNode *from, InstanceMap &inst_map) |
This is called by r_copy_subgraph(); the copy has already been made of this particular node (and this is the copy); this function's job is to copy all of the children from the original. | |
void | fillin (DatagramIterator &scan, BamReader *manager) |
This internal function is called by make_from_bam to read in all of the relevant data from the BamFile for the new PandaNode. | |
const BoundingVolume * | get_bound_ptr () const |
Returns the state of the _bound pointer. | |
BoundingVolume * | set_bound_ptr (BoundingVolume *bound) |
Changes the _bound pointer. | |
Static Protected Member Functions | |
TypedWritable * | make_from_bam (const FactoryParams ¶ms) |
This function is called by the BamReader's factory when a new object of type PandaNode is encountered in the Bam file. | |
Protected Attributes | |
BoundedObject | _internal_bound |
Private Member Functions | |
void | apply (double x, double y, int button) |
Applies the operation indicated by the user's mouse motion to the current state. | |
void | reextract () |
Given a correctly computed _orig matrix, rederive the translation and rotation elements. | |
void | recompute () |
Rebuilds the matrix according to the stored rotation and translation components. | |
Private Attributes | |
float | _lastx |
float | _lasty |
float | _rotscale |
float | _fwdscale |
LMatrix4f | _rotation |
LPoint3f | _translation |
LMatrix4f | _mat |
LMatrix4f | _orig |
bool | _invert |
NodePath | _rel_to |
CoordinateSystem | _cs |
ModifierButtons | _mods |
int | _pixel_xy_input |
int | _button_events_input |
int | _transform_output |
PointerTo< EventStoreTransform > | _transform |
Static Private Attributes | |
TypeHandle | _type_handle |
Friends | |
class | PandaNode::Children |
It can either spin around a piece of geometry directly, or it can spin around a camera with the inverse transform to make it appear that the whole world is spinning.
The Trackball object actually just places a transform in the data graph; parent a Transform2SG node under it to actually transform objects (or cameras) in the world.
Definition at line 59 of file trackball.h.
|
Definition at line 206 of file pandaNode.h. |
|
Definition at line 58 of file boundedObject.h. |
|
Definition at line 45 of file trackball.cxx. References default_coordinate_system. |
|
Definition at line 80 of file trackball.cxx. References _mat, _orig, _rotation, and _translation. |
|
Adds a new child to the node. The child is added in the relative position indicated by sort; if all children have the same sort index, the child is added at the end. If the same child is added to a node more than once, the previous instance is first removed. Definition at line 1090 of file pandaNode.cxx. References PandaNode::_cycler, PandaNode::children_changed(), PandaNode::new_connection(), PT, and PandaNode::remove_child(). Referenced by PandaNode::replace_child(), and PandaNode::steal_children(). |
|
Adds the indicated bits into the net_collide_mask for this node. This is normally called only by CollisionNode::recompute_bound(). Definition at line 1071 of file pandaNode.I. |
|
Adds a new child to the node, directly as a stashed child. The child is not added in the normal sense, but will be revealed if unstash_child() is called on it later. If the same child is added to a node more than once, the previous instance is first removed. Definition at line 1406 of file pandaNode.cxx. |
|
Applies the operation indicated by the user's mouse motion to the current state. Returns the matrix indicating the new state. Definition at line 533 of file trackball.cxx. References _button_events_input, _lastx, _mat, _mods, _pixel_xy_input, _transform, _transform_output, B1_MASK, B2_MASK, B3_MASK, DCAST_INTO_V, DataNodeTransmit::get_data(), EventParameter::get_ptr(), EventStoreValue< Type >::get_value(), DataNodeTransmit::has_data(), ModifierButtons::is_down(), TransformState::make_mat(), MouseButton::one(), DataNodeTransmit::set_data(), MouseButton::three(), MouseButton::two(), ButtonEventList::update_mods(), x, and y. |
|
Applies whatever attributes are specified in the AccumulatedAttribs object (and by the attrib_types bitmask) to the vertices on this node, if appropriate. If this node uses geom arrays like a GeomNode, the supplied GeomTransformer may be used to unify shared arrays across multiple different nodes. This is a generalization of xform(). Reimplemented in GeomNode, and TextNode. Definition at line 687 of file pandaNode.cxx. |
|
Cross-casts the node to a Light pointer, if it is one of the four kinds of Light nodes, or returns NULL if it is not.
Reimplemented in LightLensNode, and LightNode. Definition at line 1641 of file pandaNode.cxx. |
|
This is used to support NodePath::calc_tight_bounds(). It is not intended to be called directly, and it has nothing to do with the normal Panda bounding-volume computation. If the node contains any geometry, this updates min_point and max_point to enclose its bounding box. found_any is to be set true if the node has any geometry at all, or left alone if it has none. This method may be called over several nodes, so it may enter with min_point, max_point, and found_any already set. This function is recursive, and the return value is the transform after it has been modified by this node's transform. Reimplemented in GeomNode, and TextNode. Definition at line 807 of file pandaNode.cxx. Referenced by NodePath::clear_depth_test(). |
|
Should be called whenever you adjust the _internal_bound member, to force the external bounding volume to be recomputed.
Definition at line 1054 of file pandaNode.I. |
|
Called after a scene graph update that either adds or remove children from this node, this just provides a hook for derived PandaNode objects that need to update themselves based on the set of children the node has.
Definition at line 1840 of file pandaNode.cxx. Referenced by PandaNode::add_child(), and PandaNode::remove_child(). |
|
Removes the render attribute of the given type from this node. This node, and the subgraph below, will now inherit the indicated render attribute from the nodes above this one. Definition at line 630 of file pandaNode.I. Referenced by NodePath::clear_bin(), NodePath::clear_render_mode(), NodePath::has_texture(), and NodePath::set_texture_off(). |
|
Removes the render effect of the given type from this node.
Definition at line 703 of file pandaNode.I. References PandaNode::_cycler, BoundedObject::get_bound(), and INLINE. |
|
Resets this node to have no render effects.
Definition at line 819 of file pandaNode.I. References PandaNode::_cycler, and INLINE. |
|
Resets the Namable's name to empty.
Definition at line 82 of file namable.I. References Namable::_name, and INLINE. |
|
Resets this node to leave the render state alone. Nodes at this level and below will once again inherit their render state unchanged from the nodes above this level. Definition at line 769 of file pandaNode.I. References PandaNode::_internal_bound. |
|
Resets the transform on this node to the identity transform.
Definition at line 875 of file pandaNode.I. Referenced by NodePath::get_transform(). |
|
Collapses this PandaNode with the other PandaNode, if possible, and returns a pointer to the combined PandaNode, or NULL if the two PandaNodes cannot safely be combined. The return value may be this, other, or a new PandaNode altogether. This function is called from GraphReducer::flatten(), and need not deal with children; its job is just to decide whether to collapse the two PandaNodes and what the collapsed PandaNode should look like. Reimplemented in CollisionNode, and GeomNode. Definition at line 741 of file pandaNode.cxx. Referenced by CollisionNode::xform(). |
|
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin(). Returns the number of pointers processed. This is the callback function that is made by the BamReader at some later point, after all of the required pointers have been filled in. It is necessary because there might be forward references in a bam file; when we call read_pointer() in fillin(), the object may not have been read from the file yet, so we do not have a pointer available at that time. Thus, instead of returning a pointer, read_pointer() simply reserves a later callback. This function provides that callback. The calling object is responsible for keeping track of the number of times it called read_pointer() and extracting the same number of pointers out of the supplied vector, and storing them appropriately within the object. Reimplemented in AnimBundleNode, AnimGroup, PartBundleNode, PartGroup, Character, CharacterJoint, CollisionNode, GeomSprite, PiecewiseCurve, ClipPlaneAttrib, FogAttrib, LensNode, LightAttrib, MaterialAttrib, RenderEffects, RenderState, TextureAttrib, Person, and Child. Definition at line 94 of file typedWritable.cxx. Referenced by RenderState::do_invert_compose(). |
|
Makes another instance of all the children of the other node, copying them to this node.
Definition at line 1546 of file pandaNode.cxx. References NULL. |
|
Allocates and returns a complete copy of this PandaNode and the entire scene graph rooted at this PandaNode. Some data may still be shared from the original (e.g. vertex index tables), but nothing that will impede normal use of the PandaNode. Definition at line 1037 of file pandaNode.cxx. References PandaNode::_cycler, PandaNode::get_num_stashed(), PandaNode::get_stashed(), PandaNode::get_stashed_sort(), nassertv, PT, and PandaNode::remove_stashed(). |
|
If has_cull_callback() returns true, this function will be called during the cull traversal to perform any additional operations that should be performed at cull time. This may include additional manipulation of render state or additional visible/invisible decisions, or any other arbitrary operation. By the time this function is called, the node has already passed the bounding-volume test for the viewing frustum, and the node's transform and state have already been applied to the indicated CullTraverserData object. The return value is true if this node should be visible, or false if it should be culled. Reimplemented in Character, CollisionNode, ProjectionScreen, RopeNode, LODNode, SequenceNode, SwitchNode, PGEntry, PGItem, PGTop, PGWaitBar, and TextNode. Definition at line 879 of file pandaNode.cxx. References PandaNode::find_child(), PandaNode::find_parent(), PandaNode::find_stashed(), nassertr, NULL, PandaNode::remove_child(), and PandaNode::remove_stashed(). |
|
Adds a new input wire with the given name and the indicated data type. The data type should be the TypeHandle for some type that derives from TypedReferenceCount, e.g. EventStoreInt, EventStoreDouble, or some fancier data type like Texture. If there is already an input wire defined with the indicated name, its type is changed. The return value is the index into the "input" parameter to do_transmit_data() that can be used to access the input data. Definition at line 230 of file dataNode.cxx. References DataNode::_output_wires. |
|
Adds a new output wire with the given name and the indicated data type. The data type should be the TypeHandle for some type that derives from TypedReferenceCount, e.g. EventStoreInt, EventStoreDouble, or some fancier data type like Texture. If there is already an output wire defined with the indicated name, its type is changed. The return value is the index into the "output" parameter to do_transmit_data() where the output data should be stored. Definition at line 284 of file dataNode.cxx. References DataNode::_data_connections, DataNode::WireDef::_data_type, DataNode::WireDef::_index, DataNode::DataConnection::_input_index, DataNode::_input_wires, DataNode::DataConnection::_output_index, DataNode::_output_wires, DataNode::DataConnection::_parent_index, DCAST, DataNode::get_class_type(), PandaNode::get_num_parents(), PandaNode::get_parent(), and TypedObject::is_of_type(). |
|
The virtual implementation of transmit_data(). This function receives an array of input parameters and should generate an array of output parameters. The input parameters may be accessed with the index numbers returned by the define_input() calls that were made earlier (presumably in the constructor); likewise, the output parameters should be set with the index numbers returned by the define_output() calls. Reimplemented from DataNode. Definition at line 653 of file trackball.cxx. |
|
This internal function is called by make_from_bam to read in all of the relevant data from the BamFile for the new PandaNode.
Reimplemented from TypedWritable. Reimplemented in AnimBundleNode, PartBundleNode, Character, CollisionNode, ClassicNurbsCurve, CubicCurveseg, HermiteCurve, ParametricCurve, PiecewiseCurve, RopeNode, AmbientLight, Camera, DirectionalLight, Fog, GeomNode, LensNode, LightLensNode, LightNode, LODNode, ModelNode, ModelRoot, PlaneNode, PointLight, SequenceNode, Spotlight, and SwitchNode. Definition at line 2580 of file pandaNode.cxx. Referenced by SequenceNode::has_single_child_visibility(), GeomNode::output(), PlaneNode::register_with_read_factory(), LightNode::write(), and Fog::write_datagram(). |
|
Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed.
Reimplemented in PartBundle, RenderAttrib, RenderEffect, RenderEffects, RenderState, and TransformState. Definition at line 112 of file typedWritable.cxx. Referenced by BamReader::skip_pointer(). |
|
Returns the index of the indicated child node, if it is a child, or -1 if it is not.
Definition at line 1053 of file pandaNode.cxx. Referenced by PandaNode::cull_callback(), PandaFramework::event_i(), PandaFramework::event_l(), and PandaNode::get_parent(). |
|
Returns the index of the indicated parent node, if it is a parent, or -1 if it is not.
Definition at line 350 of file pandaNode.I. Referenced by PandaNode::cull_callback(), and PandaNode::has_selective_visibility(). |
|
Returns the index of the indicated stashed node, if it is a stashed child, or -1 if it is not.
Definition at line 1370 of file pandaNode.cxx. Referenced by NodePath::clear_two_sided(), and PandaNode::cull_callback(). |
|
Marks the current volume as stale and propagates the effect at least one level, even if it had already been marked stale.
Definition at line 188 of file boundedObject.I. References BoundedObject::_cycler, BoundedObject::F_final, and INLINE. Referenced by PandaNode::remove_child(). |
|
Reimplemented from DataNode. Definition at line 167 of file trackball.h. |
|
Returns the render attribute of the indicated type, if it is defined on the node, or NULL if it is not. This checks only what is set on this particular node level, and has nothing to do with what render attributes may be inherited from parent nodes. Definition at line 587 of file pandaNode.I. References PandaNode::_cycler, and INLINE. Referenced by NodePath::get_bin_draw_order(), NodePath::get_bin_name(), NodePath::get_color(), NodePath::get_quat(), NodePath::has_bin(), NodePath::has_material(), NodePath::has_texture_off(), NodePath::set_mat(), and NodePath::set_material(). |
|
Returns the node's external bounding volume. This is the bounding volume around the node and all of its children. Reimplemented from BoundedObject. Definition at line 1015 of file pandaNode.I. |
|
Returns the state of the _bound pointer. To be used only internally by derived classes. This returns a const pointer only; the bounding volume should not be modified directly, because that might interfere with pipelining. Instead, create a new copy with make_copy(), modify the copy, and set_bound_ptr() with the copy. Alternatively, if you have just called recompute_bound(), which is guaranteed to reset the pointer, just use the return value from that as a non-const BoundingVolume pointer. Definition at line 318 of file boundedObject.I. |
|
Returns the nth child node of this node. See get_num_children(). Definition at line 390 of file pandaNode.I. References PandaNode::_cycler, INLINE, nassertr, and NULL. Referenced by PandaFramework::event_i(), PandaFramework::event_l(), PandaNode::has_single_child_visibility(), PT(), and PandaNode::replace_child(). |
|
Returns the sort index of the nth child node of this node (that is, the number that was passed to add_child()). See get_num_children(). Definition at line 409 of file pandaNode.I. References PandaNode::_cycler, INLINE, and nassertr. Referenced by PandaNode::has_single_child_visibility(), and PandaNode::replace_child(). |
|
Returns an object that can be used to walk through the list of children of the node. When you intend to visit multiple children, using this is slightly faster than calling get_child() directly on the PandaNode, since this object keeps the PipelineCycler open the whole time. However, this object does not protect you from self-modifying loops (e.g. adding or removing children during traversal). Definition at line 1103 of file pandaNode.I. Referenced by CullTraverser::get_bounds_inner_viz_state(), NodePath::get_top_node(), SortByState::operator()(), PandaNode::preserve_name(), NodePath::set_transparency(), and DataGraphTraverser::traverse(). |
|
Returns an object that can be used to walk through the list of children of the node. Unlike get_children(), this function actually returns an object that protects you from self-modifying loops, because it makes and returns a copy of the complete children list. Definition at line 1127 of file pandaNode.I. |
|
Reimplemented from DataNode. Definition at line 156 of file trackball.h. |
|
Returns the coordinate system of the Trackball. Definition at line 458 of file trackball.cxx. References _rotation. |
|
Returns the hide/show bits of this particular node. See set_draw_mask(). Definition at line 938 of file pandaNode.I. Referenced by CullTraverserData::~CullTraverserData(). |
|
Returns the render effect of the indicated type, if it is defined on the node, or NULL if it is not.
Definition at line 664 of file pandaNode.I. References INLINE, and PandaNode::r_list_descendants(). |
|
Returns the complete RenderEffects that will be applied to this node.
Definition at line 805 of file pandaNode.I. References PandaNode::_cycler, and INLINE. Referenced by CullTraverser::traverse(). |
|
Returns the index number of the first visible child of this node, or a number >= get_num_children() if there are no visible children of this node. This is called during the cull traversal, but only if has_selective_visibility() has already returned true. See has_selective_visibility(). Reimplemented in SelectiveChildNode. Definition at line 941 of file pandaNode.cxx. Referenced by CullTraverser::get_bounds_inner_viz_state(). |
|
Returns the scale factor applied to forward and backward motion. See set_forward_scale(). Definition at line 110 of file trackball.cxx. References _fwdscale. |
|
Definition at line 218 of file trackball.cxx. |
|
**** Rotation ****
Definition at line 211 of file trackball.cxx. |
|
Returns the node's internal bounding volume. This is the bounding volume around the node alone, without including children. Definition at line 1032 of file pandaNode.I. |
|
Returns the invert flag. When this is set, the inverse matrix is generated, suitable for joining to a camera, instead of parenting the scene under it. Definition at line 383 of file trackball.cxx. References _mat, _orig, and reextract(). |
|
Returns the matrix represented by the trackball rotation.
Definition at line 498 of file trackball.cxx. References _rel_to, _rotation, _translation, NodePath::get_mat(), NodePath::is_empty(), and root. |
|
|
Returns the union of all into_collide_mask() values set at CollisionNodes at this level and below.
Definition at line 954 of file pandaNode.I. |
|
Returns the index number of the next visible child of this node following the indicated child, or a number >= get_num_children() if there are no more visible children of this node. See has_selective_visibility() and get_first_visible_child(). Reimplemented in SelectiveChildNode. Definition at line 964 of file pandaNode.cxx. |
|
Returns the number of child nodes this node has. The order of the child nodes *is* meaningful and is based on the sort number that was passed to add_child(), and also on the order in which the nodes were added. Definition at line 374 of file pandaNode.I. Referenced by PandaFramework::event_l(), SelectiveChildNode::has_selective_visibility(), PandaNode::has_single_child_visibility(), PT(), and LODNode::xform(). |
|
Returns the number of different inputs that have been defined for this node using define_input(). This indicates the size of the DataNodeTransmit object that should be passed to do_transmit_data(). Definition at line 66 of file dataNode.I. References DataNode::_output_wires. Referenced by DataNode::make_copy(). |
|
Returns the number of different outputs that have been defined for this node using define_output(). This indicates the size of the DataNodeTransmit object that should be passed to do_transmit_data(). Definition at line 85 of file dataNode.I. Referenced by DriveInterface::set_mat(). |
|
Returns the number of parent nodes this node has. If this number is greater than 1, the node has been multiply instanced. The order of the parent nodes is not meaningful and is not related to the order in which the node was instanced to them. Definition at line 317 of file pandaNode.I. References PandaNode::_cycler, INLINE, and nassertr. Referenced by ParticleSystem::birth_litter(), DataNode::define_output(), Fog::output(), PandaNode::transform_changed(), and DataGraphTraverser::traverse(). |
|
Returns the number of stashed nodes this node has. These are former children of the node that have been moved to the special stashed list via stash_child(). Definition at line 508 of file pandaNode.I. References PandaNode::_cycler, and INLINE. Referenced by PandaNode::copy_subgraph(). |
|
Returns the current center of rotation.
Definition at line 334 of file trackball.cxx. References _rel_to. |
|
Definition at line 225 of file trackball.cxx. |
|
Returns the nth parent node of this node. See get_num_parents(). Definition at line 333 of file pandaNode.I. References PandaNode::find_child(), INLINE, and PandaNode::stash_child(). Referenced by ParticleSystem::birth_litter(), and DataNode::define_output(). |
|
**** Translation ****
Definition at line 143 of file trackball.cxx. References _translation. |
|
Definition at line 232 of file trackball.cxx. References _rotation, compose_matrix(), decompose_matrix(), and recompute(). |
|
Returns the current reference count.
Definition at line 183 of file referenceCount.I. Referenced by RenderState::determine_bin_index(), RenderEffects::determine_show_bounds(), FontPool::ns_garbage_collect(), TexturePool::ns_garbage_collect(), MaterialPool::ns_get_material(), and TexturePool::ns_release_texture(). |
|
Returns the NodePath that all trackball manipulations are relative to, or the empty path.
Definition at line 421 of file trackball.cxx. References _mat. |
|
Returns the nth stashed node of this node. See get_num_stashed(). Definition at line 524 of file pandaNode.I. References PandaNode::_cycler, and INLINE. Referenced by PandaNode::copy_subgraph(). |
|
Returns the sort index of the nth stashed node of this node (that is, the number that was passed to add_child()). See get_num_stashed(). Definition at line 543 of file pandaNode.I. References PandaNode::_cycler, and INLINE. Referenced by PandaNode::copy_subgraph(). |
|
Returns the complete RenderState that will be applied to all nodes at this level and below, as set on this node. This returns only the RenderState set on this particular node, and has nothing to do with state that might be inherited from above. Reimplemented in PGItem. Definition at line 749 of file pandaNode.I. References BoundedObject::get_bound(), and INLINE. Referenced by NodePath::do_billboard_point_eye(). |
|
Returns the actual transform that will be applied to the scene graph. This is the same as get_mat(), unless invert is in effect. Definition at line 515 of file trackball.cxx. References _mat. |
|
Returns the transform that has been set on this particular node. This is not the net transform from the root, but simply the transform on this particular node. Reimplemented in TrackerNode, and TextNode. Definition at line 859 of file pandaNode.I. Referenced by NodePath::do_billboard_point_world(), PandaNode::preserve_name(), NodePath::set_transform(), ActorNode::update_transform(), and CullTraverserData::~CullTraverserData(). |
|
Reimplemented from DataNode. Definition at line 164 of file trackball.h. |
|
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. This is equivalent to get_type().get_index(). Definition at line 71 of file typedObject.I. References TypeHandle::get_name(), TypedObject::get_type(), and INLINE. |
|
Returns the union of all attributes from SceneGraphReducer::AttribTypes that may not safely be applied to the vertices of this node. If this is nonzero, these attributes must be dropped at this node as a state change. This is a generalization of safe_to_transform(). Reimplemented in TextNode. Definition at line 660 of file pandaNode.cxx. |
|
Returns the index number of the currently visible child of this node. This is only meaningful if has_single_child_visibility() has returned true. Reimplemented in SequenceNode, and SwitchNode. Definition at line 1016 of file pandaNode.cxx. |
|
Definition at line 148 of file trackball.cxx. |
|
Definition at line 153 of file trackball.cxx. References _translation. |
|
Definition at line 158 of file trackball.cxx. References _translation, recompute(), and x. |
|
Returns true if there is a render attribute of the indicated type defined on this node, or false if there is not.
Definition at line 609 of file pandaNode.I. References PandaNode::_cycler, INLINE, and RenderEffects::make_empty(). Referenced by NodePath::clear_material(), NodePath::get_hpr(), NodePath::set_hpr_scale(), and NodePath::set_sz(). |
|
Should be overridden by derived classes to return true if cull_callback() has been defined. Otherwise, returns false to indicate cull_callback() does not need to be called for this node during the cull traversal. Reimplemented in Character, CollisionNode, ProjectionScreen, RopeNode, LODNode, SequenceNode, SwitchNode, PGEntry, PGItem, PGTop, PGWaitBar, and TextNode. Definition at line 838 of file pandaNode.cxx. |
|
Returns true if there is a render effect of the indicated type defined on this node, or false if there is not.
Definition at line 686 of file pandaNode.I. Referenced by NodePath::set_render_mode_wireframe(). |
|
Returns true if the Namable has a nonempty name set, false if the name is empty.
Definition at line 97 of file namable.I. References Namable::get_name(), and INLINE. Referenced by EggGroupUniquifier::EggGroupUniquifier(), Texture::read(), and Texture::Texture(). |
|
Should be overridden by derived classes to return true if this kind of node has some restrictions on the set of children that should be rendered. Node with this property include LODNodes, SwitchNodes, and SequenceNodes. If this function returns true, get_first_visible_child() and get_next_visible_child() will be called to walk through the list of children during cull, instead of iterating through the entire list. This method is called after cull_callback(), so cull_callback() may be responsible for the decisions as to which children are visible at the moment. Reimplemented in SelectiveChildNode. Definition at line 918 of file pandaNode.cxx. References PandaNode::find_parent(), nassertr, and NULL. Referenced by CullTraverser::get_bounds_inner_viz_state(). |
|
Should be overridden by derived classes to return true if this kind of node has the special property that just one of its children is visible at any given time, and furthermore that the particular visible child can be determined without reference to any external information (such as a camera). At present, only SequenceNodes and SwitchNodes fall into this category. If this function returns true, get_visible_child() can be called to return the index of the currently-visible child. Reimplemented in SequenceNode, and SwitchNode. Definition at line 999 of file pandaNode.cxx. References PandaNode::_cycler, PandaNode::get_child(), PandaNode::get_child_sort(), PandaNode::get_num_children(), nassertv, PT, and PandaNode::remove_child(). |
|
Reimplemented from DataNode. Definition at line 159 of file trackball.h. |
|
Returns true if the bound is currently marked stale and will be recomputed the next time get_bound() is called. This function is defined up at the top of this file, because several of the inline functions below reference it. Definition at line 217 of file boundedObject.I. References BoundedObject::_cycler, and INLINE. Referenced by BoundedObject::~BoundedObject(). |
|
Returns true if the current object is the indicated type exactly.
Definition at line 101 of file typedObject.I. Referenced by PT(), and CollisionNode::xform(). |
|
Returns the current state of the "final" flag. Initially, this flag is off (false), but it may be changed by an explicit call to set_final(). See set_final(). Definition at line 280 of file boundedObject.I. |
|
A simple downcast check. Returns true if this kind of node happens to inherit from GeomNode, false otherwise. This is provided as a a faster alternative to calling is_of_type(GeomNode::get_class_type()), since this test is so important to rendering. Reimplemented in GeomNode. Definition at line 1624 of file pandaNode.cxx. References PandaNode::detach(), NodePathComponent::get_node(), NodePathComponent::is_top_node(), nassertv, NULL, and NodePathComponent::set_next(). Referenced by CullTraverser::get_bounds_inner_viz_state(), NodePath::get_transparency(), PT(), and NodePath::set_transparency(). |
|
|
Lists all the nodes at and below the current path hierarchically.
Definition at line 893 of file pandaNode.I. Referenced by PGEntry::erase(). |
|
Returns a newly-allocated Node that is a shallow copy of this one. It will be a different Node pointer, but its internal data may or may not be shared with that of the original Node. Reimplemented from PandaNode. Definition at line 44 of file dataNode.cxx. References DataNode::_data_connections, DataNode::DataConnection::_input_index, DataNode::DataConnection::_output_index, DataNode::DataConnection::_parent_index, DataNode::get_num_inputs(), DataNodeTransmit::reserve(), and DataNodeTransmit::set_data(). |
|
This function is called by the BamReader's factory when a new object of type PandaNode is encountered in the Bam file. It should create the PandaNode and extract its information from the file. Reimplemented in AnimBundleNode, Character, CollisionNode, RopeNode, AmbientLight, Camera, DirectionalLight, Fog, GeomNode, LensNode, LODNode, ModelNode, ModelRoot, PlaneNode, PointLight, SequenceNode, Spotlight, and SwitchNode. Definition at line 2556 of file pandaNode.cxx. |
|
Marks the current bounding volume as stale, so that it will be recomputed later. This may have a cascading effect up to the root of all graphs of which the node is a part. Returns true if the setting was changed, or false if it was already marked stale (or if it is a static bounding volume). Definition at line 162 of file boundedObject.I. References BoundedObject::_cycler, BoundedObject::F_bound_stale, and INLINE. Referenced by CollisionSphere::CollisionSphere(), GeomNode::combine_with(), CollisionPlane::get_normal(), PGItem::instance_to_state_def(), CollisionPlane::make_copy(), PGItem::set_active(), CollisionSphere::set_center(), TextNode::set_coordinate_system(), PandaNode::set_effect(), CollisionNode::set_from_collide_mask(), GeomNode::set_geom_state(), CollisionRay::set_origin(), CollisionSegment::set_point_a(), CollisionSphere::test_intersection(), CollisionSegment::test_intersection(), CollisionRay::test_intersection(), and CollisionNode::xform(). |
|
Moves the center of rotation by the given amount.
Definition at line 321 of file trackball.cxx. References _invert. |
|
Outputs the Namable. This function simply writes the name to the output stream; most Namable derivatives will probably redefine this. Reimplemented from Namable. Reimplemented in CollisionNode, ButtonNode, HermiteCurve, RopeNode, Fog, GeomNode, LensNode, LightLensNode, LightNode, LODNode, PlaneNode, and MouseWatcher. Definition at line 1575 of file pandaNode.cxx. Referenced by PlaneNode::make_copy(), HermiteCurve::set_cv_name(), DriveInterface::set_mat(), and ButtonNode::~ButtonNode(). |
|
Called after a scene graph update that either adds or remove parents from this node, this just provides a hook for derived PandaNode objects that need to update themselves based on the set of parents the node has.
Reimplemented from PandaNode. Definition at line 322 of file dataNode.cxx. |
|
Returns true if the node's name has extrinsic meaning and must be preserved across a flatten operation, false otherwise.
Reimplemented in CollisionNode, and ModelNode. Definition at line 635 of file pandaNode.cxx. References TransformState::compose(), CPT, PandaNode::get_children(), and PandaNode::get_transform(). Referenced by SceneGraphReducer::do_flatten_siblings(). |
|
Called by BoundedObject::mark_bound_stale(), this should make sure that all bounding volumes that depend on this one are marked stale also.
Reimplemented from BoundedObject. Definition at line 1690 of file pandaNode.cxx. References PandaNode::_cycler, PandaNode::NodePathComponent, and PT. |
|
This is called by r_copy_subgraph(); the copy has already been made of this particular node (and this is the copy); this function's job is to copy all of the children from the original. Note that it includes the parameter inst_map, which is a map type, and is not (and cannot be) exported from PANDA.DLL. Thus, any derivative of PandaNode that is not also a member of PANDA.DLL *cannot* access this map, and probably should not even override this function. Reimplemented in Character. Definition at line 1925 of file pandaNode.cxx. References PandaNode::_cycler, PandaNode::fix_path_lengths(), and PandaNode::get_generic_component(). |
|
This is the recursive implementation of copy_subgraph(). It returns a copy of the entire subgraph rooted at this node. Note that it includes the parameter inst_map, which is a map type, and is not (and cannot be) exported from PANDA.DLL. Thus, any derivative of PandaNode that is not also a member of PANDA.DLL *cannot* access this map. Definition at line 1884 of file pandaNode.cxx. Referenced by PandaNode::steal_children(). |
|
Rebuilds the matrix according to the stored rotation and translation components.
Definition at line 611 of file trackball.cxx. |
|
Recomputes the dynamic bounding volume for this object. The default behavior is the compute an empty bounding volume; this may be overridden to extend it to create a nonempty bounding volume. However, after calling this function, it is guaranteed that the _bound pointer will not be shared with any other stage of the pipeline, and this new pointer is returned. Reimplemented from BoundedObject. Reimplemented in CollisionNode. Definition at line 1723 of file pandaNode.cxx. |
|
Called when needed to recompute the node's _internal_bound object. Nodes that contain anything of substance should redefine this to do the right thing. Reimplemented in CollisionNode, RopeNode, GeomNode, PGItem, and TextNode. Definition at line 1798 of file pandaNode.cxx. Referenced by GeomNode::add_geoms_from(). |
|
Given a correctly computed _orig matrix, rederive the translation and rotation elements.
Definition at line 587 of file trackball.cxx. Referenced by get_invert(). |
|
Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 225 of file referenceCount.I. Referenced by ClientDevice::ClientDevice(), EggGroupNode::find_textures(), EggGroupNode::r_apply_texmats(), EggGroupNode::r_flatten_transforms(), and EggGroupNode::reverse_vertex_ordering(). |
|
Tells the BamReader how to create objects of type PandaNode.
Reimplemented in AnimBundleNode, Character, CollisionNode, ClassicNurbsCurve, CubicCurveseg, HermiteCurve, RopeNode, AmbientLight, Camera, DirectionalLight, Fog, GeomNode, LensNode, LODNode, ModelNode, ModelRoot, PlaneNode, PointLight, SequenceNode, Spotlight, and SwitchNode. Definition at line 2519 of file pandaNode.cxx. |
|
Removes all the children from the node at once, including stashed children.
Definition at line 1465 of file pandaNode.cxx. References PandaNode::get_type(), PandaNode::make_copy(), nassertr, NULL, and PT. |
|
Removes the indicated child from the node. Returns true if the child was removed, false if it was not already a child of the node. This will also successfully remove the child if it had been stashed. Definition at line 1157 of file pandaNode.cxx. |
|
Removes the nth child from the node.
Definition at line 1121 of file pandaNode.cxx. References PandaNode::_cycler, PandaNode::children_changed(), BoundedObject::force_bound_stale(), nassertv, PT, and PandaNode::sever_connection(). Referenced by PandaNode::add_child(), PandaNode::cull_callback(), and PandaNode::has_single_child_visibility(). |
|
Removes the nth stashed child from the node.
Definition at line 1433 of file pandaNode.cxx. Referenced by PandaNode::copy_subgraph(), and PandaNode::cull_callback(). |
|
Searches for the orig_child node in the node's list of children, and replaces it with the new_child instead. Returns true if the replacement is made, or false if the node is not a child. Definition at line 1203 of file pandaNode.cxx. References PandaNode::add_child(), PandaNode::get_child(), and PandaNode::get_child_sort(). Referenced by SceneGraphReducer::consider_siblings(). |
|
Reinitializes all transforms to identity.
Definition at line 92 of file trackball.cxx. References _fwdscale. |
|
**** Origin of Rotation **** Future rotations will be about the current origin. Definition at line 305 of file trackball.cxx. References _invert. |
|
Returns true if it is generally safe to combine this particular kind of PandaNode with other kinds of PandaNodes, adding children or whatever. For instance, an LODNode should not be combined with any other PandaNode, because its set of children is meaningful. Reimplemented in LODNode, ModelNode, SequenceNode, and SwitchNode. Definition at line 601 of file pandaNode.cxx. Referenced by SortByState::operator()(). |
|
Returns true if it is generally safe to flatten out this particular kind of PandaNode by duplicating instances, false otherwise (for instance, a Camera cannot be safely flattened, because the Camera pointer itself is meaningful).
Reimplemented in AnimBundleNode, PartBundleNode, ParametricCurve, Camera, ModelNode, ForceNode, and PhysicalNode. Definition at line 532 of file pandaNode.cxx. |
|
Returns true if a flatten operation may safely continue past this node, or false if it should drop all attributes here and stop.
Definition at line 618 of file pandaNode.cxx. References NULL. |
|
Returns true if it is safe to automatically adjust the transform on this kind of node. Usually, this is only a bad idea if the user expects to find a particular transform on the node. ModelNodes with the preserve_transform flag set are presently the only kinds of nodes that should not have their transform even adjusted. Reimplemented in ModelNode. Definition at line 578 of file pandaNode.cxx. |
|
Returns true if it is generally safe to transform this particular kind of PandaNode by calling the xform() method, false otherwise. For instance, it's usually a bad idea to attempt to xform a Character. Reimplemented in Character, ParametricCurve, RopeNode, Camera, and ModelNode. Definition at line 551 of file pandaNode.cxx. References AccumulatedAttribs::_transform, SceneGraphReducer::TT_transform, and PandaNode::xform(). |
|
Adds the indicated render attribute to the scene graph on this node. This attribute will now apply to this node and everything below. If there was already an attribute of the same type, it is replaced. Definition at line 565 of file pandaNode.I. References PandaNode::_cycler, INLINE, and RenderState::make_empty(). Referenced by NodePath::clear_texture(), NodePath::get_mat(), NodePath::set_bin(), NodePath::set_color_off(), NodePath::set_pos_hpr(), NodePath::set_render_mode_filled(), and NodePath::set_scale(). |
|
Sets the type of the bounding volume that will be dynamically computed for this particular node. Presently, this should only be BVT_dynamic_sphere. Definition at line 115 of file boundedObject.I. |
|
Resets the internal bounding volume so that it is the indicated volume. The external bounding volume as returned by get_bound() (which includes all of the node's children) will be adjusted to include this internal volume. Reimplemented from BoundedObject. Definition at line 995 of file pandaNode.I. |
|
Sets the type of the external bounding volume that is placed around this node and all of its children.
Definition at line 972 of file pandaNode.I. |
|
Changes the _bound pointer. To be used only internally by derived classes, usually in recompute_bound(). The return value is the same pointer passed in, as a convenience (it will now be reference counted). Definition at line 340 of file boundedObject.I. |
|
Sets the coordinate system of the Trackball. Normally, this is the default coordinate system. This changes the axes the Trackball manipulates so that the user interface remains consistent across different coordinate systems. Definition at line 443 of file trackball.cxx. References _fwdscale, _translation, x, and y. |
|
Sets the hide/show bits of this particular node. During the cull traversal, a node is not visited if none of its draw mask bits intersect with the camera's draw mask bits. These masks can be used to selectively hide and show different parts of the scene graph from different cameras that are otherwise viewing the same scene. See Camera::set_camera_mask(). Definition at line 922 of file pandaNode.I. Referenced by CollisionNode::CollisionNode(), NodePath::get_z(), NodePath::heads_up(), EggLoader::make_node(), and NodePath::set_pos(). |
|
Adds the indicated render effect to the scene graph on this node. If there was already an effect of the same type, it is replaced. Definition at line 648 of file pandaNode.I. References PandaNode::_cycler, INLINE, TransformState::make_identity(), BoundedObject::mark_bound_stale(), and PandaNode::transform_changed(). Referenced by NodePath::get_fog(), and NodePath::has_fog(). |
|
Sets the complete RenderEffects that will be applied this node. This completely replaces whatever has been set on this node via repeated calls to set_attrib(). Definition at line 789 of file pandaNode.I. References PandaNode::_cycler, and INLINE. |
|
Sets the "final" flag on this BoundedObject. If this is true, than no bounding volume need be tested below it; a positive intersection with this bounding volume is deemed to be a positive intersection with all geometry inside. This is useful to quickly force a larger bounding volume around a node when the GeomNodes themselves are inaccurate for some reason, without forcing a recompute of every nested bounding volume. It's also helpful when the bounding volume is tricked by some special properties, like billboards, that may move geometry out of its bounding volume otherwise. Definition at line 256 of file boundedObject.I. |
|
Changes the scale factor applied to forward and backward motion. The larger this number, the faster the model will move in response to dollying in and out. Definition at line 129 of file trackball.cxx. References _translation. |
|
Definition at line 265 of file trackball.cxx. References _orig, _rotation, _translation, and recompute(). |
|
Definition at line 256 of file trackball.cxx. |
|
Directly set the mover's orientation.
Definition at line 248 of file trackball.cxx. |
|
**** Misc **** When this is set, the inverse matrix is generated, suitable for joining to a camera, instead of parenting the scene under it. Definition at line 366 of file trackball.cxx. |
|
Stores the indicated transform in the trackball. This is a transform in global space, regardless of the rel_to node. Definition at line 475 of file trackball.cxx. |
|
Definition at line 69 of file namable.I. References Namable::_name. Referenced by BuilderBucket::BuilderBucket(), SceneGraphReducer::do_flatten_siblings(), Texture::read(), PandaNode::reparent(), and Texture::Texture(). |
|
Directly sets the center of rotation.
Definition at line 347 of file trackball.cxx. References _rel_to. |
|
Definition at line 274 of file trackball.cxx. |
|
Definition at line 178 of file trackball.cxx. |
|
Directly set the offset from the rotational origin.
Definition at line 172 of file trackball.cxx. |
|
Definition at line 283 of file trackball.cxx. |
|
Sets the NodePath that all trackball manipulations are to be assumed to be relative to. For instance, set your camera node here to make the trackball motion camera relative. The default is the empty path, which means trackball motion is in global space. Definition at line 406 of file trackball.cxx. References _orig. |
|
Sets the complete RenderState that will be applied to all nodes at this level and below. (The actual state that will be applied to lower nodes is based on the composition of RenderStates from above this node as well). This completely replaces whatever has been set on this node via repeated calls to set_attrib(). Definition at line 727 of file pandaNode.I. Referenced by NodePath::get_key(), and GeomParticleRenderer::kill_particle(). |
|
Sets the transform that will be applied to this node and below. This defines a new coordinate space at this point in the scene graph and below. Definition at line 837 of file pandaNode.I. Referenced by NodePath::get_child(). |
|
Indicates the instantaneous velocity of this node. This function is meaningless to most kinds of nodes; it is implemented only for CollisionNodes and is intended to inform the collision system of velocity. It is defined at this level only as an abstract interface to allow setting the velocity of a collision node without having to link with, or know anything about, the collision system. See CollisionNode::set_velocity(). Reimplemented in CollisionNode. Definition at line 1674 of file pandaNode.cxx. |
|
Definition at line 184 of file trackball.cxx. |
|
Definition at line 190 of file trackball.cxx. |
|
Definition at line 196 of file trackball.cxx. References _rotation, and decompose_matrix(). |
|
Stashes the indicated child node. This removes the child from the list of active children and puts it on a special list of stashed children. This child node no longer contributes to the bounding volume of the PandaNode, and is not visited in normal traversals. It is invisible and uncollidable. The child may later be restored by calling unstash_child(). Definition at line 1292 of file pandaNode.cxx. References NULL. |
|
Stashes the indicated child node. This removes the child from the list of active children and puts it on a special list of stashed children. This child node no longer contributes to the bounding volume of the PandaNode, and is not visited in normal traversals. It is invisible and uncollidable. The child may later be restored by calling unstash_child(). This function returns true if the child node was successfully stashed, or false if it was not a child of the node in the first place (e.g. it was previously stashed). Definition at line 446 of file pandaNode.I. Referenced by PandaNode::get_parent(). |
|
Moves all the children from the other node onto this node.
Definition at line 1504 of file pandaNode.cxx. References PandaNode::_cycler, PandaNode::add_child(), PT, and PandaNode::r_copy_subgraph(). |
|
Does some easy checks to make sure that the reference count isn't completely bogus.
Definition at line 328 of file referenceCount.I. References INLINE. Referenced by EggNode::determine_bin(), and ReferenceCount::~ReferenceCount(). |
|
Called after the node's transform has been changed for any reason, this just provides a hook so derived classes can do something special in this case.
Reimplemented in ActorNode. Definition at line 1856 of file pandaNode.cxx. References PandaNode::_cycler, PandaNode::get_num_parents(), PandaNode::get_top_component(), NULL, and PT. Referenced by PandaNode::set_effect(). |
|
Collects the data from all of the parent nodes and puts it into one DataNodeTransmit object, for processing; calls do_transmit_data() to read all the inputs and put the result into the indicated output.
Definition at line 63 of file dataNode.cxx. References DataNode::_input_wires. |
|
Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic; plus, we don't have a virtual destructor anyway.) However, see the helper function unref_delete(). User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 293 of file referenceCount.I. References INLINE. Referenced by RenderState::determine_bin_index(), and RenderEffects::determine_show_bounds(). |
|
Returns the indicated stashed node to normal child status. This removes the child from the list of stashed children and puts it on the normal list of active children. This child node once again contributes to the bounding volume of the PandaNode, and will be visited in normal traversals. It is visible and collidable. Definition at line 1336 of file pandaNode.cxx. |
|
Returns the indicated stashed node to normal child status. This removes the child from the list of stashed children and puts it on the normal list of active children. This child node once again contributes to the bounding volume of the PandaNode, and will be visited in normal traversals. It is visible and collidable. This function returns true if the child node was successfully stashed, or false if it was not a child of the node in the first place (e.g. it was previously stashed). Definition at line 486 of file pandaNode.I. References PandaNode::_cycler, and INLINE. |
|
Reimplemented in AnalogNode, ButtonNode, ClassicNurbsCurve, NurbsPPCurve, RopeNode, AmbientLight, DirectionalLight, LensNode, LightLensNode, LightNode, PlaneNode, PointLight, Spotlight, TextNode, ButtonThrower, and MouseWatcher. Definition at line 1588 of file pandaNode.cxx. Referenced by LightNode::as_light(), GeomNode::calc_tight_bounds(), and AnalogNode::~AnalogNode(). |
|
Writes to the indicated ostream a list of all the connections currently showing between this DataNode and its parent(s).
Definition at line 174 of file dataNode.cxx. References DataNode::_data_connections, DataNode::WireDef::_data_type, DataNode::WireDef::_index, DataNode::_input_wires, and nassertr. |
|
Writes the contents of this object to the datagram for shipping out to a Bam file.
Reimplemented from TypedWritable. Reimplemented in AnimBundleNode, PartBundleNode, Character, CollisionNode, ClassicNurbsCurve, CubicCurveseg, HermiteCurve, ParametricCurve, PiecewiseCurve, RopeNode, AmbientLight, Camera, DirectionalLight, Fog, GeomNode, LensNode, LightLensNode, LightNode, LODNode, ModelNode, ModelRoot, PlaneNode, PointLight, SequenceNode, Spotlight, and SwitchNode. Definition at line 2534 of file pandaNode.cxx. Referenced by SwitchNode::cull_callback(), SequenceNode::cull_callback(), PlaneNode::output(), LightNode::output(), and PartBundleNode::safe_to_flatten(). |
|
Writes to the indicated ostream a list of all the inputs this DataNode might expect to receive.
Definition at line 132 of file dataNode.cxx. |
|
Writes to the indicated ostream a list of all the outputs this DataNode might generate.
Definition at line 152 of file dataNode.cxx. References DataNode::_input_wires. |
|
Transforms the contents of this PandaNode by the indicated matrix, if it means anything to do so. For most kinds of PandaNodes, this does nothing. Reimplemented in CollisionNode, DirectionalLight, Fog, GeomNode, LensNode, LODNode, PlaneNode, PointLight, Spotlight, and PGItem. Definition at line 707 of file pandaNode.cxx. Referenced by DirectionalLight::DirectionalLight(), LensNode::LensNode(), PlaneNode::PlaneNode(), PointLight::PointLight(), and PandaNode::safe_to_transform(). |
|
Reimplemented in GeomNode. Definition at line 392 of file pandaNode.h. |
|
Definition at line 148 of file trackball.h. Referenced by apply(). |
|
Definition at line 134 of file trackball.h. Referenced by set_invert(). |
|
Definition at line 127 of file trackball.h. Referenced by get_forward_scale(), reset(), and set_coordinate_system(). |
|
Definition at line 213 of file pandaNode.h. Referenced by PandaNode::clear_state(). |
|
Definition at line 132 of file trackball.h. Referenced by move_origin(), and reset_origin_here(). |
|
Definition at line 124 of file trackball.h. Referenced by apply(). |
|
Definition at line 124 of file trackball.h. |
|
Definition at line 131 of file trackball.h. Referenced by apply(), get_invert(), get_rel_to(), get_trans_mat(), and ~Trackball(). |
|
Definition at line 137 of file trackball.h. Referenced by apply(). |
|
Definition at line 131 of file trackball.h. Referenced by get_invert(), set_h(), set_rel_to(), and ~Trackball(). |
|
Definition at line 147 of file trackball.h. Referenced by apply(). |
|
Definition at line 133 of file trackball.h. Referenced by get_mat(), get_origin(), and set_origin(). |
|
Definition at line 129 of file trackball.h. Referenced by get_coordinate_system(), get_mat(), get_r(), set_h(), set_p(), set_z(), and ~Trackball(). |
|
Definition at line 126 of file trackball.h. |
|
Definition at line 153 of file trackball.h. Referenced by apply(). |
|
Definition at line 151 of file trackball.h. Referenced by apply(). |
|
Definition at line 130 of file trackball.h. Referenced by get_mat(), get_pos(), get_y(), get_z(), set_coordinate_system(), set_forward_scale(), set_h(), and ~Trackball(). |
|
Reimplemented from DataNode. Definition at line 30 of file trackball.cxx. |
|
Definition at line 25 of file typedWritable.cxx. Referenced by Child::complete_pointers(), Parent::complete_pointers(), Person::complete_pointers(), LoaderFileTypeBam::get_extension(), PartGroup::pick_channel_index(), BamReader::read_pointer(), and AnimGroup::write_datagram(). |