NodePath
-
class NodePath
NodePath is the fundamental system for disambiguating instances, and also provides a higher-level interface for manipulating the scene graph.
A NodePath is a list of connected nodes from the root of the graph to any sub-node. Each NodePath therefore uniquely describes one instance of a node.
NodePaths themselves are lightweight objects that may easily be copied and passed by value. Their data is stored as a series of NodePathComponents that are stored on the nodes. Holding a NodePath will keep a reference count to all the nodes in the path. However, if any node in the path is removed or reparented (perhaps through a different NodePath), the NodePath will automatically be updated to reflect the changes.
Inheritance diagram
-
enum ErrorType
This enumeration is returned by
get_error_type()
for an emptyNodePath
to report the reason it’s empty.-
enumerator ET_ok = 0
i.e. not empty, or never assigned to anything.
-
enumerator ET_not_found = 1
returned from a failed find() or similar function.
-
enumerator ET_removed = 2
remove_node() was previously called on this NodePath.
-
enumerator ET_fail = 3
general failure return from some function.
-
enumerator ET_ok = 0
-
NodePath(void)
-
explicit NodePath(std::string const &top_node_name, Thread *current_thread = Thread::get_current_thread())
-
explicit NodePath(PandaNode *node, Thread *current_thread = Thread::get_current_thread())
-
explicit NodePath(NodePath const &parent, PandaNode *child_node, Thread *current_thread = Thread::get_current_thread())
-
NodePath(NodePath const ©)
This constructs an empty
NodePath
with no nodes.This constructs a new
NodePath
with a single node. An ordinary, unattachedPandaNode
is created with the indicated name.This constructs a
NodePath
for the indicated node. If the node does not have any parents, this creates a singletonNodePath
; otherwise, it automatically finds the path from the node to the root. If the node has multiple paths to the root, one path is chosen arbitrarily and a warning message is printed (but see alsoNodePath::any_path()
, below).Constructs a
NodePath
with the indicated parentNodePath
and child node; the child node must be a stashed or unstashed child of the parent.
-
std::size_t add_hash(std::size_t hash) const
Adds the
NodePath
into the running hash. This is intended to be used by lower-level code that computes a hash for eachNodePath
. It modifies the hash value passed in by a unique adjustment for eachNodePath
, and returns the modified hash.This is similar to the unique integer returned by
get_key()
, but it is not guaranteed to remain unique beyond the lifetime of this particularNodePath
. Once thisNodePath
destructs, a differentNodePath
may be created which shares the same hash value.
-
void adjust_all_priorities(int adjustment)
Adds the indicated adjustment amount (which may be negative) to the priority for all transitions on the referenced node, and for all nodes in the subgraph below. This can be used to force these nodes not to be overridden by a high-level state change above. If the priority would drop below zero, it is set to zero.
-
NodePath any_path(PandaNode *node, Thread *current_thread = Thread::get_current_thread())
Returns a new
NodePath
that represents any arbitrary path from the root to the indicated node. This is the same thing that would be returned by NodePath(node), except that no warning is issued if the path is ambiguous.
-
void apply_texture_colors(void)
Removes textures from Geoms at this node and below by applying the texture colors to the vertices. This is primarily useful to simplify a low-LOD model. The texture colors are replaced by flat colors that approximate the original textures.
Only the bottommost texture on each Geom is used (if there is more than one), and it is applied as if it were M_modulate, and WM_repeat, regardless of its actual settings. If the texture has a simple_ram_image, this may be used if the main image isn’t resident.
After this call, there will be no texturing specified at this level and below. Of course, there might still be texturing inherited from above.
-
NodePath attach_new_node(PandaNode *node, int sort = 0, Thread *current_thread = Thread::get_current_thread()) const
-
NodePath attach_new_node(std::string const &name, int sort = 0, Thread *current_thread = Thread::get_current_thread()) const
Creates an ordinary
PandaNode
and attaches it below the currentNodePath
, returning a newNodePath
that references it.Attaches a new node, with or without existing parents, to the scene graph below the referenced node of this
NodePath
. This is the preferred way to add nodes to the graph.If the node was already a child of the parent, this returns a
NodePath
to the existing child.This does not automatically extend the current
NodePath
to reflect the attachment; however, aNodePath
that does reflect this extension is returned.
-
bool calc_tight_bounds(LPoint3 &min_point, LPoint3 &max_point, NodePath const &other = NodePath(), Thread *current_thread = Thread::get_current_thread()) const
Calculates the minimum and maximum vertices of all Geoms at this NodePath’s bottom node and below. This is a tight bounding box; it will generally be tighter than the bounding volume returned by
get_bounds()
(but it is more expensive to compute).The bounding box is computed relative to the parent node’s coordinate system by default. You can optionally specify a different
NodePath
to compute the bounds relative to. Note that the box is always axis-aligned against the given NodePath’s coordinate system, so you might get a differently sized box depending on which node you pass.The return value is true if any points are within the bounding volume, or false if none are.
-
void clear_antialias(void)
Completely removes any antialias setting that may have been set on this node via
set_antialias()
.
-
void clear_attrib(TypeHandle type)
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.
-
void clear_audio_volume(void)
Completely removes any audio volume from the referenced node. This is preferable to simply setting the audio volume to identity, as it also removes the overhead associated with having an audio volume at all.
-
void clear_billboard(void)
Removes any billboard effect from the node.
-
void clear_bin(void)
Completely removes any bin adjustment that may have been set via
set_bin()
from this particular node.
-
void clear_clip_plane(void)
-
void clear_clip_plane(NodePath const &clip_plane)
Completely removes any clip planes that may have been set via
set_clip_plane()
orset_clip_plane_off()
from this particular node.Removes any reference to the indicated clipping plane from the
NodePath
.
-
void clear_color(void)
Completely removes any color adjustment from the node. This allows the natural color of the geometry, or whatever color transitions might be otherwise affecting the geometry, to show instead.
-
void clear_color_scale(void)
Completely removes any color scale from the referenced node. This is preferable to simply setting the color scale to identity, as it also removes the overhead associated with having a color scale at all.
-
void clear_compass(void)
Removes any compass effect from the node.
-
void clear_depth_bias(void)
Completely removes any depth-bias adjustment that may have been set on this node via
set_depth_bias()
.
-
void clear_depth_offset(void)
Completely removes any depth-offset adjustment that may have been set on this node via
set_depth_offset()
.
-
void clear_depth_test(void)
Completely removes any depth-test adjustment that may have been set on this node via
set_depth_test()
.
-
void clear_depth_write(void)
Completely removes any depth-write adjustment that may have been set on this node via
set_depth_write()
.
-
void clear_effect(TypeHandle type)
Removes the render effect of the given type from this node.
-
void clear_effects(void)
Resets this node to have no render effects.
-
void clear_fog(void)
Completely removes any fog adjustment that may have been set via
set_fog()
orset_fog_off()
from this particular node. This allows whatever fogs might be otherwise affecting the geometry to show instead.
-
void clear_light(void)
-
void clear_light(NodePath const &light)
Completely removes any lighting operations that may have been set via
set_light()
orset_light_off()
from this particular node.Removes any reference to the indicated Light or
PolylightNode
from theNodePath
.
-
void clear_logic_op(void)
Completely removes any logical operation that may have been set on this node via
set_logic_op()
. The geometry at this level and below will subsequently be rendered using standard color blending.New in version 1.10.0.
-
void clear_mat(void)
Completely removes any transform from the referenced node.
-
void clear_material(void)
Completely removes any material adjustment that may have been set via
set_material()
from this particular node.
-
int clear_model_nodes(void)
Recursively walks through the scene graph at this level and below, looking for
ModelNodes
, and calls model_node->set_preserve_transform(PT_drop_node) on each one. This allows a subsequent call toflatten_strong()
to eliminate all of theModelNodes
.Returns the number of
ModelNodes
found.
-
void clear_occluder(void)
-
void clear_occluder(NodePath const &occluder)
Completely removes any occluders that may have been set via
set_occluder()
from this particular node.Removes any reference to the indicated occluder from the
NodePath
.
-
void clear_project_texture(TextureStage *stage)
Undoes the effect of
project_texture()
.
-
void clear_python_tag(PyObject *keys)
-
void clear_render_mode(void)
Completely removes any render mode adjustment that may have been set on this node via
set_render_mode_wireframe()
orset_render_mode_filled()
.
-
void clear_scissor(void)
Removes the scissor region that was defined at this node level by a previous call to
set_scissor()
.
-
void clear_shader(void)
-
void clear_shader_input(CPT_InternalName id)
-
void clear_tag(std::string const &key)
Removes the value defined for this key on this particular node. After a call to clear_tag(),
has_tag()
will return false for the indicated key.
-
void clear_tex_gen(void)
-
void clear_tex_gen(TextureStage *stage)
Removes the texture coordinate generation mode from all texture stages on this node.
Disables automatic texture coordinate generation for the indicated texture stage.
-
void clear_tex_projector(TextureStage *stage)
-
void clear_tex_projector(void)
Removes the
TexProjectorEffect
for the indicated stage from this node.Removes the
TexProjectorEffect
for all stages from this node.
-
void clear_tex_transform(void)
-
void clear_tex_transform(TextureStage *stage)
Removes all texture matrices from the current node.
Removes the texture matrix on the current node for the given stage.
-
void clear_texture(void)
-
void clear_texture(TextureStage *stage)
Completely removes any texture adjustment that may have been set via
set_texture()
orset_texture_off()
from this particular node. This allows whatever textures might be otherwise affecting the geometry to show instead.Removes any reference to the indicated texture stage from the
NodePath
.
-
void clear_transform(Thread *current_thread = Thread::get_current_thread())
-
void clear_transform(NodePath const &other, Thread *current_thread = Thread::get_current_thread())
Sets the transform object on this node to identity.
Sets the transform object on this node to identity, relative to the other node. This effectively places this node at the same position as the other node.
-
void clear_transparency(void)
Completely removes any transparency adjustment that may have been set on this node via
set_transparency()
. The geometry at this level and below will subsequently be rendered either transparent or not, to whatever other nodes may have hadset_transparency()
on them.
-
void clear_two_sided(void)
Completely removes any two-sided adjustment that may have been set on this node via
set_two_sided()
. The geometry at this level and below will subsequently be rendered either two-sided or one-sided, according to whatever other nodes may have hadset_two_sided()
on it, or according to the initial state otherwise.
-
int compare_to(WeakNodePath const &other) const
Returns a number less than zero if this
NodePath
sorts before the other one, greater than zero if it sorts after, or zero if they are equivalent.Two
NodePaths
are considered equivalent if they consist of exactly the same list of nodes in the same order. Otherwise, they are different; differentNodePaths
will be ranked in a consistent but undefined ordering; the ordering is useful only for placing theNodePaths
in a sorted container like an STL set.
-
void compose_color_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz, PN_stdfloat sa, int priority = 0)
Sets the color scale component of the transform
multiplies the color scale component of the transform, with previous color scale leaving translation and rotation untouched.
-
NodePath copy_to(NodePath const &other, int sort = 0, Thread *current_thread = Thread::get_current_thread()) const
Functions like
instance_to()
, except a deep copy is made of the referenced node and all of its descendents, which is then parented to the indicated node. ANodePath
to the newly created copy is returned.
-
int count_num_descendants(void) const
Returns the number of nodes at and below this level.
-
static NodePath decode_from_bam_stream(vector_uchar data, BamReader *reader = nullptr)
Reads the string created by a previous call to
encode_to_bam_stream()
, and extracts and returns theNodePath
on that string. Returns NULL on error.
-
void detach_node(Thread *current_thread = Thread::get_current_thread())
Disconnects the referenced node from its parent, but does not immediately delete it. The
NodePath
retains a pointer to the node, and becomes a singletonNodePath
.This should be called to detach a node from the scene graph, with the option of reattaching it later to the same parent or to a different parent.
In practice, the only difference between
remove_node()
and detach_node() is thatremove_node()
also resets theNodePath
to empty, which will cause the node to be deleted immediately if there are no other references. On the other hand, detach_node() leaves theNodePath
referencing the node, which will keep at least one reference to the node for as long as theNodePath
exists.
-
void do_billboard_axis(NodePath const &camera, PN_stdfloat offset)
Performs a billboard-type rotate to the indicated camera node, one time only, and leaves the object rotated. This is similar in principle to
heads_up()
.
-
void do_billboard_point_eye(NodePath const &camera, PN_stdfloat offset)
Performs a billboard-type rotate to the indicated camera node, one time only, and leaves the object rotated. This is similar in principle to
look_at()
, although the point_eye billboard effect cannot be achieved using the ordinarylook_at()
call.
-
void do_billboard_point_world(NodePath const &camera, PN_stdfloat offset)
Performs a billboard-type rotate to the indicated camera node, one time only, and leaves the object rotated. This is similar in principle to
look_at()
.
-
vector_uchar encode_to_bam_stream(void) const
-
bool encode_to_bam_stream(vector_uchar &data, BamWriter *writer = nullptr) const
Converts the
NodePath
object into a single stream of data using aBamWriter
, and returns that data as a string string. Returns empty string on failure. This is similar towrite_bam_stream()
.This method is used by
__reduce__
to handle streaming ofNodePaths
to a pickle file.Converts the
NodePath
object into a single stream of data using aBamWriter
, and stores that data in the indicated string. Returns true on success, false on failure.If the
BamWriter
is NULL, this behaves the same way asNodePath::write_bam_stream()
andPandaNode::encode_to_bam_stream()
, in the sense that it only writes this node and all nodes below it.However, if the
BamWriter
is not NULL, it behaves very differently. In this case, it encodes the entire graph of all nodes connected to theNodePath
, including all parent nodes and siblings. This is necessary for correct streaming of relatedNodePaths
and restoration of instances, etc., but it does mean you must detach() a node before writing it if you want to limit the nodes that get written.This method is used by
__reduce__
to handle streaming ofNodePaths
to a pickle file. TheBamWriter
case is used by the direct.stdpy.pickle module, while the saner, non-BamWriter case is used when the standard pickle module calls this function.
-
NodePath find(std::string const &path) const
Searches for a node below the referenced node that matches the indicated string. Returns the shortest match found, if any, or an empty
NodePath
if no match can be found.The referenced node itself is not considered in the search.
-
NodePathCollection find_all_matches(std::string const &path) const
Returns the complete set of all
NodePaths
that begin with thisNodePath
and can be extended by path. The shortest paths will be listed first.The referenced node itself is not considered in the search.
-
MaterialCollection find_all_materials(void) const
-
MaterialCollection find_all_materials(std::string const &name) const
Returns a list of a materials applied to geometry at this node and below.
Returns a list of a materials applied to geometry at this node and below that match the indicated name (which may contain wildcard characters).
-
NodePathCollection find_all_paths_to(PandaNode *node) const
Returns the set of all
NodePaths
that extend from thisNodePath
down to the indicated node. The shortest paths will be listed first.
-
InternalNameCollection find_all_texcoords(void) const
-
InternalNameCollection find_all_texcoords(std::string const &name) const
Returns a list of all texture coordinate sets used by any geometry at this node level and below.
Returns a list of all texture coordinate sets used by any geometry at this node level and below that match the indicated name (which may contain wildcard characters).
-
TextureStageCollection find_all_texture_stages(void) const
-
TextureStageCollection find_all_texture_stages(std::string const &name) const
Returns a list of a
TextureStages
applied to geometry at this node and below.Returns a list of a
TextureStages
applied to geometry at this node and below that match the indicated name (which may contain wildcard characters).
-
TextureCollection find_all_textures(void) const
-
TextureCollection find_all_textures(std::string const &name) const
-
TextureCollection find_all_textures(TextureStage *stage) const
Returns a list of a textures applied to geometry at this node and below.
Returns a list of a textures applied to geometry at this node and below that match the indicated name (which may contain wildcard characters).
Returns a list of a textures on geometry at this node and below that are assigned to the indicated texture stage.
-
InternalNameCollection find_all_vertex_columns(void) const
-
InternalNameCollection find_all_vertex_columns(std::string const &name) const
Returns a list of all vertex array columns stored on some geometry found at this node level and below.
Returns a list of all vertex array columns stored on some geometry found at this node level and below that match the indicated name (which may contain wildcard characters).
-
Material *find_material(std::string const &name) const
Returns the first material found applied to geometry at this node or below that matches the indicated name (which may contain wildcards). Returns the material if it is found, or NULL if it is not.
-
NodePath find_net_tag(std::string const &key) const
Returns the lowest ancestor of this node that contains a tag definition with the indicated key, if any, or an empty
NodePath
if no ancestor of this node contains this tag definition. Seeset_tag()
.
-
NodePath find_path_to(PandaNode *node) const
Searches for the indicated node below this node and returns the shortest
NodePath
that connects them.
-
Texture *find_texture(TextureStage *stage) const
Returns the first texture found applied to geometry at this node or below that matches the indicated name (which may contain wildcards). Returns the texture if it is found, or NULL if it is not.
Returns the first texture found applied to geometry at this node or below that is assigned to the indicated texture stage. Returns the texture if it is found, or NULL if it is not.
-
TextureStage *find_texture_stage(std::string const &name) const
Returns the first
TextureStage
found applied to geometry at this node or below that matches the indicated name (which may contain wildcards). Returns theTextureStage
if it is found, or NULL if it is not.
-
int flatten_light(void)
Lightly flattens out the hierarchy below this node by applying transforms, colors, and texture matrices from the nodes onto the vertices, but does not remove any nodes.
This can result in improved rendering performance because there will be fewer transforms in the resulting scene graph, but the number of nodes will remain the same.
In particular, any
NodePaths
that reference nodes within this hierarchy will not be damaged. However, since this operation will remove transforms from the scene graph, it may be dangerous to apply to nodes where you expect to dynamically modify the transform, or where you expect the geometry to remain in a particular local coordinate system.The return value is always 0, since flatten_light does not remove any nodes.
-
int flatten_medium(void)
A more thorough flattening than
flatten_light()
, this first applies all the transforms, colors, and texture matrices from the nodes onto the vertices, and then removes unneeded grouping nodes–nodes that have exactly one child, for instance, but have no special properties in themselves.This results in improved performance over
flatten_light()
because the number of nodes in the scene graph is reduced.The return value is the number of nodes removed.
-
int flatten_strong(void)
The strongest possible flattening. This first applies all of the transforms to the vertices, as in
flatten_medium()
, but then it will combine sibling nodes together when possible, in addition to removing unnecessary parent-child nodes. This can result in substantially fewer nodes, but any nicely-grouped hierachical bounding volumes may be lost.It is generally a good idea to apply this kind of flattening only to nodes that will be culled largely as a single unit, like a car. Applying this to an entire scene may result in overall poorer performance because of less- effective culling.
-
void force_recompute_bounds(void)
Forces the recomputing of all the bounding volumes at every node in the subgraph beginning at this node and below.
This should not normally need to be called, since the bounding volumes are supposed to be recomputed automatically when necessary. It may be useful when debugging, to verify that the bounding volumes have not become inadvertently stale; it may also be useful to force animated characters to update their bounding volumes (which does not presently happen automatically).
-
NodePath get_ancestor(int index, Thread *current_thread = Thread::get_current_thread()) const
Returns the nth ancestor of the path, where 0 is the
NodePath
itself andget_num_nodes()
- 1 isget_top()
. This requires iterating through the path.Also see
get_node()
, which returns the same thing as aPandaNode
pointer, not aNodePath
.
-
unsigned short int get_antialias(void) const
Returns the antialias setting that has been specifically set on this node via
set_antialias()
, or M_none if no setting has been made.
-
RenderAttrib const *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. 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.
-
PN_stdfloat get_audio_volume(void) const
Returns the complete audio volume that has been applied to this node via a previous call to
set_audio_volume()
, or 1. (identity) if no volume has been applied to this particular node.
-
int get_bin_draw_order(void) const
Returns the drawing order associated with the bin that this particular node was assigned to via
set_bin()
, or 0 if no bin was assigned. Seeset_bin()
andhas_bin()
.
-
std::string get_bin_name(void) const
Returns the name of the bin that this particular node was assigned to via
set_bin()
, or the empty string if no bin was assigned. Seeset_bin()
andhas_bin()
.
-
PointerTo<BoundingVolume> get_bounds(Thread *current_thread = Thread::get_current_thread()) const
Returns a newly-allocated bounding volume containing the bottom node and all of its descendants. This is the bounding volume on the bottom arc, converted to the local coordinate space of the node.
-
NodePath get_child(int n, Thread *current_thread = Thread::get_current_thread()) const
Returns a
NodePath
representing the nth child of the referenced node.
-
NodePathCollection get_children(Thread *current_thread = Thread::get_current_thread()) const
Returns the set of all child nodes of the referenced node.
-
static TypeHandle get_class_type(void)
-
CollideMask get_collide_mask(void) const
Returns the union of all of the into_collide_masks for nodes at this level and below. This is the same thing as node()->get_net_collide_mask().
If you want to return what the into_collide_mask of this node itself is, without regard to its children, use node()->get_into_collide_mask().
-
LColor get_color(void) const
Returns the color that has been assigned to the node, or black if no color has been assigned.
-
LVecBase4 const &get_color_scale(void) const
Returns the complete color scale vector that has been applied to this node via a previous call to
set_color_scale()
and/orset_alpha_scale()
, or all 1’s (identity) if no scale has been applied to this particular node.
-
NodePath get_common_ancestor(NodePath const &other, Thread *current_thread = Thread::get_current_thread()) const
Returns the lowest
NodePath
that both of these twoNodePaths
have in common: the first ancestor that both of them share. If the twoNodePaths
are unrelated, returnsNodePath::not_found()
.
-
int get_depth_offset(void) const
Returns the depth offset value if it has been specified using
set_depth_offset
, or 0 if not.
-
bool get_depth_test(void) const
Returns true if depth-test rendering has been specifically set on this node via
set_depth_test()
, or false if depth-test rendering has been specifically disabled. If nothing has been specifically set, returns true. See alsohas_depth_test()
.
-
bool get_depth_write(void) const
Returns true if depth-write rendering has been specifically set on this node via
set_depth_write()
, or false if depth-write rendering has been specifically disabled. If nothing has been specifically set, returns true. See alsohas_depth_write()
.
-
PN_stdfloat get_distance(NodePath const &other) const
Returns the straight-line distance between this referenced node’s coordinate frame’s origin, and that of the other node’s origin.
-
RenderEffect const *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.
-
RenderEffects const *get_effects(void) const
Returns the complete
RenderEffects
that will be applied to this node.
-
ErrorType get_error_type(void) const
If
is_empty()
is true, this returns a code that represents the reason why theNodePath
is empty.
-
Fog *get_fog(void) const
Returns the fog that has been set on this particular node, or NULL if no fog has been set. This is not necessarily the fog that will be applied to the geometry at or below this level, as another fog at a higher or lower level may override.
-
PN_stdfloat get_h(void) const
Returns the
NodePath
at or above the referenced node that is hidden to the indicated camera(s), or an emptyNodePath
if no ancestor of the referenced node is hidden (and the node should be visible).
-
LVecBase3 get_hpr(NodePath const &other) const
Retrieves the rotation component of the transform.
Returns the relative orientation of the bottom node as seen from the other node.
-
int get_instance_count(void) const
Returns the geometry instance count, or 0 if disabled. See
set_instance_count
.
-
int get_key(void) const
Returns an integer that is guaranteed to be the same for all
NodePaths
that represent the same node instance, and different for allNodePaths
that represent a different node instance.The same key will be returned for a particular instance as long as at least one
NodePath
exists that represents that instance; if allNodePaths
for a particular instance destruct and a new one is later created, it may have a different index. However, a given key will never be reused for a different instance (unless the app has been running long enough that we overflow the integer key value).
-
LogicOpAttrib::Operation get_logic_op(void) const
Returns the logical operation that has been specifically set on this node via
set_logic_op()
, or O_none if standard color blending has been specifically set, or if nothing has been specifically set. See alsohas_logic_op()
. This does not necessarily imply that the geometry will or will not be rendered with the given logical operation, as there may be other nodes that override.New in version 1.10.0.
-
LMatrix4 get_mat(NodePath const &other) const
Returns the transform matrix that has been applied to the referenced node, or the identity matrix if no matrix has been applied.
Returns the matrix that describes the coordinate space of the bottom node, relative to the other path’s bottom node’s coordinate space.
-
PointerTo<Material> get_material(void) const
Returns the material that has been set on this particular node, or NULL if no material has been set. This is not necessarily the material that will be applied to the geometry at or below this level, as another material at a higher or lower level may override.
See also
find_material()
.
-
int get_max_search_depth(void)
Returns the current setting of the search depth limit. See
set_max_search_depth
.
-
std::string get_name(void) const
Returns the name of the referenced node.
-
PN_stdfloat get_net_audio_volume(void) const
Returns the complete audio volume for this node taking highers nodes in the graph into account.
-
ConstPointerTo<TransformState> get_net_prev_transform(Thread *current_thread = Thread::get_current_thread()) const
Returns the net “previous” transform on this node from the root. See
set_prev_transform()
.
-
PyObject *get_net_python_tag(PyObject *keys) const
-
ConstPointerTo<RenderState> get_net_state(Thread *current_thread = Thread::get_current_thread()) const
Returns the net state on this node from the root.
-
std::string get_net_tag(std::string const &key) const
Returns the tag value that has been defined on this node, or the nearest ancestor node, for the indicated key. If no value has been defined for the indicated key on any ancestor node, returns the empty string. See also
get_tag()
.
-
ConstPointerTo<TransformState> get_net_transform(Thread *current_thread = Thread::get_current_thread()) const
Returns the net transform on this node from the root.
-
PandaNode *get_node(int index, Thread *current_thread = Thread::get_current_thread()) const
Returns the nth node of the path, where 0 is the referenced (bottom) node and
get_num_nodes()
- 1 is the top node. This requires iterating through the path.Also see
node()
, which is a convenience function to return the same thing as get_node(0) (since the bottom node is the most important node in theNodePath
, and is the one most frequently referenced).Note that this function returns the same thing as get_ancestor(index).node().
-
int get_num_children(Thread *current_thread = Thread::get_current_thread()) const
Returns the number of children of the referenced node.
-
int get_num_nodes(Thread *current_thread = Thread::get_current_thread()) const
Returns the number of nodes in the path.
-
PN_stdfloat get_p(void) const
-
NodePath get_parent(Thread *current_thread = Thread::get_current_thread()) const
Returns the
NodePath
to the parent of the referenced node: that is, thisNodePath
, shortened by one node. The parent of a singletonNodePath
is defined to be the emptyNodePath
.
-
LPoint3 get_pos(NodePath const &other) const
Retrieves the translation component of the transform.
Returns the relative position of the referenced node as seen from the other node.
-
LVector3 get_pos_delta(NodePath const &other) const
Returns the delta vector from this node’s position in the previous frame (according to
set_prev_transform()
, typically set via the use ofset_fluid_pos()
) and its position in the current frame. This is the vector used to determine collisions. Generally, if the node was last repositioned viaset_pos()
, the delta will be zero; if it was adjusted viaset_fluid_pos()
, the delta will represent the change from the previous frame’s position.Returns the delta vector from this node’s position in the previous frame (according to
set_prev_transform()
, typically set via the use ofset_fluid_pos()
) and its position in the current frame, as seen in the indicated node’s coordinate space. This is the vector used to determine collisions. Generally, if the node was last repositioned viaset_pos()
, the delta will be zero; if it was adjusted viaset_fluid_pos()
, the delta will represent the change from the previous frame’s position.
-
TransformState const *get_prev_transform(Thread *current_thread = Thread::get_current_thread()) const
-
ConstPointerTo<TransformState> get_prev_transform(NodePath const &other, Thread *current_thread = Thread::get_current_thread()) const
Returns the transform that has been set as this node’s “previous” position. See
set_prev_transform()
.Returns the relative “previous” transform to this node from the other node; i.e. the position of this node in the previous frame, as seen by the other node in the previous frame.
-
PyObject *get_python_tag(PyObject *keys) const
-
PyObject *get_python_tag_keys(void) const
-
PyObject *get_python_tags(void)
-
LQuaternion get_quat(void) const
-
LQuaternion get_quat(NodePath const &other) const
Retrieves the rotation component of the transform.
Returns the relative orientation of the bottom node as seen from the other node.
-
PN_stdfloat get_r(void) const
-
LPoint3 get_relative_point(NodePath const &other, LVecBase3 const &point) const
Given that the indicated point is in the coordinate system of the other node, returns the same point in this node’s coordinate system.
-
LVector3 get_relative_vector(NodePath const &other, LVecBase3 const &vec) const
Given that the indicated vector is in the coordinate system of the other node, returns the same vector in this node’s coordinate system.
-
RenderModeAttrib::Mode get_render_mode(void) const
Returns the render mode that has been specifically set on this node via
set_render_mode()
, or M_unchanged if nothing has been set.
-
bool get_render_mode_perspective(void) const
Returns the flag that has been set on this node via
set_render_mode_perspective()
, or false if no flag has been set.
-
PN_stdfloat get_render_mode_thickness(void) const
Returns the render mode thickness that has been specifically set on this node via
set_render_mode()
, or 1.0 if nothing has been set.
-
PN_stdfloat get_sa(void) const
Gets the alpha component of the color scale.
-
PN_stdfloat get_sb(void) const
Gets the blue component of the color scale.
-
LVecBase3 get_scale(NodePath const &other) const
Retrieves the scale component of the transform.
Returns the relative scale of the bottom node as seen from the other node.
-
PN_stdfloat get_sg(void) const
Gets the green component of the color scale.
-
ShaderInput get_shader_input(CPT_InternalName id) const
-
LVecBase3 get_shear(NodePath const &other) const
Retrieves the shear component of the transform.
Returns the relative shear of the bottom node as seen from the other node.
-
PN_stdfloat get_shxy(void) const
-
PN_stdfloat get_shxy(NodePath const &other) const
Returns the relative shear of the referenced node as seen from the other node.
-
PN_stdfloat get_shxz(void) const
-
PN_stdfloat get_shyz(void) const
-
int get_sort(Thread *current_thread = Thread::get_current_thread()) const
Returns the sort value of the referenced node within its parent; that is, the sort number passed on the last reparenting operation for this node. This will control the position of the node within its parent’s list of children.
-
PN_stdfloat get_sr(void) const
Gets the red component of the color scale.
-
NodePath get_stashed_ancestor(Thread *current_thread = Thread::get_current_thread()) const
Returns the
NodePath
at or above the referenced node that is stashed, or an emptyNodePath
if no ancestor of the referenced node is stashed (and the node should be visible).
-
NodePathCollection get_stashed_children(Thread *current_thread = Thread::get_current_thread()) const
Returns the set of all child nodes of the referenced node that have been stashed. These children are not normally visible on the node, and do not appear in the list returned by
get_children()
.
-
RenderState const *get_state(Thread *current_thread = Thread::get_current_thread()) const
-
ConstPointerTo<RenderState> get_state(NodePath const &other, Thread *current_thread = Thread::get_current_thread()) const
Aggregate transform and state information.
Returns the complete state object set on this node.
Returns the state changes that must be made to transition to the render state of this node from the render state of the other node.
-
PN_stdfloat get_sx(void) const
-
PN_stdfloat get_sx(NodePath const &other) const
Returns the relative scale of the referenced node as seen from the other node.
-
PN_stdfloat get_sy(void) const
-
PN_stdfloat get_sz(void) const
-
std::string get_tag(std::string const &key) const
Retrieves the user-defined value that was previously set on this node for the particular key, if any. If no value has been previously set, returns the empty string. See also
get_net_tag()
.
-
void get_tag_keys(vector_string &keys) const
-
PyObject *get_tag_keys(void) const
Fills the given vector up with the list of tags on this
PandaNode
.It is the user’s responsibility to ensure that the keys vector is empty before making this call; otherwise, the new files will be appended to it.
-
PyObject *get_tags(void) const
-
RenderAttrib::TexGenMode get_tex_gen(TextureStage *stage) const
Returns the texture coordinate generation mode for the given stage, or M_off if there is no explicit mode set for the given stage.
-
LVecBase3 get_tex_hpr(TextureStage *stage) const
-
LVecBase3 get_tex_hpr(NodePath const &other, TextureStage *stage) const
Returns the 3-D HPR set for the UVW’s for the given stage on the current node.
This call is appropriate for 3-d texture coordinates.
-
LVecBase2 get_tex_offset(TextureStage *stage) const
-
LVecBase2 get_tex_offset(NodePath const &other, TextureStage *stage) const
Returns the offset set for the UV’s for the given stage on the current node.
This call is appropriate for ordinary 2-d texture coordinates.
-
LVecBase3 get_tex_pos(TextureStage *stage) const
-
LVecBase3 get_tex_pos(NodePath const &other, TextureStage *stage) const
Returns the offset set for the UVW’s for the given stage on the current node.
This call is appropriate for 3-d texture coordinates.
-
NodePath get_tex_projector_from(TextureStage *stage) const
Returns the “from” node associated with the
TexProjectorEffect
on the indicated stage. The relative transform between the “from” and the “to” nodes is automatically applied to the texture transform each frame.
-
NodePath get_tex_projector_to(TextureStage *stage) const
Returns the “to” node associated with the
TexProjectorEffect
on the indicated stage. The relative transform between the “from” and the “to” nodes is automatically applied to the texture transform each frame.
-
PN_stdfloat get_tex_rotate(TextureStage *stage) const
-
PN_stdfloat get_tex_rotate(NodePath const &other, TextureStage *stage) const
Returns the rotation set for the UV’s for the given stage on the current node.
This call is appropriate for ordinary 2-d texture coordinates.
-
LVecBase2 get_tex_scale(TextureStage *stage) const
-
LVecBase2 get_tex_scale(NodePath const &other, TextureStage *stage) const
Returns the scale set for the UV’s for the given stage on the current node.
This call is appropriate for ordinary 2-d texture coordinates.
-
LVecBase3 get_tex_scale_3d(TextureStage *stage) const
-
LVecBase3 get_tex_scale_3d(NodePath const &other, TextureStage *stage) const
Returns the scale set for the UVW’s for the given stage on the current node.
This call is appropriate for 3-d texture coordinates.
-
ConstPointerTo<TransformState> get_tex_transform(TextureStage *stage) const
-
ConstPointerTo<TransformState> get_tex_transform(NodePath const &other, TextureStage *stage) const
Returns the texture matrix on the current node for the given stage, or identity transform if there is no explicit transform set for the given stage.
Returns the texture matrix on the current node for the given stage, relative to the other node.
-
Texture *get_texture(TextureStage *stage) const
Returns the base-level texture that has been set on this particular node, or NULL if no texture has been set. This is not necessarily the texture that will be applied to the geometry at or below this level, as another texture at a higher or lower level may override.
See also
find_texture()
.Returns the texture that has been set on the indicated stage for this particular node, or NULL if no texture has been set for this stage.
-
SamplerState const &get_texture_sampler(void) const
-
SamplerState const &get_texture_sampler(TextureStage *stage) const
Returns the sampler state that has been given for the base-level texture that has been set on this particular node. If no sampler state was given, this returns the texture’s default sampler settings.
It is an error to call this if there is no base-level texture applied to this particular node.
Returns the sampler state that has been given for the indicated texture stage that has been set on this particular node. If no sampler state was given, this returns the texture’s default sampler settings.
It is an error to call this if there is no texture set for this stage on this particular node.
-
NodePath get_top(Thread *current_thread = Thread::get_current_thread()) const
Returns a singleton
NodePath
that represents the top of the path, or emptyNodePath
if this path is empty.
-
PandaNode *get_top_node(Thread *current_thread = Thread::get_current_thread()) const
Returns the top node of the path, or NULL if the path is empty. This requires iterating through the path.
-
TransformState const *get_transform(Thread *current_thread = Thread::get_current_thread()) const
-
ConstPointerTo<TransformState> get_transform(NodePath const &other, Thread *current_thread = Thread::get_current_thread()) const
Returns the complete transform object set on this node.
Returns the relative transform to this node from the other node; i.e. the transformation of this node as seen from the other node.
-
TransparencyAttrib::Mode get_transparency(void) const
Returns the transparent rendering that has been specifically set on this node via
set_transparency()
, or M_none if nontransparent rendering has been specifically set, or if nothing has been specifically set. See alsohas_transparency()
. This does not necessarily imply that the geometry will or will not be rendered transparent, as there may be other nodes that override.
-
bool get_two_sided(void) const
Returns true if two-sided rendering has been specifically set on this node via
set_two_sided()
, or false if one-sided rendering has been specifically set, or if nothing has been specifically set. See alsohas_two_sided()
. This does not necessarily imply that the geometry will or will not be rendered two-sided, as there may be other nodes that override.
-
PN_stdfloat get_x(void) const
-
PN_stdfloat get_y(void) const
-
PN_stdfloat get_z(void) const
-
bool has_antialias(void) const
Returns true if an antialias setting has been explicitly mode on this particular node via
set_antialias()
. If this returns true, thenget_antialias()
may be called to determine what the setting was.
-
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.
-
bool has_audio_volume(void) const
Returns true if an audio volume has been applied to the referenced node, false otherwise. It is still possible that volume at this node might have been scaled by an ancestor node.
-
bool has_billboard(void) const
Returns true if there is any billboard effect on the node.
-
bool has_bin(void) const
Returns true if the node has been assigned to the a particular rendering bin via
set_bin()
, false otherwise.
-
bool has_clip_plane(NodePath const &clip_plane) const
Returns true if the indicated clipping plane has been specifically applied to this particular node. This means that someone called
set_clip_plane()
on this node with the indicated clip_plane.
-
bool has_clip_plane_off(void) const
-
bool has_clip_plane_off(NodePath const &clip_plane) const
Returns true if all clipping planes have been specifically disabled on this particular node. This means that someone called
set_clip_plane_off()
on this node with no parameters.Returns true if the indicated clipping plane has been specifically disabled on this particular node. This means that someone called
set_clip_plane_off()
on this node with the indicated clip_plane.
-
bool has_color(void) const
Returns true if a color has been applied to the given node, false otherwise.
-
bool has_color_scale(void) const
Returns true if a color scale has been applied to the referenced node, false otherwise. It is still possible that color at this node might have been scaled by an ancestor node.
-
bool has_compass(void) const
Returns true if there is any compass effect on the node.
-
bool has_depth_bias(void) const
Returns true if a depth-bias adjustment has been explicitly set on this particular node via
set_depth_bias()
. If this returns true, then get_depth_bias() may be called to determine which has been set.
-
bool has_depth_offset(void) const
Returns true if a depth-offset adjustment has been explicitly set on this particular node via
set_depth_offset()
. If this returns true, thenget_depth_offset()
may be called to determine which has been set.
-
bool has_depth_test(void) const
Returns true if a depth-test adjustment has been explicitly set on this particular node via
set_depth_test()
. If this returns true, thenget_depth_test()
may be called to determine which has been set.
-
bool has_depth_write(void) const
Returns true if a depth-write adjustment has been explicitly set on this particular node via
set_depth_write()
. If this returns true, thenget_depth_write()
may be called to determine which has been set.
-
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.
-
bool has_fog(void) const
Returns true if a fog has been applied to this particular node via
set_fog()
, false otherwise. This is not the same thing as asking whether the geometry at this node will be rendered with fog, as there may be a fog in effect from a higher or lower level.
-
bool has_fog_off(void) const
Returns true if a fog has been specifically disabled on this particular node via
set_fog_off()
, false otherwise. This is not the same thing as asking whether the geometry at this node will be rendered unfogged, as there may be a fog in effect from a higher or lower level.
-
bool has_light(NodePath const &light) const
Returns true if the indicated Light or
PolylightNode
has been specifically enabled on this particular node. This means that someone calledset_light()
on this node with the indicated light.
-
bool has_light_off(void) const
-
bool has_light_off(NodePath const &light) const
Returns true if all Lights have been specifically disabled on this particular node. This means that someone called
set_light_off()
on this node with no parameters.Returns true if the indicated Light has been specifically disabled on this particular node. This means that someone called
set_light_off()
on this node with the indicated light.This interface does not support
PolylightNodes
, which cannot be turned off at a lower level.
-
bool has_logic_op(void) const
Returns true if a logical operation has been explicitly set on this particular node via
set_logic_op()
. If this returns true, thenget_logic_op()
may be called to determine whether a logical operation has been explicitly disabled for this node or set to particular operation.New in version 1.10.0.
-
bool has_mat(void) const
Returns true if a non-identity transform matrix has been applied to the referenced node, false otherwise.
-
bool has_material(void) const
Returns true if a material has been applied to this particular node via
set_material()
, false otherwise.
-
bool has_net_python_tag(PyObject *keys) const
-
bool has_net_tag(std::string const &key) const
Returns true if the indicated tag value has been defined on this node or on any ancestor node, or false otherwise. See also
has_tag()
.
-
bool has_occluder(NodePath const &occluder) const
Returns true if the indicated occluder has been specifically applied to this particular node. This means that someone called
set_occluder()
on this node with the indicated occluder.
-
bool has_parent(Thread *current_thread = Thread::get_current_thread()) const
Returns true if the referenced node has a parent; i.e. the
NodePath
chain contains at least two nodes.
-
bool has_python_tag(PyObject *keys) const
-
bool has_render_mode(void) const
Returns true if a render mode has been explicitly set on this particular node via
set_render_mode()
(orset_render_mode_wireframe()
orset_render_mode_filled()
), false otherwise.
-
bool has_scissor(void) const
Returns true if a scissor region was defined at this node by a previous call to
set_scissor()
. This does not check for scissor regions inherited from a parent class. It also does not check for the presence of a low- levelScissorAttrib
, which is different from theScissorEffect
added byset_scissor
.
-
bool has_tag(std::string const &key) const
Returns true if a value has been defined on this node for the particular key (even if that value is the empty string), or false if no value has been set. See also
has_net_tag()
.
-
bool has_tex_gen(TextureStage *stage) const
Returns true if there is a mode for automatic texture coordinate generation on the current node for the given stage.
-
bool has_tex_projector(TextureStage *stage) const
Returns true if this node has a
TexProjectorEffect
for the indicated stage, false otherwise.
-
bool has_tex_transform(TextureStage *stage) const
Returns true if there is an explicit texture matrix on the current node for the given stage.
-
bool has_texcoord(std::string const &texcoord_name) const
Returns true if there are at least some vertices at this node and below that use the named texture coordinate set, false otherwise. Pass the empty string for the default texture coordinate set.
-
bool has_texture(void) const
-
bool has_texture(TextureStage *stage) const
Returns true if a texture has been applied to this particular node via
set_texture()
, false otherwise. This is not the same thing as asking whether the geometry at this node will be rendered with texturing, as there may be a texture in effect from a higher or lower level.Returns true if texturing has been specifically enabled on this particular node for the indicated stage. This means that someone called
set_texture()
on this node with the indicated stage name, or the stage_name is the default stage_name, and someone calledset_texture()
on this node.
-
bool has_texture_off(void) const
-
bool has_texture_off(TextureStage *stage) const
Returns true if texturing has been specifically disabled on this particular node via
set_texture_off()
, false otherwise. This is not the same thing as asking whether the geometry at this node will be rendered untextured, as there may be a texture in effect from a higher or lower level.Returns true if texturing has been specifically disabled on this particular node for the indicated stage. This means that someone called
set_texture_off()
on this node with the indicated stage name, or that someone calledset_texture_off()
on this node to remove all stages.
-
bool has_transparency(void) const
Returns true if a transparent-rendering adjustment has been explicitly set on this particular node via
set_transparency()
. If this returns true, thenget_transparency()
may be called to determine whether transparency has been explicitly enabled or explicitly disabled for this node.
-
bool has_two_sided(void) const
Returns true if a two-sided adjustment has been explicitly set on this particular node via
set_two_sided()
. If this returns true, thenget_two_sided()
may be called to determine which has been set.
-
bool has_vertex_column(InternalName const *name) const
Returns true if there are at least some vertices at this node and below that contain a reference to the indicated vertex data column name, false otherwise.
This is particularly useful for testing whether a particular model has a given texture coordinate set (but see
has_texcoord()
).
-
void heads_up(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z)
-
void heads_up(NodePath const &other, LPoint3 const &point = LPoint3(0.0, 0.0, 0.0), LVector3 const &up = LVector3::up())
Behaves like
look_at()
, but with a strong preference to keeping the up vector oriented in the indicated “up” direction.
-
void hide(void)
-
void hide(DrawMask camera_mask)
Makes the referenced node (and the entire subgraph below this node) invisible to all cameras. It remains part of the scene graph, its bounding volume still contributes to its parent’s bounding volume, and it will still be involved in collision tests.
To undo this, call
show()
.Makes the referenced node invisible just to the cameras whose camera_mask shares the indicated bits.
This will also hide any nodes below this node in the scene graph, including those nodes for which
show()
has been called, but it will not hide descendent nodes for whichshow_through()
has been called.
-
void hide_bounds(void)
Stops the rendering of the bounding volume begun with
show_bounds()
.
-
NodePath instance_to(NodePath const &other, int sort = 0, Thread *current_thread = Thread::get_current_thread()) const
Adds the referenced node of the
NodePath
as a child of the referenced node of the indicated otherNodePath
. Any other parent-child relations of the node are unchanged; in particular, the node is not removed from its existing parent, if any.If the node already had an existing parent, this method will create a new instance of the node within the scene graph.
This does not change the
NodePath
itself, but does return a newNodePath
that reflects the new instance node.If the destination
NodePath
is empty, this creates a new instance which is not yet parented to any node. A new instance of this sort cannot easily be differentiated from other similar instances, but it is nevertheless a different instance and it will return a different get_id() value.If the referenced node is already a child of the indicated
NodePath
, returns that already-existing instance, unstashing it first if necessary.
-
NodePath instance_under_node(NodePath const &other, std::string const &name, int sort = 0, Thread *current_thread = Thread::get_current_thread()) const
Behaves like
instance_to()
, but implicitly creates a new node to instance the geometry under, and returns aNodePath
to that new node. This allows the programmer to set a unique state and/or transform on this instance.
-
bool is_ancestor_of(NodePath const &other, Thread *current_thread = Thread::get_current_thread()) const
Returns true if the node represented by this
NodePath
is a parent or other ancestor of the otherNodePath
, or false if it is not.
-
bool is_empty(void) const
Methods to query a NodePath’s contents.
Returns true if the
NodePath
contains no nodes.
Returns true if the referenced node is hidden from the indicated camera(s) either directly, or because some ancestor is hidden.
-
bool is_same_graph(NodePath const &other, Thread *current_thread = Thread::get_current_thread()) const
Returns true if the node represented by this
NodePath
is parented within the same graph as that of the otherNodePath
. This is essentially the same thing as asking whetherget_top()
of bothNodePaths
is the same (e.g., both “render”).
-
bool is_singleton(Thread *current_thread = Thread::get_current_thread()) const
Returns true if the
NodePath
contains exactly one node.
-
bool is_stashed(void) const
Returns true if the referenced node is stashed either directly, or because some ancestor is stashed.
-
void list_tags(void) const
Lists the tags to the nout stream, one per line. See
PandaNode::list_tags()
for a variant that allows you to specify the output stream.
-
void look_at(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z)
-
void look_at(NodePath const &other, LPoint3 const &point = LPoint3(0.0, 0.0, 0.0), LVector3 const &up = LVector3::up())
Sets the transform on this
NodePath
so that it rotates to face the indicated point in space. This will overwrite any previously existing scale on the node, although it will preserve any translation.Sets the hpr on this
NodePath
so that it rotates to face the indicated point in space, which is relative to the otherNodePath
.Sets the hpr on this
NodePath
so that it rotates to face the indicated point in space.Sets the transform on this
NodePath
so that it rotates to face the indicated point in space, which is relative to the otherNodePath
.
-
void ls(void) const
-
void ls(std::ostream &out, int indent_level = 0) const
Lists the hierarchy at and below the referenced node.
-
void output(std::ostream &out) const
Writes a sensible description of the
NodePath
to the indicated output stream.
-
void premunge_scene(GraphicsStateGuardianBase *gsg = nullptr)
Walks through the scene graph beginning at the bottom node, and internally adjusts any
GeomVertexFormats
for optimal rendering on the indicated GSG. If this step is not done prior to rendering, the formats will be optimized at render time instead, for a small cost.It is not normally necessary to do this on a model loaded directly from disk, since the loader will do this by default.
-
void prepare_scene(GraphicsStateGuardianBase *gsg)
Walks through the scene graph beginning at the bottom node, and does whatever initialization is required to render the scene properly with the indicated GSG. It is not strictly necessary to call this, since the GSG will initialize itself when the scene is rendered, but this may take some of the overhead away from that process.
In particular, this will ensure that textures and vertex buffers within the scene are loaded into graphics memory.
-
void project_texture(TextureStage *stage, Texture *tex, NodePath const &projector)
A convenience function to enable projective texturing at this node level and below, using the indicated
NodePath
(which should contain aLensNode
) as the projector.
-
void remove_node(Thread *current_thread = Thread::get_current_thread())
Disconnects the referenced node from the scene graph. This will also delete the node if there are no other pointers to it.
Normally, this should be called only when you are really done with the node. If you want to remove a node from the scene graph but keep it around for later, you should probably use
detach_node()
instead.In practice, the only difference between remove_node() and
detach_node()
is that remove_node() also resets theNodePath
to empty, which will cause the node to be deleted immediately if there are no other references. On the other hand,detach_node()
leaves theNodePath
referencing the node, which will keep at least one reference to the node for as long as theNodePath
exists.
-
void reparent_to(NodePath const &other, int sort = 0, Thread *current_thread = Thread::get_current_thread())
Methods that actually move nodes around in the scene graph. The optional “sort” parameter can be used to force a particular ordering between sibling nodes, useful when dealing with LOD’s and similar switch nodes. If the sort value is the same, nodes will be arranged in the order they were added.
Removes the referenced node of the
NodePath
from its current parent and attaches it to the referenced node of the indicatedNodePath
.If the destination
NodePath
is empty, this is the same thing asdetach_node()
.If the referenced node is already a child of the indicated
NodePath
(via some other instance), this operation fails and leaves theNodePath
detached.
-
void replace_material(Material *mat, Material *new_mat)
Recursively searches the scene graph for references to the given material, and replaces them with the new material.
New in version 1.10.0.
-
void replace_texture(Texture *tex, Texture *new_tex)
Recursively searches the scene graph for references to the given texture, and replaces them with the new texture.
New in version 1.10.4.
-
void reverse_ls(void) const
-
int reverse_ls(std::ostream &out, int indent_level = 0) const
Lists the hierarchy at and above the referenced node.
-
void set_all_color_scale(PN_stdfloat scale, int priority = 0)
Scales all the color components of the object by the same amount, darkening the object, without (much) affecting alpha. Note that any priority specified will also apply to the alpha scale.
-
void set_alpha_scale(PN_stdfloat scale, int priority = 0)
Sets the alpha scale component of the transform without (much) affecting the color scale. Note that any priority specified will also apply to the color scale.
-
void set_antialias(unsigned short int mode, int priority = 0)
Specifies the antialiasing type that should be applied at this node and below. See
AntialiasAttrib
.
-
void set_attrib(RenderAttrib const *attrib, int priority = 0)
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.
-
void set_audio_volume(PN_stdfloat volume, int priority = 0)
Sets the audio volume component of the transform
-
void set_audio_volume_off(int priority = 0)
Disables any audio volume attribute inherited from above. This is not the same thing as
clear_audio_volume()
, which undoes any previousset_audio_volume()
operation on this node; rather, this actively disables anyset_audio_volume()
that might be inherited from a parent node.It is legal to specify a new volume on the same node with a subsequent call to
set_audio_volume()
; this new scale will apply to lower nodes.
-
void set_billboard_axis(PN_stdfloat offset = 0.0)
-
void set_billboard_axis(NodePath const &camera, PN_stdfloat offset)
Puts a billboard transition on the node such that it will rotate in two dimensions around the up axis.
Puts a billboard transition on the node such that it will rotate in two dimensions around the up axis, towards a specified “camera” instead of to the viewing camera.
-
void set_billboard_point_eye(PN_stdfloat offset = 0.0, bool fixed_depth = false)
-
void set_billboard_point_eye(NodePath const &camera, PN_stdfloat offset, bool fixed_depth = false)
Puts a billboard transition on the node such that it will rotate in three dimensions about the origin, keeping its up vector oriented to the top of the camera.
Puts a billboard transition on the node such that it will rotate in three dimensions about the origin, keeping its up vector oriented to the top of the camera, towards a specified “camera” instead of to the viewing camera.
-
void set_billboard_point_world(PN_stdfloat offset = 0.0)
-
void set_billboard_point_world(NodePath const &camera, PN_stdfloat offset)
Puts a billboard transition on the node such that it will rotate in three dimensions about the origin, keeping its up vector oriented to the sky.
Puts a billboard transition on the node such that it will rotate in three dimensions about the origin, keeping its up vector oriented to the sky, towards a specified “camera” instead of to the viewing camera.
-
void set_bin(std::string const &bin_name, int draw_order, int priority = 0)
Assigns the geometry at this level and below to the named rendering bin. It is the user’s responsibility to ensure that such a bin already exists, either via the cull-bin Configrc variable, or by explicitly creating a GeomBin of the appropriate type at runtime.
There are two default bins created when Panda is started: “default” and “fixed”. Normally, all geometry is assigned to “default” unless specified otherwise. This bin renders opaque geometry in state-sorted order, followed by transparent geometry sorted back-to-front. If any geometry is assigned to “fixed”, this will be rendered following all the geometry in “default”, in the order specified by draw_order for each piece of geometry so assigned.
The draw_order parameter is meaningful only for GeomBinFixed type bins, e.g. “fixed”. Other kinds of bins ignore it.
-
void set_clip_plane(NodePath const &clip_plane, int priority = 0)
Adds the indicated clipping plane to the list of planes that apply to geometry at this node and below. The clipping plane itself, a
PlaneNode
, should be parented into the scene graph elsewhere, to represent the plane’s position in space; but until set_clip_plane() is called it will clip no geometry.
-
void set_clip_plane_off(int priority = 0)
-
void set_clip_plane_off(NodePath const &clip_plane, int priority = 0)
Sets the geometry at this level and below to render using no clip_planes at all. This is different from not specifying a clip_plane; rather, this specifically contradicts
set_clip_plane()
at a higher node level (or, with a priority, overrides aset_clip_plane()
at a lower level).If no clip_planes are in effect on a particular piece of geometry, that geometry is rendered without being clipped (other than by the viewing frustum).
Sets the geometry at this level and below to render without being clipped by the indicated
PlaneNode
. This is different from not specifying thePlaneNode
; rather, this specifically contradictsset_clip_plane()
at a higher node level (or, with a priority, overrides aset_clip_plane()
at a lower level).
-
void set_collide_mask(CollideMask new_mask, CollideMask bits_to_change = CollideMask::all_on(), TypeHandle node_type = TypeHandle::none())
Recursively applies the indicated
CollideMask
to the into_collide_masks for all nodes at this level and below. If node_type is notTypeHandle::none()
, then only nodes matching (or inheriting from) the indicatedPandaNode
subclass are modified.The default is to change all bits, but if bits_to_change is not all bits on, then only the bits that are set in bits_to_change are modified, allowing this call to change only a subset of the bits in the subgraph.
-
void set_color(PN_stdfloat r, PN_stdfloat g, PN_stdfloat b, PN_stdfloat a = 1.0, int priority = 0)
-
void set_color(LColor const &color, int priority = 0)
Applies a scene-graph color to the referenced node. This color will apply to all geometry at this level and below (that does not specify a new color or a
set_color_off()
).
-
void set_color_off(int priority = 0)
Sets the geometry at this level and below to render using the geometry color. This is normally the default, but it may be useful to use this to contradict
set_color()
at a higher node level (or, with a priority, to override aset_color()
at a lower level).
-
void set_color_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz, PN_stdfloat sa, int priority = 0)
Sets the color scale component of the transform
Sets the color scale component of the transform, leaving translation and rotation untouched.
-
void set_color_scale_off(int priority = 0)
Disables any color scale attribute inherited from above. This is not the same thing as
clear_color_scale()
, which undoes any previousset_color_scale()
operation on this node; rather, this actively disables anyset_color_scale()
that might be inherited from a parent node. This also disablesset_alpha_scale()
at the same time.It is legal to specify a new color scale on the same node with a subsequent call to
set_color_scale()
orset_alpha_scale()
; this new scale will apply to lower geometry.
-
void set_compass(NodePath const &reference = NodePath())
Puts a compass effect on the node, so that it will retain a fixed rotation relative to the reference node (or render if the reference node is empty) regardless of the transforms above it.
-
void set_depth_bias(PN_stdfloat slope_factor, PN_stdfloat constant_factor, PN_stdfloat clamp = 0.0, int priority = 0)
This instructs the graphics driver to apply an offset or bias to the generated depth values for rendered polygons, before they are written to the depth buffer. This can be used to shift polygons forward slightly, to resolve depth conflicts, or self-shadowing artifacts on thin objects. Positive numbers are further away from the camera.
-
void set_depth_offset(int bias, int priority = 0)
This instructs the graphics driver to apply an offset or bias to the generated depth values for rendered polygons, before they are written to the depth buffer. This can be used to shift polygons forward slightly, to resolve depth conflicts, or self-shadowing artifacts on thin objects. The bias is always an integer number, and each integer increment represents the smallest possible increment in Z that is sufficient to completely resolve two coplanar polygons. Positive numbers are closer towards the camera.
Deprecated: See
set_depth_bias()
instead, which provides more controls.
-
void set_depth_test(bool depth_test, int priority = 0)
Specifically sets or disables the testing of the depth buffer on this particular node. This is normally on in the 3-d scene graph and off in the 2-d scene graph; it should be on for rendering most 3-d objects properly.
-
void set_depth_write(bool depth_write, int priority = 0)
Specifically sets or disables the writing to the depth buffer on this particular node. This is normally on in the 3-d scene graph and off in the 2-d scene graph; it should be on for rendering most 3-d objects properly.
-
void set_effect(RenderEffect const *effect)
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.
-
void set_effects(RenderEffects const *effects)
Sets the complete
RenderEffects
that will be applied this node. This completely replaces whatever has been set on this node via repeated calls toset_attrib()
.
-
void set_fluid_pos(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z)
-
void set_fluid_pos(NodePath const &other, LVecBase3 const &pos)
Sets the translation component, without changing the “previous” position, so that the collision system will see the node as moving fluidly from its previous position to its new position.
Sets the translation component, without changing the “previous” position, so that the collision system will see the node as moving fluidly from its previous position to its new position.
Sets the translation component, without changing the “previous” position, so that the collision system will see the node as moving fluidly from its previous position to its new position. See Also:
NodePath::set_pos()
Sets the translation component of the transform, relative to the other node.
-
void set_fluid_x(PN_stdfloat x)
-
void set_fluid_y(PN_stdfloat y)
-
void set_fluid_z(PN_stdfloat z)
-
void set_fog(Fog *fog, int priority = 0)
Sets the geometry at this level and below to render using the indicated fog.
-
void set_fog_off(int priority = 0)
Sets the geometry at this level and below to render using no fog. This is normally the default, but it may be useful to use this to contradict
set_fog()
at a higher node level (or, with a priority, to override aset_fog()
at a lower level).
-
void set_h(PN_stdfloat h)
-
void set_hpr(PN_stdfloat h, PN_stdfloat p, PN_stdfloat r)
-
void set_hpr(NodePath const &other, LVecBase3 const &hpr)
Sets the rotation component of the transform, leaving translation and scale untouched.
Sets the rotation component of the transform, relative to the other node.
-
void set_hpr_scale(PN_stdfloat h, PN_stdfloat p, PN_stdfloat r, PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz)
-
void set_hpr_scale(NodePath const &other, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r, PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz)
-
void set_hpr_scale(NodePath const &other, LVecBase3 const &hpr, LVecBase3 const &scale)
Sets the rotation and scale components of the transform, leaving translation untouched.
Sets the rotation and scale components of the transform, leaving translation untouched. This, or
set_pos_hpr_scale
, is the preferred way to update a transform when both hpr and scale are to be changed.
-
void set_instance_count(int instance_count)
Sets the geometry instance count, or 0 if geometry instancing should be disabled. Do not confuse with
instanceTo
which only applies to animation instancing.
-
void set_light(NodePath const &light, int priority = 0)
Adds the indicated Light or
PolylightNode
to the list of lights that illuminate geometry at this node and below. The light itself should be parented into the scene graph elsewhere, to represent the light’s position in space; but until set_light() is called it will illuminate no geometry.
-
void set_light_off(int priority = 0)
-
void set_light_off(NodePath const &light, int priority = 0)
Sets the geometry at this level and below to render using no lights at all. This is different from not specifying a light; rather, this specifically contradicts
set_light()
at a higher node level (or, with a priority, overrides aset_light()
at a lower level).If no lights are in effect on a particular piece of geometry, that geometry is rendered with lighting disabled.
Sets the geometry at this level and below to render without using the indicated Light. This is different from not specifying the Light; rather, this specifically contradicts
set_light()
at a higher node level (or, with a priority, overrides aset_light()
at a lower level).This interface does not support
PolylightNodes
, which cannot be turned off at a lower level.
-
void set_logic_op(LogicOpAttrib::Operation op, int priority = 0)
Specifically sets or disables a logical operation on this particular node. If no other nodes override, this will cause geometry to be rendered without color blending but instead using the given logical operator.
New in version 1.10.0.
-
void set_mat(NodePath const &other, LMatrix4 const &mat)
Directly sets an arbitrary 4x4 transform matrix.
Converts the indicated matrix from the other’s coordinate space to the local coordinate space, and applies it to the node.
-
void set_material(Material *tex, int priority = 0)
Sets the geometry at this level and below to render using the indicated material.
Previously, this operation made a copy of the material structure, but nowadays it assigns the pointer directly.
-
void set_material_off(int priority = 0)
Sets the geometry at this level and below to render using no material. This is normally the default, but it may be useful to use this to contradict
set_material()
at a higher node level (or, with a priority, to override aset_material()
at a lower level).
-
void set_max_search_depth(int max_search_depth)
Certain operations, such as
find()
orfind_all_matches()
, require a traversal of the scene graph to search for the target node or nodes. This traversal does not attempt to detect cycles, so an arbitrary cap is set on the depth of the traversal as a poor man’s cycle detection, in the event that a cycle has inadvertently been introduced into the scene graph.There may be other reasons you’d want to truncate a search before the bottom of the scene graph has been reached. In any event, this function sets the limit on the number of levels that a traversal will continue, and hence the maximum length of a path that may be returned by a traversal.
This is a static method, and so changing this parameter affects all of the
NodePaths
in the universe.
-
void set_name(std::string const &name)
Changes the name of the referenced node.
-
void set_occluder(NodePath const &occluder)
Adds the indicated occluder to the list of occluders that apply to geometry at this node and below. The occluder itself, an
OccluderNode
, should be parented into the scene graph elsewhere, to represent the occluder’s position in space; but until set_occluder() is called it will clip no geometry.
-
void set_p(PN_stdfloat p)
-
void set_pos(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z)
-
void set_pos(NodePath const &other, LVecBase3 const &pos)
Sets the translation component of the transform, leaving rotation and scale untouched. This also resets the node’s “previous” position, so that the collision system will see the node as having suddenly appeared in the new position, without passing any points in between.
Sets the translation component of the transform, relative to the other node.
Sets the translation component of the transform, leaving rotation and scale untouched. This also resets the node’s “previous” position, so that the collision system will see the node as having suddenly appeared in the new position, without passing any points in between. See Also:
NodePath::set_fluid_pos()
Sets the translation component of the transform, relative to the other node.
-
void set_pos_hpr(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r)
-
void set_pos_hpr(NodePath const &other, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r)
-
void set_pos_hpr(NodePath const &other, LVecBase3 const &pos, LVecBase3 const &hpr)
Sets the translation and rotation component of the transform, leaving scale untouched.
Sets the translation and rotation component of the transform, relative to the other node.
-
void set_pos_hpr_scale(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r, PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz)
-
void set_pos_hpr_scale(NodePath const &other, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r, PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz)
-
void set_pos_hpr_scale(NodePath const &other, LVecBase3 const &pos, LVecBase3 const &hpr, LVecBase3 const &scale)
Completely replaces the transform with new translation, rotation, and scale components.
Completely replaces the transform with new translation, rotation, and scale components, relative to the other node.
Replaces the translation, rotation, and scale components, implicitly setting shear to 0.
Completely replaces the transform with new translation, rotation, and scale components, relative to the other node, implicitly setting shear to 0.
-
void set_pos_hpr_scale_shear(LVecBase3 const &pos, LVecBase3 const &hpr, LVecBase3 const &scale, LVecBase3 const &shear)
-
void set_pos_hpr_scale_shear(NodePath const &other, LVecBase3 const &pos, LVecBase3 const &hpr, LVecBase3 const &scale, LVecBase3 const &shear)
Completely replaces the transform with new translation, rotation, scale, and shear components.
Completely replaces the transform with new translation, rotation, scale, and shear components, relative to the other node.
-
void set_pos_quat(LVecBase3 const &pos, LQuaternion const &quat)
-
void set_pos_quat(NodePath const &other, LVecBase3 const &pos, LQuaternion const &quat)
Sets the translation and rotation component of the transform, leaving scale untouched.
Sets the translation and rotation component of the transform, relative to the other node.
-
void set_pos_quat_scale(LVecBase3 const &pos, LQuaternion const &quat, LVecBase3 const &scale)
-
void set_pos_quat_scale(NodePath const &other, LVecBase3 const &pos, LQuaternion const &quat, LVecBase3 const &scale)
Replaces the translation, rotation, and scale components, implicitly setting shear to 0.
Completely replaces the transform with new translation, rotation, and scale components, relative to the other node, implicitly setting shear to 0.
-
void set_pos_quat_scale_shear(LVecBase3 const &pos, LQuaternion const &quat, LVecBase3 const &scale, LVecBase3 const &shear)
-
void set_pos_quat_scale_shear(NodePath const &other, LVecBase3 const &pos, LQuaternion const &quat, LVecBase3 const &scale, LVecBase3 const &shear)
Completely replaces the transform with new translation, rotation, scale, and shear components.
Completely replaces the transform with new translation, rotation, scale, and shear components, relative to the other node.
-
void set_prev_transform(TransformState const *transform, Thread *current_thread = Thread::get_current_thread())
-
void set_prev_transform(NodePath const &other, TransformState const *transform, Thread *current_thread = Thread::get_current_thread())
Sets the transform that represents this node’s “previous” position, one frame ago, for the purposes of detecting motion for accurate collision calculations.
Sets the “previous” transform object on this node, relative to the other node. This computes a new transform object that will have the indicated value when seen from the other node.
-
void set_python_tag(PyObject *keys, PyObject *value)
-
void set_quat(LQuaternion const &quat)
-
void set_quat(NodePath const &other, LQuaternion const &quat)
Sets the rotation component of the transform, leaving translation and scale untouched.
Sets the rotation component of the transform, relative to the other node.
-
void set_quat_scale(LQuaternion const &quat, LVecBase3 const &scale)
-
void set_quat_scale(NodePath const &other, LQuaternion const &quat, LVecBase3 const &scale)
Sets the rotation and scale components of the transform, leaving translation untouched.
Sets the rotation and scale components of the transform, leaving translation untouched. This, or
set_pos_quat_scale
, is the preferred way to update a transform when both quat and scale are to be changed.
-
void set_r(PN_stdfloat r)
-
void set_render_mode(RenderModeAttrib::Mode mode, PN_stdfloat thickness, int priority = 0)
Sets up the geometry at this level and below (unless overridden) to render in the specified mode and with the indicated line and/or point thickness.
-
void set_render_mode_filled(int priority = 0)
Sets up the geometry at this level and below (unless overridden) to render in filled (i.e. not wireframe) mode.
-
void set_render_mode_filled_wireframe(LColor const &wireframe_color, int priority = 0)
Sets up the geometry at this level and below (unless overridden) to render in filled, but overlay the wireframe on top with a fixed color. This is useful for debug visualizations.
-
void set_render_mode_perspective(bool perspective, int priority = 0)
Sets up the point geometry at this level and below to render as perspective sprites (that is, billboarded quads). The thickness, as specified with
set_render_mode_thickness()
, is the width of each point in 3-D units, unless it is overridden on a per-vertex basis. This does not affect geometry other than points.If you want the quads to be individually textured, you should also set a TexGenAttrib::M_point_sprite on the node.
-
void set_render_mode_thickness(PN_stdfloat thickness, int priority = 0)
Sets up the point geometry at this level and below to render as thick points (that is, billboarded quads). The thickness is in pixels, unless
set_render_mode_perspective
is also true, in which case it is in 3-D units.If you want the quads to be individually textured, you should also set a TexGenAttrib::M_point_sprite on the node.
-
void set_render_mode_wireframe(int priority = 0)
Sets up the geometry at this level and below (unless overridden) to render in wireframe mode.
-
void set_sa(PN_stdfloat sa)
Sets the alpha component of the color scale.
-
void set_sb(PN_stdfloat sb)
Sets the blue component of the color scale.
-
void set_scale(PN_stdfloat scale)
-
void set_scale(PN_stdfloat sx, PN_stdfloat sy, PN_stdfloat sz)
-
void set_scale(NodePath const &other, LVecBase3 const &scale)
Sets the scale component of the transform, leaving translation and rotation untouched.
Sets the scale component of the transform, relative to the other node.
Sets the scale component of the transform, relative to the other node.
Sets the scale component of the transform, leaving translation and rotation untouched.
Sets the scale component of the transform, relative to the other node.
-
void set_scissor(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top)
-
void set_scissor(NodePath const &other, LPoint3 const &a, LPoint3 const &b, LPoint3 const &c, LPoint3 const &d)
Sets up a scissor region on the nodes rendered at this level and below. The four coordinates are understood to define a rectangle in screen space. These numbers are relative to the current
DisplayRegion
, where (0,0) is the lower-left corner of theDisplayRegion
, and (1,1) is the upper-right corner.Sets up a scissor region on the nodes rendered at this level and below. The two points are understood to be relative to this node. When these points are projected into screen space, they define the diagonally-opposite points that determine the scissor region.
Sets up a scissor region on the nodes rendered at this level and below. The four points are understood to be relative to this node. When these points are projected into screen space, they define the bounding volume of the scissor region (the scissor region is the smallest onscreen rectangle that encloses all four points).
Sets up a scissor region on the nodes rendered at this level and below. The two points are understood to be relative to the indicated other node. When these points are projected into screen space, they define the diagonally-opposite points that determine the scissor region.
Sets up a scissor region on the nodes rendered at this level and below. The four points are understood to be relative to the indicated other node. When these points are projected into screen space, they define the bounding volume of the scissor region (the scissor region is the smallest onscreen rectangle that encloses all four points).
-
void set_sg(PN_stdfloat sg)
Sets the green component of the color scale.
-
void set_shader_auto(int priority = 0)
-
void set_shader_auto(BitMask32 shader_switch, int priority = 0)
overloaded for auto shader customization
-
void set_shader_input(ShaderInput const &input)
-
void set_shader_input(CPT_InternalName id, Texture *tex, SamplerState const &sampler, int priority = 0)
-
void set_shader_input(CPT_InternalName id, Texture *tex, bool read, bool write, int z = -1, int n = 0, int priority = 0)
-
void set_shader_input(CPT_InternalName id, int n1, int n2, int n3 = 0, int n4 = 0, int priority = 0)
-
void set_shader_input(CPT_InternalName id, PN_stdfloat n1, PN_stdfloat n2, PN_stdfloat n3 = 0, PN_stdfloat n4 = 0, int priority = 0)
-
void set_shader_input(CPT_InternalName, PyObject*, int priority = 0)
-
void set_shader_inputs(PyObject *args, PyObject *kwargs)
-
void set_shader_off(int priority = 0)
-
void set_shear(PN_stdfloat shxy, PN_stdfloat shxz, PN_stdfloat shyz)
-
void set_shear(NodePath const &other, LVecBase3 const &shear)
Sets the shear component of the transform, leaving translation, rotation, and scale untouched.
Sets the shear component of the transform, relative to the other node.
Sets the shear component of the transform, leaving translation and rotation untouched.
Sets the shear component of the transform, relative to the other node.
-
void set_shxy(PN_stdfloat shxy)
-
void set_shxz(PN_stdfloat shxz)
-
void set_shyz(PN_stdfloat shyz)
-
void set_sr(PN_stdfloat sr)
Sets the red component of the color scale.
-
void set_state(RenderState const *state, Thread *current_thread = Thread::get_current_thread())
-
void set_state(NodePath const &other, RenderState const *state, Thread *current_thread = Thread::get_current_thread())
Changes the complete state object on this node.
Sets the state object on this node, relative to the other node. This computes a new state object that will have the indicated value when seen from the other node.
-
void set_sx(PN_stdfloat sx)
-
void set_sx(NodePath const &other, PN_stdfloat sx)
Sets the x-scale component of the transform, leaving other components untouched.
-
void set_sy(PN_stdfloat sy)
-
void set_sy(NodePath const &other, PN_stdfloat sy)
Sets the y-scale component of the transform, leaving other components untouched.
-
void set_sz(PN_stdfloat sz)
-
void set_sz(NodePath const &other, PN_stdfloat sz)
Sets the z-scale component of the transform, leaving other components untouched.
-
void set_tag(std::string const &key, std::string const &value)
Associates a user-defined value with a user-defined key which is stored on the node. This value has no meaning to Panda; but it is stored indefinitely on the node until it is requested again.
Each unique key stores a different string value. There is no effective limit on the number of different keys that may be stored or on the length of any one key’s value.
-
void set_tex_gen(TextureStage *stage, RenderAttrib::TexGenMode mode, int priority = 0)
-
void set_tex_gen(TextureStage *stage, RenderAttrib::TexGenMode mode, LTexCoord3 const &constant_value, int priority = 0)
Enables automatic texture coordinate generation for the indicated texture stage.
Enables automatic texture coordinate generation for the indicated texture stage. This version of this method is useful when setting M_constant, which requires a constant texture coordinate value.
-
void set_tex_hpr(TextureStage *stage, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r)
-
void set_tex_hpr(TextureStage *stage, LVecBase3 const &hpr)
-
void set_tex_hpr(NodePath const &other, TextureStage *stage, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r)
-
void set_tex_hpr(NodePath const &other, TextureStage *stage, LVecBase3 const &hpr)
Sets a texture matrix on the current node to apply the indicated rotation, as a 3-D HPR, to UVW’s for the given stage.
This call is appropriate for 3-d texture coordinates.
-
void set_tex_offset(TextureStage *stage, PN_stdfloat u, PN_stdfloat v)
-
void set_tex_offset(TextureStage *stage, LVecBase2 const &uv)
-
void set_tex_offset(NodePath const &other, TextureStage *stage, PN_stdfloat u, PN_stdfloat v)
-
void set_tex_offset(NodePath const &other, TextureStage *stage, LVecBase2 const &uv)
Sets a texture matrix on the current node to apply the indicated offset to UV’s for the given stage.
This call is appropriate for ordinary 2-d texture coordinates.
-
void set_tex_pos(TextureStage *stage, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w)
-
void set_tex_pos(TextureStage *stage, LVecBase3 const &uvw)
-
void set_tex_pos(NodePath const &other, TextureStage *stage, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w)
-
void set_tex_pos(NodePath const &other, TextureStage *stage, LVecBase3 const &uvw)
Sets a texture matrix on the current node to apply the indicated offset to UVW’s for the given stage.
This call is appropriate for 3-d texture coordinates.
-
void set_tex_projector(TextureStage *stage, NodePath const &from, NodePath const &to, int lens_index = 0)
Establishes a
TexProjectorEffect
on this node, which can be used to establish projective texturing (but see also theNodePath::project_texture()
convenience function), or it can be used to bind this node’s texture transform to particular node’s position in space, allowing a LerpInterval (for instance) to adjust this node’s texture coordinates.If to is a
LensNode
, then the fourth parameter, lens_index, can be provided to select a particular lens to apply. Otherwise lens_index is not used.
-
void set_tex_rotate(TextureStage *stage, PN_stdfloat r)
-
void set_tex_rotate(NodePath const &other, TextureStage *stage, PN_stdfloat r)
Sets a texture matrix on the current node to apply the indicated rotation, clockwise in degrees, to UV’s for the given stage.
This call is appropriate for ordinary 2-d texture coordinates.
-
void set_tex_scale(TextureStage *stage, PN_stdfloat scale)
-
void set_tex_scale(TextureStage *stage, PN_stdfloat su, PN_stdfloat sv)
-
void set_tex_scale(TextureStage *stage, LVecBase2 const &scale)
-
void set_tex_scale(TextureStage *stage, PN_stdfloat su, PN_stdfloat sv, PN_stdfloat sw)
-
void set_tex_scale(TextureStage *stage, LVecBase3 const &scale)
-
void set_tex_scale(NodePath const &other, TextureStage *stage, PN_stdfloat scale)
-
void set_tex_scale(NodePath const &other, TextureStage *stage, PN_stdfloat su, PN_stdfloat sv)
-
void set_tex_scale(NodePath const &other, TextureStage *stage, LVecBase2 const &scale)
-
void set_tex_scale(NodePath const &other, TextureStage *stage, PN_stdfloat su, PN_stdfloat sv, PN_stdfloat sw)
-
void set_tex_scale(NodePath const &other, TextureStage *stage, LVecBase3 const &scale)
Sets a texture matrix on the current node to apply the indicated scale to UVW’s for the given stage.
This call is appropriate for 2-d or 3-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UV’s for the given stage.
This call is appropriate for ordinary 2-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UV’s for the given stage.
This call is appropriate for ordinary 2-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UVW’s for the given stage.
This call is appropriate for 3-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UVW’s for the given stage.
This call is appropriate for 3-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UV’s for the given stage.
This call is appropriate for 2-d or 3-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UV’s for the given stage.
This call is appropriate for ordinary 2-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UV’s for the given stage.
This call is appropriate for ordinary 2-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UVW’s for the given stage.
This call is appropriate for 3-d texture coordinates.
Sets a texture matrix on the current node to apply the indicated scale to UVW’s for the given stage.
This call is appropriate for 3-d texture coordinates.
-
void set_tex_transform(TextureStage *stage, TransformState const *transform)
-
void set_tex_transform(NodePath const &other, TextureStage *stage, TransformState const *transform)
Sets the texture matrix on the current node to the indicated transform for the given stage.
-
void set_texture(TextureStage *stage, Texture *tex, int priority = 0)
-
void set_texture(Texture *tex, SamplerState const &sampler, int priority = 0)
-
void set_texture(TextureStage *stage, Texture *tex, SamplerState const &sampler, int priority = 0)
Adds the indicated texture to the list of textures that will be rendered on the default texture stage.
This is the convenience single-texture variant of this method; it is now superceded by set_texture() that accepts a stage and texture. You may use this method if you just want to adjust the default stage.
Adds the indicated texture to the list of textures that will be rendered on the indicated multitexture stage. If there are multiple texture stages specified (possibly on multiple different nodes at different levels), they will all be applied to geometry together, according to the stage specification set up in the
TextureStage
object.Adds the indicated texture to the list of textures that will be rendered on the default texture stage.
The given sampler state will override the sampling settings on the texture itself. Note that this method makes a copy of the sampler settings that you give; further changes to this object will not be reflected.
This is the convenience single-texture variant of this method; it is now superceded by set_texture() that accepts a stage and texture. You may use this method if you just want to adjust the default stage.
Adds the indicated texture to the list of textures that will be rendered on the indicated multitexture stage. If there are multiple texture stages specified (possibly on multiple different nodes at different levels), they will all be applied to geometry together, according to the stage specification set up in the
TextureStage
object.The given sampler state will override the sampling settings on the texture itself. Note that this method makes a copy of the sampler settings that you give; further changes to this object will not be reflected.
-
void set_texture_off(int priority = 0)
-
void set_texture_off(TextureStage *stage, int priority = 0)
Sets the geometry at this level and below to render using no texture, on any stage. This is different from not specifying a texture; rather, this specifically contradicts
set_texture()
at a higher node level (or, with a priority, overrides aset_texture()
at a lower level).Sets the geometry at this level and below to render using no texture, on the indicated stage. This is different from not specifying a texture; rather, this specifically contradicts
set_texture()
at a higher node level (or, with a priority, overrides aset_texture()
at a lower level).
-
void set_transform(TransformState const *transform, Thread *current_thread = Thread::get_current_thread())
-
void set_transform(NodePath const &other, TransformState const *transform, Thread *current_thread = Thread::get_current_thread())
Changes the complete transform object on this node.
Sets the transform object on this node, relative to the other node. This computes a new transform object that will have the indicated value when seen from the other node.
-
void set_transparency(TransparencyAttrib::Mode mode, int priority = 0)
Specifically sets or disables transparent rendering mode on this particular node. If no other nodes override, this will cause items with a non-1 value for alpha color to be rendered partially transparent.
-
void set_two_sided(bool two_sided, int priority = 0)
Specifically sets or disables two-sided rendering mode on this particular node. If no other nodes override, this will cause backfacing polygons to be drawn (in two-sided mode, true) or culled (in one-sided mode, false).
-
void set_x(PN_stdfloat x)
-
void set_x(NodePath const &other, PN_stdfloat x)
Sets the X component of the position transform, leaving other components untouched.
See
NodePath::set_pos()
.
-
void set_y(PN_stdfloat y)
-
void set_y(NodePath const &other, PN_stdfloat y)
Sets the Y component of the position transform, leaving other components untouched.
See
NodePath::set_pos()
.
-
void set_z(PN_stdfloat z)
-
void set_z(NodePath const &other, PN_stdfloat z)
Sets the Z component of the position transform, leaving other components untouched.
See
NodePath::set_pos()
.
-
void show(void)
-
void show(DrawMask camera_mask)
Variants on show and hide
Undoes the effect of a previous
hide()
on this node: makes the referenced node (and the entire subgraph below this node) visible to all cameras.This will not reveal the node if a parent node has been hidden.
Makes the referenced node visible just to the cameras whose camera_mask shares the indicated bits.
This undoes the effect of a previous
hide()
call. It will not reveal the node if a parent node has been hidden. However, seeshow_through()
.
-
void show_bounds(void)
Causes the bounding volume of the bottom node and all of its descendants (that is, the bounding volume associated with the the bottom arc) to be rendered, if possible. The rendering method is less than optimal; this is intended primarily for debugging.
-
void show_through(void)
-
void show_through(DrawMask camera_mask)
Makes the referenced node visible just to the cameras whose camera_mask shares the indicated bits.
Unlike
show()
, this will reveal the node even if a parent node has been hidden, thus “showing through” a parent’shide()
.Makes the referenced node visible just to the cameras whose camera_mask shares the indicated bits.
Unlike
show()
, this will reveal the node even if a parent node has been hidden via the one-parameterhide()
method, thus “showing through” a parent’shide()
. (However, it will not show through a parent’shide()
call if the no-parameter form ofhide()
was used.)
-
void show_tight_bounds(void)
Similar to
show_bounds()
, this draws a bounding box representing the “tight” bounds of this node and all of its descendants. The bounding box is recomputed every frame by reexamining all of the vertices; this is far from efficient, but this is intended for debugging.
-
void stash(int sort = 0, Thread *current_thread = Thread::get_current_thread())
Removes the referenced node (and the entire subgraph below this node) from the scene graph in any normal sense. The node will no longer be visible and is not tested for collisions; furthermore, no normal scene graph traversal will visit the node. The node’s bounding volume no longer contributes to its parent’s bounding volume.
A stashed node cannot be located by a normal
find()
operation (although a special find string can still retrieve it).
-
void stash_to(NodePath const &other, int sort = 0, Thread *current_thread = Thread::get_current_thread())
Similar to
reparent_to()
, but the node is added to its new parent’s stashed list, so that the result is equivalent to callingreparent_to()
immediately followed bystash()
.
-
void unify_texture_stages(TextureStage *stage)
Searches through all
TextureStages
at this node and below. AnyTextureStages
that share the same name as the indicatedTextureStage
object are replaced with this object, thus ensuring that all geometry at this node and below with a particularTextureStage
name is using the sameTextureStage
object.
-
void unstash(int sort = 0, Thread *current_thread = Thread::get_current_thread())
Undoes the effect of a previous
stash()
on this node: makes the referenced node (and the entire subgraph below this node) once again part of the scene graph.
-
void unstash_all(Thread *current_thread = Thread::get_current_thread())
Unstashes this node and all stashed child nodes.
-
bool verify_complete(Thread *current_thread = Thread::get_current_thread()) const
Miscellaneous
Returns true if all of the nodes described in the
NodePath
are connected, or false otherwise.
-
bool write_bam_file(Filename const &filename) const
Writes the contents of this node and below out to a bam file with the indicated filename. This file may then be read in again, as is, at some later point. Returns true if successful, false on some kind of error.
-
bool write_bam_stream(std::ostream &out) const
Writes the contents of this node and below out to the indicated stream.
-
void write_bounds(std::ostream &out) const
Writes a description of the bounding volume containing the bottom node and all of its descendants to the indicated output stream.
-
void wrt_reparent_to(NodePath const &other, int sort = 0, Thread *current_thread = Thread::get_current_thread())
This functions identically to
reparent_to()
, except the transform on this node is also adjusted so that the node remains in the same place in world coordinates, even if it is reparented into a different coordinate system.
-
enum ErrorType