Public Member Functions | Static Public Member Functions | Static Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
Ogre::PMWorker Class Reference

Processes requests. More...

#include <OgreQueuedProgressiveMeshGenerator.h>

Inheritance diagram for Ogre::PMWorker:
Inheritance graph
[legend]

Public Member Functions

 PMWorker ()
 
virtual ~PMWorker ()
 
void addRequestToQueue (PMGenRequest *request)
 
void clearPendingLodRequests ()
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 

Static Public Member Functions

static PMWorkergetSingleton (void)
 Override standard Singleton retrieval. More...
 
static PMWorkergetSingletonPtr (void)
 Override standard Singleton retrieval. More...
 

Static Protected Attributes

static PMWorkermsSingleton
 

Private Types

typedef multimap< Real, PMVertex * >::type CollapseCostHeap
 
typedef vector< PMCollapsedEdge >::type CollapsedEdges
 
typedef vector< PMIndexBufferInfo >::type IndexBufferInfoList
 
typedef vector< PMTriangle >::type TriangleList
 
typedef HashSet< PMVertex *, PMVertexHash, PMVertexEqualUniqueVertexSet
 
typedef VectorSet< PMEdge, 8 > VEdges
 
typedef vector< PMVertex >::type VertexList
 
typedef vector< PMVertex * >::type VertexLookupList
 
typedef VectorSet< PMTriangle *, 7 > VTriangles
 

Private Member Functions

void addEdge (PMVertex *v, const PMEdge &edge)
 
void addIndexBuffer (PMGenRequest::IndexBuffer &indexBuffer, bool useSharedVertexLookup, unsigned short submeshID)
 
void addIndexData (IndexData *indexData, bool useSharedVertexLookup, unsigned short submeshID)
 
template<typename IndexType >
void addIndexDataImpl (IndexType *iPos, const IndexType *iEnd, VertexLookupList &lookup, unsigned short submeshID)
 
void addTriangleToEdges (PMTriangle *triangle)
 
void addVertexBuffer (const PMGenRequest::VertexBuffer &vertexBuffer, bool useSharedVertexLookup)
 
void addVertexData (VertexData *vertexData, bool useSharedVertexLookup)
 
void assertOutdatedCollapseCost (PMVertex *vertex)
 
void assertValidMesh ()
 
void assertValidVertex (PMVertex *v)
 
void bakeLods ()
 
void buildRequest (LodConfig &lodConfigs)
 
size_t calcLodVertexCount (const LodLevel &lodConfig)
 
virtual bool canHandleRequest (const Request *req, const WorkQueue *srcQ)
 Return whether this handler can process a given request. More...
 
void cleanupMemory ()
 
void collapse (PMVertex *vertex)
 
void computeCosts ()
 
Real computeEdgeCollapseCost (PMVertex *src, PMEdge *dstEdge)
 
void computeLods (LodConfig &lodConfigs)
 
void computeVertexCollapseCost (PMVertex *vertex)
 
size_t findDstID (unsigned int srcID, unsigned short submeshID)
 
PMTrianglefindSideTriangle (const PMVertex *v1, const PMVertex *v2)
 
virtual void generateAutoconfiguredLodLevels (MeshPtr &mesh)
 Generates the LOD levels for a mesh without configuring it. More...
 
void generateLodLevels (LodConfig &lodConfig)
 Generates the LOD levels for a mesh. More...
 
virtual void getAutoconfig (MeshPtr &inMesh, LodConfig &outLodConfig)
 Fills LOD Config with a config, which works on any mesh. More...
 
PMEdgegetPointer (VEdges::iterator it)
 
int getTriangleID (PMTriangle *triangle)
 
WorkQueue::ResponsehandleRequest (const WorkQueue::Request *req, const WorkQueue *srcQ)
 The handler method every subclass must implement. More...
 
bool hasSrcID (unsigned int srcID, unsigned short submeshID)
 
void initialize ()
 
bool isBorderVertex (const PMVertex *vertex) const
 
bool isDuplicateTriangle (PMTriangle *triangle, PMTriangle *triangle2)
 
PMTriangleisDuplicateTriangle (PMTriangle *triangle)
 
void printTriangle (PMTriangle *triangle, stringstream &str)
 
void removeEdge (PMVertex *v, const PMEdge &edge)
 
void removeTriangleFromEdges (PMTriangle *triangle, PMVertex *skip=NULL)
 
void replaceVertexID (PMTriangle *triangle, unsigned int oldID, unsigned int newID, PMVertex *dst)
 
void tuneContainerSize ()
 
void updateVertexCollapseCost (PMVertex *src)
 

Private Attributes

ushort mChannelID
 
CollapseCostHeap mCollapseCostHeap
 
Real mCollapseCostLimit
 
IndexBufferInfoList mIndexBufferInfoList
 
MeshPtr mMesh
 
Real mMeshBoundingSphereRadius
 
String mMeshName
 The name of the mesh being processed. More...
 
PMGenRequestmRequest
 
VertexLookupList mSharedVertexLookup
 
TriangleList mTriangleList
 
UniqueVertexSet mUniqueVertexSet
 
VertexList mVertexList
 
VertexLookupList mVertexLookup
 
CollapsedEdges tmpCollapsedEdges
 

Detailed Description

Processes requests.

Definition at line 73 of file OgreQueuedProgressiveMeshGenerator.h.

Member Typedef Documentation

§ CollapseCostHeap

Definition at line 118 of file OgreProgressiveMeshGenerator.h.

§ CollapsedEdges

Definition at line 124 of file OgreProgressiveMeshGenerator.h.

§ IndexBufferInfoList

Definition at line 125 of file OgreProgressiveMeshGenerator.h.

§ TriangleList

Definition at line 116 of file OgreProgressiveMeshGenerator.h.

§ UniqueVertexSet

Definition at line 117 of file OgreProgressiveMeshGenerator.h.

§ VEdges

Definition at line 121 of file OgreProgressiveMeshGenerator.h.

§ VertexList

typedef vector<PMVertex>::type Ogre::ProgressiveMeshGenerator::VertexList
protectedinherited

Definition at line 113 of file OgreProgressiveMeshGenerator.h.

§ VertexLookupList

Definition at line 119 of file OgreProgressiveMeshGenerator.h.

§ VTriangles

Definition at line 122 of file OgreProgressiveMeshGenerator.h.

Constructor & Destructor Documentation

§ PMWorker()

Ogre::PMWorker::PMWorker ( )

§ ~PMWorker()

virtual Ogre::PMWorker::~PMWorker ( )
virtual

Member Function Documentation

§ addEdge()

void Ogre::ProgressiveMeshGenerator::addEdge ( PMVertex v,
const PMEdge edge 
)
protectedinherited

§ addIndexBuffer()

void Ogre::PMWorker::addIndexBuffer ( PMGenRequest::IndexBuffer indexBuffer,
bool  useSharedVertexLookup,
unsigned short  submeshID 
)
private

§ addIndexData()

void Ogre::ProgressiveMeshGenerator::addIndexData ( IndexData indexData,
bool  useSharedVertexLookup,
unsigned short  submeshID 
)
protectedinherited

§ addIndexDataImpl()

template<typename IndexType >
void Ogre::ProgressiveMeshGenerator::addIndexDataImpl ( IndexType *  iPos,
const IndexType *  iEnd,
VertexLookupList lookup,
unsigned short  submeshID 
)
protectedinherited

§ addRequestToQueue()

void Ogre::PMWorker::addRequestToQueue ( PMGenRequest request)

§ addTriangleToEdges()

void Ogre::ProgressiveMeshGenerator::addTriangleToEdges ( PMTriangle triangle)
protectedinherited

§ addVertexBuffer()

void Ogre::PMWorker::addVertexBuffer ( const PMGenRequest::VertexBuffer vertexBuffer,
bool  useSharedVertexLookup 
)
private

§ addVertexData()

void Ogre::ProgressiveMeshGenerator::addVertexData ( VertexData vertexData,
bool  useSharedVertexLookup 
)
protectedinherited

§ assertOutdatedCollapseCost()

void Ogre::ProgressiveMeshGenerator::assertOutdatedCollapseCost ( PMVertex vertex)
protectedinherited

§ assertValidMesh()

void Ogre::ProgressiveMeshGenerator::assertValidMesh ( )
protectedinherited

§ assertValidVertex()

void Ogre::ProgressiveMeshGenerator::assertValidVertex ( PMVertex v)
protectedinherited

§ bakeLods()

void Ogre::PMWorker::bakeLods ( )
privatevirtual

Reimplemented from Ogre::ProgressiveMeshGenerator.

§ buildRequest()

void Ogre::PMWorker::buildRequest ( LodConfig lodConfigs)
private

§ calcLodVertexCount()

size_t Ogre::ProgressiveMeshGenerator::calcLodVertexCount ( const LodLevel lodConfig)
protectedinherited

§ canHandleRequest()

virtual bool Ogre::WorkQueue::RequestHandler::canHandleRequest ( const Request req,
const WorkQueue srcQ 
)
virtualinherited

Return whether this handler can process a given request.

Remarks
Defaults to true, but if you wish to add several handlers each of which deal with different types of request, you can override this method.

Reimplemented in Ogre::Terrain, Ogre::TerrainGroup, Ogre::ResourceBackgroundQueue, Ogre::Page, and Ogre::TerrainLodManager.

Definition at line 173 of file OgreWorkQueue.h.

References Ogre::WorkQueue::Request::getAborted().

§ cleanupMemory()

void Ogre::ProgressiveMeshGenerator::cleanupMemory ( )
protectedinherited

§ clearPendingLodRequests()

void Ogre::PMWorker::clearPendingLodRequests ( )

§ collapse()

void Ogre::ProgressiveMeshGenerator::collapse ( PMVertex vertex)
protectedinherited

§ computeCosts()

void Ogre::ProgressiveMeshGenerator::computeCosts ( )
protectedinherited

§ computeEdgeCollapseCost()

Real Ogre::ProgressiveMeshGenerator::computeEdgeCollapseCost ( PMVertex src,
PMEdge dstEdge 
)
protectedinherited

§ computeLods()

void Ogre::ProgressiveMeshGenerator::computeLods ( LodConfig lodConfigs)
protectedinherited

§ computeVertexCollapseCost()

void Ogre::ProgressiveMeshGenerator::computeVertexCollapseCost ( PMVertex vertex)
protectedinherited

§ findDstID()

size_t Ogre::ProgressiveMeshGenerator::findDstID ( unsigned int  srcID,
unsigned short  submeshID 
)
protectedinherited

§ findSideTriangle()

PMTriangle* Ogre::ProgressiveMeshGenerator::findSideTriangle ( const PMVertex v1,
const PMVertex v2 
)
protectedinherited

§ generateAutoconfiguredLodLevels()

virtual void Ogre::ProgressiveMeshGeneratorBase::generateAutoconfiguredLodLevels ( MeshPtr mesh)
virtualinherited

Generates the LOD levels for a mesh without configuring it.

Parameters
meshGenerate the LOD for this mesh.

§ generateLodLevels()

void Ogre::ProgressiveMeshGenerator::generateLodLevels ( LodConfig lodConfig)
virtualinherited

Generates the LOD levels for a mesh.

Parameters
lodConfigSpecification of the requested LOD levels.

Implements Ogre::ProgressiveMeshGeneratorBase.

§ getAutoconfig()

virtual void Ogre::ProgressiveMeshGeneratorBase::getAutoconfig ( MeshPtr inMesh,
LodConfig outLodConfig 
)
virtualinherited

Fills LOD Config with a config, which works on any mesh.

Parameters
inMeshOptimize for this mesh.
outLodConfigLOD configuration storing the output.

§ getPointer()

PMEdge* Ogre::ProgressiveMeshGenerator::getPointer ( VEdges::iterator  it)
protectedinherited

§ getSingleton()

static PMWorker& Ogre::PMWorker::getSingleton ( void  )
static

Override standard Singleton retrieval.

Remarks
Why do we do this? Well, it's because the Singleton implementation is in a .h file, which means it gets compiled into anybody who includes it. This is needed for the Singleton template to work, but we actually only want it compiled into the implementation of the class based on the Singleton, not all of them. If we don't change this, we get link errors when trying to use the Singleton-based class from an outside dll.
This method just delegates to the template version anyway, but the implementation stays in this single compilation unit, preventing link errors.

§ getSingletonPtr()

static PMWorker* Ogre::PMWorker::getSingletonPtr ( void  )
static

Override standard Singleton retrieval.

Remarks
Why do we do this? Well, it's because the Singleton implementation is in a .h file, which means it gets compiled into anybody who includes it. This is needed for the Singleton template to work, but we actually only want it compiled into the implementation of the class based on the Singleton, not all of them. If we don't change this, we get link errors when trying to use the Singleton-based class from an outside dll.
This method just delegates to the template version anyway, but the implementation stays in this single compilation unit, preventing link errors.

§ getTriangleID()

int Ogre::ProgressiveMeshGenerator::getTriangleID ( PMTriangle triangle)
protectedinherited

§ handleRequest()

WorkQueue::Response* Ogre::PMWorker::handleRequest ( const WorkQueue::Request req,
const WorkQueue srcQ 
)
privatevirtual

The handler method every subclass must implement.

If a failure is encountered, return a Response with a failure result rather than raise an exception.

Parameters
reqThe Request structure, which is effectively owned by the handler during this call. It must be attached to the returned Response regardless of success or failure.
srcQThe work queue that this request originated from
Returns
Pointer to a Response object - the caller is responsible for deleting the object.

Implements Ogre::WorkQueue::RequestHandler.

§ hasSrcID()

bool Ogre::ProgressiveMeshGenerator::hasSrcID ( unsigned int  srcID,
unsigned short  submeshID 
)
protectedinherited

§ initialize()

void Ogre::PMWorker::initialize ( )
private

§ isBorderVertex()

bool Ogre::ProgressiveMeshGenerator::isBorderVertex ( const PMVertex vertex) const
protectedinherited

§ isDuplicateTriangle() [1/2]

bool Ogre::ProgressiveMeshGenerator::isDuplicateTriangle ( PMTriangle triangle,
PMTriangle triangle2 
)
protectedinherited

§ isDuplicateTriangle() [2/2]

PMTriangle* Ogre::ProgressiveMeshGenerator::isDuplicateTriangle ( PMTriangle triangle)
protectedinherited

§ operator delete() [1/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inherited

Definition at line 96 of file OgreMemoryAllocatedObject.h.

§ operator delete() [2/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inherited

Definition at line 102 of file OgreMemoryAllocatedObject.h.

§ operator delete() [3/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inherited

Definition at line 108 of file OgreMemoryAllocatedObject.h.

§ operator delete[]() [1/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inherited

Definition at line 113 of file OgreMemoryAllocatedObject.h.

§ operator delete[]() [2/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inherited

Definition at line 119 of file OgreMemoryAllocatedObject.h.

§ operator new() [1/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inherited

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

§ operator new() [2/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inherited

Definition at line 73 of file OgreMemoryAllocatedObject.h.

§ operator new() [3/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inherited

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

§ operator new[]() [1/2]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inherited

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

§ operator new[]() [2/2]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inherited

Definition at line 91 of file OgreMemoryAllocatedObject.h.

§ printTriangle()

void Ogre::ProgressiveMeshGenerator::printTriangle ( PMTriangle triangle,
stringstream str 
)
protectedinherited

§ removeEdge()

void Ogre::ProgressiveMeshGenerator::removeEdge ( PMVertex v,
const PMEdge edge 
)
protectedinherited

§ removeTriangleFromEdges()

void Ogre::ProgressiveMeshGenerator::removeTriangleFromEdges ( PMTriangle triangle,
PMVertex skip = NULL 
)
protectedinherited

§ replaceVertexID()

void Ogre::ProgressiveMeshGenerator::replaceVertexID ( PMTriangle triangle,
unsigned int  oldID,
unsigned int  newID,
PMVertex dst 
)
protectedinherited

§ tuneContainerSize()

void Ogre::PMWorker::tuneContainerSize ( )
private

§ updateVertexCollapseCost()

void Ogre::ProgressiveMeshGenerator::updateVertexCollapseCost ( PMVertex src)
protectedinherited

Member Data Documentation

§ mChannelID

ushort Ogre::PMWorker::mChannelID
private

Definition at line 120 of file OgreQueuedProgressiveMeshGenerator.h.

§ mCollapseCostHeap

CollapseCostHeap Ogre::ProgressiveMeshGenerator::mCollapseCostHeap
protectedinherited

Definition at line 198 of file OgreProgressiveMeshGenerator.h.

§ mCollapseCostLimit

Real Ogre::ProgressiveMeshGenerator::mCollapseCostLimit
protectedinherited

Definition at line 213 of file OgreProgressiveMeshGenerator.h.

§ mIndexBufferInfoList

IndexBufferInfoList Ogre::ProgressiveMeshGenerator::mIndexBufferInfoList
protectedinherited

Definition at line 200 of file OgreProgressiveMeshGenerator.h.

§ mMesh

MeshPtr Ogre::ProgressiveMeshGenerator::mMesh
protectedinherited

Definition at line 202 of file OgreProgressiveMeshGenerator.h.

§ mMeshBoundingSphereRadius

Real Ogre::ProgressiveMeshGenerator::mMeshBoundingSphereRadius
protectedinherited

Definition at line 212 of file OgreProgressiveMeshGenerator.h.

§ mMeshName

String Ogre::ProgressiveMeshGenerator::mMeshName
protectedinherited

The name of the mesh being processed.

This is separate from mMesh in order to allow for access from background threads.

Definition at line 210 of file OgreProgressiveMeshGenerator.h.

§ mRequest

PMGenRequest* Ogre::PMWorker::mRequest
private

Definition at line 119 of file OgreQueuedProgressiveMeshGenerator.h.

§ mSharedVertexLookup

VertexLookupList Ogre::ProgressiveMeshGenerator::mSharedVertexLookup
protectedinherited

Definition at line 193 of file OgreProgressiveMeshGenerator.h.

§ msSingleton

PMWorker * Ogre::Singleton< PMWorker >::msSingleton
staticprotectedinherited

Definition at line 75 of file OgreSingleton.h.

§ mTriangleList

TriangleList Ogre::ProgressiveMeshGenerator::mTriangleList
protectedinherited

Definition at line 196 of file OgreProgressiveMeshGenerator.h.

§ mUniqueVertexSet

UniqueVertexSet Ogre::ProgressiveMeshGenerator::mUniqueVertexSet
protectedinherited

Definition at line 197 of file OgreProgressiveMeshGenerator.h.

§ mVertexList

VertexList Ogre::ProgressiveMeshGenerator::mVertexList
protectedinherited

Definition at line 195 of file OgreProgressiveMeshGenerator.h.

§ mVertexLookup

VertexLookupList Ogre::ProgressiveMeshGenerator::mVertexLookup
protectedinherited

Definition at line 194 of file OgreProgressiveMeshGenerator.h.

§ tmpCollapsedEdges

CollapsedEdges Ogre::ProgressiveMeshGenerator::tmpCollapsedEdges
protectedinherited

Definition at line 199 of file OgreProgressiveMeshGenerator.h.


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

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Mon Jan 2 2017 11:59:36