// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #pragma once #include "Engine/Core/Types/BaseTypes.h" struct DrawCall; class GPUBuffer; class MaterialBase; /// /// Terrain service used to unify and provide data sharing for various terrain instances and related logic. /// class TerrainManager { public: /// /// Gets the default terrain material to be used for rendering. /// /// The default material for terrain. static MaterialBase* GetDefaultTerrainMaterial(); /// /// Gets the chunk geometry buffers for the given chunk size (after LOD reduction). /// /// The draw call to setup (sets the geometry data such as vertex and index buffers to use). /// The chunk size (on chunk edge) for the LOD0 chunk. Must be equal or higher than 3. /// The chunk LOD. /// True if failed to get it, otherwise false. static bool GetChunkGeometry(DrawCall& drawCall, int32 chunkSize, int32 lodIndex); };