|
@@ -184,26 +184,34 @@ void TilesEditorPlugin::_notification(int p_what) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void TilesEditorPlugin::make_visible(bool p_visible) {
|
|
void TilesEditorPlugin::make_visible(bool p_visible) {
|
|
|
- is_visible = p_visible;
|
|
|
|
|
-
|
|
|
|
|
- if (is_visible) {
|
|
|
|
|
|
|
+ if (p_visible || is_tile_map_selected()) {
|
|
|
// Disable and hide invalid editors.
|
|
// Disable and hide invalid editors.
|
|
|
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
|
|
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
|
|
|
tileset_editor_button->set_visible(tile_set.is_valid());
|
|
tileset_editor_button->set_visible(tile_set.is_valid());
|
|
|
tilemap_editor_button->set_visible(tile_map);
|
|
tilemap_editor_button->set_visible(tile_map);
|
|
|
- if (tile_map && !is_editing_tile_set) {
|
|
|
|
|
|
|
+ if (tile_map && (!is_editing_tile_set || !p_visible)) {
|
|
|
EditorNode::get_singleton()->make_bottom_panel_item_visible(tilemap_editor);
|
|
EditorNode::get_singleton()->make_bottom_panel_item_visible(tilemap_editor);
|
|
|
} else {
|
|
} else {
|
|
|
EditorNode::get_singleton()->make_bottom_panel_item_visible(tileset_editor);
|
|
EditorNode::get_singleton()->make_bottom_panel_item_visible(tileset_editor);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ is_visible = true;
|
|
|
} else {
|
|
} else {
|
|
|
tileset_editor_button->hide();
|
|
tileset_editor_button->hide();
|
|
|
tilemap_editor_button->hide();
|
|
tilemap_editor_button->hide();
|
|
|
EditorNode::get_singleton()->hide_bottom_panel();
|
|
EditorNode::get_singleton()->hide_bottom_panel();
|
|
|
|
|
+ is_visible = false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+bool TilesEditorPlugin::is_tile_map_selected() {
|
|
|
|
|
+ TypedArray<Node> selection = get_editor_interface()->get_selection()->get_selected_nodes();
|
|
|
|
|
+ if (selection.size() == 1 && Object::cast_to<TileMap>(selection[0])) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return false;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void TilesEditorPlugin::queue_pattern_preview(Ref<TileSet> p_tile_set, Ref<TileMapPattern> p_pattern, Callable p_callback) {
|
|
void TilesEditorPlugin::queue_pattern_preview(Ref<TileSet> p_tile_set, Ref<TileMapPattern> p_pattern, Callable p_callback) {
|
|
|
ERR_FAIL_COND(!p_tile_set.is_valid());
|
|
ERR_FAIL_COND(!p_tile_set.is_valid());
|
|
|
ERR_FAIL_COND(!p_pattern.is_valid());
|
|
ERR_FAIL_COND(!p_pattern.is_valid());
|
|
@@ -361,19 +369,24 @@ void TilesEditorPlugin::edit(Object *p_object) {
|
|
|
} else if (p_object->is_class("TileSet")) {
|
|
} else if (p_object->is_class("TileSet")) {
|
|
|
tile_set = Ref<TileSet>(p_object);
|
|
tile_set = Ref<TileSet>(p_object);
|
|
|
if (tile_map) {
|
|
if (tile_map) {
|
|
|
- if (tile_map->get_tileset() != tile_set || !tile_map->is_inside_tree()) {
|
|
|
|
|
|
|
+ if (tile_map->get_tileset() != tile_set || !tile_map->is_inside_tree() || !is_tile_map_selected()) {
|
|
|
tile_map = nullptr;
|
|
tile_map = nullptr;
|
|
|
tile_map_id = ObjectID();
|
|
tile_map_id = ObjectID();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
is_editing_tile_set = true;
|
|
is_editing_tile_set = true;
|
|
|
- EditorNode::get_singleton()->make_bottom_panel_item_visible(tileset_editor);
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Update the editors.
|
|
// Update the editors.
|
|
|
_update_editors();
|
|
_update_editors();
|
|
|
|
|
|
|
|
|
|
+ // If the tileset is being edited, the visibility function must be called
|
|
|
|
|
+ // here after _update_editors has been called.
|
|
|
|
|
+ if (is_editing_tile_set) {
|
|
|
|
|
+ EditorNode::get_singleton()->make_bottom_panel_item_visible(tileset_editor);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// Add change listener.
|
|
// Add change listener.
|
|
|
if (tile_map) {
|
|
if (tile_map) {
|
|
|
tile_map->connect("changed", callable_mp(this, &TilesEditorPlugin::_tile_map_changed));
|
|
tile_map->connect("changed", callable_mp(this, &TilesEditorPlugin::_tile_map_changed));
|