mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-04-14 23:58:26 +02:00
Added chunk saving api to TerrainWorldChunkDataManager.
This commit is contained in:
parent
117f6cffd1
commit
c64e9e1131
@ -93,6 +93,25 @@ Vector<Vector2i> TerrainWorldChunkDataManager::_get_available_chunk_list() {
|
||||
return Vector<Vector2i>();
|
||||
}
|
||||
|
||||
// Save
|
||||
void TerrainWorldChunkDataManager::save_chunk(const Ref<TerrainChunk> &p_chunk) {
|
||||
call("_delete_chunk_data_at", p_chunk);
|
||||
}
|
||||
void TerrainWorldChunkDataManager::_save_chunk(const Ref<TerrainChunk> &p_chunk) {
|
||||
}
|
||||
|
||||
void TerrainWorldChunkDataManager::save_all_chunks(TerrainWorld *p_world) {
|
||||
ERR_FAIL_COND(!p_world || !ObjectDB::instance_validate(p_world));
|
||||
|
||||
for (int i = 0; i < p_world->chunk_get_count(); ++i) {
|
||||
save_chunk(p_world->chunk_get_index(i));
|
||||
}
|
||||
}
|
||||
void TerrainWorldChunkDataManager::save_all_chunks_bind(Node *p_world) {
|
||||
save_all_chunks(Object::cast_to<TerrainWorld>(p_world));
|
||||
}
|
||||
|
||||
// Delete
|
||||
void TerrainWorldChunkDataManager::delete_chunk_data_at(const Vector2i &p_chunk_position) {
|
||||
call("_delete_chunk_data_at", p_chunk_position);
|
||||
}
|
||||
@ -142,6 +161,8 @@ void TerrainWorldChunkDataManager::_bind_methods() {
|
||||
PropertyInfo(Variant::VECTOR2I, "chunk_position")));
|
||||
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::POOL_VECTOR2I_ARRAY, "chunks"), "_get_available_chunk_list"));
|
||||
|
||||
BIND_VMETHOD(MethodInfo("_save_chunk", PropertyInfo(Variant::OBJECT, "chunk", PROPERTY_HINT_RESOURCE_TYPE, "TerrainChunk")));
|
||||
|
||||
BIND_VMETHOD(MethodInfo("_delete_chunk_data_at", PropertyInfo(Variant::VECTOR2I, "chunk_position")));
|
||||
BIND_VMETHOD(MethodInfo("_delete_chunk_data", PropertyInfo(Variant::OBJECT, "chunk", PROPERTY_HINT_RESOURCE_TYPE, "TerrainChunk")));
|
||||
BIND_VMETHOD(MethodInfo("_delete_all_chunk_data"));
|
||||
@ -159,6 +180,12 @@ void TerrainWorldChunkDataManager::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_available_chunk_list"), &TerrainWorldChunkDataManager::get_available_chunk_list);
|
||||
ClassDB::bind_method(D_METHOD("_get_available_chunk_list"), &TerrainWorldChunkDataManager::_get_available_chunk_list);
|
||||
|
||||
// Save
|
||||
ClassDB::bind_method(D_METHOD("save_chunk", "chunk"), &TerrainWorldChunkDataManager::save_chunk);
|
||||
ClassDB::bind_method(D_METHOD("_save_chunk", "chunk"), &TerrainWorldChunkDataManager::_save_chunk);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("save_all_chunks", "world"), &TerrainWorldChunkDataManager::save_all_chunks_bind);
|
||||
|
||||
// Delete
|
||||
ClassDB::bind_method(D_METHOD("delete_chunk_data_at", "chunk_position"), &TerrainWorldChunkDataManager::delete_chunk_data_at);
|
||||
ClassDB::bind_method(D_METHOD("_delete_chunk_data_at", "chunk_position"), &TerrainWorldChunkDataManager::_delete_chunk_data_at);
|
||||
|
@ -41,6 +41,7 @@ class TerrainWorldChunkDataManager : public Resource {
|
||||
GDCLASS(TerrainWorldChunkDataManager, Resource);
|
||||
|
||||
public:
|
||||
// Load
|
||||
Ref<TerrainChunk> load_chunk(const Vector2i &p_chunk_position);
|
||||
virtual Ref<TerrainChunk> _load_chunk(const Vector2i &p_chunk_position);
|
||||
|
||||
@ -52,6 +53,13 @@ public:
|
||||
Vector<Vector2i> get_available_chunk_list();
|
||||
virtual Vector<Vector2i> _get_available_chunk_list();
|
||||
|
||||
// Save
|
||||
void save_chunk(const Ref<TerrainChunk> &p_chunk);
|
||||
virtual void _save_chunk(const Ref<TerrainChunk> &p_chunk);
|
||||
|
||||
void save_all_chunks(TerrainWorld *p_world);
|
||||
void save_all_chunks_bind(Node *p_world);
|
||||
|
||||
// Delete
|
||||
void delete_chunk_data_at(const Vector2i &p_chunk_position);
|
||||
virtual void _delete_chunk_data_at(const Vector2i &p_chunk_position);
|
||||
|
Loading…
Reference in New Issue
Block a user