Panda3D
Public Member Functions | Static Public Member Functions | List of all members
MeshDrawer Class Reference

Mesh drawer creates a single geom object that can be shaped with different draw commands. More...

Inheritance diagram for MeshDrawer:
TypedObject

Public Member Functions

 __init__ ()
 Creates the MeshDrawer low level system. More...
 
 begin (NodePath camera, NodePath render)
 Pass the current camera node and the root node. More...
 
 billboard (const LVector3 pos, const LVector4 frame, float size, const LVector4 color)
 Draws a billboard - particle with no rotation. More...
 
 blendedParticle (const LVector3 pos, const LVector4 frame1, const LVector4 frame2, float blend, float size, const LVector4 color, float rotation)
 Works just like particle but accepts 2 frames and a blend (from 0 to 1) component between them Frame contains u,v,u-size,v-size quadruple. More...
 
 crossSegment (const LVector3 start, const LVector3 stop, const LVector4 frame, float thickness, const LVector4 color)
 Draws a segment a line with a thickness. More...
 
 end ()
 Finish the drawing and clearing off the remaining vertexes. More...
 
 explosion (const LVector3 pos, const LVector4 frame, float size, const LVector4 color, int seed, int number, float distance)
 Draws number of particles in a sphere like emitter. More...
 
 geometry (NodePath node)
 Draws the geometry that is inside this node path into the MeshDrawer object. More...
 
int getBudget ()
 Gets the total triangle budget of the drawer. More...
 
NodePath getRoot ()
 Returns the root NodePath. More...
 
 linkSegment (const LVector3 pos, const LVector4 frame, float thickness, const LVector4 color)
 Stars or continues linked segment. More...
 
 linkSegmentEnd (const LVector4 frame, const LVector4 color)
 Finish drawing linked segments, needs at least two calls to link_segment before it can end the linked segment. More...
 
 particle (const LVector3 pos, const LVector4 frame, float size, const LVector4 color, float rotation)
 Draws a particle that is sort of like a bill board but has an extra rotation component. More...
 
 segment (const LVector3 start, const LVector3 stop, const LVector4 frame, float thickness, const LVector4 color)
 Draws a segment a line with a thickness. More...
 
 setBudget (int budget)
 Sets the total triangle budget of the drawer. More...
 
 stream (const LVector3 start, const LVector3 stop, const LVector4 frame, float size, const LVector4 color, int number, float offset)
 Draws a number of particles in a big line with a shift dictated by the offset. More...
 
 tri (const LVector3 v1, const LVector4 c1, const LVector2 uv1, const LVector3 v2, const LVector4 c2, const LVector2 uv2, const LVector3 v3, const LVector4 c3, const LVector2 uv3)
 Draws a triangle with the given parameters. More...
 
 unevenSegment (const LVector3 start, const LVector3 stop, const LVector4 frame, float thickness_start, const LVector4 color_start, float thickness_stop, const LVector4 color_stop)
 Draws a segment a line with different thickness and color on both sides. More...
 
- Public Member Functions inherited from TypedObject
TypeHandle getType ()
 
int getTypeIndex ()
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More...
 
bool isExactType (TypeHandle handle)
 Returns true if the current object is the indicated type exactly. More...
 
bool isOfType (TypeHandle handle)
 Returns true if the current object is or derives from the indicated type. More...
 

Static Public Member Functions

static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from TypedObject
static TypeHandle getClassType ()
 

Additional Inherited Members

- Public Attributes inherited from TypedObject
TypeHandle type
 Returns the TypeHandle representing this object's type. More...
 

Detailed Description

Mesh drawer creates a single geom object that can be shaped with different draw commands.

This is an efficient way to render bunch of billboards, particles, fast changing triangles. Its implemented by recycling same geom over and over again. Max budget specifies how many triangles are allowed. Some uses of this class can be : particle system, radar icons, health bars, 2d icons, 2d ui, bullets, missile trails. Any that can be drawn with triangles can be drawn with this class. At the low level this uses the GeomVertexRewriter's. The internal geom consists of vertex, normal, uv and color channels.

Member Function Documentation

◆ __init__()

__init__ ( )

Creates the MeshDrawer low level system.

◆ begin()

begin ( NodePath  camera,
NodePath  render 
)

Pass the current camera node and the root node.

Passing the camera is required to generate bill boards that face it.

◆ billboard()

billboard ( const LVector3  pos,
const LVector4  frame,
float  size,
const LVector4  color 
)

Draws a billboard - particle with no rotation.

Billboards always face the camera. Frame contains u,v,u-size,v-size quadruple.

◆ blendedParticle()

blendedParticle ( const LVector3  pos,
const LVector4  frame1,
const LVector4  frame2,
float  blend,
float  size,
const LVector4  color,
float  rotation 
)

Works just like particle but accepts 2 frames and a blend (from 0 to 1) component between them Frame contains u,v,u-size,v-size quadruple.

◆ crossSegment()

crossSegment ( const LVector3  start,
const LVector3  stop,
const LVector4  frame,
float  thickness,
const LVector4  color 
)

Draws a segment a line with a thickness.

This segment does not use the bill boarding behavior and instead draws 2 planes in a cross. Stars at start and ends at stop. Frame contains u,v,u-size,v-size quadruple.

◆ end()

end ( )

Finish the drawing and clearing off the remaining vertexes.

◆ explosion()

explosion ( const LVector3  pos,
const LVector4  frame,
float  size,
const LVector4  color,
int  seed,
int  number,
float  distance 
)

Draws number of particles in a sphere like emitter.

Frame contains u,v,u-size,v-size quadruple.

◆ geometry()

geometry ( NodePath  node)

Draws the geometry that is inside this node path into the MeshDrawer object.

This performs a similar functions as RigidBodyCombiner but for very dynamic situations that share the same texture like physcal chunks of explosions. It can be a little slow

◆ getBudget()

int getBudget ( )

Gets the total triangle budget of the drawer.

◆ getClassType()

static TypeHandle getClassType ( )
static

◆ getRoot()

NodePath getRoot ( )

Returns the root NodePath.

You should use this node to reparent mesh drawer onto the scene might also want to disable depth draw or enable transparency.

◆ linkSegment()

linkSegment ( const LVector3  pos,
const LVector4  frame,
float  thickness,
const LVector4  color 
)

Stars or continues linked segment.

Control position, frame, thickness and color with parameters. Frame contains u,v,u-size,v-size quadruple.

◆ linkSegmentEnd()

linkSegmentEnd ( const LVector4  frame,
const LVector4  color 
)

Finish drawing linked segments, needs at least two calls to link_segment before it can end the linked segment.

Frame contains u,v,u-size,v-size quadruple.

◆ particle()

particle ( const LVector3  pos,
const LVector4  frame,
float  size,
const LVector4  color,
float  rotation 
)

Draws a particle that is sort of like a bill board but has an extra rotation component.

Frame contains u,v,u-size,v-size quadruple.

◆ segment()

segment ( const LVector3  start,
const LVector3  stop,
const LVector4  frame,
float  thickness,
const LVector4  color 
)

Draws a segment a line with a thickness.

That has billboarding effect. Frame contains u,v,u-size,v-size quadruple.

◆ setBudget()

setBudget ( int  budget)

Sets the total triangle budget of the drawer.

This will not be exceeded. Don't set some thing too large because it will be slow

◆ stream()

stream ( const LVector3  start,
const LVector3  stop,
const LVector4  frame,
float  size,
const LVector4  color,
int  number,
float  offset 
)

Draws a number of particles in a big line with a shift dictated by the offset.

Frame contains u,v,u-size,v-size quadruple.

◆ tri()

tri ( const LVector3  v1,
const LVector4  c1,
const LVector2  uv1,
const LVector3  v2,
const LVector4  c2,
const LVector2  uv2,
const LVector3  v3,
const LVector4  c3,
const LVector2  uv3 
)

Draws a triangle with the given parameters.

◆ unevenSegment()

unevenSegment ( const LVector3  start,
const LVector3  stop,
const LVector4  frame,
float  thickness_start,
const LVector4  color_start,
float  thickness_stop,
const LVector4  color_stop 
)

Draws a segment a line with different thickness and color on both sides.

Stars at start and ends at stop. Frame contains u,v,u-size,v-size quadruple.