Class TerrainPersistence
- Namespace
- GridPlacement.GDScript
- Assembly
- MoonBark.GridPlacement.GDScript.dll
Utility for saving and loading painted terrain cells on TileMapLayer nodes.\n\nTerrain paint data (set via [method TileMapLayer.set_cells_terrain_connect]) is ephemeral — it lives only on the live TileMapLayer and is lost on scene reload. This class provides [method save_terrain] and [method load_terrain] to serialize/deserialize terrain cell data so painted terrain survives across sessions.\n\nEach cell record captures (cell, terrain_set, terrain) — the three values needed to restore via [method TileMapLayer.set_cells_terrain_connect]. The TileSet is assumed to be the same resource used at paint time; terrain indices are scoped to that TileSet.\n\nUsage: # Save TerrainPersistence.save_terrain(tile_map, "user://terrain_save.res") # Load TerrainPersistence.load_terrain(tile_map, "user://terrain_save.res")
class TerrainPersistence extends RefCounted
Properties
save_data
var save_data = loaded as TerrainSaveData
tile_data
var tile_data = map.get_cell_tile_data(cell)
terrain_set
var terrain_set: int = tile_data.terrain_set
terrain
var terrain: int = tile_data.terrain
result
var result = ResourceSaver.save(save_data, p_path)
loaded
var loaded: Resource = ResourceLoader.load(p_path, "", ResourceLoader.CACHE_MODE_REPLACE)
save_data
var save_data = loaded as TerrainSaveData
save_data
var save_data = loaded as TerrainSaveData
layer_path
var layer_path = map.get_path()
tile_data
var tile_data = map.get_cell_tile_data(cell)
terrain_set
var terrain_set: int = tile_data.terrain_set
result
var result = ResourceSaver.save(save_data, p_path)
loaded
var loaded: Resource = ResourceLoader.load(p_path, "", ResourceLoader.CACHE_MODE_REPLACE)
save_data
var save_data = loaded as TerrainSaveData
map_by_path
var map_by_path: Dictionary = {}
cells_by_layer
var cells_by_layer: Dictionary = {}
unlayered_cells
var unlayered_cells: Array[Dictionary] = []
layer
var layer: String = entry.get("layer", "")
target_map
var target_map: TileMapLayer = map_by_path.get(layer_path, null)
fallback_map
var fallback_map: TileMapLayer = p_targeting_state.maps[0]
groups
var groups: Dictionary = {}
t_set
var t_set: int = entry.get("terrain_set", -1)
t
var t: int = entry.get("terrain", -1)
cell
var cell = Vector2i(entry.get("x", 0), entry.get("y", 0))
key
var key = "%d_%d" % [t_set, t]
group
var group: Dictionary = p_groups[key]
Methods
save_terrain
static func save_terrain(p_tile_map: TileMapLayer, p_path: String) -> Error:
Parameters
p_tile_mapp_path
Returns
load_terrain
static func load_terrain(p_tile_map: TileMapLayer, p_path: String) -> Error:
Parameters
p_tile_mapp_path
Returns
save_all_terrain
static func save_all_terrain(p_targeting_state: GridTargetingState, p_path: String) -> Error:
Parameters
p_targeting_statep_path
Returns
load_all_terrain
static func load_all_terrain(p_targeting_state: GridTargetingState, p_path: String) -> Error:
Parameters
p_targeting_statep_path