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:
Inheritance graph
[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::ImportDatagetDefaultImportSettings ()
 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 Vector3getOrigin () 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.
virtual void setTerrainWorldSize (Real newWorldSize)
 Set the world size of terrain.
virtual uint16 getTerrainSize () const
 Retrieve the size of each terrain instance in number of vertices down one side.
virtual void setTerrainSize (uint16 newTerrainSize)
 Set the size of each terrain instance in number of vertices down one side.
virtual SceneManagergetSceneManager () 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 StringgetFilenamePrefix () const
const StringgetFilenameExtension () const
void setResourceGroup (const String &grp)
 Set the resource group in which files will be located.
const StringgetResourceGroup () 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 TerrainSlotDefinitiongetTerrainDefinition (long x, long y) const
 Get the definition of a slot in the terrain.
virtual TerraingetTerrain (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::ResponsehandleRequest (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.
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.
TerrainSlotgetTerrainSlot (long x, long y, bool createIfMissing)
 Retrieve a slot, potentially allocate one.
TerrainSlotgetTerrainSlot (long x, long y) const
void connectNeighbour (TerrainSlot *slot, long offsetx, long offsety)
void loadTerrainImpl (TerrainSlot *slot, bool synchronous)

Protected Attributes

SceneManagermSceneManager
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

Definition at line 456 of file OgreTerrainGroup.h.

Definition at line 455 of file OgreTerrainGroup.h.

Definition at line 414 of file OgreTerrainGroup.h.

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

Definition at line 454 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 
) [virtual]
bool Ogre::TerrainGroup::canHandleResponse ( const WorkQueue::Response res,
const WorkQueue srcQ 
) [virtual]
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 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,
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 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,
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,
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
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).
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 154 of file OgreTerrainGroup.h.

const String& Ogre::TerrainGroup::getFilenamePrefix (  )  const
See also:
setFilenameConvention

Definition at line 152 of file OgreTerrainGroup.h.

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
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
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 159 of file OgreTerrainGroup.h.

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

Retrieve the SceneManager being used for this group.

Definition at line 135 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.

virtual uint16 Ogre::TerrainGroup::getTerrainSize (  )  const [virtual]

Retrieve the size of each terrain instance in number of vertices down one side.

Definition at line 126 of file OgreTerrainGroup.h.

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

Retrieve a slot, potentially allocate one.

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.

Definition at line 118 of file OgreTerrainGroup.h.

WorkQueue::Response* Ogre::TerrainGroup::handleRequest ( const WorkQueue::Request req,
const WorkQueue srcQ 
) [virtual]
void Ogre::TerrainGroup::handleResponse ( const WorkQueue::Response res,
const WorkQueue srcQ 
) [virtual]
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,
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,
void *   
) [inherited]

Definition at line 101 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,
const char *  ,
int  ,
const char *   
) [inherited]

Definition at line 118 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 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 ( StreamSerialiser stream  ) 

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

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

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

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  ) 
void Ogre::TerrainGroup::setFilenamePrefix ( const String prefix  ) 
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 157 of file OgreTerrainGroup.h.

virtual void Ogre::TerrainGroup::setTerrainSize ( uint16  newTerrainSize  )  [virtual]

Set the size of each terrain instance in number of vertices down one side.

Note:
This will cause the height data in each nested terrain to be bilinear filtered to fit the new data size.
Parameters:
newTerrainSize the new map size of each terrain instance
virtual void Ogre::TerrainGroup::setTerrainWorldSize ( Real  newWorldSize  )  [virtual]

Set the world size of terrain.

Note:
This will cause the terrains to change position due to their size change
Parameters:
newWorldSize the new world size of each terrain instance
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

Definition at line 496 of file OgreTerrainGroup.h.

Definition at line 497 of file OgreTerrainGroup.h.

Definition at line 501 of file OgreTerrainGroup.h.

Definition at line 511 of file OgreTerrainGroup.h.

Definition at line 504 of file OgreTerrainGroup.h.

Definition at line 509 of file OgreTerrainGroup.h.

Definition at line 508 of file OgreTerrainGroup.h.

Definition at line 505 of file OgreTerrainGroup.h.

Definition at line 510 of file OgreTerrainGroup.h.

Definition at line 500 of file OgreTerrainGroup.h.

Definition at line 502 of file OgreTerrainGroup.h.

Definition at line 506 of file OgreTerrainGroup.h.

Definition at line 503 of file OgreTerrainGroup.h.

Definition at line 507 of file OgreTerrainGroup.h.

Definition at line 495 of file OgreTerrainGroup.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 Fri May 25 23:42:05 2012