summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-08-14 15:31:19 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-08-14 15:31:19 +0200
commitc78be12f429cfaab5fd1bfd35dab4c37a4f528dc (patch)
treea5b77aa9ce517618d573beb338bd5fd8a144b92f
parentbbefba02647b5ee3e9ed3d2dec51f1679f0ebdff (diff)
parent356fc728a491fef3b791bbe3b7bccbde214c028f (diff)
downloadredot-engine-c78be12f429cfaab5fd1bfd35dab4c37a4f528dc.tar.gz
Merge pull request #80610 from lawnjelly/fix_tilemap_editor_plugin_crash2
Fix `TileMapEditorPlugin` crash by storing tilemap ID instead of pointer
-rw-r--r--editor/plugins/tiles/tiles_editor_plugin.cpp7
-rw-r--r--editor/plugins/tiles/tiles_editor_plugin.h2
2 files changed, 8 insertions, 1 deletions
diff --git a/editor/plugins/tiles/tiles_editor_plugin.cpp b/editor/plugins/tiles/tiles_editor_plugin.cpp
index 121b70a74f..e432704702 100644
--- a/editor/plugins/tiles/tiles_editor_plugin.cpp
+++ b/editor/plugins/tiles/tiles_editor_plugin.cpp
@@ -325,6 +325,7 @@ void TileMapEditorPlugin::_tile_map_changed() {
}
void TileMapEditorPlugin::_update_tile_map() {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (tile_map) {
Ref<TileSet> tile_set = tile_map->get_tileset();
if (tile_set.is_valid() && edited_tileset != tile_set->get_instance_id()) {
@@ -347,11 +348,17 @@ void TileMapEditorPlugin::_notification(int p_notification) {
}
void TileMapEditorPlugin::edit(Object *p_object) {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (tile_map) {
tile_map->disconnect("changed", callable_mp(this, &TileMapEditorPlugin::_tile_map_changed));
}
tile_map = Object::cast_to<TileMap>(p_object);
+ if (tile_map) {
+ tile_map_id = tile_map->get_instance_id();
+ } else {
+ tile_map_id = ObjectID();
+ }
editor->edit(tile_map);
if (tile_map) {
diff --git a/editor/plugins/tiles/tiles_editor_plugin.h b/editor/plugins/tiles/tiles_editor_plugin.h
index f8e944af81..81cb48eb00 100644
--- a/editor/plugins/tiles/tiles_editor_plugin.h
+++ b/editor/plugins/tiles/tiles_editor_plugin.h
@@ -115,7 +115,7 @@ class TileMapEditorPlugin : public EditorPlugin {
TileMapEditor *editor = nullptr;
Button *button = nullptr;
- TileMap *tile_map = nullptr;
+ ObjectID tile_map_id;
bool tile_map_changed_needs_update = false;
ObjectID edited_tileset;