terrain-editor/modules/terrain_editor/terrain_chunk.h

36 lines
757 B
C++

#pragma once
#include "core/templates/pair.h"
#include "core/templates/vector.h"
#include "scene/3d/mesh_instance_3d.h"
class TerrainMeshGenerator;
class TerrainChunk : public MeshInstance3D {
GDCLASS(TerrainChunk, MeshInstance3D);
struct MeshStatus {
Ref<ArrayMesh> mesh;
bool dirty;
};
static void _bind_methods();
void ready();
void on_terrain_changed();
void lod_generated(size_t lod);
void process_lod();
protected:
void _notification(int what);
public:
void set_size(float size);
float get_size() const;
void set_lod0_detail(int detail);
int get_lod0_detail() const;
private:
Vector<MeshStatus> meshes{};
TerrainMeshGenerator *generator{ nullptr };
int lod0_detail{ 200 };
float lod4_distance{ 1500 };
float size{ 200 };
};