29 #ifndef __Ogre_TerrainGroup_H__
30 #define __Ogre_TerrainGroup_H__
81 Real terrainWorldSize);
111 virtual void setOrigin(
const Vector3& pos);
128 virtual void setTerrainWorldSize(
Real newWorldSize);
137 virtual void setTerrainSize(
uint16 newTerrainSize);
151 void setFilenameConvention(
const String& prefix,
const String& extension);
153 void setFilenamePrefix(
const String& prefix);
155 void setFilenameExtension(
const String& extension);
178 virtual void defineTerrain(
long x,
long y);
190 virtual void defineTerrain(
long x,
long y,
float constantHeight);
242 virtual void defineTerrain(
long x,
long y,
const String& filename);
249 virtual void loadAllTerrains(
bool synchronous =
false);
257 virtual void loadTerrain(
long x,
long y,
bool synchronous =
false);
271 virtual void unloadTerrain(
long x,
long y);
279 virtual void removeTerrain(
long x,
long y);
283 void removeAllTerrains();
299 void saveAllTerrains(
bool onlyIfModified,
bool replaceManualFilenames =
true);
314 void useImportData();
318 void freeImportData();
345 virtual TerrainSlotDefinition* getTerrainDefinition(
long x,
long y)
const;
352 virtual Terrain* getTerrain(
long x,
long y)
const;
358 void freeTemporaryResources();
363 void update(
bool synchronous =
false);
368 void updateGeometry();
373 void updateDerivedData(
bool synchronous =
false,
uint8 typeMask = 0xFF);
387 : hit(_hit), terrain(_terrain), position(_pos) {}
406 float getHeightAtWorldPosition(
const Vector3& pos,
Terrain** ppTerrain = 0);
417 RayResult rayIntersects(
const Ray& ray,
Real distanceLimit = 0)
const;
445 void convertWorldPositionToTerrainSlot(
const Vector3& pos,
long *x,
long *y)
const;
451 void convertTerrainSlotToWorldPosition(
long x,
long y,
Vector3* pos)
const;
456 bool isDerivedDataUpdateInProgress()
const;
478 uint32 packIndex(
long x,
long y)
const;
481 void unpackIndex(
uint32 key,
long *x,
long *y);
484 String generateFilename(
long x,
long y)
const;
488 void saveGroupDefinition(
const String& filename);
494 void loadGroupDefinition(
const String& filename);
505 void increaseLodLevel(
long x,
long y,
bool synchronous =
false);
507 void decreaseLodLevel(
long x,
long y);
511 void autoUpdateLod(
long x,
long y,
bool synchronous,
const Any &data);
512 void autoUpdateLodAll(
bool synchronous,
const Any &data);
530 Vector3 getTerrainSlotPosition(
long x,
long y);
532 TerrainSlot* getTerrainSlot(
long x,
long y,
bool createIfMissing);
534 void connectNeighbour(
TerrainSlot* slot,
long offsetx,
long offsety);
536 void loadTerrainImpl(
TerrainSlot* slot,
bool synchronous);