37 lines
785 B
C++
37 lines
785 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{ 600 };
|
|
float size{ 200 };
|
|
TerrainMeshGenerator *generator{ nullptr };
|
|
};
|