OGRE: Ogre::TerrainGroup Class Reference - OGRE Documentation

Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes

# Ogre::TerrainGroup Class Reference
[Terrain]

Helper class to assist you in managing multiple terrain instances that are connected to each other. More...

`#include <OgreTerrainGroup.h>`

Inheritance diagram for Ogre::TerrainGroup:
[legend]

List of all members.

## Classes
struct | LoadRequest
| Structure for holding the load request. More...
struct | RayResult
| Result from a terrain ray intersection with the terrain group. More...
struct | TerrainSlot
| Slot for a terrain instance, together with its definition. More...
struct | TerrainSlotDefinition
| Definition of how to populate a 'slot' in the terrain group. More...
## Public Types
typedef vector< Terrain * >::type | TerrainList
typedef map< uint32, TerrainSlot * >::type | TerrainSlotMap
| Packed map, signed 16 bits for each axis from -32767 to +32767.
typedef MapIterator < TerrainSlotMap > | TerrainIterator
typedef ConstMapIterator < TerrainSlotMap > | ConstTerrainIterator
## Public Member Functions
| TerrainGroup (SceneManager *sm, Terrain::Alignment align, uint16 terrainSize, Real terrainWorldSize)
| Constructor.
| TerrainGroup (SceneManager *sm)
| Alternate constructor.
virtual | ~TerrainGroup ()
virtual Terrain::ImportData & | getDefaultImportSettings ()
| Retrieve a shared structure which will provide the base settings for all terrains created via this group.
virtual void | setOrigin (const Vector3 &pos)
| Define the centre position of the grid of terrain.
virtual const Vector3 & | getOrigin () const
| Retrieve the centre position of the grid of terrain.
virtual Terrain::Alignment | getAlignment () const
| Retrieve the alignment of the grid of terrain (cannot be modified after construction).
virtual Real | getTerrainWorldSize () const
| Retrieve the world size of each terrain instance (cannot be modified after construction).
virtual SceneManager * | getSceneManager () const
| Retrieve the SceneManager being used for this group.
void | setFilenameConvention (const String &prefix, const String &extension)
| Set the naming convention for file names in this terrain group.
void | setFilenamePrefix (const String &prefix)
void | setFilenameExtension (const String &extension)
const String & | getFilenamePrefix () const
const String & | getFilenameExtension () const
void | setResourceGroup (const String &grp)
| Set the resource group in which files will be located.
const String & | getResourceGroup () const
| Get the resource group in which files will be located.
virtual void | defineTerrain (long x, long y)
| Define a 'slot' in the terrain grid - in this case to be loaded from a generated file name.
virtual void | defineTerrain (long x, long y, float constantHeight)
| Define a 'slot' in the terrain grid - in this case a flat terrain.
virtual void | defineTerrain (long x, long y, const Terrain::ImportData *importData)
| Define the content of a 'slot' in the terrain grid.
virtual void | defineTerrain (long x, long y, const Image *img, const Terrain::LayerInstanceList *layers=0)
| Define the content of a 'slot' in the terrain grid.
virtual void | defineTerrain (long x, long y, const float *pFloat, const Terrain::LayerInstanceList *layers=0)
| Define the content of a 'slot' in the terrain grid.
virtual void | defineTerrain (long x, long y, const String &filename)
| Define the content of a 'slot' in the terrain grid.
virtual void | loadAllTerrains (bool synchronous=false)
| Load any terrain instances that have been defined but not loaded yet.
virtual void | loadTerrain (long x, long y, bool synchronous=false)
| Load a specific terrain slot based on the definition that has already been supplied.
virtual void | unloadTerrain (long x, long y)
| Unload a specific terrain slot.
virtual void | removeTerrain (long x, long y)
| Remove a specific terrain slot.
void | removeAllTerrains ()
| Remove all terrain instances.
void | saveAllTerrains (bool onlyIfModified, bool replaceManualFilenames=true)
| Save all terrain instances using the assigned file names, or via the filename convention.
virtual TerrainSlotDefinition * | getTerrainDefinition (long x, long y) const
| Get the definition of a slot in the terrain.
virtual Terrain * | getTerrain (long x, long y) const
| Get the terrain instance at a given slot, if loaded.
void | freeTemporaryResources ()
| Free as many resources as possible for optimal run-time memory use for all terrain tiles.
void | update (bool synchronous=false)
| Trigger the update process for all terrain instances.
void | updateGeometry ()
| Performs an update on all terrain geometry.
void | updateDerivedData (bool synchronous=false, uint8 typeMask=0xFF)
| Updates derived data for all terrains (LOD, lighting) to reflect changed height data.
float | getHeightAtWorldPosition (Real x, Real y, Real z, Terrain **ppTerrain=0)
| Get the height data for a given world position (projecting the point down on to the terrain underneath).
float | getHeightAtWorldPosition (const Vector3 &pos, Terrain **ppTerrain=0)
| Get the height data for a given world position (projecting the point down on to the terrain).
RayResult | rayIntersects (const Ray &ray, Real distanceLimit=0) const
| Test for intersection of a given ray with any terrain in the group.
void | boxIntersects (const AxisAlignedBox &box, TerrainList *resultList) const
| Test intersection of a box with the terrain.
void | sphereIntersects (const Sphere &sphere, TerrainList *resultList) const
| Test intersection of a sphere with the terrain.
void | convertWorldPositionToTerrainSlot (const Vector3 &pos, long *x, long *y) const
| Convert a world position to terrain slot coordinates.
void | convertTerrainSlotToWorldPosition (long x, long y, Vector3 *pos) const
| Convert a slot location to a world position at the centre.
bool | isDerivedDataUpdateInProgress () const
| Calls Terrain::isDerivedDataUpdateInProgress on each loaded instance and returns true if any of them are undergoing a derived update.
TerrainIterator | getTerrainIterator ()
| Get an iterator over the defined terrains.
ConstTerrainIterator | getTerrainIterator () const
| Get an iterator over the defined terrains (const).
bool | canHandleRequest (const WorkQueue::Request *req, const WorkQueue *srcQ)
| WorkQueue::RequestHandler override.
WorkQueue::Response * | handleRequest (const WorkQueue::Request *req, const WorkQueue *srcQ)
| WorkQueue::RequestHandler override.
bool | canHandleResponse (const WorkQueue::Response *res, const WorkQueue *srcQ)
| WorkQueue::ResponseHandler override.
void | handleResponse (const WorkQueue::Response *res, const WorkQueue *srcQ)
| WorkQueue::ResponseHandler override.
uint32 | packIndex (long x, long y) const
| Convert coordinates to a packed integer index.
void | unpackIndex (uint32 key, long *x, long *y)
| Convert a packed integer index to coordinates.
String | generateFilename (long x, long y) const
| Generate a file name based on the current naming convention.
void | saveGroupDefinition (const String &filename)
| Save the group data only in native form to a file.
void | saveGroupDefinition (StreamSerialiser &stream)
| Save the group data only in native form to a serializing stream.
void | loadGroupDefinition (const String &filename)
| Load the group definition only in native form from a file.
void | loadGroupDefinition (StreamSerialiser &stream)
| Load the group definition only in native form from a serializing stream.
virtual bool | canHandleRequest (const Request *req, const WorkQueue *srcQ)
| Return whether this handler can process a given request.
virtual Response * | handleRequest (const Request *req, const WorkQueue *srcQ)=0
| The handler method every subclass must implement.
virtual bool | canHandleResponse (const Response *res, const WorkQueue *srcQ)
| Return whether this handler can process a given response.
virtual void | handleResponse (const Response *res, const WorkQueue *srcQ)=0
| The handler method every subclass must implement.
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 | 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 *)
## Static Public Attributes
static const uint16 | WORKQUEUE_LOAD_REQUEST
static const uint32 | CHUNK_ID
static const uint16 | CHUNK_VERSION
## Protected Member Functions
Vector3 | getTerrainSlotPosition (long x, long y)
| Get the position of a terrain instance.
TerrainSlot * | getTerrainSlot (long x, long y, bool createIfMissing)
| Retrieve a slot, potentially allocate one.
TerrainSlot * | getTerrainSlot (long x, long y) const
void | connectNeighbour (TerrainSlot *slot, long offsetx, long offsety)
void | loadTerrainImpl (TerrainSlot *slot, bool synchronous)
## Protected Attributes
SceneManager * | mSceneManager
Terrain::Alignment | mAlignment
uint16 | mTerrainSize
Real | mTerrainWorldSize
Terrain::ImportData | mDefaultImportData
Vector3 | mOrigin
TerrainSlotMap | mTerrainSlots
uint16 | mWorkQueueChannel
String | mFilenamePrefix
String | mFilenameExtension
String | mResourceGroup
Terrain::DefaultGpuBufferAllocator | mBufferAllocator

## Detailed Description

Helper class to assist you in managing multiple terrain instances that are connected to each other.

Remarks:
  This class makes it easy to specify the same options for a group of terrain instances and have them positioned relative to each other and associated via each other's neighbour connections. You can do all this manually but this class just makes things easier, so that you only have to specify most options once.

  Terrains are maintained in a grid of entries, and for simplicity the grid cells are indexed from 0 as a 'centre' slot, supporting both positive and negative values. so (0,0) is the centre slot, (1,0) is the slot to the right of the centre, (1,0) is the slot above the centre, (-2,1) is the slot two to the left of the centre and one up, etc. The maximum extent of each axis is -32768 to +32767, so in other words enough for over 4 billion entries. That should be enough for anyone!

  Note that this is not a 'paging' class as such. It's simply a way to make it easier to perform common tasks with multiple terrain instances, which you choose when to define, load and remove. Automatic paging is handled separately by the Paging component.

Definition at line 65 of file OgreTerrainGroup.h.

## Member Typedef Documentation

typedef ConstMapIterator<TerrainSlotMap> Ogre::TerrainGroup::ConstTerrainIterator

Definition at line 443 of file OgreTerrainGroup.h.

typedef MapIterator<TerrainSlotMap> Ogre::TerrainGroup::TerrainIterator

Definition at line 442 of file OgreTerrainGroup.h.

typedef vector<Terrain*>::type Ogre::TerrainGroup::TerrainList

Definition at line 401 of file OgreTerrainGroup.h.

typedef map<uint32, TerrainSlot*>::type Ogre::TerrainGroup::TerrainSlotMap

Packed map, signed 16 bits for each axis from -32767 to +32767.

Definition at line 441 of file OgreTerrainGroup.h.

## Constructor & Destructor Documentation

Ogre::TerrainGroup::TerrainGroup | ( | SceneManager * | sm,
|  | Terrain::Alignment | align,
|  | uint16 | terrainSize,
|  | Real | terrainWorldSize |
| ) |  |  |

Constructor.

Parameters:

  | sm | The SceneManager which will parent the terrain instances.
  | align | The alignment that all terrain instances will use
  | terrainSize | The size of each terrain down one edge in vertices (2^n+1)
  | terrainWorldSize | The world size of each terrain instance

Ogre::TerrainGroup::TerrainGroup | ( | SceneManager * | sm | ) |

Alternate constructor.

Remarks:
  You can ONLY use this constructor if you subsequently call loadGroupDefinition to populate the rest.

virtual Ogre::TerrainGroup::~TerrainGroup | ( |  | ) | `[virtual]`

## Member Function Documentation

void Ogre::TerrainGroup::boxIntersects | ( | const AxisAlignedBox & | box,
|  | TerrainList * | resultList |
| ) |  |  | const

Test intersection of a box with the terrain.

Remarks:
  Tests an AABB for overlap with a terrain bounding box. Note that this does not mean that the box touches the terrain itself, just the bounding box for the terrain. You can use this to get region results for further testing or use (e.g. painting areas).

Parameters:

  | box | The AABB you want to test in world units
  | resultList | Pointer to a list of terrain pointers which will be updated to include just the terrains that overlap

bool Ogre::TerrainGroup::canHandleRequest | ( | const WorkQueue::Request * | req,
|  | const WorkQueue * | srcQ |
| ) |  |  |

WorkQueue::RequestHandler override.

virtual bool Ogre::WorkQueue::RequestHandler::canHandleRequest | ( | const Request * | req,
|  | const WorkQueue * | srcQ |
| ) |  |  | `[virtual, inherited]`

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.

Definition at line 172 of file OgreWorkQueue.h.

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

bool Ogre::TerrainGroup::canHandleResponse | ( | const WorkQueue::Response * | res,
|  | const WorkQueue * | srcQ |
| ) |  |  |

WorkQueue::ResponseHandler override.

virtual bool Ogre::WorkQueue::ResponseHandler::canHandleResponse | ( | const Response * | res,
|  | const WorkQueue * | srcQ |
| ) |  |  | `[virtual, inherited]`

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 in Ogre::ResourceBackgroundQueue.

Definition at line 207 of file OgreWorkQueue.h.

References Ogre::WorkQueue::Request::getAborted(), and Ogre::WorkQueue::Response::getRequest().

void Ogre::TerrainGroup::connectNeighbour | ( | TerrainSlot * | slot,
|  | long | offsetx,
|  | long | offsety |
| ) |  |  | `[protected]`

void Ogre::TerrainGroup::convertTerrainSlotToWorldPosition | ( | long | x,
|  | long | y,
|  | Vector3 * | pos |
| ) |  |  | const

Convert a slot location to a world position at the centre.

Parameters:

  | x,y | The slot coordinates
  | pos | Pointer to the world position to be completed

void Ogre::TerrainGroup::convertWorldPositionToTerrainSlot | ( | const Vector3 & | pos,
|  | long * | x,
|  | long * | y |
| ) |  |  | const

Convert a world position to terrain slot coordinates.

Parameters:

  | pos | The world position
  | x,y | Pointers to the coordinates to be completed.

virtual void Ogre::TerrainGroup::defineTerrain | ( | long | x,
|  | long | y,
|  | const Image * | img,
|  | const Terrain::LayerInstanceList * | layers = `0` |
| ) |  |  | `[virtual]`

Define the content of a 'slot' in the terrain grid.

Remarks:
  At this stage the terrain instance isn't actually present in the grid, you're merely expressing an intention for it to take its place there once it's loaded. The reason we do it like this is to support background preparation of this terrain instance.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).
  | img | Heightfield image - this data is copied during the call so you may destroy your copy afterwards.
  | layers | Optional texture layers to use (if not supplied, default import data layers will be used) - this data is copied during the call so you may destroy your copy afterwards.

virtual void Ogre::TerrainGroup::defineTerrain | ( | long | x,
|  | long | y |
| ) |  |  | `[virtual]`

Define a 'slot' in the terrain grid - in this case to be loaded from a generated file name.

Remarks:
  At this stage the terrain instance isn't actually present in the grid, you're merely expressing an intention for it to take its place there once it's loaded. The reason we do it like this is to support background preparation of this terrain instance.

Note:
  This method assumes that you want a file name to be generated from the naming convention that you have supplied (

See also:
  setFilenameConvention). If a file of that name isn't found during loading, then a flat terrain is created instead at height 0.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).

virtual void Ogre::TerrainGroup::defineTerrain | ( | long | x,
|  | long | y,
|  | const float * | pFloat,
|  | const Terrain::LayerInstanceList * | layers = `0` |
| ) |  |  | `[virtual]`

Define the content of a 'slot' in the terrain grid.

Remarks:
  At this stage the terrain instance isn't actually present in the grid, you're merely expressing an intention for it to take its place there once it's loaded. The reason we do it like this is to support background preparation of this terrain instance.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).
  | pFloat | Heights array
  | layers | Optional texture layers to use (if not supplied, default import data layers will be used) - this data is copied during the call so you may destroy your copy afterwards.

virtual void Ogre::TerrainGroup::defineTerrain | ( | long | x,
|  | long | y,
|  | const Terrain::ImportData * | importData |
| ) |  |  | `[virtual]`

Define the content of a 'slot' in the terrain grid.

Remarks:
  At this stage the terrain instance isn't actually present in the grid, you're merely expressing an intention for it to take its place there once it's loaded. The reason we do it like this is to support background preparation of this terrain instance.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).
  | importData | Import data - this data is copied during the call so you may destroy your copy afterwards.

virtual void Ogre::TerrainGroup::defineTerrain | ( | long | x,
|  | long | y,
|  | const String & | filename |
| ) |  |  | `[virtual]`

Define the content of a 'slot' in the terrain grid.

Remarks:
  At this stage the terrain instance isn't actually present in the grid, you're merely expressing an intention for it to take its place there once it's loaded. The reason we do it like this is to support background preparation of this terrain instance.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).
  | filename | The name of a file which fully defines the terrain (as written by Terrain::save). Size settings from all files must agree.

virtual void Ogre::TerrainGroup::defineTerrain | ( | long | x,
|  | long | y,
|  | float | constantHeight |
| ) |  |  | `[virtual]`

Define a 'slot' in the terrain grid - in this case a flat terrain.

Remarks:
  At this stage the terrain instance isn't actually present in the grid, you're merely expressing an intention for it to take its place there once it's loaded. The reason we do it like this is to support background preparation of this terrain instance.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).
  | constantHeight | The constant, uniform height that you want the terrain to start at

void Ogre::TerrainGroup::freeTemporaryResources | ( |  | ) |

Free as many resources as possible for optimal run-time memory use for all terrain tiles.

See also:
  Terrain::freeTemporaryResources

String Ogre::TerrainGroup::generateFilename | ( | long | x,
|  | long | y |
| ) |  |  | const

Generate a file name based on the current naming convention.

virtual Terrain::Alignment Ogre::TerrainGroup::getAlignment | ( |  | ) | const`[virtual]`

Retrieve the alignment of the grid of terrain (cannot be modified after construction).

Definition at line 114 of file OgreTerrainGroup.h.

virtual Terrain::ImportData& Ogre::TerrainGroup::getDefaultImportSettings | ( |  | ) | `[virtual]`

Retrieve a shared structure which will provide the base settings for all terrains created via this group.

Remarks:
  All neighbouring terrains should have the same basic settings (particularly the size parameters) - to avoid having to set the terrain import information more than once, you can retrieve the standard settings for this group here and modify them to your needs. Once you've done that you can use the shortcut methods in this class to create new terrain instances using these base settings (plus any per-instance settings you might want to use).

Note:
  The structure returned from this method is intended for in-place modification, that's why it is not const and there is no equivalent 'set' method. You should not, however, change the alignment or any of the size parameters after you start constructing instances, since neighbouring terrains should have the same size & alignment.

Definition at line 102 of file OgreTerrainGroup.h.

const String& Ogre::TerrainGroup::getFilenameExtension | ( |  | ) | const

See also:
  setFilenameConvention

Definition at line 141 of file OgreTerrainGroup.h.

const String& Ogre::TerrainGroup::getFilenamePrefix | ( |  | ) | const

See also:
  setFilenameConvention

Definition at line 139 of file OgreTerrainGroup.h.

float Ogre::TerrainGroup::getHeightAtWorldPosition | ( | Real | x,
|  | Real | y,
|  | Real | z,
|  | Terrain ** | ppTerrain = `0` |
| ) |  |  |

Get the height data for a given world position (projecting the point down on to the terrain underneath).

Parameters:

  | x,y,z | Position in world space. Positions will be clamped to the edge of the terrain
  | ppTerrain | Pointer to a pointer to a terrain which will be completed with the terrain that was found to resolve this query, or null if none were

float Ogre::TerrainGroup::getHeightAtWorldPosition | ( | const Vector3 & | pos,
|  | Terrain ** | ppTerrain = `0` |
| ) |  |  |

Get the height data for a given world position (projecting the point down on to the terrain).

Parameters:

  | pos | Position in world space. Positions will be clamped to the edge of the terrain
  | ppTerrain | Pointer to a pointer to a terrain which will be completed with the terrain that was found to resolve this query, or null if none were

virtual const Vector3& Ogre::TerrainGroup::getOrigin | ( |  | ) | const`[virtual]`

Retrieve the centre position of the grid of terrain.

Definition at line 110 of file OgreTerrainGroup.h.

const String& Ogre::TerrainGroup::getResourceGroup | ( |  | ) | const

Get the resource group in which files will be located.

Definition at line 146 of file OgreTerrainGroup.h.

virtual SceneManager* Ogre::TerrainGroup::getSceneManager | ( |  | ) | const`[virtual]`

Retrieve the SceneManager being used for this group.

Definition at line 122 of file OgreTerrainGroup.h.

virtual Terrain* Ogre::TerrainGroup::getTerrain | ( | long | x,
|  | long | y |
| ) |  |  | const`[virtual]`

Get the terrain instance at a given slot, if loaded.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).

Returns:
  The terrain, or null if no terrain is loaded in this slot (call getTerrainDefinition if you want to access the definition before it is loaded).

virtual TerrainSlotDefinition* Ogre::TerrainGroup::getTerrainDefinition | ( | long | x,
|  | long | y |
| ) |  |  | const`[virtual]`

Get the definition of a slot in the terrain.

Remarks:
  Definitions exist before the actual instances to allow background loading.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).

Returns:
  The definition, or null if nothing is in this slot. While this return value is not const, you should be careful about modifying it; it will have no effect unless you load the terrain afterwards, and can cause a race condition if you modify it while a background load is in progress.

ConstTerrainIterator Ogre::TerrainGroup::getTerrainIterator | ( |  | ) | const

Get an iterator over the defined terrains (const).

TerrainIterator Ogre::TerrainGroup::getTerrainIterator | ( |  | ) |

Get an iterator over the defined terrains.

TerrainSlot* Ogre::TerrainGroup::getTerrainSlot | ( | long | x,
|  | long | y,
|  | bool | createIfMissing |
| ) |  |  | `[protected]`

Retrieve a slot, potentially allocate one.

TerrainSlot* Ogre::TerrainGroup::getTerrainSlot | ( | long | x,
|  | long | y |
| ) |  |  | const`[protected]`

Vector3 Ogre::TerrainGroup::getTerrainSlotPosition | ( | long | x,
|  | long | y |
| ) |  |  | `[protected]`

Get the position of a terrain instance.

virtual Real Ogre::TerrainGroup::getTerrainWorldSize | ( |  | ) | const`[virtual]`

Retrieve the world size of each terrain instance (cannot be modified after construction).

Definition at line 118 of file OgreTerrainGroup.h.

WorkQueue::Response* Ogre::TerrainGroup::handleRequest | ( | const WorkQueue::Request * | req,
|  | const WorkQueue * | srcQ |
| ) |  |  |

WorkQueue::RequestHandler override.

virtual Response* Ogre::WorkQueue::RequestHandler::handleRequest | ( | const Request * | req,
|  | const WorkQueue * | srcQ |
| ) |  |  | `[pure virtual, inherited]`

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:

  | req | The 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.
  | srcQ | The work queue that this request originated from

Returns:
  Pointer to a Response object - the caller is responsible for deleting the object.

void Ogre::TerrainGroup::handleResponse | ( | const WorkQueue::Response * | res,
|  | const WorkQueue * | srcQ |
| ) |  |  |

WorkQueue::ResponseHandler override.

virtual void Ogre::WorkQueue::ResponseHandler::handleResponse | ( | const Response * | res,
|  | const WorkQueue * | srcQ |
| ) |  |  | `[pure virtual, inherited]`

The handler method every subclass must implement.

Parameters:

  | res | The 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.
  | srcQ | The work queue that this request originated from

Implemented in Ogre::ResourceBackgroundQueue.

bool Ogre::TerrainGroup::isDerivedDataUpdateInProgress | ( |  | ) | const

Calls Terrain::isDerivedDataUpdateInProgress on each loaded instance and returns true if any of them are undergoing a derived update.

virtual void Ogre::TerrainGroup::loadAllTerrains | ( | bool | synchronous = `false` | ) | `[virtual]`

Load any terrain instances that have been defined but not loaded yet.

Parameters:

  | synchronous | Whether we should force this to happen entirely in the primary thread (default false, operations are threaded if possible)

void Ogre::TerrainGroup::loadGroupDefinition | ( | StreamSerialiser & | stream | ) |

Load the group definition only in native form from a serializing stream.

void Ogre::TerrainGroup::loadGroupDefinition | ( | const String & | filename | ) |

Load the group definition only in native form from a file.

virtual void Ogre::TerrainGroup::loadTerrain | ( | long | x,
|  | long | y,
|  | bool | synchronous = `false` |
| ) |  |  | `[virtual]`

Load a specific terrain slot based on the definition that has already been supplied.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).
  | synchronous | Whether we should force this to happen entirely in the primary thread (default false, operations are threaded if possible)

void Ogre::TerrainGroup::loadTerrainImpl | ( | TerrainSlot * | slot,
|  | bool | synchronous |
| ) |  |  | `[protected]`

template<class Alloc >

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

Definition at line 101 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 107 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 95 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 112 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 118 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 78 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 72 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 67 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

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

Definition at line 90 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 85 of file OgreMemoryAllocatedObject.h.

uint32 Ogre::TerrainGroup::packIndex | ( | long | x,
|  | long | y |
| ) |  |  | const

Convert coordinates to a packed integer index.

RayResult Ogre::TerrainGroup::rayIntersects | ( | const Ray & | ray,
|  | Real | distanceLimit = `0` |
| ) |  |  | const

Test for intersection of a given ray with any terrain in the group.

If the ray hits a terrain, the point of intersection and terrain instance is returned.

Parameters:

  | ray | The ray to test for intersection
  | distanceLimit | The distance from the ray origin at which we will stop looking, 0 indicates no limit

Returns:
  A result structure which contains whether the ray hit a terrain and if so, where.

Remarks:
  This can be called from any thread as long as no parallel write to the terrain data occurs.

void Ogre::TerrainGroup::removeAllTerrains | ( |  | ) |

Remove all terrain instances.

virtual void Ogre::TerrainGroup::removeTerrain | ( | long | x,
|  | long | y |
| ) |  |  | `[virtual]`

Remove a specific terrain slot.

Remarks:
  This destroys any Terrain instance at this position and also removes the definition, so it essentially no longer exists.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).

void Ogre::TerrainGroup::saveAllTerrains | ( | bool | onlyIfModified,
|  | bool | replaceManualFilenames = `true` |
| ) |  |  |

Save all terrain instances using the assigned file names, or via the filename convention.

See also:
  setFilenameConvention
  setResourceGroup

Parameters:

  | onlyIfModified | If true, only terrains that have been modified since load(), or since the last save(), will be saved. You want to set this to true if you loaded the terrain from these same files, but false if you defined them using some other input data since the files wouldn't exist.
  | replaceManualFilenames | If true, replaces any manually defined filenames in the TerrainSlotDefinition with the generated names from the convention. This is recommended since it makes everything more consistent, although you might want to use manual filenames in the original definition to import previously separate data.

void Ogre::TerrainGroup::saveGroupDefinition | ( | const String & | filename | ) |

Save the group data only in native form to a file.

void Ogre::TerrainGroup::saveGroupDefinition | ( | StreamSerialiser & | stream | ) |

Save the group data only in native form to a serializing stream.

void Ogre::TerrainGroup::setFilenameConvention | ( | const String & | prefix,
|  | const String & | extension |
| ) |  |  |

Set the naming convention for file names in this terrain group.

Remarks:
  You can more easily generate file names for saved / loaded terrain slots if you define a naming prefix. When you call saveAllTerrains(), all the terrain instances currently loaded will be saved to a file named <prefix>_<index>.<extension>, where <index> is given by packing the x and y coordinates of the entry into a 32-bit index (

See also:
  packIndex).

void Ogre::TerrainGroup::setFilenameExtension | ( | const String & | extension | ) |

See also:
  setFilenameConvention

void Ogre::TerrainGroup::setFilenamePrefix | ( | const String & | prefix | ) |

See also:
  setFilenameConvention

virtual void Ogre::TerrainGroup::setOrigin | ( | const Vector3 & | pos | ) | `[virtual]`

Define the centre position of the grid of terrain.

void Ogre::TerrainGroup::setResourceGroup | ( | const String & | grp | ) |

Set the resource group in which files will be located.

Definition at line 144 of file OgreTerrainGroup.h.

void Ogre::TerrainGroup::sphereIntersects | ( | const Sphere & | sphere,
|  | TerrainList * | resultList |
| ) |  |  | const

Test intersection of a sphere with the terrain.

Remarks:
  Tests a sphere for overlap with a terrain bounding box. Note that this does not mean that the sphere touches the terrain itself, just the bounding box for the terrain. You can use this to get region results for further testing or use (e.g. painting areas).

Parameters:

  | sphere | The sphere you want to test in world units
  | resultList | Pointer to a list of terrain pointers which will be updated to include just the terrains that overlap

virtual void Ogre::TerrainGroup::unloadTerrain | ( | long | x,
|  | long | y |
| ) |  |  | `[virtual]`

Unload a specific terrain slot.

Remarks:
  This destroys the Terrain instance but retains the slot definition (so it would be reloaded next time you call loadAllTerrains() if you did not remove it beforehand).

Note:
  While the definition of the terrain is kept, if you used import data to populate it, this will have been lost so repeat loading cannot occur. The only way to support repeat loading is via the 'filename' option of defineTerrain instead.

Parameters:

  | x,y | The coordinates of the terrain slot relative to the centre slot (signed).

void Ogre::TerrainGroup::unpackIndex | ( | uint32 | key,
|  | long * | x,
|  | long * | y |
| ) |  |  |

Convert a packed integer index to coordinates.

void Ogre::TerrainGroup::update | ( | bool | synchronous = `false` | ) |

Trigger the update process for all terrain instances.

See also:
  Terrain::update

void Ogre::TerrainGroup::updateDerivedData | ( | bool | synchronous = `false`,
|  | uint8 | typeMask = `0xFF` |
| ) |  |  |

Updates derived data for all terrains (LOD, lighting) to reflect changed height data.

See also:
  Terrain::updateDerivedData

void Ogre::TerrainGroup::updateGeometry | ( |  | ) |

Performs an update on all terrain geometry.

See also:
  Terrain::updateGeometry

## Member Data Documentation

const uint32 Ogre::TerrainGroup::CHUNK_ID`[static]`

Definition at line 483 of file OgreTerrainGroup.h.

const uint16 Ogre::TerrainGroup::CHUNK_VERSION`[static]`

Definition at line 484 of file OgreTerrainGroup.h.

Terrain::Alignment Ogre::TerrainGroup::mAlignment`[protected]`

Definition at line 488 of file OgreTerrainGroup.h.

Terrain::DefaultGpuBufferAllocator Ogre::TerrainGroup::mBufferAllocator`[protected]`

Definition at line 498 of file OgreTerrainGroup.h.

Terrain::ImportData Ogre::TerrainGroup::mDefaultImportData`[protected]`

Definition at line 491 of file OgreTerrainGroup.h.

String Ogre::TerrainGroup::mFilenameExtension`[protected]`

Definition at line 496 of file OgreTerrainGroup.h.

String Ogre::TerrainGroup::mFilenamePrefix`[protected]`

Definition at line 495 of file OgreTerrainGroup.h.

Vector3 Ogre::TerrainGroup::mOrigin`[protected]`

Definition at line 492 of file OgreTerrainGroup.h.

String Ogre::TerrainGroup::mResourceGroup`[protected]`

Definition at line 497 of file OgreTerrainGroup.h.

SceneManager* Ogre::TerrainGroup::mSceneManager`[protected]`

Definition at line 487 of file OgreTerrainGroup.h.

uint16 Ogre::TerrainGroup::mTerrainSize`[protected]`

Definition at line 489 of file OgreTerrainGroup.h.

TerrainSlotMap Ogre::TerrainGroup::mTerrainSlots`[protected]`

Definition at line 493 of file OgreTerrainGroup.h.

Real Ogre::TerrainGroup::mTerrainWorldSize`[protected]`

Definition at line 490 of file OgreTerrainGroup.h.

uint16 Ogre::TerrainGroup::mWorkQueueChannel`[protected]`

Definition at line 494 of file OgreTerrainGroup.h.

const uint16 Ogre::TerrainGroup::WORKQUEUE_LOAD_REQUEST`[static]`

Definition at line 482 of file OgreTerrainGroup.h.

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

- OgreTerrainGroup.h

Copyright © 2008 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Wed Nov 3 2010 19:25:04