From c16c5d35f45b8a7da9e8820b65024a1dd4815cc8 Mon Sep 17 00:00:00 2001 From: Relintai Date: Sat, 12 Apr 2025 22:53:18 +0200 Subject: [PATCH] Bind is_priority_generation bool in TerrainWorld. Also set it to false in the constructor, but set it to true when eneteeing tree if the world already has chunks loaded. --- modules/terraman/world/terrain_world.cpp | 17 ++++++++++++++++- modules/terraman/world/terrain_world.h | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/terraman/world/terrain_world.cpp b/modules/terraman/world/terrain_world.cpp index c5f7b529b..2a62980c9 100644 --- a/modules/terraman/world/terrain_world.cpp +++ b/modules/terraman/world/terrain_world.cpp @@ -136,6 +136,13 @@ void TerrainWorld::set_max_concurrent_generations(const int value) { _max_concurrent_generations = value; } +bool TerrainWorld::get_is_priority_generation() const { + return _is_priority_generation; +} +void TerrainWorld::set_is_priority_generation(const bool value) { + _is_priority_generation = value; +} + Ref TerrainWorld::get_library() { return _library; } @@ -1464,7 +1471,7 @@ TerrainWorld::TerrainWorld() { _active = true; _editable = false; - _is_priority_generation = true; + _is_priority_generation = false; _max_concurrent_generations = 3; _chunk_size_x = 16; @@ -1557,6 +1564,10 @@ void TerrainWorld::_notification(int p_what) { } #endif + if (_chunks_vector.size() != 0) { + _is_priority_generation = true; + } + set_player_bind(get_node_or_null(get_player_path())); set_process_internal(true); @@ -1766,6 +1777,10 @@ void TerrainWorld::_bind_methods() { ClassDB::bind_method(D_METHOD("set_max_concurrent_generations", "height"), &TerrainWorld::set_max_concurrent_generations); ADD_PROPERTY(PropertyInfo(Variant::INT, "max_concurrent_generations"), "set_max_concurrent_generations", "get_max_concurrent_generations"); + ClassDB::bind_method(D_METHOD("get_is_priority_generation"), &TerrainWorld::get_is_priority_generation); + ClassDB::bind_method(D_METHOD("set_is_priority_generation", "height"), &TerrainWorld::set_is_priority_generation); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "is_priority_generation", PROPERTY_HINT_NONE, "", 0), "set_is_priority_generation", "get_is_priority_generation"); + ClassDB::bind_method(D_METHOD("get_current_seed"), &TerrainWorld::get_current_seed); ClassDB::bind_method(D_METHOD("set_current_seed", "value"), &TerrainWorld::set_current_seed); ADD_PROPERTY(PropertyInfo(Variant::INT, "current_seed"), "set_current_seed", "get_current_seed"); diff --git a/modules/terraman/world/terrain_world.h b/modules/terraman/world/terrain_world.h index 5e53ae8d9..fa1455c0f 100644 --- a/modules/terraman/world/terrain_world.h +++ b/modules/terraman/world/terrain_world.h @@ -103,6 +103,9 @@ public: int get_max_concurrent_generations(); void set_max_concurrent_generations(const int value); + bool get_is_priority_generation() const; + void set_is_priority_generation(const bool value); + Ref get_library(); void set_library(const Ref &library);