blob: d3904c15b26fc234a555d10c37bc6d55efc6ed04 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#pragma once
#include "Runtime/BaseClasses/BaseObject.h"
#include "Runtime/BaseClasses/GameObject.h"
#include "Runtime/Interfaces/ITerrainManager.h"
#include <list>
class TerrainData;
class HeightMap;
class TerrainManager : public ITerrainManager
{
public:
TerrainManager();
virtual void CullAllTerrains (int cullingMask);
virtual void SetLightmapIndexOnAllTerrains (int lightmapIndex);
virtual void AddTerrainAndSetActive (TerrainInstance* terrain);
virtual void RemoveTerrain (TerrainInstance* terrain);
TerrainInstance* GetActiveTerrain() const { return m_ActiveTerrain; }
const TerrainList& GetActiveTerrains() const { return m_ActiveTerrains; }
void UnloadTerrainsFromGfxDevice ();
void ReloadTerrainsToGfxDevice ();
// TODO Move these to heightmap, does not really belong here
#if ENABLE_PHYSICS
virtual NxHeightField* Heightmap_GetNxHeightField(Heightmap& heightmap);
#endif
virtual int Heightmap_GetMaterialIndex(Heightmap& heightmap);
virtual Vector3f Heightmap_GetSize(Heightmap& heightmap);
// TODO this should move to TerrainData
/// Extracts the height on the heightmap from a TerrainData
virtual bool GetInterpolatedHeight (const Object* terrainData, const Vector3f& terrainPosition, const Vector3f& position, float& outputHeight);
virtual void CollectTreeRenderers(dynamic_array<SceneNode>& sceneNodes, dynamic_array<AABB>& boundingBoxes) const;
static void InitializeClass ();
static void CleanupClass ();
PPtr<GameObject> CreateTerrainGameObject (const TerrainData& assignTerrain);
private:
TerrainList m_TempCulledTerrains;
TerrainList m_ActiveTerrains;
TerrainInstance* m_ActiveTerrain;
};
|