Represents a 3D terrain generated from a heightmap. More...
#include <Terrain.h>
Classes | |
| struct | CellMinMax |
| < Structure to hold min and max Y values for terrain cells. More... | |
Public Member Functions | |
| Terrain (const Terrain &)=delete | |
| Terrain & | operator= (const Terrain &)=delete |
| Terrain (const char *heightmapFile, float sideLength, float maxHeight, float worldZeroAltitude, std::string texture, float uRep, float vRep) | |
| Constructs a Terrain from a heightmap file. | |
| void | ShowCellBelow (const Vect &pos) const |
| Visualizes the cell below a given world position. | |
| Vect | GetHeight (const Vect &pos) |
| Gets the height at a given world position. | |
| Vect | GetHeightAndNormal (const Vect &pos, Vect &outNormal) |
| Gets the height and normal at a given world position. | |
| const CollisionVolumeAABB & | GetCellAABB (int x, int z) const |
| Gets the AABB for a specific terrain cell. | |
| void | GetCoveredCells (const CollisionVolume &vol, int &xMin, int &zMin, int &xMax, int &zMax) const |
| Computes the range of cells covered by a collision volume. | |
| int | GetMaxCellIndex () const |
| Gets the maximum valid cell index (for both X and Z). | |
| float | GetSideLen () const |
| Gets the side length of the terrain. | |
| int | GetImgSize () const |
| Gets the size of the heightmap image (number of pixels per side). | |
| void | EnableWireframe (bool enable) |
| Enables or disables wireframe rendering for the terrain. | |
| void | EnableMinMax (bool enable) |
| Enables or disables MinMax visualization for terrain cells. | |
Private Member Functions | |
| void | Draw () |
| Renders the terrain. | |
| int | VertexIndex (int i, int j) |
| Computes the vertex index for grid coordinates. | |
| int | PixelIndex (int i, int j) |
| Computes the pixel index for grid coordinates. | |
| int | TriIndex (int i, int j) |
| Computes the triangle index for grid coordinates. | |
| float | GetCellX (int j) const |
| float | GetCellZ (int i) const |
| float | GetCellLength () const |
Private Attributes | |
| GraphicsObject_WireframeAutoColor * | pWireframe |
| Wireframe object for terrain visualization. | |
| GraphicsObject_TextureFlat * | pGOTerrain |
| Graphics object for terrain texture. | |
| Model * | pModelTerrain |
| Model object for terrain geometry. | |
| VertexStride_VUN * | pVerts |
| Vertex data for terrain. | |
| TriangleIndex * | tlist |
| Triangle list for terrain. | |
| int | imgSize |
| Size of the heightmap image (number of pixels per side). | |
| float | sideLen |
| Length of one side of the terrain (world units). | |
| CellMinMax * | cellBounds |
| Array of min/max Y values for terrain cells. | |
| CollisionVolumeAABB * | cellAABBs |
| Array of AABBs for terrain cells. | |
| bool | wireframeEnabled |
| Flag to enable/disable wireframe rendering. | |
| bool | minmaxEnabled |
| Flag to enable/disable MinMax visualization. | |
Friends | |
| class | TerrainAttorney |
Represents a 3D terrain generated from a heightmap.
The Terrain class encapsulates the data and operations for a 3D terrain, including geometry generation, collision detection, and rendering. It provides methods to query height and normal at a position, visualize cells, and interact with collidable objects.
| Terrain::Terrain | ( | const char * | heightmapFile, |
| float | sideLength, | ||
| float | maxHeight, | ||
| float | worldZeroAltitude, | ||
| std::string | texture, | ||
| float | uRep, | ||
| float | vRep ) |
Constructs a Terrain from a heightmap file.
| heightmapFile | Path to the heightmap image file. |
| sideLength | Length of one side of the terrain (world units). |
| maxHeight | Maximum height of the terrain (world units). |
| worldZeroAltitude | Altitude in world space corresponding to heightmap zero. |
| texture | Path to the texture file. |
| uRep | U texture repeat factor. |
| vRep | V texture repeat factor. |

| void Terrain::EnableMinMax | ( | bool | enable | ) |
Enables or disables MinMax visualization for terrain cells.
| enable | True to enable MinMax visualization, false to disable. |
| void Terrain::EnableWireframe | ( | bool | enable | ) |
Enables or disables wireframe rendering for the terrain.
| enable | True to enable wireframe, false to disable. |
| const CollisionVolumeAABB & Terrain::GetCellAABB | ( | int | x, |
| int | z ) const |
Gets the AABB for a specific terrain cell.
| x | Cell X index. |
| z | Cell Z index. |
| void Terrain::GetCoveredCells | ( | const CollisionVolume & | vol, |
| int & | xMin, | ||
| int & | zMin, | ||
| int & | xMax, | ||
| int & | zMax ) const |
Computes the range of cells covered by a collision volume.
| vol | Collision volume. |
| xMin | Output minimum X index. |
| zMin | Output minimum Z index. |
| xMax | Output maximum X index. |
| zMax | Output maximum Z index. |


| Vect Terrain::GetHeight | ( | const Vect & | pos | ) |
Gets the height at a given world position.
| pos | World position to query. |

| Vect Terrain::GetHeightAndNormal | ( | const Vect & | pos, |
| Vect & | outNormal ) |
Gets the height and normal at a given world position.
| pos | World position to query. |
| outNormal | Output parameter for the normal vector. |

| int Terrain::GetImgSize | ( | ) | const |
Gets the size of the heightmap image (number of pixels per side).

| int Terrain::GetMaxCellIndex | ( | ) | const |
Gets the maximum valid cell index (for both X and Z).
| float Terrain::GetSideLen | ( | ) | const |
Gets the side length of the terrain.
|
private |
Computes the pixel index for grid coordinates.
| i | Row index. |
| j | Column index. |

| void Terrain::ShowCellBelow | ( | const Vect & | pos | ) | const |
Visualizes the cell below a given world position.
| pos | World position to query. |

|
private |
Computes the triangle index for grid coordinates.
| i | Row index. |
| j | Column index. |

|
private |
Computes the vertex index for grid coordinates.
| i | Row index. |
| j | Column index. |
