// 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);
};