|
@@ -2467,9 +2467,42 @@ Vector<Point2> TileSet::_get_half_offset_side_terrain_peering_bit_polygon(Vector
|
|
|
}
|
|
|
|
|
|
void TileSet::reset_state() {
|
|
|
+ // Rendering
|
|
|
occlusion_layers.clear();
|
|
|
+ tile_lines_mesh.instantiate();
|
|
|
+ tile_filled_mesh.instantiate();
|
|
|
+ tile_meshes_dirty = true;
|
|
|
+
|
|
|
+ // Physics
|
|
|
physics_layers.clear();
|
|
|
+
|
|
|
+ // Terrains
|
|
|
+ terrain_sets.clear();
|
|
|
+ terrain_meshes.clear();
|
|
|
+ terrain_peering_bits_meshes.clear();
|
|
|
+ per_terrain_pattern_tiles.clear();
|
|
|
+ terrains_cache_dirty = true;
|
|
|
+
|
|
|
+ // Navigation
|
|
|
+ navigation_layers.clear();
|
|
|
+
|
|
|
custom_data_layers.clear();
|
|
|
+ custom_data_layers_by_name.clear();
|
|
|
+
|
|
|
+ // Proxies
|
|
|
+ source_level_proxies.clear();
|
|
|
+ coords_level_proxies.clear();
|
|
|
+ alternative_level_proxies.clear();
|
|
|
+
|
|
|
+#ifndef DISABLE_DEPRECATED
|
|
|
+ for (const KeyValue<int, CompatibilityTileData *> &E : compatibility_data) {
|
|
|
+ memdelete(E.value);
|
|
|
+ }
|
|
|
+ compatibility_data.clear();
|
|
|
+#endif // DISABLE_DEPRECATED
|
|
|
+ while (!source_ids.is_empty()) {
|
|
|
+ remove_source(source_ids[0]);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
const Vector2i TileSetSource::INVALID_ATLAS_COORDS = Vector2i(-1, -1);
|
|
@@ -3457,6 +3490,10 @@ void TileSetSource::set_tile_set(const TileSet *p_tile_set) {
|
|
|
tile_set = p_tile_set;
|
|
|
}
|
|
|
|
|
|
+void TileSetSource::reset_state() {
|
|
|
+ tile_set = nullptr;
|
|
|
+};
|
|
|
+
|
|
|
void TileSetSource::_bind_methods() {
|
|
|
// Base tiles
|
|
|
ClassDB::bind_method(D_METHOD("get_tiles_count"), &TileSetSource::get_tiles_count);
|
|
@@ -3640,12 +3677,17 @@ void TileSetAtlasSource::remove_custom_data_layer(int p_index) {
|
|
|
}
|
|
|
|
|
|
void TileSetAtlasSource::reset_state() {
|
|
|
- // Reset all TileData.
|
|
|
+ tile_set = nullptr;
|
|
|
+
|
|
|
for (KeyValue<Vector2i, TileAlternativesData> &E_tile : tiles) {
|
|
|
- for (KeyValue<int, TileData *> &E_alternative : E_tile.value.alternatives) {
|
|
|
- E_alternative.value->reset_state();
|
|
|
+ for (const KeyValue<int, TileData *> &E_tile_data : E_tile.value.alternatives) {
|
|
|
+ memdelete(E_tile_data.value);
|
|
|
}
|
|
|
}
|
|
|
+ _coords_mapping_cache.clear();
|
|
|
+ tiles.clear();
|
|
|
+ tiles_ids.clear();
|
|
|
+ _queue_update_padded_texture();
|
|
|
}
|
|
|
|
|
|
void TileSetAtlasSource::set_texture(Ref<Texture2D> p_texture) {
|
|
@@ -4975,13 +5017,6 @@ void TileData::remove_custom_data_layer(int p_index) {
|
|
|
custom_data.remove_at(p_index);
|
|
|
}
|
|
|
|
|
|
-void TileData::reset_state() {
|
|
|
- occluders.clear();
|
|
|
- physics.clear();
|
|
|
- navigation.clear();
|
|
|
- custom_data.clear();
|
|
|
-}
|
|
|
-
|
|
|
void TileData::set_allow_transform(bool p_allow_transform) {
|
|
|
allow_transform = p_allow_transform;
|
|
|
}
|