Panda3D
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
AttribNodeRegistry Class Reference

This global object records NodePaths that are referenced by scene graph attribs, such as ClipPlaneAttribs and LightAttribs. More...

#include "attribNodeRegistry.h"

Public Member Functions

void add_node (const NodePath &attrib_node)
 Adds the indicated NodePath to the registry. More...
 
void clear ()
 Removes all nodes from the registry. More...
 
int find_node (const NodePath &attrib_node) const
 Returns the index number of the indicated NodePath in the registry (assuming its name hasn't changed since it was recorded in the registry), or -1 if the NodePath cannot be found (for instance, because its name has changed). More...
 
int find_node (TypeHandle type, const std::string &name) const
 Returns the index number of the node with the indicated type and name in the registry, or -1 if there is no such node in the registry. More...
 
NodePath get_node (int n) const
 
std::string get_node_name (int n) const
 Returns the name of the nth node, as recorded in the registry. More...
 
TypeHandle get_node_type (int n) const
 Returns the type of the nth node, as recorded in the registry. More...
 
int get_num_nodes () const
 
NodePath lookup_node (const NodePath &orig_node) const
 Looks up the indicated NodePath in the registry. More...
 
void output (std::ostream &out) const
 
bool remove_node (const NodePath &attrib_node)
 Removes the indicated NodePath from the registry. More...
 
void remove_node (int n)
 Removes the nth node from the registry. More...
 
void write (std::ostream &out) const
 

Static Public Member Functions

static AttribNodeRegistryget_global_ptr ()
 

Public Attributes

 get_node
 Returns the nth NodePath recorded in the registry. More...
 
 get_num_nodes
 Returns the total number of nodes in the registry. More...
 

Detailed Description

This global object records NodePaths that are referenced by scene graph attribs, such as ClipPlaneAttribs and LightAttribs.

Its primary purpose is to unify attribs that are loaded in from bam files. Attrib nodes are identified by name and type; when a bam file that contains references to some attrib nodes is loaded, those nodes are first looked up here in the AttribNodeRegistry. If there is a match (by name and node type), the identified node is used instead of the node referenced within the bam file itself.

Definition at line 33 of file attribNodeRegistry.h.

Member Function Documentation

◆ add_node()

void AttribNodeRegistry::add_node ( const NodePath attrib_node)

Adds the indicated NodePath to the registry.

The name and type of the node are noted at the time of this call; if the name changes later, it will not update the registry index.

The NodePath must reference some kind of an attribute node, such as a LightNode or a PlaneNode. When bam files that reference an attribute node of the same type and the same name are loaded, they will quietly be redirected to reference this NodePath.

If there is already a node matching the indicated name and type, it will be replaced.

Definition at line 40 of file attribNodeRegistry.cxx.

◆ clear()

void AttribNodeRegistry::clear ( )

Removes all nodes from the registry.

Definition at line 174 of file attribNodeRegistry.cxx.

References ordered_vector< Key, Compare, Vector >::clear().

◆ find_node() [1/2]

int AttribNodeRegistry::find_node ( const NodePath attrib_node) const

Returns the index number of the indicated NodePath in the registry (assuming its name hasn't changed since it was recorded in the registry), or -1 if the NodePath cannot be found (for instance, because its name has changed).

Definition at line 136 of file attribNodeRegistry.cxx.

◆ find_node() [2/2]

int AttribNodeRegistry::find_node ( TypeHandle  type,
const std::string &  name 
) const

Returns the index number of the node with the indicated type and name in the registry, or -1 if there is no such node in the registry.

Definition at line 151 of file attribNodeRegistry.cxx.

References ordered_vector< Key, Compare, Vector >::begin(), and ordered_vector< Key, Compare, Vector >::end().

◆ get_node_name()

std::string AttribNodeRegistry::get_node_name ( int  n) const

Returns the name of the nth node, as recorded in the registry.

This will be the node name as it was at the time the node was recorded; if the node has changed names since then, this will still return the original name.

Definition at line 123 of file attribNodeRegistry.cxx.

◆ get_node_type()

TypeHandle AttribNodeRegistry::get_node_type ( int  n) const

Returns the type of the nth node, as recorded in the registry.

Definition at line 111 of file attribNodeRegistry.cxx.

◆ lookup_node()

NodePath AttribNodeRegistry::lookup_node ( const NodePath orig_node) const

Looks up the indicated NodePath in the registry.

If there is a node already in the registry with the matching name and type, returns that NodePath instead; otherwise, returns the original NodePath.

Definition at line 77 of file attribNodeRegistry.cxx.

◆ remove_node() [1/2]

bool AttribNodeRegistry::remove_node ( const NodePath attrib_node)

Removes the indicated NodePath from the registry.

The name of the node must not have changed since the matching call to add_node(), or it will not be successfully removed.

Returns true if the NodePath is found and removed, false if it is not found (for instance, because the name has changed).

Definition at line 60 of file attribNodeRegistry.cxx.

◆ remove_node() [2/2]

void AttribNodeRegistry::remove_node ( int  n)

Removes the nth node from the registry.

Definition at line 164 of file attribNodeRegistry.cxx.

Member Data Documentation

◆ get_node

NodePath AttribNodeRegistry::get_node

Returns the nth NodePath recorded in the registry.

Definition at line 44 of file attribNodeRegistry.h.

◆ get_num_nodes

int AttribNodeRegistry::get_num_nodes

Returns the total number of nodes in the registry.

Definition at line 44 of file attribNodeRegistry.h.


The documentation for this class was generated from the following files: