#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 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 meshes{}; TerrainMeshGenerator *generator{ nullptr }; int lod0_detail{ 200 }; float lod4_distance{ 1500 }; float size{ 200 }; };