Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion editor/docks/scene_tree_dock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5072,7 +5072,7 @@ SceneTreeDock::SceneTreeDock(Node *p_scene_root, EditorSelection *p_editor_selec
tree_menu->connect(SceneStringName(id_pressed), callable_mp(this, &SceneTreeDock::_tool_selected).bind(false));

button_panel = memnew(PanelContainer);
button_panel->set_theme_type_variation("PanelContainerTabbarInner");
button_panel->set_theme_type_variation("PanelContainerButtonGroup");
main_vbox->add_child(button_panel);

HBoxContainer *button_hb = memnew(HBoxContainer);
Expand Down
1 change: 1 addition & 0 deletions editor/icons/EmbedDisabled.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions editor/icons/EmbedFloating.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions editor/icons/EmbedFused.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion editor/icons/Suspend.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
259 changes: 164 additions & 95 deletions editor/run/game_view_plugin.cpp

Large diffs are not rendered by default.

27 changes: 18 additions & 9 deletions editor/run/game_view_plugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include "editor/plugins/editor_plugin.h"
#include "scene/debugger/runtime_node_select.h"
#include "scene/gui/box_container.h"
#include "scene/gui/menu_button.h"

class EmbeddedProcessBase;
class VSeparator;
Expand Down Expand Up @@ -124,10 +125,9 @@ class GameView : public VBoxContainer {
CAMERA_RESET_3D,
CAMERA_MODE_INGAME,
CAMERA_MODE_EDITORS,
SELECTION_HIDE,
SELECTION_AVOID_LOCKED,
SELECTION_PREFER_GROUP,
WINDOW_RUN_GAME_EMBEDDED,
WINDOW_MAKE_FLOATING_ON_PLAY,
WINDOW_SIZE_MODE_FIXED,
WINDOW_SIZE_MODE_KEEP_ASPECT,
WINDOW_SIZE_MODE_STRETCH,
Expand All @@ -153,6 +153,13 @@ class GameView : public VBoxContainer {
EMBED_NOT_AVAILABLE_HEADLESS,
};

enum EmbedMode {
EMBED_TYPE_DISABLED,
EMBED_TYPE_FLOATING,
EMBED_TYPE_EDITOR,
EMBED_TYPE_MAX,
};

inline static GameView *singleton = nullptr;

Ref<GameViewDebugger> debugger;
Expand All @@ -174,6 +181,7 @@ class GameView : public VBoxContainer {

bool debug_mute_audio = false;

bool selection_hide = true;
bool selection_avoid_locked = false;
bool selection_prefer_group = false;

Expand All @@ -183,18 +191,19 @@ class GameView : public VBoxContainer {
Button *node_type_button[RuntimeNodeSelect::NODE_TYPE_MAX];
Button *select_mode_button[RuntimeNodeSelect::SELECT_MODE_MAX];

Button *hide_selection = nullptr;
MenuButton *selection_options_menu = nullptr;

Button *debug_mute_audio_button = nullptr;

Button *camera_override_button = nullptr;
MenuButton *camera_override_menu = nullptr;

Button *debug_mute_audio_button = nullptr;

HBoxContainer *embedding_hb = nullptr;
MenuButton *game_window_options_menu = nullptr;
Label *game_size_label = nullptr;
Control *game_size_placeholder = nullptr;
HBoxContainer *game_hb = nullptr;
MenuButton *game_embed_mode_menu = nullptr;
Button *game_embed_mode_button[EmbedMode::EMBED_TYPE_MAX];
Panel *panel = nullptr;
EmbeddedProcessBase *embedded_process = nullptr;
Label *state_label = nullptr;
Expand All @@ -213,7 +222,6 @@ class GameView : public VBoxContainer {
bool renderer_supports_hdr_output = false;

MenuButton *speed_state_button = nullptr;
Button *reset_speed_button = nullptr;

void _sessions_changed();

Expand All @@ -225,12 +233,14 @@ class GameView : public VBoxContainer {

void _node_type_pressed(int p_option);
void _select_mode_pressed(int p_option);
void _game_embed_mode_pressed(int p_option);
void _selection_options_menu_id_pressed(int p_id);
void _game_window_options_menu_menu_id_pressed(int p_id);

void _reset_time_scales();
void _speed_state_menu_pressed(int p_id);
void _update_speed_buttons();
void _update_speed_state_icon(int p_id);
void _update_speed_state_color();
void _update_speed_state_size();

Expand All @@ -248,13 +258,12 @@ class GameView : public VBoxContainer {
EmbedAvailability _get_embed_available();
void _update_ui();
void _update_embed_menu_options();
void _update_embed_buttons();
void _update_game_window_size_label();
void _update_embed_window_size();
void _update_arguments_for_instance(int p_idx, List<String> &r_arguments);
void _show_update_window_wrapper();

void _hide_selection_toggled(bool p_pressed);

void _debug_mute_audio_button_pressed();
void _setup_complete();
void _game_window_size_received(const Array &p_state);
Expand Down
24 changes: 18 additions & 6 deletions editor/themes/theme_classic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1887,8 +1887,8 @@ void ThemeClassic::populate_editor_styles(const Ref<EditorTheme> &p_theme, Edito

p_theme->set_type_variation("FlatButtonNoIconTint", "FlatButton");
p_theme->set_color("icon_pressed_color", "FlatButtonNoIconTint", p_config.icon_normal_color);
p_theme->set_color("icon_hover_color", "FlatButtonNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_pressed_color", "FlatButtonNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_color", "FlatButtonNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color.inverted());
p_theme->set_color("icon_hover_pressed_color", "FlatButtonNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color.inverted());

// Variation for the AssetLib thumbnails.

Expand All @@ -1901,8 +1901,8 @@ void ThemeClassic::populate_editor_styles(const Ref<EditorTheme> &p_theme, Edito

p_theme->set_type_variation("FlatMenuButtonNoIconTint", "FlatMenuButton");
p_theme->set_color("icon_pressed_color", "FlatMenuButtonNoIconTint", p_config.icon_normal_color);
p_theme->set_color("icon_hover_color", "FlatMenuButtonNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_pressed_color", "FlatMenuButtonNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_color", "FlatMenuButtonNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color.inverted());
p_theme->set_color("icon_hover_pressed_color", "FlatMenuButtonNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color.inverted());

// Variation for Editor Log filter buttons.
p_theme->set_type_variation("EditorLogFilterButton", "Button");
Expand Down Expand Up @@ -1933,8 +1933,8 @@ void ThemeClassic::populate_editor_styles(const Ref<EditorTheme> &p_theme, Edito
{
p_theme->set_type_variation("CheckBoxNoIconTint", "CheckBox");
p_theme->set_color("icon_pressed_color", "CheckBoxNoIconTint", p_config.icon_normal_color);
p_theme->set_color("icon_hover_color", "CheckBoxNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_pressed_color", "CheckBoxNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_color", "CheckBoxNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color.inverted());
p_theme->set_color("icon_hover_pressed_color", "CheckBoxNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color.inverted());
}

// Buttons styles that stand out against the panel background (e.g. AssetLib).
Expand Down Expand Up @@ -2062,6 +2062,18 @@ void ThemeClassic::populate_editor_styles(const Ref<EditorTheme> &p_theme, Edito
p_theme->set_stylebox(SceneStringName(panel), "PanelContainerTabbarInner", EditorThemeManager::make_empty_stylebox(0, 0, 0, 0));
}

// PanelContainerButtonGroup.
{
p_theme->set_type_variation("PanelContainerButtonGroup", "PanelContainer");

Ref<StyleBoxFlat> style_button_group = p_theme->get_stylebox(SNAME("tabbar_background"), SNAME("TabContainer"))->duplicate();
style_button_group->set_content_margin_all(p_config.base_margin * EDSCALE);
style_button_group->set_corner_radius_all(p_config.corner_radius);
style_button_group->set_bg_color(p_config.dark_color_1.lerp(p_config.mono_color, 0.15));

p_theme->set_stylebox(SceneStringName(panel), "PanelContainerButtonGroup", style_button_group);
}

// TreeLineEdit.
{
Ref<StyleBoxFlat> tree_line_edit_style = p_theme->get_stylebox(CoreStringName(normal), SNAME("LineEdit"))->duplicate();
Expand Down
24 changes: 18 additions & 6 deletions editor/themes/theme_modern.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1947,13 +1947,13 @@ void ThemeModern::populate_editor_styles(const Ref<EditorTheme> &p_theme, Editor

p_theme->set_type_variation("FlatButtonNoIconTint", "FlatButton");
p_theme->set_color("icon_pressed_color", "FlatButtonNoIconTint", p_config.icon_normal_color);
p_theme->set_color("icon_hover_color", "FlatButtonNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_pressed_color", "FlatButtonNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_color", "FlatButtonNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color_inv);
p_theme->set_color("icon_hover_pressed_color", "FlatButtonNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color_inv);

p_theme->set_type_variation("FlatMenuButtonNoIconTint", "FlatMenuButton");
p_theme->set_color("icon_pressed_color", "FlatMenuButtonNoIconTint", p_config.icon_normal_color);
p_theme->set_color("icon_hover_color", "FlatMenuButtonNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_pressed_color", "FlatMenuButtonNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_color", "FlatMenuButtonNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color_inv);
p_theme->set_color("icon_hover_pressed_color", "FlatMenuButtonNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color_inv);

// Variation for the AssetLib thumbnails.

Expand Down Expand Up @@ -1985,8 +1985,8 @@ void ThemeModern::populate_editor_styles(const Ref<EditorTheme> &p_theme, Editor
{
p_theme->set_type_variation("CheckBoxNoIconTint", "CheckBox");
p_theme->set_color("icon_pressed_color", "CheckBoxNoIconTint", p_config.icon_normal_color);
p_theme->set_color("icon_hover_color", "CheckBoxNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_pressed_color", "CheckBoxNoIconTint", p_config.mono_color);
p_theme->set_color("icon_hover_color", "CheckBoxNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color_inv);
p_theme->set_color("icon_hover_pressed_color", "CheckBoxNoIconTint", p_config.dark_icon_and_font ? p_config.mono_color : p_config.mono_color_inv);
}

// Buttons styles that stand out against the panel background (e.g. AssetLib).
Expand Down Expand Up @@ -2175,6 +2175,18 @@ void ThemeModern::populate_editor_styles(const Ref<EditorTheme> &p_theme, Editor
p_theme->set_stylebox(SceneStringName(panel), "PanelContainerTabbarInner", style_tabbar_background_inner);
}

// PanelContainerButtonGroup.
{
p_theme->set_type_variation("PanelContainerButtonGroup", "PanelContainer");

Ref<StyleBoxFlat> style_button_group = p_theme->get_stylebox(SNAME("tabbar_background"), SNAME("TabContainer"))->duplicate();
style_button_group->set_content_margin_all(p_config.base_margin * EDSCALE);
style_button_group->set_corner_radius_all(p_config.corner_radius > 0 ? (p_config.corner_radius + p_config.base_margin) * EDSCALE : 0);
style_button_group->set_bg_color(p_config.surface_lower_color.lerp(p_config.mono_color_inv, 0.15).lightened(0.02));

p_theme->set_stylebox(SceneStringName(panel), "PanelContainerButtonGroup", style_button_group);
}

// TreeLineEdit.
{
Ref<StyleBoxFlat> tree_line_edit_style = p_theme->get_stylebox(CoreStringName(normal), SNAME("LineEdit"))->duplicate();
Expand Down
Loading