Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
TerrainTracksRenderObjClassSystem Class Reference

System for drawing, updating, and re-using tread mark render objects. More...

#include <W3DTerrainTracks.h>

Public Member Functions

 TerrainTracksRenderObjClassSystem (void)
 
 ~TerrainTracksRenderObjClassSystem (void)
 
void ReleaseResources (void)
 Release all dx8 resources so the device can be reset.
 
void ReAcquireResources (void)
 Reacquire all resources after device reset.
 
void setDetail (void)
 
void flush (void)
 draw all tracks that were requested for rendering.
 
void update (void)
 update the state of all edges (fade alpha, remove old, etc.)
 
void init (SceneClass *TerrainTracksScene)
 pre-allocate track objects
 
void shutdown (void)
 release all pre-allocated track objects, called by destructor
 
void Reset (void)
 empties the system, ready for a new scene.
 
TerrainTracksRenderObjClassbindTrack (RenderObjClass *renderObject, Real length, const Char *texturename)
 track object to be controlled by owner
 
void unbindTrack (TerrainTracksRenderObjClass *mod)
 releases control of track object
 

Protected Member Functions

void releaseTrack (TerrainTracksRenderObjClass *mod)
 returns track object to free store.
 
void clearTracks (void)
 reset the amount of visible track marks of each object.
 

Protected Attributes

DX8VertexBufferClassm_vertexBuffer
 vertex buffer used to draw all tracks
 
DX8IndexBufferClassm_indexBuffer
 indices defining triangles in maximum length track
 
VertexMaterialClassm_vertexMaterialClass
 vertex lighting material
 
ShaderClass m_shaderClass
 shader or rendering state for heightmap
 
TerrainTracksRenderObjClassm_usedModules
 active objects being rendered in the scene
 
TerrainTracksRenderObjClassm_freeModules
 
SceneClassm_TerrainTracksScene
 scene that will contain all the TerrainTracks
 
Int m_edgesToFlush
 number of edges to flush on next render.
 
Int m_maxTankTrackEdges
 maximum length of tank track
 
Int m_maxTankTrackOpaqueEdges
 maximum length of tank track before it starts fading.
 
Int m_maxTankTrackFadeDelay
 maximum amount of time a tank track segment remains visible.
 

Friends

class TerrainTracksRenderObjClass
 

Detailed Description

System for drawing, updating, and re-using tread mark render objects.

This system keeps track of all the active track mark objects and reuses them when they expire. It also renders all the track marks that were submitted in this frame.

Definition at line 113 of file W3DTerrainTracks.h.

Constructor & Destructor Documentation

◆ TerrainTracksRenderObjClassSystem()

TerrainTracksRenderObjClassSystem::TerrainTracksRenderObjClassSystem ( void )

Constructor. Just nulls out some variables.

Definition at line 556 of file W3DTerrainTracks.cpp.

◆ ~TerrainTracksRenderObjClassSystem()

TerrainTracksRenderObjClassSystem::~TerrainTracksRenderObjClassSystem ( void )

Destructor. Free all pre-allocated track laying render objects

Definition at line 576 of file W3DTerrainTracks.cpp.

Member Function Documentation

◆ bindTrack()

TerrainTracksRenderObjClass * TerrainTracksRenderObjClassSystem::bindTrack ( RenderObjClass * renderObject,
Real length,
const Char * texturename )

track object to be controlled by owner

Grab a track from the free store. If no free tracks exist, return NULL. As long as a track is bound to an object (like a tank) it is ready to accept updates with additional edges. Once it is unbound, it will expire and return to the free store once all tracks have faded out.

Input: width in world units of each track edge (should probably width of vehicle). length in world units between edges. Shorter lengths produce more edges and smoother curves. texture to use for the tracks - image should be symetrical and include alpha channel.

Definition at line 474 of file W3DTerrainTracks.cpp.

◆ clearTracks()

void TerrainTracksRenderObjClassSystem::clearTracks ( void )
protected

reset the amount of visible track marks of each object.

Clear the treads from each track laying object without freeing the objects. Mostly used when user changed LOD level

Definition at line 944 of file W3DTerrainTracks.cpp.

◆ flush()

void TerrainTracksRenderObjClassSystem::flush ( void )

draw all tracks that were requested for rendering.

Draw all active track marks for this frame

Todo
: Optimize system by drawing tracks as triangle strips and use dynamic vertex buffer access. May also try rendering all tracks with one call to W3D/D3D by grouping them by texture. Try improving the fit to vertical surfaces like cliffs.
Todo
: Add diffuse lighting.

Definition at line 795 of file W3DTerrainTracks.cpp.

◆ init()

void TerrainTracksRenderObjClassSystem::init ( SceneClass * TerrainTracksScene)

pre-allocate track objects

initialize the system, allocate all the render objects we will need

Definition at line 642 of file W3DTerrainTracks.cpp.

◆ ReAcquireResources()

void TerrainTracksRenderObjClassSystem::ReAcquireResources ( void )

Reacquire all resources after device reset.

(Re)allocates all W3D assets after a reset..

Definition at line 592 of file W3DTerrainTracks.cpp.

◆ ReleaseResources()

void TerrainTracksRenderObjClassSystem::ReleaseResources ( void )

Release all dx8 resources so the device can be reset.

(Re)allocates all W3D assets after a reset..

Definition at line 629 of file W3DTerrainTracks.cpp.

◆ releaseTrack()

void TerrainTracksRenderObjClassSystem::releaseTrack ( TerrainTracksRenderObjClass * mod)
protected

returns track object to free store.

Returns a track laying object to free store to be used again later.

Definition at line 526 of file W3DTerrainTracks.cpp.

◆ Reset()

void TerrainTracksRenderObjClassSystem::Reset ( void )

empties the system, ready for a new scene.

Removes all remaining tracks from the rendering system

Definition at line 923 of file W3DTerrainTracks.cpp.

◆ setDetail()

void TerrainTracksRenderObjClassSystem::setDetail ( void )

Adjust various paremeters which affect the cost of rendering tracks on the map. Parameters are passed via GlobalData

Definition at line 965 of file W3DTerrainTracks.cpp.

◆ shutdown()

void TerrainTracksRenderObjClassSystem::shutdown ( void )

release all pre-allocated track objects, called by destructor

Shutdown and free all memory for this system

Definition at line 698 of file W3DTerrainTracks.cpp.

◆ unbindTrack()

void TerrainTracksRenderObjClassSystem::unbindTrack ( TerrainTracksRenderObjClass * mod)

releases control of track object

Called when an object (i.e Tank) will not lay down any more tracks and doesn't need this object anymore. The track-laying object will be returned to pool of available tracks as soon as any remaining track edges have faded out.

Definition at line 513 of file W3DTerrainTracks.cpp.

◆ update()

void TerrainTracksRenderObjClassSystem::update ( void )

update the state of all edges (fade alpha, remove old, etc.)

Update the state of all active track marks - fade, expire, etc.

Definition at line 740 of file W3DTerrainTracks.cpp.

Friends And Related Symbol Documentation

◆ TerrainTracksRenderObjClass

friend class TerrainTracksRenderObjClass
friend

Definition at line 115 of file W3DTerrainTracks.h.

Member Data Documentation

◆ m_edgesToFlush

Int TerrainTracksRenderObjClassSystem::m_edgesToFlush
protected

number of edges to flush on next render.

Definition at line 147 of file W3DTerrainTracks.h.

◆ m_freeModules

TerrainTracksRenderObjClass* TerrainTracksRenderObjClassSystem::m_freeModules
protected

Definition at line 144 of file W3DTerrainTracks.h.

◆ m_indexBuffer

DX8IndexBufferClass* TerrainTracksRenderObjClassSystem::m_indexBuffer
protected

indices defining triangles in maximum length track

Definition at line 139 of file W3DTerrainTracks.h.

◆ m_maxTankTrackEdges

Int TerrainTracksRenderObjClassSystem::m_maxTankTrackEdges
protected

maximum length of tank track

Definition at line 152 of file W3DTerrainTracks.h.

◆ m_maxTankTrackFadeDelay

Int TerrainTracksRenderObjClassSystem::m_maxTankTrackFadeDelay
protected

maximum amount of time a tank track segment remains visible.

Definition at line 154 of file W3DTerrainTracks.h.

◆ m_maxTankTrackOpaqueEdges

Int TerrainTracksRenderObjClassSystem::m_maxTankTrackOpaqueEdges
protected

maximum length of tank track before it starts fading.

Definition at line 153 of file W3DTerrainTracks.h.

◆ m_shaderClass

ShaderClass TerrainTracksRenderObjClassSystem::m_shaderClass
protected

shader or rendering state for heightmap

Definition at line 141 of file W3DTerrainTracks.h.

◆ m_TerrainTracksScene

SceneClass* TerrainTracksRenderObjClassSystem::m_TerrainTracksScene
protected

scene that will contain all the TerrainTracks

Definition at line 145 of file W3DTerrainTracks.h.

◆ m_usedModules

TerrainTracksRenderObjClass* TerrainTracksRenderObjClassSystem::m_usedModules
protected

active objects being rendered in the scene

Definition at line 143 of file W3DTerrainTracks.h.

◆ m_vertexBuffer

DX8VertexBufferClass* TerrainTracksRenderObjClassSystem::m_vertexBuffer
protected

vertex buffer used to draw all tracks

Definition at line 138 of file W3DTerrainTracks.h.

◆ m_vertexMaterialClass

VertexMaterialClass* TerrainTracksRenderObjClassSystem::m_vertexMaterialClass
protected

vertex lighting material

Definition at line 140 of file W3DTerrainTracks.h.


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