terrain-editor/modules/terrain_editor/terrain_chunk.h

37 lines
786 B
C++

#pragma once
#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:
Node *collisions{ nullptr };
size_t collisions_lod{ 0 };
Vector<MeshStatus> meshes{};
int lod0_detail{ 200 };
float lod_end_distance{ 1000 };
float size{ 200 };
TerrainMeshGenerator *generator{ nullptr };
};