Panda3D
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties
Public Member Functions | Static Public Member Functions | Static Public Attributes
GeomNode Class Reference

A node that holds Geom objects, renderable pieces of geometry. More...

Inheritance diagram for GeomNode:
PandaNode TypedWritable Namable LinkedListNode ReferenceCount TypedObject

List of all members.

Public Member Functions

 GeomNode (string name)
 addGeom (Geom geom, RenderState const state)
 Adds a new Geom to the node.
 addGeom (Geom geom)
 Adds a new Geom to the node.
 addGeomsFrom (GeomNode const other)
 Copies the Geoms (and their associated RenderStates) from the indicated GeomNode into this one.
bool checkValid ()
 Verifies that the each Geom within the GeomNode reference vertices that actually exist within its GeomVertexData.
 decompose ()
 Calls decompose() on each Geom with the GeomNode.
Geom const getGeom (int n)
 Returns the nth geom of the node.
list getGeoms ()
RenderState const getGeomState (int n)
 Returns the RenderState associated with the nth geom of the node.
list getGeomStates ()
int getNumGeoms ()
 Returns the number of geoms in the node.
bool getPreserved ()
 Returns the "preserved" flag.
Geom modifyGeom (int n)
 Returns the nth geom of the node, suitable for modifying it.
 removeAllGeoms ()
 Removes all the geoms from the node at once.
 removeGeom (int n)
 Removes the nth geom from the node.
 setGeom (int n, Geom geom)
 Replaces the nth Geom of the node with a new pointer.
 setGeomState (int n, RenderState const state)
 Changes the RenderState associated with the nth geom of the node.
 setPreserved (bool value)
 Sets the "preserved" flag.
 unify (int max_indices, bool preserve_order)
 Attempts to unify all of the Geoms contained within this node into a single Geom, or at least as few Geoms as possible.
 writeGeoms (ostream out, int indent_level)
 Writes a short description of all the Geoms in the node.
 writeVerbose (ostream out, int indent_level)
 Writes a detailed description of all the Geoms in the node.

Static Public Member Functions

static TypeHandle getClassType ()
static BitMaskunsigned getDefaultCollideMask ()

Static Public Attributes

static BitMaskunsigned int
 Returns the default into_collide_mask assigned to new GeomNodes.

Detailed Description

A node that holds Geom objects, renderable pieces of geometry.

This is the primary kind of leaf node in the scene graph; almost all visible objects will be contained in a GeomNode somewhere.


Constructor & Destructor Documentation

GeomNode ( string  name)

Member Function Documentation

addGeom ( Geom  geom,
RenderState const  state 
)

Adds a new Geom to the node.

The geom is given the indicated state (which may be RenderState::make_empty(), to completely inherit its state from the scene graph).

addGeom ( Geom  geom)

Adds a new Geom to the node.

The geom is given the indicated state (which may be RenderState::make_empty(), to completely inherit its state from the scene graph).

addGeomsFrom ( GeomNode const  other)

Copies the Geoms (and their associated RenderStates) from the indicated GeomNode into this one.

bool checkValid ( )

Verifies that the each Geom within the GeomNode reference vertices that actually exist within its GeomVertexData.

Returns true if the GeomNode appears to be valid, false otherwise.

decompose ( )

Calls decompose() on each Geom with the GeomNode.

This decomposes higher-order primitive types, like triangle strips, into lower-order types like indexed triangles. Normally there is no reason to do this, but it can be useful as an early preprocessing step, to allow a later call to unify() to proceed more quickly.

See also SceneGraphReducer::decompose(), which is the normal way this is called.

static TypeHandle getClassType ( ) [static]

Reimplemented from PandaNode.

static BitMaskunsigned getDefaultCollideMask ( ) [static]
Geom const getGeom ( int  n)

Returns the nth geom of the node.

This object should not be modified, since the same object might be shared between multiple different GeomNodes, but see modify_geom().

list getGeoms ( )

Returns the RenderState associated with the nth geom of the node.

This is just the RenderState directly associated with the Geom; the actual state in which the Geom is rendered will also be affected by RenderStates that appear on the scene graph in nodes above this GeomNode.

list getGeomStates ( )

Returns the number of geoms in the node.

bool getPreserved ( )

Returns the "preserved" flag.

When this is true, the GeomNode will be left untouched by any flatten operations.

Returns the nth geom of the node, suitable for modifying it.

If the nth Geom has multiple reference counts to it, reassigns it to an identical copy first, and returns the new copy--this provides a "copy on write" that ensures that the Geom that is returned is unique to this GeomNode and is not shared with any other GeomNodes.

Note that if this method is called in a downstream stage (for instance, during cull or draw), then it will propagate the new list of Geoms upstream all the way to pipeline stage 0, which may step on changes that were made independently in pipeline stage 0. Use with caution.

Removes all the geoms from the node at once.

removeGeom ( int  n)

Removes the nth geom from the node.

setGeom ( int  n,
Geom  geom 
)

Replaces the nth Geom of the node with a new pointer.

There must already be a Geom in this slot.

Note that if this method is called in a downstream stage (for instance, during cull or draw), then it will propagate the new list of Geoms upstream all the way to pipeline stage 0, which may step on changes that were made independently in pipeline stage 0. Use with caution.

setGeomState ( int  n,
RenderState const  state 
)

Changes the RenderState associated with the nth geom of the node.

This is just the RenderState directly associated with the Geom; the actual state in which the Geom is rendered will also be affected by RenderStates that appear on the scene graph in nodes above this GeomNode.

Note that if this method is called in a downstream stage (for instance, during cull or draw), then it will propagate the new list of Geoms upstream all the way to pipeline stage 0, which may step on changes that were made independently in pipeline stage 0. Use with caution.

setPreserved ( bool  value)

Sets the "preserved" flag.

When this is true, the GeomNode will be left untouched by any flatten operations.

unify ( int  max_indices,
bool  preserve_order 
)

Attempts to unify all of the Geoms contained within this node into a single Geom, or at least as few Geoms as possible.

In turn, the individual GeomPrimitives contained within each resulting Geom are also unified. The goal is to reduce the number of GeomPrimitives within the node as far as possible. This may result in composite primitives, such as triangle strips and triangle fans, being decomposed into triangles. See also Geom::unify().

max_indices represents the maximum number of indices that will be put in any one GeomPrimitive. If preserve_order is true, then the primitives will not be reordered during the operation, even if this results in a suboptimal result.

In order for this to be successful, the primitives must reference the same GeomVertexData, have the same fundamental primitive type, and have compatible shade models.

writeGeoms ( ostream  out,
int  indent_level 
)

Writes a short description of all the Geoms in the node.

writeVerbose ( ostream  out,
int  indent_level 
)

Writes a detailed description of all the Geoms in the node.


Member Data Documentation

BitMaskunsigned int [static]

Returns the default into_collide_mask assigned to new GeomNodes.

Reimplemented from PandaNode.

 All Classes Namespaces Functions Variables Enumerations Enumerator Properties