StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
TerrainRenderer.hpp
1#pragma once
2#ifdef StevEngine_RENDERER_GL
3#include "main/Component.hpp"
4#include "utilities/Terrain.hpp"
5
6#include "visuals/renderer/RenderComponent.hpp"
7
8#define TERRAIN_RENDERER_TYPE "TerrainRenderer"
9
10namespace StevEngine::Visuals {
18 friend class StevEngine::GameObject;
19
20 public:
27 TerrainRenderer(const Utilities::TerrainData& data, Material material = Material(), bool smooth = true);
28
34
39 std::string GetType() const { return TERRAIN_RENDERER_TYPE; }
40
46 Utilities::Stream Export(Utilities::StreamType type) const;
47
48 private:
49 const Utilities::TerrainData data;
50 const bool smooth;
51 };
52
54 inline bool terrainRenderer = CreateComponents::RegisterComponentType<TerrainRenderer>(TERRAIN_RENDERER_TYPE);
55}
56#endif
static bool RegisterComponentType(std::string type)
Register a component type for creation.
Definition Component.hpp:133
Core game object class.
Definition GameObject.hpp:35
Base component for renderable objects.
Definition RenderComponent.hpp:19
Stream for serialization of data.
Definition Stream.hpp:20
Material properties for rendering.
Definition Material.hpp:14
std::string GetType() const
Get component type.
Definition TerrainRenderer.hpp:39
TerrainRenderer(const Utilities::TerrainData &data, Material material=Material(), bool smooth=true)
Create terrain renderer.
Definition TerrainRenderer.cpp:96
Utilities::Stream Export(Utilities::StreamType type) const
Serialize component to a stream.
Definition TerrainRenderer.cpp:105
Heightmap terrain data storage.
Definition Terrain.hpp:11