mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-02-15 20:24:25 +01:00
Only generate chunks once.
This commit is contained in:
parent
23614770f1
commit
b0177a2c3a
@ -85,6 +85,13 @@ void TerrainChunk::set_is_immediate_build(const bool value) {
|
||||
_is_immediate_build = value;
|
||||
}
|
||||
|
||||
bool TerrainChunk::get_is_terrain_generated() const {
|
||||
return _is_terrain_generated;
|
||||
}
|
||||
void TerrainChunk::set_is_terrain_generated(const bool value) {
|
||||
_is_terrain_generated = value;
|
||||
}
|
||||
|
||||
bool TerrainChunk::is_build_aborted() const {
|
||||
return _abort_build;
|
||||
}
|
||||
@ -1156,6 +1163,7 @@ TerrainChunk::TerrainChunk() {
|
||||
|
||||
_is_generating = false;
|
||||
_is_immediate_build = false;
|
||||
_is_terrain_generated = false;
|
||||
_dirty = false;
|
||||
_state = TERRAIN_CHUNK_STATE_OK;
|
||||
|
||||
@ -1436,6 +1444,10 @@ void TerrainChunk::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_is_immediate_build", "value"), &TerrainChunk::set_is_immediate_build);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "is_immediate_build", PROPERTY_HINT_NONE, "", 0), "set_is_immediate_build", "get_is_immediate_build");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_is_terrain_generated"), &TerrainChunk::get_is_terrain_generated);
|
||||
ClassDB::bind_method(D_METHOD("set_is_terrain_generated", "value"), &TerrainChunk::set_is_terrain_generated);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "is_terrain_generated"), "set_is_terrain_generated", "get_is_terrain_generated");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("is_build_aborted"), &TerrainChunk::is_build_aborted);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_dirty"), &TerrainChunk::get_dirty);
|
||||
|
@ -92,6 +92,9 @@ public:
|
||||
bool get_is_immediate_build() const;
|
||||
void set_is_immediate_build(const bool value);
|
||||
|
||||
bool get_is_terrain_generated() const;
|
||||
void set_is_terrain_generated(const bool value);
|
||||
|
||||
bool is_build_aborted() const;
|
||||
|
||||
bool is_in_tree() const;
|
||||
@ -369,6 +372,7 @@ protected:
|
||||
|
||||
bool _is_generating;
|
||||
bool _is_immediate_build;
|
||||
bool _is_terrain_generated;
|
||||
bool _dirty;
|
||||
int _state;
|
||||
|
||||
|
@ -457,11 +457,14 @@ Ref<TerrainChunk> TerrainWorld::_create_chunk(const int x, const int z, Ref<Terr
|
||||
void TerrainWorld::chunk_generate(Ref<TerrainChunk> chunk) {
|
||||
ERR_FAIL_COND(!chunk.is_valid());
|
||||
|
||||
if (has_method("_prepare_chunk_for_generation")) {
|
||||
call("_prepare_chunk_for_generation", chunk);
|
||||
}
|
||||
if (!chunk->get_is_terrain_generated()) {
|
||||
if (has_method("_prepare_chunk_for_generation")) {
|
||||
call("_prepare_chunk_for_generation", chunk);
|
||||
}
|
||||
|
||||
call("_generate_chunk", chunk);
|
||||
call("_generate_chunk", chunk);
|
||||
chunk->set_is_terrain_generated(true);
|
||||
}
|
||||
|
||||
chunk->build();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user