Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes
Ogre::TerrainLodManager Class Reference

Terrain LOD data manager. More...

#include <OgreTerrainLodManager.h>

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

List of all members.

Classes

struct  LoadLodRequest
struct  LodInfo

Public Types

typedef vector< float >::type LodData
typedef vector< LodData >::type LodsData

Public Member Functions

 TerrainLodManager (Terrain *t, DataStreamPtr &stream)
 TerrainLodManager (Terrain *t, const String &filename="")
virtual ~TerrainLodManager ()
virtual bool canHandleRequest (const WorkQueue::Request *req, const WorkQueue *srcQ)
 Return whether this handler can process a given request.
virtual bool canHandleResponse (const WorkQueue::Response *res, const WorkQueue *srcQ)
 Return whether this handler can process a given response.
void fillBufferAtLod (uint lodLevel, const float *data, uint dataSize)
 Copy geometry data from buffer to mHeightData/mDeltaData.
int getHighestLodLoaded ()
int getHighestLodPrepared ()
LodInfogetLodInfo (uint lodLevel)
int getTargetLodLevel ()
virtual WorkQueue::ResponsehandleRequest (const WorkQueue::Request *req, const WorkQueue *srcQ)
 The handler method every subclass must implement.
virtual void handleResponse (const WorkQueue::Response *res, const WorkQueue *srcQ)
 The handler method every subclass must implement.
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
void * operator new (size_t sz)
void * operator new (size_t sz, void *ptr)
 placement operator new
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info
void * operator new[] (size_t sz)
void readLodData (uint16 lowerLodBound, uint16 higherLodBound)
 Read separated geometry data from file into allocated memory.
void updateToLodLevel (int lodLevel, bool synchronous=false)
void waitForDerivedProcesses ()

Static Public Member Functions

static void saveLodData (StreamSerialiser &stream, Terrain *terrain)
 Save each LOD level separately compressed so seek is possible.

Static Public Attributes

static const uint32 TERRAINLODDATA_CHUNK_ID
static const uint16 TERRAINLODDATA_CHUNK_VERSION
static const uint16 WORKQUEUE_LOAD_LOD_DATA_REQUEST

Private Member Functions

void buildLodInfoTable ()
void init ()

Static Private Member Functions

static void separateData (float *data, uint16 size, uint16 numLodLevels, LodsData &lods)
 Separate geometry data by LOD level.

Private Attributes

DataStreamPtr mDataStream
int mHighestLodLoaded
 Highest LOD level stored in memory i.e. mHeightData/mDeltaData.
int mHighestLodPrepared
 Which LOD level is demanded.
bool mIncreaseLodLevelInProgress
 Highest LOD level loaded in GPU.
bool mLastRequestSynchronous
 Is increaseLodLevel() running?
LodInfomLodInfoTable
size_t mStreamOffset
int mTargetLodLevel
TerrainmTerrain
uint16 mWorkQueueChannel

Detailed Description

Terrain LOD data manager.

This class is used for managing terrain LOD data's loading, unloading.

Definition at line 52 of file OgreTerrainLodManager.h.


Member Typedef Documentation

Definition at line 57 of file OgreTerrainLodManager.h.

Definition at line 58 of file OgreTerrainLodManager.h.


Constructor & Destructor Documentation

Ogre::TerrainLodManager::TerrainLodManager ( Terrain t,
const String filename = "" 
)

Member Function Documentation

virtual bool Ogre::TerrainLodManager::canHandleRequest ( const WorkQueue::Request req,
const WorkQueue srcQ 
) [virtual]

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 from Ogre::WorkQueue::RequestHandler.

virtual bool Ogre::TerrainLodManager::canHandleResponse ( const WorkQueue::Response res,
const WorkQueue srcQ 
) [virtual]

Return whether this handler can process a given response.

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

Reimplemented from Ogre::WorkQueue::ResponseHandler.

void Ogre::TerrainLodManager::fillBufferAtLod ( uint  lodLevel,
const float *  data,
uint  dataSize 
)

Copy geometry data from buffer to mHeightData/mDeltaData.

Parameters:
lodLevelA LOD level to work with
dataBuffer which holds geometry data if separated form
Remarks:
Data in buffer has to be both height and delta data. First half is height data. Seconds half is delta data.

Definition at line 117 of file OgreTerrainLodManager.h.

Definition at line 116 of file OgreTerrainLodManager.h.

Definition at line 120 of file OgreTerrainLodManager.h.

Definition at line 118 of file OgreTerrainLodManager.h.

virtual WorkQueue::Response* Ogre::TerrainLodManager::handleRequest ( const WorkQueue::Request req,
const WorkQueue srcQ 
) [virtual]

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.

virtual void Ogre::TerrainLodManager::handleResponse ( const WorkQueue::Response res,
const WorkQueue srcQ 
) [virtual]

The handler method every subclass must implement.

Parameters:
resThe Response structure. The caller is responsible for deleting this after the call is made, none of the data contained (except pointers to structures in user Any data) will persist after this call is returned.
srcQThe work queue that this request originated from

Implements Ogre::WorkQueue::ResponseHandler.

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

Definition at line 96 of file OgreMemoryAllocatedObject.h.

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

Definition at line 102 of file OgreMemoryAllocatedObject.h.

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.

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

Definition at line 113 of file OgreMemoryAllocatedObject.h.

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.

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.

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

Definition at line 73 of file OgreMemoryAllocatedObject.h.

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.

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.

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

Definition at line 91 of file OgreMemoryAllocatedObject.h.

void Ogre::TerrainLodManager::readLodData ( uint16  lowerLodBound,
uint16  higherLodBound 
)

Read separated geometry data from file into allocated memory.

Parameters:
lowerLodBoundLower bound of LOD levels to load
higherLodBoundUpper bound of LOD levels to load
Remarks:
Geometry data are uncompressed using inflate() and stored into allocated buffer
static void Ogre::TerrainLodManager::saveLodData ( StreamSerialiser stream,
Terrain terrain 
) [static]

Save each LOD level separately compressed so seek is possible.

static void Ogre::TerrainLodManager::separateData ( float *  data,
uint16  size,
uint16  numLodLevels,
LodsData lods 
) [static, private]

Separate geometry data by LOD level.

Parameters:
dataA geometry data to separate i.e. mHeightData/mDeltaData
sizeDimension of the input data
numLodLevelsNumber of LOD levels in the input data
lodsThe separated LOD data
Remarks:
Allocates new array and fills it with geometry data coupled by LOD level from lowest LOD level to highest. Example: before separation: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 after separation: 2: 00 04 20 24 1: 02 10 12 14 22 0: 01 03 05 06 07 08 09 11 13 15 16 17 18 19 21 23
void Ogre::TerrainLodManager::updateToLodLevel ( int  lodLevel,
bool  synchronous = false 
)

Member Data Documentation

Definition at line 150 of file OgreTerrainLodManager.h.

Highest LOD level stored in memory i.e. mHeightData/mDeltaData.

Definition at line 157 of file OgreTerrainLodManager.h.

Which LOD level is demanded.

Definition at line 156 of file OgreTerrainLodManager.h.

Highest LOD level loaded in GPU.

Definition at line 159 of file OgreTerrainLodManager.h.

Is increaseLodLevel() running?

Definition at line 160 of file OgreTerrainLodManager.h.

Definition at line 154 of file OgreTerrainLodManager.h.

Definition at line 151 of file OgreTerrainLodManager.h.

Definition at line 155 of file OgreTerrainLodManager.h.

Definition at line 149 of file OgreTerrainLodManager.h.

Definition at line 152 of file OgreTerrainLodManager.h.

Definition at line 55 of file OgreTerrainLodManager.h.

Definition at line 56 of file OgreTerrainLodManager.h.

Definition at line 90 of file OgreTerrainLodManager.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 Jul 27 2020 13:41:42