From 34323e5a19c282659f42f012b875ab6a53858e0d Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Fri, 5 Jul 2024 13:17:29 +0200 Subject: [PATCH 01/42] Add Panel to StatusBar --- material_maker/main_window.gd | 48 ++++++++++++++++----------------- material_maker/main_window.tscn | 40 ++++++++++++++------------- 2 files changed, 46 insertions(+), 42 deletions(-) diff --git a/material_maker/main_window.gd b/material_maker/main_window.gd index ab12a1206..f6b5c6030 100644 --- a/material_maker/main_window.gd +++ b/material_maker/main_window.gd @@ -119,35 +119,35 @@ func _ready() -> void: get_window().transparent = false get_window().move_to_foreground() get_window().gui_embed_subwindows = false - + get_window().close_requested.connect(self.on_close_requested) - + get_tree().set_auto_accept_quit(false) - + if mm_globals.get_config("locale") == "": mm_globals.set_config("locale", TranslationServer.get_locale()) - + on_config_changed() - + # Restore the window position/size if values are present in the configuration cache if mm_globals.config.has_section_key("window", "screen"): get_window().current_screen = mm_globals.config.get_value("window", "screen") - + if mm_globals.config.has_section_key("window", "maximized"): get_window().mode = Window.MODE_MAXIMIZED if (mm_globals.config.get_value("window", "maximized")) else Window.MODE_WINDOWED - + if get_window().mode != Window.MODE_MAXIMIZED: if mm_globals.config.has_section_key("window", "position"): get_window().position = mm_globals.config.get_value("window", "position") if mm_globals.config.has_section_key("window", "size"): get_window().size = mm_globals.config.get_value("window", "size") - + # Restore the theme var theme_name : String = "default" if mm_globals.config.has_section_key("window", "theme"): theme_name = mm_globals.config.get_value("window", "theme") change_theme(theme_name) - + # In HTML5 export, copy all examples to the filesystem if OS.get_name() == "HTML5": print("Copying samples") @@ -161,13 +161,13 @@ func _ready() -> void: if f.ends_with(".ptex"): print(f) dir.copy("res://material_maker/examples/"+f, "/examples/"+f) - + # Set a minimum window size to prevent UI elements from collapsing on each other. get_window().min_size = Vector2(1024, 600) - + # Set window title get_window().set_title(ProjectSettings.get_setting("application/config/name")+" v"+ProjectSettings.get_setting("application/config/actual_release")) - + layout.load_panels() library = get_panel("Library") preview_2d = [ get_panel("Preview2D"), get_panel("Preview2D (2)") ] @@ -177,12 +177,12 @@ func _ready() -> void: hierarchy = get_panel("Hierarchy") hierarchy.connect("group_selected", self.on_group_selected) brushes = get_panel("Brushes") - + # Load recent projects load_recents() - + get_window().connect("files_dropped", self.on_files_dropped) - + var args : PackedStringArray = OS.get_cmdline_args() for a in args: if a.get_extension() == "ptex": @@ -198,7 +198,7 @@ func _ready() -> void: continue var project_filename : String = mesh_filename.get_basename()+".mmpp" create_paint_project(mesh, mesh_filename, 1024, project_filename) - + # Rescue unsaved projects if true: var dir : DirAccess = DirAccess.open("user://unsaved_projects") @@ -223,16 +223,16 @@ func _ready() -> void: "delete": for f in files: DirAccess.remove_absolute(f) - + if get_current_graph_edit() == null: await get_tree().process_frame new_material() - + size = get_window().size position = Vector2.ZERO set_anchors_preset(Control.PRESET_FULL_RECT) update_menus() - + mm_logger.message("Material Maker "+ProjectSettings.get_setting("application/config/actual_release")) var menu_update_requested : bool = false @@ -288,7 +288,7 @@ func on_config_changed() -> void: ui_scale = 2 if DisplayServer.screen_get_dpi() >= 192 and DisplayServer.screen_get_size().x >= 2048 else 1 get_viewport().content_scale_factor = ui_scale #ProjectSettings.set_setting("display/window/stretch/scale", scale) - + # Clamp to reasonable values to avoid crashes on startup. preview_rendering_scale_factor = clamp(mm_globals.get_config("ui_3d_preview_resolution"), 1.0, 2.0) # warning-ignore:narrowing_conversion @@ -566,7 +566,7 @@ func get_file_absolute_path(filename : String) -> String: if file == null: return "" return file.get_path_absolute() - + func do_load_projects(filenames) -> void: var file_name : String = "" for f in filenames: @@ -1194,8 +1194,8 @@ func set_tip_text(tip : String, timeout : float = 0.0): tip = tip.replace("#LMB", "[img]res://material_maker/icons/lmb.tres[/img]") tip = tip.replace("#RMB", "[img]res://material_maker/icons/rmb.tres[/img]") tip = tip.replace("#MMB", "[img]res://material_maker/icons/mmb.tres[/img]") - $VBoxContainer/StatusBar/Tip.text = tip - var tip_timer : Timer = $VBoxContainer/StatusBar/Tip/Timer + $VBoxContainer/StatusBar/HBox/Tip.text = tip + var tip_timer : Timer = $VBoxContainer/StatusBar/HBox/Tip/Timer tip_timer.stop() if timeout > 0.0: tip_timer.one_shot = true @@ -1203,7 +1203,7 @@ func set_tip_text(tip : String, timeout : float = 0.0): tip_timer.start() func _on_Tip_Timer_timeout(): - $VBoxContainer/StatusBar/Tip.text = "" + $VBoxContainer/StatusBar/HBox/Tip.text = "" # Add dialog diff --git a/material_maker/main_window.tscn b/material_maker/main_window.tscn index 824727893..c94055095 100644 --- a/material_maker/main_window.tscn +++ b/material_maker/main_window.tscn @@ -98,8 +98,8 @@ anchor_right = 1.0 anchor_bottom = 1.0 offset_left = -160.0 offset_top = -21.0 -offset_right = 160.0 -offset_bottom = 15.0 +offset_right = 430.0 +offset_bottom = 311.0 grow_horizontal = 2 grow_vertical = 2 size_flags_horizontal = 3 @@ -175,10 +175,14 @@ size_flags_horizontal = 3 bbcode_enabled = true scroll_following = true -[node name="StatusBar" type="HBoxContainer" parent="VBoxContainer"] +[node name="StatusBar" type="PanelContainer" parent="VBoxContainer"] layout_mode = 2 +theme_type_variation = &"MM_StatusBarBackground" -[node name="Tip" type="RichTextLabel" parent="VBoxContainer/StatusBar"] +[node name="HBox" type="HBoxContainer" parent="VBoxContainer/StatusBar"] +layout_mode = 2 + +[node name="Tip" type="RichTextLabel" parent="VBoxContainer/StatusBar/HBox"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 @@ -186,50 +190,50 @@ bbcode_enabled = true fit_content = true scroll_active = false -[node name="Timer" type="Timer" parent="VBoxContainer/StatusBar/Tip"] +[node name="Timer" type="Timer" parent="VBoxContainer/StatusBar/HBox/Tip"] -[node name="ConsoleButton" type="TextureButton" parent="VBoxContainer/StatusBar"] +[node name="ConsoleButton" type="TextureButton" parent="VBoxContainer/StatusBar/HBox"] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 tooltip_text = "Show console" texture_normal = SubResource("8") -[node name="VSeparator1" type="VSeparator" parent="VBoxContainer/StatusBar"] +[node name="VSeparator1" type="VSeparator" parent="VBoxContainer/StatusBar/HBox"] layout_mode = 2 -[node name="Share" parent="VBoxContainer/StatusBar" instance=ExtResource("12")] +[node name="Share" parent="VBoxContainer/StatusBar/HBox" instance=ExtResource("12")] unique_name_in_owner = true layout_mode = 2 -[node name="VSeparator2" type="VSeparator" parent="VBoxContainer/StatusBar"] +[node name="VSeparator2" type="VSeparator" parent="VBoxContainer/StatusBar/HBox"] layout_mode = 2 -[node name="ClipBoardAnalyzer" type="HBoxContainer" parent="VBoxContainer/StatusBar"] +[node name="ClipBoardAnalyzer" type="HBoxContainer" parent="VBoxContainer/StatusBar/HBox"] layout_mode = 2 script = SubResource("9") -[node name="Clipboard" type="TextureRect" parent="VBoxContainer/StatusBar/ClipBoardAnalyzer"] +[node name="Clipboard" type="TextureRect" parent="VBoxContainer/StatusBar/HBox/ClipBoardAnalyzer"] visible = false layout_mode = 2 size_flags_vertical = 4 mouse_filter = 2 texture = SubResource("8") -[node name="Contents" type="TextureRect" parent="VBoxContainer/StatusBar/ClipBoardAnalyzer"] +[node name="Contents" type="TextureRect" parent="VBoxContainer/StatusBar/HBox/ClipBoardAnalyzer"] layout_mode = 2 size_flags_vertical = 4 mouse_filter = 2 texture = ExtResource("15") -[node name="Timer" type="Timer" parent="VBoxContainer/StatusBar/ClipBoardAnalyzer"] +[node name="Timer" type="Timer" parent="VBoxContainer/StatusBar/HBox/ClipBoardAnalyzer"] wait_time = 0.5 autostart = true -[node name="VSeparator3" type="VSeparator" parent="VBoxContainer/StatusBar"] +[node name="VSeparator3" type="VSeparator" parent="VBoxContainer/StatusBar/HBox"] layout_mode = 2 -[node name="RenderCounter" parent="VBoxContainer/StatusBar" instance=ExtResource("11")] +[node name="RenderCounter" parent="VBoxContainer/StatusBar/HBox" instance=ExtResource("11")] layout_mode = 2 [node name="NodeFactory" type="Node" parent="."] @@ -251,6 +255,6 @@ libraries = { [connection signal="layout_changed" from="VBoxContainer/Layout/FlexibleLayout" to="." method="update_menus"] [connection signal="meta_clicked" from="VBoxContainer/Console/RichTextLabel" to="VBoxContainer/Console" method="_on_rich_text_label_meta_clicked"] -[connection signal="timeout" from="VBoxContainer/StatusBar/Tip/Timer" to="." method="_on_Tip_Timer_timeout"] -[connection signal="pressed" from="VBoxContainer/StatusBar/ConsoleButton" to="VBoxContainer/Console" method="toggle"] -[connection signal="timeout" from="VBoxContainer/StatusBar/ClipBoardAnalyzer/Timer" to="VBoxContainer/StatusBar/ClipBoardAnalyzer" method="_on_Timer_timeout"] +[connection signal="timeout" from="VBoxContainer/StatusBar/HBox/Tip/Timer" to="." method="_on_Tip_Timer_timeout"] +[connection signal="pressed" from="VBoxContainer/StatusBar/HBox/ConsoleButton" to="VBoxContainer/Console" method="toggle"] +[connection signal="timeout" from="VBoxContainer/StatusBar/HBox/ClipBoardAnalyzer/Timer" to="VBoxContainer/StatusBar/HBox/ClipBoardAnalyzer" method="_on_Timer_timeout"] From 951eecb36f1cd970114ab687c829dc395ead9629 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Fri, 5 Jul 2024 13:22:04 +0200 Subject: [PATCH 02/42] Improve design of Library Panel - no background - more space efficient - consitent height of rows - slightly smaller previews - move Manage button next to filter and Add Nodes button to the bottom --- material_maker/panels/library/library.gd | 8 ++- material_maker/panels/library/library.tscn | 45 +++++++------- material_maker/panels/library/library_tree.gd | 2 +- material_maker/theme/modern.tres | 58 +++++++++---------- 4 files changed, 53 insertions(+), 60 deletions(-) diff --git a/material_maker/panels/library/library.gd b/material_maker/panels/library/library.gd index 0cdb76876..9fd6df739 100644 --- a/material_maker/panels/library/library.gd +++ b/material_maker/panels/library/library.gd @@ -13,6 +13,7 @@ var category_buttons = {} @onready var filter_line_edit : LineEdit = %Filter @onready var item_menu : PopupMenu = %ItemMenu +const MINIMUM_ITEM_HEIGHT : int = 30 const MENU_CREATE_LIBRARY : int = 1000 const MENU_LOAD_LIBRARY : int = 1001 @@ -113,7 +114,8 @@ func update_tree() -> void: tree.clear() tree.create_item() for i in library_manager.get_items(filter): - add_item(i.item, i.library_index, i.name, i.icon, null, filter != "") + var item := add_item(i.item, i.library_index, i.name, i.icon, null, filter != "") + tree.queue_redraw() func add_item(item, library_index : int, item_name : String, item_icon = null, item_parent = null, force_expand = false) -> TreeItem: @@ -129,10 +131,11 @@ func add_item(item, library_index : int, item_name : String, item_icon = null, i break if new_item == null: new_item = tree.create_item(item_parent) + new_item.custom_minimum_height = MINIMUM_ITEM_HEIGHT new_item.set_text(0, TranslationServer.translate(item_name)) new_item.collapsed = !force_expand and expanded_items.find(item.tree_item) == -1 new_item.set_icon(1, item_icon) - new_item.set_icon_max_width(1, 32) + new_item.set_icon_max_width(1, 28) if item.has("type") || item.has("nodes"): new_item.set_metadata(0, item) new_item.set_metadata(1, library_index) @@ -147,6 +150,7 @@ func add_item(item, library_index : int, item_name : String, item_icon = null, i break if new_parent == null: new_parent = tree.create_item(item_parent) + new_parent.custom_minimum_height = MINIMUM_ITEM_HEIGHT new_parent.set_text(0, TranslationServer.translate(prefix)) new_parent.collapsed = !force_expand and expanded_items.find(get_item_path(new_parent)) == -1 return add_item(item, library_index, suffix, item_icon, new_parent, force_expand) diff --git a/material_maker/panels/library/library.tscn b/material_maker/panels/library/library.tscn index 1c19268be..efa14e1da 100644 --- a/material_maker/panels/library/library.tscn +++ b/material_maker/panels/library/library.tscn @@ -1,20 +1,16 @@ -[gd_scene load_steps=7 format=3 uid="uid://drbpisn5f3h8y"] +[gd_scene load_steps=5 format=3 uid="uid://drbpisn5f3h8y"] [ext_resource type="Script" path="res://material_maker/panels/library/library_tree.gd" id="1"] [ext_resource type="Script" path="res://material_maker/panels/library/library.gd" id="1_748nq"] [ext_resource type="Texture2D" uid="uid://c0j4px4n72di5" path="res://material_maker/icons/icons.tres" id="3"] -[ext_resource type="Texture2D" uid="uid://cvorvnes6fiq7" path="res://material_maker/icons/icons.svg" id="3_el42x"] [sub_resource type="AtlasTexture" id="1"] atlas = ExtResource("3") region = Rect2(0, 0, 16, 16) -[sub_resource type="AtlasTexture" id="AtlasTexture_m5x46"] -atlas = ExtResource("3_el42x") -region = Rect2(48, 0, 16, 16) - [node name="Library" type="PanelContainer"] -offset_right = 132.0 +offset_right = 323.0 +offset_bottom = 391.0 theme_type_variation = &"MM_PanelBackground" script = ExtResource("1_748nq") library_manager_name = "NodeLibraryManager" @@ -28,24 +24,10 @@ size_flags_vertical = 3 [node name="HBoxContainer" type="HBoxContainer" parent="Library"] layout_mode = 2 -[node name="Libraries" type="MenuButton" parent="Library/HBoxContainer"] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 4 -size_flags_vertical = 0 -text = "Manage" -icon = SubResource("1") - [node name="Control" type="Control" parent="Library/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 -[node name="GetFromWebsite" type="TextureButton" parent="Library/HBoxContainer"] -layout_mode = 2 -size_flags_vertical = 4 -tooltip_text = "Get more nodes from website" -texture_normal = SubResource("AtlasTexture_m5x46") - [node name="SectionButtons" type="HFlowContainer" parent="Library"] unique_name_in_owner = true layout_mode = 2 @@ -62,37 +44,50 @@ theme_type_variation = &"MM_FilterLineEdit" placeholder_text = "Filter" clear_button_enabled = true +[node name="Libraries" type="MenuButton" parent="Library/Filter"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +icon = SubResource("1") +flat = false + [node name="Tree" type="Tree" parent="Library"] unique_name_in_owner = true custom_minimum_size = Vector2(50, 50) layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +theme_override_constants/v_separation = 1 columns = 2 allow_rmb_select = true hide_root = true select_mode = 1 script = ExtResource("1") +[node name="GetFromWebsite" type="Button" parent="Library"] +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Get more nodes from website" +text = "Browser Community Nodes " +clip_text = true + [node name="ItemMenu" type="PopupMenu" parent="."] unique_name_in_owner = true item_count = 5 item_0/text = "Rename item" -item_0/id = 0 item_1/text = "Update thumbnail" item_1/id = 1 item_2/text = "Remove item" item_2/id = 2 -item_3/text = "" item_3/id = 3 item_3/separator = true item_4/text = "Define aliases" item_4/id = 4 -[connection signal="about_to_popup" from="Library/HBoxContainer/Libraries" to="." method="_on_Libraries_about_to_show"] -[connection signal="pressed" from="Library/HBoxContainer/GetFromWebsite" to="." method="_on_GetFromWebsite_pressed"] [connection signal="text_changed" from="Library/Filter/Filter" to="." method="_on_Filter_text_changed"] +[connection signal="about_to_popup" from="Library/Filter/Libraries" to="." method="_on_Libraries_about_to_show"] [connection signal="item_collapsed" from="Library/Tree" to="." method="_on_Tree_item_collapsed"] [connection signal="item_mouse_selected" from="Library/Tree" to="." method="_on_tree_item_mouse_selected"] +[connection signal="pressed" from="Library/GetFromWebsite" to="." method="_on_GetFromWebsite_pressed"] [connection signal="about_to_popup" from="ItemMenu" to="Library" method="_on_PopupMenu_about_to_show"] [connection signal="index_pressed" from="ItemMenu" to="Library" method="_on_PopupMenu_index_pressed"] diff --git a/material_maker/panels/library/library_tree.gd b/material_maker/panels/library/library_tree.gd index 5fee9fa4f..25188c663 100644 --- a/material_maker/panels/library/library_tree.gd +++ b/material_maker/panels/library/library_tree.gd @@ -34,7 +34,7 @@ func _draw(): var last_item : TreeItem = get_last_item(item) if last_item != null: last_rect = get_item_area_rect(last_item) - draw_rect(Rect2(1, rect.position.y+6-sp, 4, last_rect.position.y-rect.position.y+last_rect.size.y), color) + draw_rect(Rect2(1, rect.position.y-sp, 4, last_rect.position.y-rect.position.y+last_rect.size.y), color) item = item.get_next() func _get_drag_data(_position): diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index fde39b189..e21852b4c 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=45 format=3 uid="uid://b628lwfk6ig2c"] +[gd_resource type="Theme" load_steps=46 format=3 uid="uid://b628lwfk6ig2c"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_hqoqt"] [ext_resource type="FontFile" uid="uid://btybkvkb8rtol" path="res://material_maker/fonts/DroidSansFallback.ttf" id="2_1xp11"] @@ -74,7 +74,7 @@ content_margin_left = 28.0 content_margin_top = 4.0 content_margin_right = 28.0 content_margin_bottom = 4.0 -bg_color = Color(0.168627, 0.176471, 0.192157, 1) +bg_color = Color(0.0666667, 0.0705882, 0.0784314, 1) corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 corner_detail = 4 @@ -84,7 +84,7 @@ content_margin_left = 28.0 content_margin_top = 4.0 content_margin_right = 28.0 content_margin_bottom = 4.0 -bg_color = Color(0.168627, 0.176471, 0.192157, 1) +bg_color = Color(0.0666667, 0.0705882, 0.0784314, 1) border_width_left = 1 border_width_right = 1 border_width_bottom = 1 @@ -224,7 +224,7 @@ content_margin_left = 10.0 content_margin_top = 10.0 content_margin_right = 10.0 content_margin_bottom = 10.0 -bg_color = Color(0.0401277, 0.0432053, 0.0493515, 1) +bg_color = Color(0.0784314, 0.0784314, 0.0823529, 1) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k2ns1"] bg_color = Color(0.8, 0.8, 0.8, 1) @@ -240,17 +240,29 @@ content_margin_left = 6.0 content_margin_top = 6.0 content_margin_right = 6.0 content_margin_bottom = 6.0 -bg_color = Color(0.113725, 0.113725, 0.113725, 1) +bg_color = Color(0.0941176, 0.0980392, 0.101961, 1) corner_radius_top_right = 5 corner_radius_bottom_right = 5 corner_radius_bottom_left = 5 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1k0sx"] -bg_color = Color(0.0846134, 0.0883864, 0.0997054, 1) +bg_color = Color(0.0941176, 0.0980392, 0.101961, 1) corner_radius_top_right = 4 corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7hrav"] +content_margin_left = 3.0 +content_margin_top = 3.0 +content_margin_right = 3.0 +content_margin_bottom = 3.0 +bg_color = Color(0.129412, 0.137255, 0.152941, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +corner_detail = 4 + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dscxc"] content_margin_left = 6.0 content_margin_top = 6.0 @@ -368,31 +380,11 @@ bg_color = Color(0.0680024, 0.0730968, 0.0833106, 1) corner_radius_top_left = 3 corner_radius_top_right = 3 -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_d7p6f"] -bg_color = Color(0.168627, 0.176471, 0.192157, 1) -draw_center = false -border_width_left = 1 -border_width_top = 1 -border_width_right = 1 -border_width_bottom = 1 -border_color = Color(0.266667, 0.278431, 0.301961, 1) -corner_radius_top_left = 5 -corner_radius_top_right = 5 -corner_radius_bottom_right = 5 -corner_radius_bottom_left = 5 -corner_detail = 4 +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_iwtn1"] +content_margin_left = 4.0 -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e18lx"] -content_margin_left = 10.0 -content_margin_top = 5.0 -content_margin_right = 10.0 -content_margin_bottom = 5.0 -bg_color = Color(0.168627, 0.176471, 0.192157, 1) -corner_radius_top_left = 5 -corner_radius_top_right = 5 -corner_radius_bottom_right = 5 -corner_radius_bottom_left = 5 -corner_detail = 4 +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_yrroa"] +content_margin_left = 4.0 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x5l5s"] content_margin_left = 3.0 @@ -454,6 +446,8 @@ MM_PanelBackground/base_type = &"PanelContainer" MM_PanelBackground/styles/panel = SubResource("StyleBoxFlat_uujf1") MM_ProjectsBackground/base_type = &"Panel" MM_ProjectsBackground/styles/panel = SubResource("StyleBoxFlat_1k0sx") +MM_StatusBarBackground/base_type = &"PanelContainer" +MM_StatusBarBackground/styles/panel = SubResource("StyleBoxFlat_7hrav") Panel/styles/panel = SubResource("StyleBoxFlat_dscxc") PopupMenu/styles/hover = SubResource("StyleBoxFlat_fq0uc") PopupMenu/styles/panel = SubResource("StyleBoxFlat_8p2hu") @@ -499,7 +493,7 @@ TabBar/styles/tab_selected = SubResource("StyleBoxFlat_r4jxv") TabBar/styles/tab_unselected = SubResource("StyleBoxFlat_w1kc3") Tree/constants/draw_guides = 0 Tree/constants/draw_relationship_lines = 0 -Tree/styles/focus = SubResource("StyleBoxFlat_d7p6f") -Tree/styles/panel = SubResource("StyleBoxFlat_e18lx") +Tree/styles/focus = SubResource("StyleBoxEmpty_iwtn1") +Tree/styles/panel = SubResource("StyleBoxEmpty_yrroa") Tree/styles/selected = SubResource("StyleBoxFlat_x5l5s") Tree/styles/selected_focus = SubResource("StyleBoxFlat_x5l5s") From 2cada8c0a2503f60407f3e7085ef571058358514 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Fri, 5 Jul 2024 13:26:46 +0200 Subject: [PATCH 03/42] Make flexbible tab font color change when unselected --- addons/flexible_layout/flexible_tab.gd | 1 + material_maker/theme/modern.tres | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/flexible_layout/flexible_tab.gd b/addons/flexible_layout/flexible_tab.gd index 7089bdbb0..b8ea24073 100644 --- a/addons/flexible_layout/flexible_tab.gd +++ b/addons/flexible_layout/flexible_tab.gd @@ -29,6 +29,7 @@ func update(): add_theme_stylebox_override("panel", get_theme_stylebox("tab_selected" if is_current else "tab_unselected", "MM_FlexibleTab")) $Container/Undock.visible = is_current and get_flex_layout().main_control.allow_undock $Container/Close.visible = is_current + $Container/Label.add_theme_color_override("font_color", get_theme_color("font_selected_color" if is_current else "font_unselected_color", "MM_FlexibleTab") ) updating = false func _on_undock_pressed(): diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index e21852b4c..d886be7a5 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -224,7 +224,7 @@ content_margin_left = 10.0 content_margin_top = 10.0 content_margin_right = 10.0 content_margin_bottom = 10.0 -bg_color = Color(0.0784314, 0.0784314, 0.0823529, 1) +bg_color = Color(0.0427646, 0.0427646, 0.0456467, 1) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k2ns1"] bg_color = Color(0.8, 0.8, 0.8, 1) @@ -367,7 +367,7 @@ content_margin_left = 7.0 content_margin_top = 5.0 content_margin_right = 7.0 content_margin_bottom = 5.0 -bg_color = Color(0.157074, 0.161861, 0.176218, 1) +bg_color = Color(0.129412, 0.137255, 0.152941, 1) corner_radius_top_left = 3 corner_radius_top_right = 3 @@ -376,7 +376,7 @@ content_margin_left = 7.0 content_margin_top = 5.0 content_margin_right = 7.0 content_margin_bottom = 5.0 -bg_color = Color(0.0680024, 0.0730968, 0.0833106, 1) +bg_color = Color(0.109804, 0.113725, 0.12549, 1) corner_radius_top_left = 3 corner_radius_top_right = 3 From dacb4995bdb48e034c95c76e206708b6e27fb441 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Fri, 5 Jul 2024 13:36:21 +0200 Subject: [PATCH 04/42] Move UndoRedoLabel and use Dotted Grid - Enables the dotted grid on the GraphEdit - Moves the UndoRedoLabel into the StatusBar for now --- material_maker/main_window.tscn | 90 ++++++++++--------- .../panels/graph_edit/graph_edit.tscn | 2 + material_maker/theme/modern.tres | 10 +-- material_maker/tools/undo_redo/undo_redo.gd | 2 +- 4 files changed, 54 insertions(+), 50 deletions(-) diff --git a/material_maker/main_window.tscn b/material_maker/main_window.tscn index c94055095..889f9cae5 100644 --- a/material_maker/main_window.tscn +++ b/material_maker/main_window.tscn @@ -15,39 +15,6 @@ [ext_resource type="Script" path="res://material_maker/tools/library_manager/library_manager.gd" id="14"] [ext_resource type="Texture2D" path="res://material_maker/icons/paste_none.tres" id="15"] -[sub_resource type="AtlasTexture" id="8"] -atlas = ExtResource("8") -region = Rect2(96, 128, 16, 16) - -[sub_resource type="GDScript" id="9"] -script/source = "extends HBoxContainer - - -const PASTE_TYPE_ICON : Dictionary = { - none=preload(\"res://material_maker/icons/paste_none.tres\"), - color=preload(\"res://material_maker/icons/paste_none.tres\"), - palette=preload(\"res://material_maker/icons/paste_palette.tres\"), - newgraph=preload(\"res://material_maker/icons/paste_newgraph.tres\"), - graph=preload(\"res://material_maker/icons/paste_graph.tres\") -} - -func _on_Timer_timeout(): - var data : String = DisplayServer.clipboard_get().strip_edges() - var parsed_data = await mm_globals.parse_paste_data(data) - $Contents.texture = PASTE_TYPE_ICON[parsed_data.type] - var hint : String - match parsed_data.type: - \"none\",\"color\": - hint = \"The clipboard cannot be pasted\" - \"palette\": - hint = \"The clipboard contains a color palette and can be pasted\\ninto a graph view as a colorize node\" - \"newgraph\": - hint = \"The clipboard can be pasted as a new graph view\\nand contains %d nodes and %d connections\" % [ parsed_data.graph.nodes.size(), parsed_data.graph.connections.size() ] - \"graph\": - hint = \"The clipboard can be pasted into a graph view\\nand contains %d nodes and %d connections\" % [ parsed_data.graph.nodes.size(), parsed_data.graph.connections.size() ] - tooltip_text = hint -" - [sub_resource type="GDScript" id="6"] script/source = "extends Label @@ -92,6 +59,39 @@ _data = { "show": SubResource("7") } +[sub_resource type="AtlasTexture" id="8"] +atlas = ExtResource("8") +region = Rect2(96, 128, 16, 16) + +[sub_resource type="GDScript" id="9"] +script/source = "extends HBoxContainer + + +const PASTE_TYPE_ICON : Dictionary = { + none=preload(\"res://material_maker/icons/paste_none.tres\"), + color=preload(\"res://material_maker/icons/paste_none.tres\"), + palette=preload(\"res://material_maker/icons/paste_palette.tres\"), + newgraph=preload(\"res://material_maker/icons/paste_newgraph.tres\"), + graph=preload(\"res://material_maker/icons/paste_graph.tres\") +} + +func _on_Timer_timeout(): + var data : String = DisplayServer.clipboard_get().strip_edges() + var parsed_data = await mm_globals.parse_paste_data(data) + $Contents.texture = PASTE_TYPE_ICON[parsed_data.type] + var hint : String + match parsed_data.type: + \"none\",\"color\": + hint = \"The clipboard cannot be pasted\" + \"palette\": + hint = \"The clipboard contains a color palette and can be pasted\\ninto a graph view as a colorize node\" + \"newgraph\": + hint = \"The clipboard can be pasted as a new graph view\\nand contains %d nodes and %d connections\" % [ parsed_data.graph.nodes.size(), parsed_data.graph.connections.size() ] + \"graph\": + hint = \"The clipboard can be pasted into a graph view\\nand contains %d nodes and %d connections\" % [ parsed_data.graph.nodes.size(), parsed_data.graph.connections.size() ] + tooltip_text = hint +" + [node name="MainWindow" type="PanelContainer" groups=["preview"]] anchors_preset = 15 anchor_right = 1.0 @@ -192,6 +192,19 @@ scroll_active = false [node name="Timer" type="Timer" parent="VBoxContainer/StatusBar/HBox/Tip"] +[node name="UndoRedoLabel" type="Label" parent="VBoxContainer/StatusBar/HBox"] +unique_name_in_owner = true +modulate = Color(1, 1, 1, 0) +layout_mode = 2 +size_flags_horizontal = 4 +text = "Undo/Redo action added" +script = SubResource("6") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="VBoxContainer/StatusBar/HBox/UndoRedoLabel"] +libraries = { +"": SubResource("AnimationLibrary_kxf7t") +} + [node name="ConsoleButton" type="TextureButton" parent="VBoxContainer/StatusBar/HBox"] layout_mode = 2 size_flags_horizontal = 4 @@ -242,17 +255,6 @@ script = ExtResource("9") [node name="AddNodePopup" parent="." instance=ExtResource("7")] visible = false -[node name="UndoRedoLabel" type="Label" parent="."] -modulate = Color(1, 1, 1, 0) -layout_mode = 2 -text = "Undo/Redo action added" -script = SubResource("6") - -[node name="AnimationPlayer" type="AnimationPlayer" parent="UndoRedoLabel"] -libraries = { -"": SubResource("AnimationLibrary_kxf7t") -} - [connection signal="layout_changed" from="VBoxContainer/Layout/FlexibleLayout" to="." method="update_menus"] [connection signal="meta_clicked" from="VBoxContainer/Console/RichTextLabel" to="VBoxContainer/Console" method="_on_rich_text_label_meta_clicked"] [connection signal="timeout" from="VBoxContainer/StatusBar/HBox/Tip/Timer" to="." method="_on_Tip_Timer_timeout"] diff --git a/material_maker/panels/graph_edit/graph_edit.tscn b/material_maker/panels/graph_edit/graph_edit.tscn index 1e6ea929b..d7d3e43e9 100644 --- a/material_maker/panels/graph_edit/graph_edit.tscn +++ b/material_maker/panels/graph_edit/graph_edit.tscn @@ -25,7 +25,9 @@ offset_top = -1.49829 offset_bottom = -1.49829 theme_override_constants/port_hotzone_inner_extent = 4 theme_override_constants/port_hotzone_outer_extent = 4 +grid_pattern = 1 right_disconnects = true +show_zoom_label = true script = ExtResource("1") [node name="Timer" type="Timer" parent="."] diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index d886be7a5..306d0bc29 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -192,9 +192,9 @@ corner_radius_bottom_left = 5 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dyhk7"] content_margin_left = 10.0 -content_margin_top = 5.0 +content_margin_top = 2.0 content_margin_right = 10.0 -content_margin_bottom = 5.0 +content_margin_bottom = 2.0 bg_color = Color(0.168627, 0.176471, 0.192157, 1) border_width_left = 1 border_width_top = 1 @@ -209,9 +209,9 @@ corner_detail = 4 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mv8c7"] content_margin_left = 10.0 -content_margin_top = 5.0 +content_margin_top = 2.0 content_margin_right = 10.0 -content_margin_bottom = 5.0 +content_margin_bottom = 2.0 bg_color = Color(0.168627, 0.176471, 0.192157, 1) corner_radius_top_left = 5 corner_radius_top_right = 5 @@ -407,7 +407,7 @@ Button/styles/hover = SubResource("StyleBoxFlat_2qiie") Button/styles/normal = SubResource("StyleBoxFlat_rxikb") Button/styles/pressed = SubResource("StyleBoxFlat_rxikb") GraphEdit/colors/grid_major = Color(0.137255, 0.141176, 0.152941, 1) -GraphEdit/colors/grid_minor = Color(0.104085, 0.107345, 0.117127, 1) +GraphEdit/colors/grid_minor = Color(0.137255, 0.141176, 0.152941, 1) GraphEdit/styles/menu_panel = SubResource("StyleBoxFlat_pxlc8") GraphEdit/styles/panel = SubResource("StyleBoxEmpty_62l4s") GraphNode/colors/portpreview_color = Color(0.89059, 0.89059, 0.89059, 1) diff --git a/material_maker/tools/undo_redo/undo_redo.gd b/material_maker/tools/undo_redo/undo_redo.gd index bf26ce9c1..e9a8c88a9 100644 --- a/material_maker/tools/undo_redo/undo_redo.gd +++ b/material_maker/tools/undo_redo/undo_redo.gd @@ -118,5 +118,5 @@ func add(action_name : String, undo_actions : Array, redo_actions : Array, merge if group_level > 0: group = undo_redo if OS.is_debug_build(): - get_node("/root/MainWindow/UndoRedoLabel").show_step(step) + get_node("/root/MainWindow").get_node("%UndoRedoLabel").show_step(step) mm_globals.main_window.update_menus() From d1656f10fc697e151607845d240e68e2e9954a0b Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Fri, 5 Jul 2024 16:09:35 +0200 Subject: [PATCH 05/42] Fix typo --- material_maker/panels/library/library.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/material_maker/panels/library/library.tscn b/material_maker/panels/library/library.tscn index efa14e1da..58c4fe041 100644 --- a/material_maker/panels/library/library.tscn +++ b/material_maker/panels/library/library.tscn @@ -68,7 +68,7 @@ script = ExtResource("1") layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Get more nodes from website" -text = "Browser Community Nodes " +text = "Browse Community Nodes " clip_text = true [node name="ItemMenu" type="PopupMenu" parent="."] From 6b747326b318a39cef99397112bd93aebf6cb033 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 16 Jul 2024 21:36:26 +0200 Subject: [PATCH 06/42] Adjust Nodes left and right content margin --- material_maker/theme/modern.tres | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 306d0bc29..44093bc82 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -70,21 +70,21 @@ corner_detail = 4 [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_62l4s"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uwck0"] -content_margin_left = 28.0 +content_margin_left = 10.0 content_margin_top = 4.0 -content_margin_right = 28.0 +content_margin_right = 10.0 content_margin_bottom = 4.0 -bg_color = Color(0.0666667, 0.0705882, 0.0784314, 1) +bg_color = Color(0.0666667, 0.0666667, 0.0784314, 1) corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 corner_detail = 4 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ryqkj"] -content_margin_left = 28.0 +content_margin_left = 10.0 content_margin_top = 4.0 -content_margin_right = 28.0 +content_margin_right = 10.0 content_margin_bottom = 4.0 -bg_color = Color(0.0666667, 0.0705882, 0.0784314, 1) +bg_color = Color(0.0666667, 0.0666667, 0.0784314, 1) border_width_left = 1 border_width_right = 1 border_width_bottom = 1 From ca8568182350d68746a19251dd588d84dc197173 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 16 Jul 2024 22:00:39 +0200 Subject: [PATCH 07/42] Resize Node Labels --- material_maker/nodes/generic/generic.gd | 3 +++ material_maker/theme/modern.tres | 2 ++ 2 files changed, 5 insertions(+) diff --git a/material_maker/nodes/generic/generic.gd b/material_maker/nodes/generic/generic.gd index 8d6f4752a..645a7248c 100644 --- a/material_maker/nodes/generic/generic.gd +++ b/material_maker/nodes/generic/generic.gd @@ -521,6 +521,9 @@ func update_node() -> void: var label_widget = Label.new() label_widget.text = label label_widget.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL + label_widget.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS + label_widget.custom_minimum_size.x = 100 + label_widget.theme_type_variation = "MM_NodePropertyLabel" hsizer.add_child(label_widget) control.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL if hsizer != null: diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 44093bc82..0a51623d4 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -442,6 +442,8 @@ MM_MainBackground/base_type = &"PanelContainer" MM_MainBackground/styles/panel = SubResource("StyleBoxFlat_wqwm5") MM_NodePortGroup/constants/width = 4 MM_NodePortGroup/styles/panel = SubResource("StyleBoxFlat_k2ns1") +MM_NodePropertyLabel/base_type = &"Label" +MM_NodePropertyLabel/font_sizes/font_size = 15 MM_PanelBackground/base_type = &"PanelContainer" MM_PanelBackground/styles/panel = SubResource("StyleBoxFlat_uujf1") MM_ProjectsBackground/base_type = &"Panel" From 350f8379179996e8020b66e4341808956545738b Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 16 Jul 2024 22:21:26 +0200 Subject: [PATCH 08/42] Implement new Float Edit --- material_maker/theme/modern.tres | 18 +- .../widgets/float_edit/float_edit.gd | 280 ++++++++++-------- .../widgets/float_edit/float_edit.tscn | 59 ++-- 3 files changed, 197 insertions(+), 160 deletions(-) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 0a51623d4..602965a27 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=46 format=3 uid="uid://b628lwfk6ig2c"] +[gd_resource type="Theme" load_steps=49 format=3 uid="uid://b628lwfk6ig2c"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_hqoqt"] [ext_resource type="FontFile" uid="uid://btybkvkb8rtol" path="res://material_maker/fonts/DroidSansFallback.ttf" id="2_1xp11"] @@ -226,6 +226,18 @@ content_margin_right = 10.0 content_margin_bottom = 10.0 bg_color = Color(0.0427646, 0.0427646, 0.0456467, 1) +[sub_resource type="FontVariation" id="FontVariation_80ifi"] +base_font = ExtResource("1_hqoqt") +opentype_features = { +1953396077: 1 +} + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3llvn"] +bg_color = Color(0.197937, 0.197937, 0.197937, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3c753"] +bg_color = Color(0.654337, 0.323278, 0.716035, 1) + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k2ns1"] bg_color = Color(0.8, 0.8, 0.8, 1) border_width_left = 1 @@ -440,6 +452,10 @@ MM_FlexibleTab/base_type = &"TabBar" MM_FlexibleTab/constants/separation = 3 MM_MainBackground/base_type = &"PanelContainer" MM_MainBackground/styles/panel = SubResource("StyleBoxFlat_wqwm5") +MM_NodeFloatEdit/base_type = &"ProgressBar" +MM_NodeFloatEdit/fonts/font = SubResource("FontVariation_80ifi") +MM_NodeFloatEdit/styles/background = SubResource("StyleBoxFlat_3llvn") +MM_NodeFloatEdit/styles/fill = SubResource("StyleBoxFlat_3c753") MM_NodePortGroup/constants/width = 4 MM_NodePortGroup/styles/panel = SubResource("StyleBoxFlat_k2ns1") MM_NodePropertyLabel/base_type = &"Label" diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index bd31c6236..5a18fe8a9 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -1,23 +1,37 @@ -extends LineEdit +extends Container -var float_value : float = 0.5 -@export var value : float = 0.5 : - get: - return float_value +var float_value: float = 0.5 +@export var value: float = 0.5 : set(new_value): set_value(new_value) -@export var min_value : float = 0.0 : set = set_min_value -@export var max_value : float = 1.0 : set = set_max_value -@export var step : float = 0.0 : set = set_step -@export var float_only : bool = false - -var sliding : bool = false -var start_position : float -var last_position : float -var start_value : float -var modifiers : int -var from_lower_bound : bool = false -var from_upper_bound : bool = false + +@export var min_value: float = 0.0 : + set(v): + min_value = v + $Slider.min_value = v + +@export var max_value: float = 1.0 : + set(v): + max_value = v + $Slider.max_value = v + +@export var step: float = 0.0 : + set(v): + step = v + _step_decimals = get_decimal_places(v) + $Slider.step = v + +# For display. Will always show at least as many decimal places as step. +var _step_decimals := 2 + +@export var float_only: bool = false + +var start_position: float +var last_position: float +var start_value: float +var modifiers: int +var from_lower_bound: bool = false +var from_upper_bound: bool = false @onready var slider = $Slider @onready var cursor = $Slider/Cursor @@ -25,58 +39,61 @@ var from_upper_bound : bool = false signal value_changed(value) signal value_changed_undo(value, merge_undo) -func _ready() -> void: - do_update() +enum Modes {IDLE, SLIDING, EDITING} +var mode := Modes.IDLE: + set(m): + mode = m + if mode == Modes.EDITING: + $Edit.mouse_filter = MOUSE_FILTER_STOP + $Edit.grab_focus() + $Edit.select_all() + $Edit.caret_column = len($Edit.text) + $Edit.alignment = HORIZONTAL_ALIGNMENT_LEFT + $Slider.value = min_value + else: + $Edit.alignment = HORIZONTAL_ALIGNMENT_RIGHT + $Edit.mouse_filter = MOUSE_FILTER_IGNORE + grab_focus() + func get_value() -> String: - return text - -func set_value(v, notify = false) -> void: + return $Edit.text + + +func set_value(v: Variant, notify := false, merge_undos := false) -> void: if v is int: v = float(v) + if v is float: float_value = v - text = str(v) - do_update() - $Slider.visible = true + if get_decimal_places(v) < _step_decimals: + $Edit.text = str(v).pad_decimals(_step_decimals) + else: + $Edit.text = str(v) + $Slider.value = v if notify: emit_signal("value_changed", float_value) - emit_signal("value_changed_undo", float_value, false) - elif v is String and !float_only: - text = v - $Slider.visible = false + emit_signal("value_changed_undo", float_value, merge_undos) + + elif v is String and not float_only: + if v.is_valid_float(): + if get_decimal_places(float(v)) < _step_decimals: + v = v.pad_decimals(_step_decimals) + $Edit.text = v + $Slider.value = min_value if notify: emit_signal("value_changed", v) - emit_signal("value_changed_undo", v, false) + emit_signal("value_changed_undo", v, merge_undos) + -func set_value_from_expression_editor(v : String): +func set_value_from_expression_editor(v: String) -> void: if v.is_valid_float(): set_value(float(v), true) else: set_value(v, true) -func set_min_value(v : float) -> void: - min_value = v - do_update() - -func set_max_value(v : float) -> void: - max_value = v - do_update() -func set_step(v : float) -> void: - step = v - do_update() - -func do_update(update_text : bool = true) -> void: - if update_text and $Slider.visible: - text = str(float_value) - if cursor != null: - if max_value != min_value: - cursor.position.x = (clamp(float_value, min_value, max_value)-min_value)*(slider.size.x-cursor.size.x)/(max_value-min_value) - else: - cursor.position.x = 0 - -func get_modifiers(event): +func get_modifiers(event:InputEvent) -> int: var new_modifiers = 0 if event.shift_pressed: new_modifiers |= 1 @@ -86,97 +103,108 @@ func get_modifiers(event): new_modifiers |= 4 return new_modifiers -func _gui_input(event : InputEvent) -> void: - if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed() and !float_only: - var expression_editor : Window = load("res://material_maker/widgets/float_edit/expression_editor.tscn").instantiate() - add_child(expression_editor) - expression_editor.edit_parameter("Expression editor - "+name, text, self, "set_value_from_expression_editor") - accept_event() - if !slider.visible or !sliding and !editable: - return - if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT: - if event.is_pressed(): - if event.double_click: - await get_tree().process_frame - select_all() - accept_event() - else: - last_position = event.position.x - start_position = last_position + +func _gui_input(event: InputEvent) -> void: + if mode == Modes.IDLE: + # Handle Drag-Start + if event is InputEventMouseMotion and Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): + if $Edit.text.is_valid_float(): + mode = Modes.SLIDING + start_position = event.position.x start_value = float_value - sliding = true from_lower_bound = float_value <= min_value from_upper_bound = float_value >= max_value modifiers = get_modifiers(event) - emit_signal("value_changed_undo", float_value, false) - editable = false - selecting_enabled = false - else: - sliding = false - editable = true - selecting_enabled = true - elif sliding and event is InputEventMouseMotion and event.button_mask == MOUSE_BUTTON_MASK_LEFT: - var new_modifiers = get_modifiers(event) - if new_modifiers != modifiers: - start_position = last_position - start_value = float_value - modifiers = new_modifiers - else: + + if event is InputEventMouseButton: + # Handle Right Click (Expression Editor) + if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed and !float_only: + var expression_editor: Window = load("res://material_maker/widgets/float_edit/expression_editor.tscn").instantiate() + add_child(expression_editor) + expression_editor.edit_parameter( + "Expression editor - " + name, + $Edit.text, self, + "set_value_from_expression_editor") + accept_event() + + # Handle Edit-Click (on button up!) + if event.button_index == MOUSE_BUTTON_LEFT: + if not event.pressed: + mode = Modes.EDITING + accept_event() + + if mode == Modes.SLIDING: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and not event.pressed: + mode = Modes.IDLE + set_value(float_value, true) + accept_event() + + if event is InputEventMouseMotion and event.button_mask == MOUSE_BUTTON_LEFT: last_position = event.position.x - var delta : float = last_position-start_position - var current_step = step + + last_position = event.position.x + + var delta: float = last_position-start_position + var current_step := step + if event.is_command_or_control_pressed(): delta *= 0.2 elif event.shift_pressed: - delta *= 5.0 + delta *= 0.2 if event.alt_pressed: current_step *= 0.01 - var v : float = start_value+sign(delta)*pow(abs(delta)*0.005, 2)*abs(max_value - min_value) + + var v: float = start_value + delta / (size.x / abs(max_value - min_value)) + if current_step != 0: - v = min_value+floor((v - min_value)/current_step)*current_step - if !from_lower_bound and v < min_value: + v = min_value + floor((v - min_value)/current_step) * current_step + + if from_lower_bound and v > min_value: + from_lower_bound = false + + if from_upper_bound and v < max_value: + from_upper_bound = false + + if not from_lower_bound and v < min_value: v = min_value - if !from_upper_bound and v > max_value: + + if not from_upper_bound and v > max_value: v = max_value - set_value(v) - emit_signal("value_changed", float_value) - emit_signal("value_changed_undo", float_value, true) - accept_event() - elif event is InputEventKey and !event.echo: - match event.keycode: - KEY_SHIFT, KEY_CTRL, KEY_ALT: - start_position = last_position - start_value = float_value - modifiers = get_modifiers(event) -func _on_LineEdit_text_changed(_new_text : String) -> void: - pass + set_value(v, true, true) + accept_event() + + if mode == Modes.EDITING: + if event.is_action("ui_accept"): + set_value($Edit.text) + mode = Modes.IDLE + + + +func _on_edit_focus_exited() -> void: + if mode == Modes.EDITING: + set_value($Edit.text) + mode = Modes.IDLE + + +func _on_edit_text_submitted(new_text: String) -> void: + if not mode == Modes.EDITING: + return + + mode = Modes.IDLE -func _on_LineEdit_text_entered(new_text : String, release = true) -> void: if new_text.is_valid_float(): - var new_value : float = new_text.to_float() + var new_value: float = new_text.to_float() if abs(float_value-new_value) > 0.00001: float_value = new_value - do_update() - emit_signal("value_changed", float_value) - emit_signal("value_changed_undo", float_value, false) - $Slider.visible = true + set_value(float_value, true) elif float_only or new_text == "": - do_update() - emit_signal("value_changed", float_value) - emit_signal("value_changed_undo", float_value, false) - $Slider.visible = true + set_value(float_value, true) else: - emit_signal("value_changed", new_text) - emit_signal("value_changed_undo", new_text, false) - $Slider.visible = false - if release: - release_focus() - -func _on_FloatEdit_focus_entered(): - select_all() - -func _on_LineEdit_focus_exited() -> void: - select(0, 0) - _on_LineEdit_text_entered(text, false) - select(0, 0) + set_value(new_text, true) + + + + +func get_decimal_places(v: float) -> int: + return (str(v)+".").split(".")[1].length() diff --git a/material_maker/widgets/float_edit/float_edit.tscn b/material_maker/widgets/float_edit/float_edit.tscn index fe3645277..b62c55b59 100644 --- a/material_maker/widgets/float_edit/float_edit.tscn +++ b/material_maker/widgets/float_edit/float_edit.tscn @@ -1,46 +1,39 @@ -[gd_scene load_steps=2 format=3 uid="uid://rflulhsuy3ax"] +[gd_scene load_steps=3 format=3 uid="uid://rflulhsuy3ax"] [ext_resource type="Script" path="res://material_maker/widgets/float_edit/float_edit.gd" id="1"] -[node name="FloatEdit" type="LineEdit"] -anchors_preset = 11 -anchor_left = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -1280.0 -offset_right = -1222.0 -offset_bottom = -696.0 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_umggk"] +bg_color = Color(1, 1, 1, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +corner_detail = 4 + +[node name="FloatEdit" type="PanelContainer"] +clip_children = 1 +offset_right = 71.0 +offset_bottom = 31.0 focus_mode = 1 -text = "0.5" -context_menu_enabled = false -virtual_keyboard_enabled = false -shortcut_keys_enabled = false -caret_blink = true +theme_override_styles/panel = SubResource("StyleBoxFlat_umggk") script = ExtResource("1") -[node name="Slider" type="ColorRect" parent="."] -custom_minimum_size = Vector2(0, 2) -layout_mode = 0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 2.0 -offset_top = -3.0 -offset_right = -2.0 -offset_bottom = -3.0 +[node name="Slider" type="ProgressBar" parent="."] +layout_mode = 2 +size_flags_vertical = 1 mouse_filter = 2 -color = Color(0.501961, 0.501961, 0.501961, 1) +theme_type_variation = &"MM_NodeFloatEdit" +show_percentage = false -[node name="Cursor" type="ColorRect" parent="Slider"] -custom_minimum_size = Vector2(3, 2) -layout_mode = 0 -offset_right = 3.0 -offset_bottom = 1.0 +[node name="Edit" type="LineEdit" parent="."] +layout_mode = 2 mouse_filter = 2 +theme_type_variation = &"MM_NodeFloatEdit" +alignment = 2 +flat = true [connection signal="focus_entered" from="." to="." method="_on_FloatEdit_focus_entered"] [connection signal="focus_exited" from="." to="." method="_on_LineEdit_focus_exited"] [connection signal="resized" from="." to="." method="do_update"] -[connection signal="text_changed" from="." to="." method="_on_LineEdit_text_changed"] -[connection signal="text_submitted" from="." to="." method="_on_LineEdit_text_entered"] -[connection signal="resized" from="Slider" to="." method="do_update"] +[connection signal="focus_exited" from="Edit" to="." method="_on_edit_focus_exited"] +[connection signal="text_submitted" from="Edit" to="." method="_on_edit_text_submitted"] From 5d2100ef678907c8fff013b72b02f3207ba5fb9d Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 16 Jul 2024 22:40:11 +0200 Subject: [PATCH 09/42] Allow CTRL+Scrolling on new float edit --- .../widgets/float_edit/float_edit.gd | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 5a18fe8a9..7854aeea5 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -63,7 +63,7 @@ func get_value() -> String: func set_value(v: Variant, notify := false, merge_undos := false) -> void: if v is int: v = float(v) - + if v is float: float_value = v if get_decimal_places(v) < _step_decimals: @@ -79,8 +79,10 @@ func set_value(v: Variant, notify := false, merge_undos := false) -> void: if v.is_valid_float(): if get_decimal_places(float(v)) < _step_decimals: v = v.pad_decimals(_step_decimals) + $Slider.value = float(v) + else: + $Slider.value = min_value $Edit.text = v - $Slider.value = min_value if notify: emit_signal("value_changed", v) emit_signal("value_changed_undo", v, merge_undos) @@ -132,6 +134,19 @@ func _gui_input(event: InputEvent) -> void: if not event.pressed: mode = Modes.EDITING accept_event() + + if event.is_command_or_control_pressed() and $Edit.text.is_valid_float() and event.pressed: + var amount := step + if is_equal_approx(step, 0.01): + amount = 0.1 + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + set_value(max(float($Edit.text)-amount, min_value), true, true) + accept_event() + elif event.button_index == MOUSE_BUTTON_WHEEL_UP: + set_value(min(float($Edit.text)+amount, max_value), true, true) + accept_event() + + if mode == Modes.SLIDING: if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and not event.pressed: @@ -148,7 +163,7 @@ func _gui_input(event: InputEvent) -> void: var current_step := step if event.is_command_or_control_pressed(): - delta *= 0.2 + delta *= 2 elif event.shift_pressed: delta *= 0.2 if event.alt_pressed: @@ -182,9 +197,7 @@ func _gui_input(event: InputEvent) -> void: func _on_edit_focus_exited() -> void: - if mode == Modes.EDITING: - set_value($Edit.text) - mode = Modes.IDLE + _on_edit_text_submitted($Edit.text) func _on_edit_text_submitted(new_text: String) -> void: @@ -198,6 +211,8 @@ func _on_edit_text_submitted(new_text: String) -> void: if abs(float_value-new_value) > 0.00001: float_value = new_value set_value(float_value, true) + else: + set_value(float_value) elif float_only or new_text == "": set_value(float_value, true) else: From 9587edadccfafe5c33ef4fa6d598eab3a06aae95 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 16 Jul 2024 22:47:17 +0200 Subject: [PATCH 10/42] Allow right click > Open Expression Editor when Editing value --- .../widgets/float_edit/float_edit.gd | 26 +++++++++---------- .../widgets/float_edit/float_edit.tscn | 2 ++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 7854aeea5..0fba549ca 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -119,16 +119,6 @@ func _gui_input(event: InputEvent) -> void: modifiers = get_modifiers(event) if event is InputEventMouseButton: - # Handle Right Click (Expression Editor) - if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed and !float_only: - var expression_editor: Window = load("res://material_maker/widgets/float_edit/expression_editor.tscn").instantiate() - add_child(expression_editor) - expression_editor.edit_parameter( - "Expression editor - " + name, - $Edit.text, self, - "set_value_from_expression_editor") - accept_event() - # Handle Edit-Click (on button up!) if event.button_index == MOUSE_BUTTON_LEFT: if not event.pressed: @@ -188,12 +178,24 @@ func _gui_input(event: InputEvent) -> void: set_value(v, true, true) accept_event() - + if mode == Modes.EDITING: if event.is_action("ui_accept"): set_value($Edit.text) mode = Modes.IDLE + if mode == Modes.EDITING or mode == Modes.IDLE: + if event is InputEventMouseButton: + # Handle Right Click (Expression Editor) + if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed and !float_only: + var expression_editor: Window = load("res://material_maker/widgets/float_edit/expression_editor.tscn").instantiate() + add_child(expression_editor) + expression_editor.edit_parameter( + "Expression editor - " + name, + $Edit.text, self, + "set_value_from_expression_editor") + accept_event() + func _on_edit_focus_exited() -> void: @@ -219,7 +221,5 @@ func _on_edit_text_submitted(new_text: String) -> void: set_value(new_text, true) - - func get_decimal_places(v: float) -> int: return (str(v)+".").split(".")[1].length() diff --git a/material_maker/widgets/float_edit/float_edit.tscn b/material_maker/widgets/float_edit/float_edit.tscn index b62c55b59..40db0d46a 100644 --- a/material_maker/widgets/float_edit/float_edit.tscn +++ b/material_maker/widgets/float_edit/float_edit.tscn @@ -30,10 +30,12 @@ layout_mode = 2 mouse_filter = 2 theme_type_variation = &"MM_NodeFloatEdit" alignment = 2 +context_menu_enabled = false flat = true [connection signal="focus_entered" from="." to="." method="_on_FloatEdit_focus_entered"] [connection signal="focus_exited" from="." to="." method="_on_LineEdit_focus_exited"] [connection signal="resized" from="." to="." method="do_update"] [connection signal="focus_exited" from="Edit" to="." method="_on_edit_focus_exited"] +[connection signal="gui_input" from="Edit" to="." method="_gui_input"] [connection signal="text_submitted" from="Edit" to="." method="_on_edit_text_submitted"] From 22d3130c85b03664e481151583206c2bea328d38 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 16 Jul 2024 23:27:33 +0200 Subject: [PATCH 11/42] New Output-Preview indicators --- material_maker/nodes/base.gd | 33 ++++++++++++++++------- material_maker/nodes/generic/generic.gd | 36 +++++++++++-------------- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/material_maker/nodes/base.gd b/material_maker/nodes/base.gd index f033c0349..4382bbe07 100644 --- a/material_maker/nodes/base.gd +++ b/material_maker/nodes/base.gd @@ -133,10 +133,20 @@ func _notification(what : int) -> void: var portgroup_width : int var portgroup_stylebox : StyleBox +var portpreview_radius : float +var portpreview_color : Color +var portpreview_width : float + + func on_theme_changed() -> void: portgroup_width = get_theme_constant("width", "MM_NodePortGroup") portgroup_stylebox = get_theme_stylebox("panel", "MM_NodePortGroup") queue_redraw() + + portpreview_radius = get_theme_constant("portpreview_radius", "GraphNode") + portpreview_color = get_theme_color("portpreview_color", "GraphNode") + portpreview_width = get_theme_constant("portpreview_width", "GraphNode") + func _draw_port(slot_index: int, position: Vector2i, left: bool, color: Color): if left: @@ -155,6 +165,7 @@ func _draw_port(slot_index: int, position: Vector2i, left: bool, color: Color): draw_portgroup_stylebox(conn_pos1, conn_pos2) draw_circle(position, 5, color, true, -1, true) + func _draw() -> void: var color : Color = get_theme_color("title_color") # warning-ignore:narrowing_conversion @@ -180,14 +191,14 @@ func _draw() -> void: preview_port[1] = -1 preview_locked[0] = preview_locked[0] || preview_locked[1] for i in range(outputs.size()): - var j = -1 - if i == preview_port[0]: - j = 0 - elif i == preview_port[1]: - j = 1 - if j != -1: - var conn_pos = get_output_port_position(i) - draw_texture_rect(PREVIEW_LOCKED_ICON if preview_locked[j] else PREVIEW_ICON, Rect2(conn_pos.x-14, conn_pos.y-4, 7, 7), false, color) + var conn_pos = get_output_port_position(i) + for preview in range(2): + if i == preview_port[preview]: + if preview_locked[preview]: + draw_circle(conn_pos, portpreview_radius, portpreview_color, false, 0.1*portpreview_width, true) + draw_line(conn_pos+Vector2(-4,4), conn_pos+Vector2(4,-4), portpreview_color, 0.075*portpreview_width, true) + else: + draw_circle(conn_pos, portpreview_radius, portpreview_color, false, 0.1*portpreview_width, true) if show_outputs: var string : StringName = TranslationServer.translate(outputs[i].shortdesc) if outputs[i].has("shortdesc") else StringName(tr("Output")+" "+str(i)) var string_size : Vector2 = font.get_string_size(string) @@ -197,7 +208,11 @@ func _draw() -> void: if generator.rendering_time > 0: var time_color : Color = get_rendering_time_color(generator.rendering_time) draw_string(font, Vector2i(0, size.y+12), str(generator.rendering_time)+"ms", HORIZONTAL_ALIGNMENT_CENTER, size.x, 12, time_color) - + if generator != null and generator.preview >= 0 and get_output_port_count() > 0: + var conn_pos = get_output_port_position(generator.preview) + draw_circle(conn_pos, 3, portpreview_color, true) + + func draw_portgroup_stylebox(first_port : Vector2, last_port : Vector2) -> void: var stylebox_position: Vector2 = first_port + Vector2(-0.5,-0.5) * portgroup_width var stylebox_size: Vector2 = Vector2(portgroup_width, last_port.y - first_port.y + portgroup_width) diff --git a/material_maker/nodes/generic/generic.gd b/material_maker/nodes/generic/generic.gd index 645a7248c..9ef0b4461 100644 --- a/material_maker/nodes/generic/generic.gd +++ b/material_maker/nodes/generic/generic.gd @@ -39,21 +39,7 @@ func generic_button_create_popup(): popup_menu.connect("id_pressed",Callable(self,"update_generic")) popup_menu.popup(Rect2(get_global_mouse_position(), Vector2(0, 0))) -var portpreview_radius : float -var portpreview_color : Color -var portpreview_width : float - -func on_theme_changed() -> void: - portpreview_radius = get_theme_constant("portpreview_radius", "GraphNode") - portpreview_color = get_theme_color("portpreview_color", "GraphNode") - portpreview_width = get_theme_constant("portpreview_width", "GraphNode") - super.on_theme_changed() - -func _draw() -> void: - super._draw() - if generator != null and generator.preview >= 0 and get_output_port_count() > 0: - var conn_pos = get_output_port_position(generator.preview) - draw_circle(conn_pos, portpreview_radius, portpreview_color, false, 0.1*portpreview_width, true) + func set_generator(g : MMGenBase) -> void: super.set_generator(g) @@ -375,13 +361,21 @@ func restore_preview_widget() -> void: preview.get_parent().remove_child(preview) preview.add_child(preview_timer) var child_count = get_child_count() - var preview_parent = get_child(child_count-1) - while preview_parent is Container: - child_count = preview_parent.get_child_count() - preview_parent = preview_parent.get_child(child_count-1) - if preview_parent == null: + #var preview_parent = get_child(child_count-1) + #while preview_parent is Container: + #child_count = preview_parent.get_child_count() + #preview_parent = preview_parent.get_child(child_count-1) + #if preview_parent == null: + #preview_parent = Control.new() + #get_child(get_child_count()-1).add_child(preview_parent) + #preview_parent.add_child(preview) + var preview_parent: Control = null + if has_node("PreviewParent"): + preview_parent = get_node("PreviewParent") + else: preview_parent = Control.new() - get_child(get_child_count()-1).add_child(preview_parent) + preview_parent.name = "PreviewParent" + add_child(preview_parent) preview_parent.add_child(preview) preview.visible = false update_preview() From 16073a484894c83787633402893aa11526d7d525 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Wed, 17 Jul 2024 10:01:21 +0200 Subject: [PATCH 12/42] Adjustments to float edit --- .../widgets/float_edit/float_edit.gd | 6 +++++- .../widgets/float_edit/float_edit.tscn | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 0fba549ca..2f1653b08 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -128,7 +128,11 @@ func _gui_input(event: InputEvent) -> void: if event.is_command_or_control_pressed() and $Edit.text.is_valid_float() and event.pressed: var amount := step if is_equal_approx(step, 0.01): - amount = 0.1 + if event.shift_pressed: + amount = 0.01 + else: + amount = 0.1 + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: set_value(max(float($Edit.text)-amount, min_value), true, true) accept_event() diff --git a/material_maker/widgets/float_edit/float_edit.tscn b/material_maker/widgets/float_edit/float_edit.tscn index 40db0d46a..1cb13881e 100644 --- a/material_maker/widgets/float_edit/float_edit.tscn +++ b/material_maker/widgets/float_edit/float_edit.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://rflulhsuy3ax"] +[gd_scene load_steps=4 format=3 uid="uid://rflulhsuy3ax"] [ext_resource type="Script" path="res://material_maker/widgets/float_edit/float_edit.gd" id="1"] @@ -10,10 +10,17 @@ corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 corner_detail = 4 +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_t5q7m"] +content_margin_left = 3.0 +content_margin_top = 2.0 +content_margin_right = 3.0 +content_margin_bottom = 2.0 + [node name="FloatEdit" type="PanelContainer"] clip_children = 1 -offset_right = 71.0 -offset_bottom = 31.0 +offset_right = 158.0 +offset_bottom = 23.0 +size_flags_vertical = 4 focus_mode = 1 theme_override_styles/panel = SubResource("StyleBoxFlat_umggk") script = ExtResource("1") @@ -29,9 +36,12 @@ show_percentage = false layout_mode = 2 mouse_filter = 2 theme_type_variation = &"MM_NodeFloatEdit" +theme_override_styles/focus = SubResource("StyleBoxEmpty_t5q7m") +theme_override_styles/read_only = SubResource("StyleBoxEmpty_t5q7m") +theme_override_styles/normal = SubResource("StyleBoxEmpty_t5q7m") +text = "Value" alignment = 2 context_menu_enabled = false -flat = true [connection signal="focus_entered" from="." to="." method="_on_FloatEdit_focus_entered"] [connection signal="focus_exited" from="." to="." method="_on_LineEdit_focus_exited"] From df36f17d5fb96fce30aedf3cc4da33008113fc42 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Wed, 17 Jul 2024 10:02:02 +0200 Subject: [PATCH 13/42] Make FloatEdit font slightly smaller --- material_maker/theme/modern.tres | 1 + 1 file changed, 1 insertion(+) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 602965a27..d69e9a496 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -453,6 +453,7 @@ MM_FlexibleTab/constants/separation = 3 MM_MainBackground/base_type = &"PanelContainer" MM_MainBackground/styles/panel = SubResource("StyleBoxFlat_wqwm5") MM_NodeFloatEdit/base_type = &"ProgressBar" +MM_NodeFloatEdit/font_sizes/font_size = 15 MM_NodeFloatEdit/fonts/font = SubResource("FontVariation_80ifi") MM_NodeFloatEdit/styles/background = SubResource("StyleBoxFlat_3llvn") MM_NodeFloatEdit/styles/fill = SubResource("StyleBoxFlat_3c753") From b7e393d172ec75fe6917e7fdf66680ce0f0fd0f6 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Wed, 17 Jul 2024 10:03:19 +0200 Subject: [PATCH 14/42] Don't show incorrect preview indication when first preview is locked If the Preview 2D (1) preview is locked, it will now not indicate ports on other nodes as previewed, that aren't actually being previewed. --- material_maker/nodes/base.gd | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/material_maker/nodes/base.gd b/material_maker/nodes/base.gd index 4382bbe07..d85218a12 100644 --- a/material_maker/nodes/base.gd +++ b/material_maker/nodes/base.gd @@ -182,9 +182,10 @@ func _draw() -> void: var preview_port : Array = [ -1, -1 ] var preview_locked : Array = [ false, false ] for i in range(2): - if get_parent().locked_preview[i] != null and get_parent().locked_preview[i].generator == generator: - preview_port[i] = get_parent().locked_preview[i].output_index - preview_locked[i] = true + if get_parent().locked_preview[i] != null: + if get_parent().locked_preview[i].generator == generator: + preview_port[i] = get_parent().locked_preview[i].output_index + preview_locked[i] = true elif get_parent().current_preview[i] != null and get_parent().current_preview[i].generator == generator: preview_port[i] = get_parent().current_preview[i].output_index if preview_port[0] == preview_port[1]: From 1d5acd1c7ce639a6db7ff98b639acc2a64d878cd Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Wed, 17 Jul 2024 12:06:32 +0200 Subject: [PATCH 15/42] Adjust port colors --- addons/material_maker/engine/io_types.gd | 5 ++++- addons/material_maker/nodes/io_types.mmt | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/addons/material_maker/engine/io_types.gd b/addons/material_maker/engine/io_types.gd index 5286040b1..1d1c1eec7 100644 --- a/addons/material_maker/engine/io_types.gd +++ b/addons/material_maker/engine/io_types.gd @@ -16,7 +16,10 @@ func _ready(): if t.has("label"): type_names.push_back(t.name) var c = t.color - t.color = Color(c.r, c.g, c.b, c.a) + if c is String: + t.color = Color(c) + else: + t.color = Color(c.r, c.g, c.b, c.a) file = FileAccess.open(p+"/preview_"+t.name+".gdshader", FileAccess.READ) if file != null: t.preview = file.get_as_text() diff --git a/addons/material_maker/nodes/io_types.mmt b/addons/material_maker/nodes/io_types.mmt index 5586ea1a5..31ebaadf5 100644 --- a/addons/material_maker/nodes/io_types.mmt +++ b/addons/material_maker/nodes/io_types.mmt @@ -10,7 +10,7 @@ { "type":"rgb", "expr":"vec3($(value))" }, { "type":"rgba", "expr":"vec4(vec3($(value)), 1.0)" } ], - "color":{ "r":0.5, "g":0.5, "b":0.5, "a":1.0 } + "color":"#8D8D8D", }, { "name":"rgb", @@ -23,7 +23,7 @@ { "type":"f", "expr":"(dot($(value), vec3(1.0))/3.0)" }, { "type":"rgba", "expr":"vec4($(value), 1.0)" } ], - "color":{ "r":0.5, "g":0.5, "b":1.0, "a":1.0 } + "color":"#33A3C7", }, { "name":"rgba", @@ -36,7 +36,7 @@ { "type":"f", "expr":"(dot(($(value)).rgb, vec3(1.0))/3.0)" }, { "type":"rgb", "expr":"(($(value)).rgb)" } ], - "color":{ "r":0.0, "g":0.5, "b":0.0, "a":0.5 } + "color":"#335DC7", }, { "name":"sdf2d", @@ -45,7 +45,7 @@ "paramdefs":"vec2 uv", "params":"uv", "slot_type":1, - "color":{ "r":1.0, "g":0.5, "b":0.0, "a":1.0 } + "color":"#E8A31D", }, { "name":"sdf3d", @@ -57,7 +57,7 @@ "convert":[ { "type":"sdf3dc", "expr":"vec2($(value), 0.0)" } ], - "color":{ "r":0.5, "g":0.0, "b":0.0, "a":1.0 } + "color":"#EB6135", }, { "name":"sdf3dc", @@ -69,7 +69,7 @@ "convert":[ { "type":"sdf3d", "expr":"($(value)).x" } ], - "color":{ "r":1.0, "g":0.0, "b":0.0, "a":1.0 } + "color":"#DF2626", }, { "name":"tex3d_gs", @@ -81,7 +81,7 @@ "convert":[ { "type":"tex3d", "expr":"vec3($(value))" } ], - "color":{ "r":0.8, "g":0.0, "b":1.0, "a":1.0 } + "color":"#A734DD", }, { "name":"tex3d", @@ -93,7 +93,7 @@ "convert":[ { "type":"tex3d_gs", "expr":"(dot($(value), vec3(1.0))/3.0)" } ], - "color":{ "r":1.0, "g":0.0, "b":1.0, "a":1.0 } + "color":"#E739D5", }, { "name":"v4v4", @@ -102,7 +102,7 @@ "paramdefs":"vec4 p", "params":"p", "slot_type":4, - "color":{ "r":0.6, "g":0.4, "b":0.1, "a":1.0 } + "color":"#B79074", }, { "name":"fill", @@ -111,11 +111,11 @@ "paramdefs":"vec2 uv", "params":"uv", "slot_type":5, - "color":{ "r":0.86, "g":0.73, "b":0.53, "a":1.0 } + "color":"#2DB76C", }, { "name":"any", "slot_type":42, - "color":{ "r":1.0, "g":1.0, "b":1.0, "a":1.0 } + "color":"#DEDEDE", } ] From 292bfb255c540f7960c2bc364034d4f218d81e71 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Wed, 17 Jul 2024 12:07:48 +0200 Subject: [PATCH 16/42] Make node parameter label size more adaptive Makes them smaller if possible and have a consistent size. --- material_maker/nodes/generic/generic.gd | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/material_maker/nodes/generic/generic.gd b/material_maker/nodes/generic/generic.gd index 9ef0b4461..94e342f0c 100644 --- a/material_maker/nodes/generic/generic.gd +++ b/material_maker/nodes/generic/generic.gd @@ -484,6 +484,7 @@ func update_node() -> void: index = -1 var previous_focus = null var first_focus = null + var labels := [] for p in generator.get_parameter_defs(): if !p.has("name") or !p.has("type"): continue @@ -514,9 +515,7 @@ func update_node() -> void: if label != "": var label_widget = Label.new() label_widget.text = label - label_widget.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL - label_widget.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS - label_widget.custom_minimum_size.x = 100 + labels.append(label_widget) label_widget.theme_type_variation = "MM_NodePropertyLabel" hsizer.add_child(label_widget) control.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL @@ -528,6 +527,13 @@ func update_node() -> void: else: first_focus = control previous_focus = control + + var label_max_width = labels.reduce(func(accum, label): return max(accum, label.size.x), 0) + label_max_width = min(100, label_max_width) + for label in labels: + label.custom_minimum_size.x = label_max_width + label.size.x = label_max_width + label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS if first_focus != null: previous_focus.focus_next = first_focus.get_path() first_focus.focus_previous = previous_focus.get_path() @@ -568,6 +574,7 @@ func update_node() -> void: # Preview restore_preview_widget() + func load_generator() -> void: var dialog = preload("res://material_maker/windows/file_dialog/file_dialog.tscn").instantiate() dialog.custom_minimum_size = Vector2(500, 500) From 2bf50c20bc6085334f75083b2fc4f57b96190b88 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Wed, 17 Jul 2024 14:02:57 +0200 Subject: [PATCH 17/42] Add hover and focus indication to float edit --- material_maker/theme/modern.tres | 65 ++++++++++++++++--- .../widgets/float_edit/float_edit.gd | 63 +++++++++++++----- .../widgets/float_edit/float_edit.tscn | 21 +++--- 3 files changed, 116 insertions(+), 33 deletions(-) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index d69e9a496..1471216b2 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=49 format=3 uid="uid://b628lwfk6ig2c"] +[gd_resource type="Theme" load_steps=52 format=3 uid="uid://b628lwfk6ig2c"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_hqoqt"] [ext_resource type="FontFile" uid="uid://btybkvkb8rtol" path="res://material_maker/fonts/DroidSansFallback.ttf" id="2_1xp11"] @@ -232,11 +232,57 @@ opentype_features = { 1953396077: 1 } -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3llvn"] -bg_color = Color(0.197937, 0.197937, 0.197937, 1) +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_b7ktg"] +bg_color = Color(0.657163, 0.305796, 0.703349, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3c753"] -bg_color = Color(0.654337, 0.323278, 0.716035, 1) +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hgk0b"] +bg_color = Color(0.605934, 0.266905, 0.650558, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0b15u"] +content_margin_left = 3.0 +content_margin_top = 3.0 +content_margin_right = 3.0 +content_margin_bottom = 3.0 +draw_center = false +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.490196, 0.505882, 0.545098, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r1sff"] +content_margin_left = 3.0 +content_margin_top = 3.0 +content_margin_right = 3.0 +content_margin_bottom = 3.0 +bg_color = Color(0.266667, 0.278431, 0.301961, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8fogc"] +content_margin_left = 3.0 +content_margin_top = 3.0 +content_margin_right = 3.0 +content_margin_bottom = 3.0 +bg_color = Color(0.168627, 0.176471, 0.192157, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k2ns1"] bg_color = Color(0.8, 0.8, 0.8, 1) @@ -452,11 +498,14 @@ MM_FlexibleTab/base_type = &"TabBar" MM_FlexibleTab/constants/separation = 3 MM_MainBackground/base_type = &"PanelContainer" MM_MainBackground/styles/panel = SubResource("StyleBoxFlat_wqwm5") -MM_NodeFloatEdit/base_type = &"ProgressBar" +MM_NodeFloatEdit/base_type = &"Button" MM_NodeFloatEdit/font_sizes/font_size = 15 MM_NodeFloatEdit/fonts/font = SubResource("FontVariation_80ifi") -MM_NodeFloatEdit/styles/background = SubResource("StyleBoxFlat_3llvn") -MM_NodeFloatEdit/styles/fill = SubResource("StyleBoxFlat_3c753") +MM_NodeFloatEdit/styles/fill_hover = SubResource("StyleBoxFlat_b7ktg") +MM_NodeFloatEdit/styles/fill_normal = SubResource("StyleBoxFlat_hgk0b") +MM_NodeFloatEdit/styles/focus = SubResource("StyleBoxFlat_0b15u") +MM_NodeFloatEdit/styles/hover = SubResource("StyleBoxFlat_r1sff") +MM_NodeFloatEdit/styles/normal = SubResource("StyleBoxFlat_8fogc") MM_NodePortGroup/constants/width = 4 MM_NodePortGroup/styles/panel = SubResource("StyleBoxFlat_k2ns1") MM_NodePropertyLabel/base_type = &"Label" diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 2f1653b08..e7a1a458e 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -21,7 +21,7 @@ var float_value: float = 0.5 _step_decimals = get_decimal_places(v) $Slider.step = v -# For display. Will always show at least as many decimal places as step. +# For display. Will always show at least this many decimal places as step. var _step_decimals := 2 @export var float_only: bool = false @@ -33,9 +33,6 @@ var modifiers: int var from_lower_bound: bool = false var from_upper_bound: bool = false -@onready var slider = $Slider -@onready var cursor = $Slider/Cursor - signal value_changed(value) signal value_changed_undo(value, merge_undo) @@ -44,6 +41,7 @@ var mode := Modes.IDLE: set(m): mode = m if mode == Modes.EDITING: + $Edit.editable = true $Edit.mouse_filter = MOUSE_FILTER_STOP $Edit.grab_focus() $Edit.select_all() @@ -51,9 +49,10 @@ var mode := Modes.IDLE: $Edit.alignment = HORIZONTAL_ALIGNMENT_LEFT $Slider.value = min_value else: + $Edit.editable = false $Edit.alignment = HORIZONTAL_ALIGNMENT_RIGHT $Edit.mouse_filter = MOUSE_FILTER_IGNORE - grab_focus() + update() func get_value() -> String: @@ -117,7 +116,12 @@ func _gui_input(event: InputEvent) -> void: from_lower_bound = float_value <= min_value from_upper_bound = float_value >= max_value modifiers = get_modifiers(event) - + + if event.is_action("ui_accept") and event.pressed: + mode = Modes.EDITING + accept_event() + return + if event is InputEventMouseButton: # Handle Edit-Click (on button up!) if event.button_index == MOUSE_BUTTON_LEFT: @@ -139,8 +143,6 @@ func _gui_input(event: InputEvent) -> void: elif event.button_index == MOUSE_BUTTON_WHEEL_UP: set_value(min(float($Edit.text)+amount, max_value), true, true) accept_event() - - if mode == Modes.SLIDING: if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and not event.pressed: @@ -182,16 +184,11 @@ func _gui_input(event: InputEvent) -> void: set_value(v, true, true) accept_event() - - if mode == Modes.EDITING: - if event.is_action("ui_accept"): - set_value($Edit.text) - mode = Modes.IDLE if mode == Modes.EDITING or mode == Modes.IDLE: if event is InputEventMouseButton: # Handle Right Click (Expression Editor) - if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed and !float_only: + if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed and not float_only: var expression_editor: Window = load("res://material_maker/widgets/float_edit/expression_editor.tscn").instantiate() add_child(expression_editor) expression_editor.edit_parameter( @@ -201,9 +198,16 @@ func _gui_input(event: InputEvent) -> void: accept_event() +func _on_edit_focus_entered() -> void: + $Edit.queue_redraw() + if mode == Modes.IDLE: + mode = Modes.EDITING + func _on_edit_focus_exited() -> void: - _on_edit_text_submitted($Edit.text) + $Edit.queue_redraw() + if mode == Modes.EDITING: + _on_edit_text_submitted($Edit.text) func _on_edit_text_submitted(new_text: String) -> void: @@ -227,3 +231,32 @@ func _on_edit_text_submitted(new_text: String) -> void: func get_decimal_places(v: float) -> int: return (str(v)+".").split(".")[1].length() + + +func _notification(what): + match what: + NOTIFICATION_THEME_CHANGED: + update() + + +func update() -> void: + var is_hovered := Rect2(Vector2(), size).has_point(get_local_mouse_position()) or mode == Modes.SLIDING + $Slider.add_theme_stylebox_override("fill", get_theme_stylebox("fill_hover" if is_hovered else "fill_normal")) + $Slider.add_theme_stylebox_override("background", get_theme_stylebox("hover" if is_hovered else "normal")) + + $Edit.add_theme_color_override("font_uneditable_color", get_theme_color("font_color")) + $Edit.queue_redraw() + + +func _ready() -> void: + update() + +func _on_mouse_entered() -> void: + update() + +func _on_mouse_exited() -> void: + update() + +func _on_edit_draw() -> void: + if get_viewport().gui_get_focus_owner() == self or get_viewport().gui_get_focus_owner() == $Edit: + $Edit.draw_style_box(get_theme_stylebox("focus"), Rect2(Vector2(), size)) diff --git a/material_maker/widgets/float_edit/float_edit.tscn b/material_maker/widgets/float_edit/float_edit.tscn index 1cb13881e..167538c26 100644 --- a/material_maker/widgets/float_edit/float_edit.tscn +++ b/material_maker/widgets/float_edit/float_edit.tscn @@ -2,8 +2,8 @@ [ext_resource type="Script" path="res://material_maker/widgets/float_edit/float_edit.gd" id="1"] -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_umggk"] -bg_color = Color(1, 1, 1, 1) +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gl70v"] +bg_color = Color(0.973535, 0.973535, 0.973535, 1) corner_radius_top_left = 4 corner_radius_top_right = 4 corner_radius_bottom_right = 4 @@ -18,18 +18,18 @@ content_margin_bottom = 2.0 [node name="FloatEdit" type="PanelContainer"] clip_children = 1 -offset_right = 158.0 -offset_bottom = 23.0 +offset_right = 198.0 +offset_bottom = 27.0 size_flags_vertical = 4 -focus_mode = 1 -theme_override_styles/panel = SubResource("StyleBoxFlat_umggk") +theme_type_variation = &"MM_NodeFloatEdit" +theme_override_styles/panel = SubResource("StyleBoxFlat_gl70v") script = ExtResource("1") [node name="Slider" type="ProgressBar" parent="."] layout_mode = 2 size_flags_vertical = 1 mouse_filter = 2 -theme_type_variation = &"MM_NodeFloatEdit" +value = 30.43 show_percentage = false [node name="Edit" type="LineEdit" parent="."] @@ -43,9 +43,10 @@ text = "Value" alignment = 2 context_menu_enabled = false -[connection signal="focus_entered" from="." to="." method="_on_FloatEdit_focus_entered"] -[connection signal="focus_exited" from="." to="." method="_on_LineEdit_focus_exited"] -[connection signal="resized" from="." to="." method="do_update"] +[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] +[connection signal="draw" from="Edit" to="." method="_on_edit_draw"] +[connection signal="focus_entered" from="Edit" to="." method="_on_edit_focus_entered"] [connection signal="focus_exited" from="Edit" to="." method="_on_edit_focus_exited"] [connection signal="gui_input" from="Edit" to="." method="_gui_input"] [connection signal="text_submitted" from="Edit" to="." method="_on_edit_text_submitted"] From be5df1736bdbb90b254778a6907ee2b2e836aa15 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 30 Jul 2024 12:48:47 +0200 Subject: [PATCH 18/42] Improve usage of float_edit in settings --- material_maker/theme/modern.tres | 14 +++++++++++++- material_maker/widgets/float_edit/float_edit.gd | 9 +++++++-- material_maker/windows/preferences/float_option.gd | 2 +- .../windows/preferences/float_option.tscn | 1 + .../windows/preferences/preferences.tscn | 11 +++++++---- 5 files changed, 29 insertions(+), 8 deletions(-) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 1471216b2..25de924a0 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=52 format=3 uid="uid://b628lwfk6ig2c"] +[gd_resource type="Theme" load_steps=53 format=3 uid="uid://b628lwfk6ig2c"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_hqoqt"] [ext_resource type="FontFile" uid="uid://btybkvkb8rtol" path="res://material_maker/fonts/DroidSansFallback.ttf" id="2_1xp11"] @@ -438,6 +438,17 @@ bg_color = Color(0.109804, 0.113725, 0.12549, 1) corner_radius_top_left = 3 corner_radius_top_right = 3 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wc388"] +content_margin_left = 5.0 +content_margin_top = 5.0 +content_margin_right = 5.0 +content_margin_bottom = 5.0 +bg_color = Color(0.0941176, 0.0980392, 0.101961, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 + [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_iwtn1"] content_margin_left = 4.0 @@ -559,6 +570,7 @@ TabBar/styles/tab_focus = SubResource("StyleBoxFlat_ax2cv") TabBar/styles/tab_hovered = SubResource("StyleBoxFlat_708uu") TabBar/styles/tab_selected = SubResource("StyleBoxFlat_r4jxv") TabBar/styles/tab_unselected = SubResource("StyleBoxFlat_w1kc3") +TabContainer/styles/panel = SubResource("StyleBoxFlat_wc388") Tree/constants/draw_guides = 0 Tree/constants/draw_relationship_lines = 0 Tree/styles/focus = SubResource("StyleBoxEmpty_iwtn1") diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index e7a1a458e..2cc4926ae 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -55,8 +55,13 @@ var mode := Modes.IDLE: update() -func get_value() -> String: - return $Edit.text +func get_value() -> Variant: + if $Edit.text.is_valid_float(): + return float($Edit.text) + elif float_only: + return 0 + else: + return $Edit.text func set_value(v: Variant, notify := false, merge_undos := false) -> void: diff --git a/material_maker/windows/preferences/float_option.gd b/material_maker/windows/preferences/float_option.gd index 630e20323..9da55e162 100644 --- a/material_maker/windows/preferences/float_option.gd +++ b/material_maker/windows/preferences/float_option.gd @@ -10,4 +10,4 @@ func init_from_config(config : ConfigFile) -> void: set_value(config.get_value("config", config_variable)) func update_config(config : ConfigFile) -> void: - config.set_value("config", config_variable, value) + config.set_value("config", config_variable, get_value()) diff --git a/material_maker/windows/preferences/float_option.tscn b/material_maker/windows/preferences/float_option.tscn index 3aedf7614..91efbe014 100644 --- a/material_maker/windows/preferences/float_option.tscn +++ b/material_maker/windows/preferences/float_option.tscn @@ -5,3 +5,4 @@ [node name="FloatOption" instance=ExtResource("1")] script = ExtResource("2") +config_variable = "" diff --git a/material_maker/windows/preferences/preferences.tscn b/material_maker/windows/preferences/preferences.tscn index c7855339f..e6251fcd0 100644 --- a/material_maker/windows/preferences/preferences.tscn +++ b/material_maker/windows/preferences/preferences.tscn @@ -6,7 +6,10 @@ [ext_resource type="Script" path="res://material_maker/windows/preferences/lang_option.gd" id="4"] [node name="Preferences" type="Window"] +position = Vector2i(0, 36) +size = Vector2i(610, 505) exclusive = true +popup_window = true script = ExtResource("2") [node name="VBoxContainer" type="VBoxContainer" parent="."] @@ -25,11 +28,13 @@ custom_minimum_size = Vector2(289, 172) layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +current_tab = 0 use_hidden_tabs_for_min_size = true [node name="General" type="VBoxContainer" parent="VBoxContainer/TabContainer"] layout_mode = 2 size_flags_vertical = 3 +metadata/_tab_index = 0 [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/General"] layout_mode = 2 @@ -96,7 +101,6 @@ text = "3D preview resolution:" [node name="Gui3DPreviewResolution" parent="VBoxContainer/TabContainer/General/Gui3DPreviewResolution" instance=ExtResource("3")] layout_mode = 2 tooltip_text = "Higher values result in better antialiasing, but are more demanding to render." -text = "2.0" config_variable = "ui_3d_preview_resolution" value = 2.0 min_value = 1.0 @@ -120,7 +124,6 @@ layout_mode = 2 tooltip_text = "Higher values result in better tesselation quality, but are more demanding to render and require more memory. Don't increase this setting above 256 on slower machines! This only affects the 3D preview when using tesselation, not parallax occlusion mapping." -text = "256" config_variable = "ui_3d_preview_tesselation_detail" value = 256.0 min_value = 256.0 @@ -159,7 +162,6 @@ text = "FPS limit:" layout_mode = 2 tooltip_text = "A higher FPS limit may result in smoother operation but may use more CPU/GPU resources. Higher values may increase power usage, leading to reduced battery life on laptops." -text = "145" config_variable = "fps_limit" value = 145.0 min_value = 20.0 @@ -182,7 +184,6 @@ text = "Idle FPS limit:" layout_mode = 2 tooltip_text = "A higher FPS limit may result in smoother operation but may use more CPU/GPU resources. Higher values may increase power usage, leading to reduced battery life on laptops." -text = "145" config_variable = "idle_fps_limit" value = 20.0 min_value = 1.0 @@ -194,6 +195,7 @@ float_only = true visible = false layout_mode = 2 columns = 2 +metadata/_tab_index = 1 [node name="LabelRayCount" type="Label" parent="VBoxContainer/TabContainer/Bake"] layout_mode = 2 @@ -249,6 +251,7 @@ float_only = true [node name="Graph" type="VBoxContainer" parent="VBoxContainer/TabContainer"] visible = false layout_mode = 2 +metadata/_tab_index = 2 [node name="AutoSizeComment" parent="VBoxContainer/TabContainer/Graph" instance=ExtResource("1")] layout_mode = 2 From cabe1f510d39f9165cb74c9bc734df72fa1397ca Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 30 Jul 2024 14:54:05 +0200 Subject: [PATCH 19/42] Improve clicking Added a minimum 2 pixel dragging (otherwise goes to editing), to avoid unintentional mouse movements blocking the click to edit. --- .../widgets/float_edit/float_edit.gd | 57 ++++++++++++------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 2cc4926ae..002d4be3c 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -32,6 +32,7 @@ var start_value: float var modifiers: int var from_lower_bound: bool = false var from_upper_bound: bool = false +var actually_dragging: bool = false signal value_changed(value) signal value_changed_undo(value, merge_undo) @@ -120,6 +121,7 @@ func _gui_input(event: InputEvent) -> void: start_value = float_value from_lower_bound = float_value <= min_value from_upper_bound = float_value >= max_value + actually_dragging = false modifiers = get_modifiers(event) if event.is_action("ui_accept") and event.pressed: @@ -133,7 +135,8 @@ func _gui_input(event: InputEvent) -> void: if not event.pressed: mode = Modes.EDITING accept_event() - + + # Handle CTRL+Scrolling if event.is_command_or_control_pressed() and $Edit.text.is_valid_float() and event.pressed: var amount := step if is_equal_approx(step, 0.01): @@ -151,8 +154,11 @@ func _gui_input(event: InputEvent) -> void: if mode == Modes.SLIDING: if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and not event.pressed: - mode = Modes.IDLE - set_value(float_value, true) + if actually_dragging: + mode = Modes.IDLE + set_value(float_value, true) + else: + mode = Modes.EDITING accept_event() if event is InputEventMouseMotion and event.button_mask == MOUSE_BUTTON_LEFT: @@ -161,33 +167,40 @@ func _gui_input(event: InputEvent) -> void: last_position = event.position.x var delta: float = last_position-start_position - var current_step := step + # By only setting [actually_dragging] to true after at least a 2 pixel movement, + # we can more reliably differentiate intential mouse movements from unintentional ones. + if abs(delta) > 2: + actually_dragging = true + if actually_dragging: + var current_step := step - if event.is_command_or_control_pressed(): - delta *= 2 - elif event.shift_pressed: - delta *= 0.2 - if event.alt_pressed: - current_step *= 0.01 + if event.is_command_or_control_pressed(): + delta *= 2 + elif event.shift_pressed: + delta *= 0.2 + if event.alt_pressed: + current_step *= 0.01 - var v: float = start_value + delta / (size.x / abs(max_value - min_value)) + var v: float = start_value + delta / (size.x / abs(max_value - min_value)) - if current_step != 0: - v = min_value + floor((v - min_value)/current_step) * current_step + if current_step != 0: + v = min_value + floor((v - min_value)/current_step) * current_step - if from_lower_bound and v > min_value: - from_lower_bound = false + if from_lower_bound and v > min_value: + from_lower_bound = false - if from_upper_bound and v < max_value: - from_upper_bound = false + if from_upper_bound and v < max_value: + from_upper_bound = false - if not from_lower_bound and v < min_value: - v = min_value + if not from_lower_bound and v < min_value: + v = min_value - if not from_upper_bound and v > max_value: - v = max_value + if not from_upper_bound and v > max_value: + v = max_value - set_value(v, true, true) + set_value(v, true, true) + + accept_event() if mode == Modes.EDITING or mode == Modes.IDLE: From ce55074b1784d6945b463632716f3079a74e7905 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 30 Jul 2024 15:30:42 +0200 Subject: [PATCH 20/42] Allow Ctrl+Scroll in Edit mode too --- .../widgets/float_edit/float_edit.gd | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 002d4be3c..44479e7a3 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -66,27 +66,28 @@ func get_value() -> Variant: func set_value(v: Variant, notify := false, merge_undos := false) -> void: - if v is int: + if v is int or (v is String and v.is_valid_float()): v = float(v) + if v is String and float_only: + v = min_value + if v is float: float_value = v if get_decimal_places(v) < _step_decimals: $Edit.text = str(v).pad_decimals(_step_decimals) else: $Edit.text = str(v) - $Slider.value = v + if mode != Modes.EDITING: + $Slider.value = v + else: + $Slider.value = min_value if notify: emit_signal("value_changed", float_value) emit_signal("value_changed_undo", float_value, merge_undos) - elif v is String and not float_only: - if v.is_valid_float(): - if get_decimal_places(float(v)) < _step_decimals: - v = v.pad_decimals(_step_decimals) - $Slider.value = float(v) - else: - $Slider.value = min_value + elif v is String: + $Slider.value = min_value $Edit.text = v if notify: emit_signal("value_changed", v) @@ -123,6 +124,7 @@ func _gui_input(event: InputEvent) -> void: from_upper_bound = float_value >= max_value actually_dragging = false modifiers = get_modifiers(event) + $Edit.grab_focus() if event.is_action("ui_accept") and event.pressed: mode = Modes.EDITING @@ -135,22 +137,6 @@ func _gui_input(event: InputEvent) -> void: if not event.pressed: mode = Modes.EDITING accept_event() - - # Handle CTRL+Scrolling - if event.is_command_or_control_pressed() and $Edit.text.is_valid_float() and event.pressed: - var amount := step - if is_equal_approx(step, 0.01): - if event.shift_pressed: - amount = 0.01 - else: - amount = 0.1 - - if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: - set_value(max(float($Edit.text)-amount, min_value), true, true) - accept_event() - elif event.button_index == MOUSE_BUTTON_WHEEL_UP: - set_value(min(float($Edit.text)+amount, max_value), true, true) - accept_event() if mode == Modes.SLIDING: if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and not event.pressed: @@ -214,6 +200,23 @@ func _gui_input(event: InputEvent) -> void: $Edit.text, self, "set_value_from_expression_editor") accept_event() + + # Handle CTRL+Scrolling + if event.is_command_or_control_pressed() and $Edit.text.is_valid_float() and event.pressed: + var amount := step + if is_equal_approx(step, 0.01): + if event.shift_pressed: + amount = 0.01 + else: + amount = 0.1 + + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + set_value(max(float($Edit.text)-amount, min_value), true, true) + accept_event() + elif event.button_index == MOUSE_BUTTON_WHEEL_UP: + set_value(min(float($Edit.text)+amount, max_value), true, true) + accept_event() + func _on_edit_focus_entered() -> void: From 25b4432e65ae6084cf0cd654ccff8bb36d538096 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 30 Jul 2024 15:59:01 +0200 Subject: [PATCH 21/42] Slightly improve node bg stylebox Adds a slight outline and some better content margins --- material_maker/theme/modern.tres | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 25de924a0..474e290c0 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -71,19 +71,23 @@ corner_detail = 4 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uwck0"] content_margin_left = 10.0 -content_margin_top = 4.0 +content_margin_top = 8.0 content_margin_right = 10.0 -content_margin_bottom = 4.0 +content_margin_bottom = 8.0 bg_color = Color(0.0666667, 0.0666667, 0.0784314, 1) +border_width_left = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.145762, 0.145765, 0.164989, 1) corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 corner_detail = 4 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ryqkj"] content_margin_left = 10.0 -content_margin_top = 4.0 +content_margin_top = 8.0 content_margin_right = 10.0 -content_margin_bottom = 4.0 +content_margin_bottom = 8.0 bg_color = Color(0.0666667, 0.0666667, 0.0784314, 1) border_width_left = 1 border_width_right = 1 From 01a996bda6c230ca8da29f8a68a0a894c716402a Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 30 Jul 2024 18:43:11 +0200 Subject: [PATCH 22/42] Better Option Edit Changes the OptionButton (And SizeOptionButton) a bit: - better popup background - Allow Ctrl+Scroll to cycle values --- material_maker/nodes/generic/generic.gd | 3 +- material_maker/theme/modern.tres | 30 ++++++++++++++++++- .../widgets/option_edit/option_edit.gd | 27 +++++++++++++++++ .../widgets/option_edit/option_edit.tscn | 9 ++++++ .../size_option_button/size_option_button.gd | 3 +- 5 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 material_maker/widgets/option_edit/option_edit.gd create mode 100644 material_maker/widgets/option_edit/option_edit.tscn diff --git a/material_maker/nodes/generic/generic.gd b/material_maker/nodes/generic/generic.gd index 94e342f0c..761d696c8 100644 --- a/material_maker/nodes/generic/generic.gd +++ b/material_maker/nodes/generic/generic.gd @@ -298,8 +298,7 @@ static func create_parameter_control(p : Dictionary, accept_float_expressions : control.max_size = p.last control.size_value = p.first if !p.has("default") else p.default elif p.type == "enum": - control = OptionButton.new() - control.fit_to_longest_item = false + control = preload("res://material_maker/widgets/option_edit/option_edit.tscn").instantiate() for i in range(p.values.size()): var value = p.values[i] control.add_item(value.name) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 474e290c0..f3545b931 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=53 format=3 uid="uid://b628lwfk6ig2c"] +[gd_resource type="Theme" load_steps=55 format=3 uid="uid://b628lwfk6ig2c"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_hqoqt"] [ext_resource type="FontFile" uid="uid://btybkvkb8rtol" path="res://material_maker/fonts/DroidSansFallback.ttf" id="2_1xp11"] @@ -288,6 +288,30 @@ corner_radius_top_right = 3 corner_radius_bottom_right = 3 corner_radius_bottom_left = 3 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3j6py"] +content_margin_left = 2.0 +content_margin_top = 2.0 +content_margin_right = 2.0 +content_margin_bottom = 2.0 +bg_color = Color(0.207271, 0.216386, 0.234614, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_j32ac"] +content_margin_left = 2.0 +content_margin_top = 2.0 +content_margin_right = 2.0 +content_margin_bottom = 2.0 +bg_color = Color(0.168627, 0.176471, 0.192157, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.207843, 0.215686, 0.235294, 1) +corner_radius_top_left = 2 +corner_radius_top_right = 2 +corner_radius_bottom_right = 2 +corner_radius_bottom_left = 2 +corner_detail = 4 + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_k2ns1"] bg_color = Color(0.8, 0.8, 0.8, 1) border_width_left = 1 @@ -521,6 +545,10 @@ MM_NodeFloatEdit/styles/fill_normal = SubResource("StyleBoxFlat_hgk0b") MM_NodeFloatEdit/styles/focus = SubResource("StyleBoxFlat_0b15u") MM_NodeFloatEdit/styles/hover = SubResource("StyleBoxFlat_r1sff") MM_NodeFloatEdit/styles/normal = SubResource("StyleBoxFlat_8fogc") +MM_NodeOptionEdit/base_type = &"OptionButton" +MM_NodeOptionEditPopup/base_type = &"PopupMenu" +MM_NodeOptionEditPopup/styles/hover = SubResource("StyleBoxFlat_3j6py") +MM_NodeOptionEditPopup/styles/panel = SubResource("StyleBoxFlat_j32ac") MM_NodePortGroup/constants/width = 4 MM_NodePortGroup/styles/panel = SubResource("StyleBoxFlat_k2ns1") MM_NodePropertyLabel/base_type = &"Label" diff --git a/material_maker/widgets/option_edit/option_edit.gd b/material_maker/widgets/option_edit/option_edit.gd new file mode 100644 index 000000000..8049308ff --- /dev/null +++ b/material_maker/widgets/option_edit/option_edit.gd @@ -0,0 +1,27 @@ +extends OptionButton + + +func _ready() -> void: + get_popup().theme_type_variation = "MM_NodeOptionEditPopup" + get_popup().about_to_popup.connect(_on_about_to_popup) + get_popup().transparent_bg = true + + +func _gui_input(event: InputEvent) -> void: + if event.is_command_or_control_pressed() and event is InputEventMouseButton and event.pressed: + + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN or event.button_index == MOUSE_BUTTON_WHEEL_UP: + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + selected = wrap(selected+1, 0, item_count) + else: + selected = wrap(selected-1, 0, item_count) + + item_selected.emit(selected) + accept_event() + + +func _on_about_to_popup() -> void: + # This would look better I think, + # but doesn't make sense until gui_embed_subwindows is turned back on. + #get_popup().min_size.x = size.x + pass diff --git a/material_maker/widgets/option_edit/option_edit.tscn b/material_maker/widgets/option_edit/option_edit.tscn new file mode 100644 index 000000000..f950ba35c --- /dev/null +++ b/material_maker/widgets/option_edit/option_edit.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://dj5q8sxvd3gci"] + +[ext_resource type="Script" path="res://material_maker/widgets/option_edit/option_edit.gd" id="1_no1tx"] + +[node name="OptionEdit" type="OptionButton"] +offset_right = 32.0 +offset_bottom = 20.0 +theme_type_variation = &"MM_NodeOptionEdit" +script = ExtResource("1_no1tx") diff --git a/material_maker/widgets/size_option_button/size_option_button.gd b/material_maker/widgets/size_option_button/size_option_button.gd index 6dd48b00d..6a5420167 100644 --- a/material_maker/widgets/size_option_button/size_option_button.gd +++ b/material_maker/widgets/size_option_button/size_option_button.gd @@ -1,4 +1,4 @@ -extends OptionButton +extends "res://material_maker/widgets/option_edit/option_edit.gd" class_name SizeOptionButton @export var min_size : int = 4: set = set_min_size @@ -8,6 +8,7 @@ class_name SizeOptionButton signal size_value_changed(s) func _ready() -> void: + super() connect("item_selected", Callable(self, "_on_item_selected")) update_options() From fad3d99712b23e6b7c2e9cb379ec568e02fdf2a7 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 30 Jul 2024 20:22:58 +0200 Subject: [PATCH 23/42] Implement Hover-Copy+Paste on values Works on FloatEdit, OptionEdit and ColorButtonEdit. --- .../color_picker_button.gd | 20 +++++++++++++++++-- .../widgets/float_edit/float_edit.gd | 14 +++++++++++++ .../widgets/option_edit/option_edit.gd | 14 +++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/material_maker/widgets/color_picker_button/color_picker_button.gd b/material_maker/widgets/color_picker_button/color_picker_button.gd index e3f3d1bfd..fa241a357 100644 --- a/material_maker/widgets/color_picker_button/color_picker_button.gd +++ b/material_maker/widgets/color_picker_button/color_picker_button.gd @@ -1,9 +1,7 @@ extends ColorPickerButton - var previous_color : Color - signal color_changed_undo(c, previous) @@ -32,15 +30,33 @@ func _drop_data(_position, data) -> void: emit_signal("color_changed", color) emit_signal("color_changed_undo", color, old_color) + func on_color_changed(c): emit_signal("color_changed_undo", c, null) + func on_picker_created(): get_popup().connect("about_to_popup", Callable(self, "on_about_to_show")) previous_color = color + func on_about_to_show(): previous_color = color + func on_popup_closed(): emit_signal("color_changed_undo", color, previous_color) + + +func _input(event:InputEvent) -> void: + if not Rect2(Vector2(), size).has_point(get_local_mouse_position()): + return + if event is InputEventKey and event.is_command_or_control_pressed() and event.pressed: + if event.keycode == KEY_C: + DisplayServer.clipboard_set(color.to_html()) + accept_event() + if event.keycode == KEY_V: + var v := DisplayServer.clipboard_get() + if v.is_valid_html_color(): + color = Color.from_string(v, color) + accept_event() diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 44479e7a3..291291978 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -112,8 +112,22 @@ func get_modifiers(event:InputEvent) -> int: return new_modifiers +func _input(event:InputEvent) -> void: + if not Rect2(Vector2(), size).has_point(get_local_mouse_position()): + return + if mode == Modes.IDLE: + if event is InputEventKey and event.is_command_or_control_pressed() and event.pressed: + if event.keycode == KEY_C: + DisplayServer.clipboard_set(str(float_value)) + accept_event() + if event.keycode == KEY_V: + set_value(DisplayServer.clipboard_get(), true) + accept_event() + + func _gui_input(event: InputEvent) -> void: if mode == Modes.IDLE: + # Handle Drag-Start if event is InputEventMouseMotion and Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): if $Edit.text.is_valid_float(): diff --git a/material_maker/widgets/option_edit/option_edit.gd b/material_maker/widgets/option_edit/option_edit.gd index 8049308ff..8b7c0ff7e 100644 --- a/material_maker/widgets/option_edit/option_edit.gd +++ b/material_maker/widgets/option_edit/option_edit.gd @@ -25,3 +25,17 @@ func _on_about_to_popup() -> void: # but doesn't make sense until gui_embed_subwindows is turned back on. #get_popup().min_size.x = size.x pass + + +func _input(event:InputEvent) -> void: + if not Rect2(Vector2(), size).has_point(get_local_mouse_position()): + return + if event is InputEventKey and event.is_command_or_control_pressed() and event.pressed: + if event.keycode == KEY_C: + DisplayServer.clipboard_set(str(selected)) + accept_event() + if event.keycode == KEY_V: + var v := DisplayServer.clipboard_get() + if v.is_valid_int(): + selected = min(max(0, int(v)),item_count-1) + accept_event() From 3eebcd08bb0a50af031cbe926172fe6b38e9e759 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 30 Jul 2024 20:24:06 +0200 Subject: [PATCH 24/42] Remove unnecessary spacing controls in nodes This should make the margins on the left more consistent. This also fixes minimum size of items. --- material_maker/nodes/generic/generic.gd | 26 +++++++------------ .../widgets/float_edit/float_edit.tscn | 1 - 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/material_maker/nodes/generic/generic.gd b/material_maker/nodes/generic/generic.gd index 761d696c8..4485f4212 100644 --- a/material_maker/nodes/generic/generic.gd +++ b/material_maker/nodes/generic/generic.gd @@ -454,7 +454,6 @@ func update_node() -> void: hsizer = HBoxContainer.new() hsizer.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL add_child(hsizer) - hsizer.add_child(Control.new()) set_slot(get_child_count()-1, false, 0, Color(), false, 0, Color()) hsizer = HBoxContainer.new() hsizer.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL @@ -463,20 +462,13 @@ func update_node() -> void: var label_widget : Label = Label.new() label_widget.text = label hsizer.add_child(label_widget) - else: - var control : Control = Control.new() - control.custom_minimum_size.y = 25 if !generator.minimized else 12 - hsizer.add_child(control) set_slot(index, enable_left, type_left, color_left, false, 0, Color()) + var input_names_width : int = 0 - for c in get_children(): - var width = c.get_child(0).size.x - if width > input_names_width: - input_names_width = width - if input_names_width > 0: - input_names_width += 3 - for c in get_children(): - c.get_child(0).custom_minimum_size.x = input_names_width + input_names_width = get_children().reduce( + func(accum, child): return max(child.get_child(0).size.x, accum) if child.get_child_count() else accum + , 0) + # Parameters if !generator.minimized: controls = {} @@ -506,11 +498,13 @@ func update_node() -> void: while index >= get_child_count(): hsizer = HBoxContainer.new() hsizer.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL - var empty_control : Control = Control.new() - empty_control.custom_minimum_size.x = input_names_width - hsizer.add_child(empty_control) + if input_names_width > 0: + var empty_control : Control = Control.new() + empty_control.custom_minimum_size.x = input_names_width + hsizer.add_child(empty_control) add_child(hsizer) hsizer = get_child(index) + hsizer.custom_minimum_size.y = 25 if label != "": var label_widget = Label.new() label_widget.text = label diff --git a/material_maker/widgets/float_edit/float_edit.tscn b/material_maker/widgets/float_edit/float_edit.tscn index 167538c26..b1b39b1dd 100644 --- a/material_maker/widgets/float_edit/float_edit.tscn +++ b/material_maker/widgets/float_edit/float_edit.tscn @@ -20,7 +20,6 @@ content_margin_bottom = 2.0 clip_children = 1 offset_right = 198.0 offset_bottom = 27.0 -size_flags_vertical = 4 theme_type_variation = &"MM_NodeFloatEdit" theme_override_styles/panel = SubResource("StyleBoxFlat_gl70v") script = ExtResource("1") From 2f8116cd47c15f8b3d895134f2a7f326eb7fba06 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 30 Jul 2024 23:47:59 +0200 Subject: [PATCH 25/42] Better Tooltip Panel --- material_maker/theme/modern.tres | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index f3545b931..e5877e502 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=55 format=3 uid="uid://b628lwfk6ig2c"] +[gd_resource type="Theme" load_steps=56 format=3 uid="uid://b628lwfk6ig2c"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_hqoqt"] [ext_resource type="FontFile" uid="uid://btybkvkb8rtol" path="res://material_maker/fonts/DroidSansFallback.ttf" id="2_1xp11"] @@ -477,6 +477,23 @@ corner_radius_top_right = 4 corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5rnro"] +content_margin_left = 10.0 +content_margin_top = 8.0 +content_margin_right = 10.0 +content_margin_bottom = 8.0 +bg_color = Color(0.0666667, 0.0666667, 0.0784314, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.145098, 0.145098, 0.164706, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +corner_detail = 4 + [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_iwtn1"] content_margin_left = 4.0 @@ -603,6 +620,8 @@ TabBar/styles/tab_hovered = SubResource("StyleBoxFlat_708uu") TabBar/styles/tab_selected = SubResource("StyleBoxFlat_r4jxv") TabBar/styles/tab_unselected = SubResource("StyleBoxFlat_w1kc3") TabContainer/styles/panel = SubResource("StyleBoxFlat_wc388") +TooltipLabel/font_sizes/font_size = 15 +TooltipPanel/styles/panel = SubResource("StyleBoxFlat_5rnro") Tree/constants/draw_guides = 0 Tree/constants/draw_relationship_lines = 0 Tree/styles/focus = SubResource("StyleBoxEmpty_iwtn1") From a4df4d0a0c3f94eb2dd079df73f0cdb404c4ac6e Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sat, 3 Aug 2024 14:06:28 +0200 Subject: [PATCH 26/42] Gradient Edit rework Creates a brand new GradientEdit with a more complex popup. Mostly recreates the old feature-set but has some additions: - New design for the cursors - Point offset can be set from a FloatEdit - The popup allows cylcing through the active cursors - Gradients with Alpha parts are displayed better - Ctrl+C and Ctrl+V will copy and paste colors from cursors - Dragging a color onto a gradient will show a preview cursor - Dragging a color onto a cursor will preview that color - The popup can be pinned, making it stay even when something outside is clicked. This allows dragging colors or gradients even into the popup or moving the graph view around. - The gradient can be copied and pasted with Ctrl+C and Ctrl+V. Main UI/UX improvements: - Make it clear how to open the popup (previously something you could only stumble upon) - Remove the interpolation dropdown from the gradient Edit (only in the popup now) to remove visual clutter. - Allow editing the offset directly, remove offset label. - Better display Gradients with transparency. --- addons/material_maker/types/gradient.gd | 2 + material_maker/nodes/generic/generic.gd | 6 +- material_maker/theme/modern.tres | 22 +- .../widgets/float_edit/float_edit.gd | 4 + .../widgets/gradient_editor/gradient_edit.gd | 338 ++++++++++++++++++ .../gradient_editor/gradient_edit.tscn | 73 ++++ .../gradient_editor/gradient_edit_cursor.gd | 168 +++++++++ .../gradient_editor/gradient_edit_cursor.tscn | 12 + .../gradient_editor/gradient_editor.gd | 3 + .../gradient_editor/gradient_editor.tscn | 57 +-- .../widgets/gradient_editor/gradient_popup.gd | 77 +++- .../gradient_editor/gradient_popup.tscn | 115 ++++-- 12 files changed, 801 insertions(+), 76 deletions(-) create mode 100644 material_maker/widgets/gradient_editor/gradient_edit.gd create mode 100644 material_maker/widgets/gradient_editor/gradient_edit.tscn create mode 100644 material_maker/widgets/gradient_editor/gradient_edit_cursor.gd create mode 100644 material_maker/widgets/gradient_editor/gradient_edit_cursor.tscn diff --git a/addons/material_maker/types/gradient.gd b/addons/material_maker/types/gradient.gd index 268514f00..82d9f1a6b 100644 --- a/addons/material_maker/types/gradient.gd +++ b/addons/material_maker/types/gradient.gd @@ -79,6 +79,7 @@ func get_shader_params(parameter_name : String, attribute : String = "uniform") rv += p.to_str(attribute) return rv + func get_parameters(parameter_name : String) -> Array[MMGenBase.ShaderUniform]: var rv : Array[MMGenBase.ShaderUniform] = [] var parameter_values : Dictionary = get_parameter_values(parameter_name) @@ -86,6 +87,7 @@ func get_parameters(parameter_name : String) -> Array[MMGenBase.ShaderUniform]: rv.append(MMGenBase.ShaderUniform.new("p_%s_col" % parameter_name, "vec4", parameter_values["p_%s_col" % parameter_name], points.size())) return rv + func get_parameter_values(parameter_name : String) -> Dictionary: sort() var rv : Dictionary = {} diff --git a/material_maker/nodes/generic/generic.gd b/material_maker/nodes/generic/generic.gd index 4485f4212..b70c4d991 100644 --- a/material_maker/nodes/generic/generic.gd +++ b/material_maker/nodes/generic/generic.gd @@ -135,7 +135,7 @@ static func update_control_from_parameter(parameter_controls : Dictionary, p : S o.path = v elif o is Control and o.scene_file_path == "res://material_maker/widgets/image_picker_button/image_picker_button.tscn": o.do_set_image_path(v) - elif o is Control and o.scene_file_path == "res://material_maker/widgets/gradient_editor/gradient_editor.tscn": + elif o is Control and o.scene_file_path == "res://material_maker/widgets/gradient_editor/gradient_edit.tscn": var gradient : MMGradient = MMGradient.new() gradient.deserialize(v) o.value = gradient @@ -194,7 +194,7 @@ static func initialize_controls_from_generator(control_list, gen, object) -> voi o.connect("file_selected",Callable(object,"_on_file_changed").bind( o.name )) elif o is Control and o.scene_file_path == "res://material_maker/widgets/image_picker_button/image_picker_button.tscn": o.connect("on_file_selected",Callable(object,"_on_file_changed").bind( o.name )) - elif o is Control and o.scene_file_path == "res://material_maker/widgets/gradient_editor/gradient_editor.tscn": + elif o is Control and o.scene_file_path == "res://material_maker/widgets/gradient_editor/gradient_edit.tscn": o.connect("updated",Callable(object,"_on_gradient_changed").bind( o.name )) elif o is Button and o.scene_file_path == "res://material_maker/widgets/curve_edit/curve_edit.tscn": o.connect("updated",Callable(object,"_on_curve_changed").bind( o.name )) @@ -311,7 +311,7 @@ static func create_parameter_control(p : Dictionary, accept_float_expressions : control.set_script(preload("res://material_maker/widgets/color_picker_button/color_picker_button.gd")) control.custom_minimum_size.x = 40 elif p.type == "gradient": - control = preload("res://material_maker/widgets/gradient_editor/gradient_editor.tscn").instantiate() + control = preload("res://material_maker/widgets/gradient_editor/gradient_edit.tscn").instantiate() elif p.type == "curve": control = preload("res://material_maker/widgets/curve_edit/curve_edit.tscn").instantiate() elif p.type == "polygon": diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index e5877e502..7ee666087 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=56 format=3 uid="uid://b628lwfk6ig2c"] +[gd_resource type="Theme" load_steps=57 format=3 uid="uid://b628lwfk6ig2c"] [ext_resource type="FontFile" uid="uid://dgkwr5jydtk6p" path="res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf" id="1_hqoqt"] [ext_resource type="FontFile" uid="uid://btybkvkb8rtol" path="res://material_maker/fonts/DroidSansFallback.ttf" id="2_1xp11"] @@ -288,6 +288,23 @@ corner_radius_top_right = 3 corner_radius_bottom_right = 3 corner_radius_bottom_left = 3 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_omwbs"] +content_margin_left = 10.0 +content_margin_top = 8.0 +content_margin_right = 10.0 +content_margin_bottom = 8.0 +bg_color = Color(0.0666667, 0.0666667, 0.0784314, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.145098, 0.145098, 0.164706, 1) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +corner_detail = 4 + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3j6py"] content_margin_left = 2.0 content_margin_top = 2.0 @@ -562,6 +579,9 @@ MM_NodeFloatEdit/styles/fill_normal = SubResource("StyleBoxFlat_hgk0b") MM_NodeFloatEdit/styles/focus = SubResource("StyleBoxFlat_0b15u") MM_NodeFloatEdit/styles/hover = SubResource("StyleBoxFlat_r1sff") MM_NodeFloatEdit/styles/normal = SubResource("StyleBoxFlat_8fogc") +MM_NodeGradientEdit/base_type = &"Button" +MM_NodeGradientEditPopup/base_type = &"PanelContainer" +MM_NodeGradientEditPopup/styles/panel = SubResource("StyleBoxFlat_omwbs") MM_NodeOptionEdit/base_type = &"OptionButton" MM_NodeOptionEditPopup/base_type = &"PopupMenu" MM_NodeOptionEditPopup/styles/hover = SubResource("StyleBoxFlat_3j6py") diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 291291978..0f5645cee 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -285,6 +285,9 @@ func update() -> void: func _ready() -> void: update() + min_value = min_value + max_value = max_value + func _on_mouse_entered() -> void: update() @@ -292,6 +295,7 @@ func _on_mouse_entered() -> void: func _on_mouse_exited() -> void: update() + func _on_edit_draw() -> void: if get_viewport().gui_get_focus_owner() == self or get_viewport().gui_get_focus_owner() == $Edit: $Edit.draw_style_box(get_theme_stylebox("focus"), Rect2(Vector2(), size)) diff --git a/material_maker/widgets/gradient_editor/gradient_edit.gd b/material_maker/widgets/gradient_editor/gradient_edit.gd new file mode 100644 index 000000000..87f05d7ba --- /dev/null +++ b/material_maker/widgets/gradient_editor/gradient_edit.gd @@ -0,0 +1,338 @@ +extends PanelContainer + +# Emitted whenever the gradient changed +signal updated(value, merge_undos:bool) +# Emitted whenever the active cursor index changed +signal active_cursor_changed() +# Emitted once a new value was loaded +signal value_was_set + +enum Modes {IDLE, SLIDING, SELECTING_COLOR} +var mode := Modes.IDLE + +var value: MMGradient = null: + set(v): + value = v + # If the size is 0, don't load. + # In these cases, there is a resize on one of the next frames + # which will then trigger the correct loading. + if %Gradient.size.x != 0: + set_value(v) + +# Index of the active cursor +var active_cursor := 0: + set(value): + value = wrap(value, 0, %Gradient.get_child_count()) + active_cursor = value + active_cursor_changed.emit() + + for i in %Gradient.get_children(): + i.queue_redraw() + +# Reference of the preview cursor (when dropping in a color) +var preview_cursor: GradientEditCursor = null +# Reference to the popup +var popup: Control = null + +var hovered := false + + +func _ready() -> void: + %Gradient.material = %Gradient.material.duplicate(true) + + update_visuals() + + +func set_value(v: MMGradient) -> void: + for c in %Gradient.get_children(): + c.queue_free() + c.get_parent().remove_child(c) + + if value == null: + return + + for p in value.points: + add_cursor(p.v, p.c) + + sort_cursors() + + update_shader() + value_was_set.emit() + + +func set_interpolation(interpolation_type:int) -> void: + value.interpolation = interpolation_type + update_shader() + updated.emit(value, false) + + +func update_from_value(merge_undos := true) -> void: + value.clear() + + for c in %Gradient.get_children(): + value.add_point(c.get_cursor_offset(), c.color) + + update_shader() + + if is_instance_valid(popup): + popup.set_gradient(value, active_cursor) + + sort_cursors() + + updated.emit(value, merge_undos) + + +func _gui_input(ev:InputEvent) -> void: + if mode == Modes.IDLE: + # Handle Adding new cursors by double-clicking + if ev is InputEventMouseButton and ev.button_index == MOUSE_BUTTON_LEFT and ev.double_click: + var offset := position_to_offset(get_local_mouse_position()) + var cursor = add_cursor(offset, get_gradient_color(offset)) + sort_cursors() + active_cursor = cursor.cursor_index + update_from_value(false) + + if preview_cursor: + preview_cursor.set_cursor_offset(position_to_offset(get_local_mouse_position())) + + +func select_color(cursor:GradientEditCursor) -> void: + active_cursor = cursor.cursor_index + mode = Modes.SELECTING_COLOR + + var color_picker_popup := preload("res://material_maker/widgets/color_picker_popup/color_picker_popup.tscn").instantiate() + add_child(color_picker_popup) + + var color_picker := color_picker_popup.get_node("ColorPicker") + color_picker.color = cursor.color + color_picker.color_changed.connect(cursor.set_cursor_color) + + var _scale := get_global_transform().get_scale() + color_picker_popup.position.x = global_position.x + size.x*_scale.x + 10 + color_picker_popup.position.y = global_position.y + color_picker_popup.position += get_window().position + + color_picker_popup.popup_hide.connect(color_picker_popup.queue_free) + color_picker_popup.popup_hide.connect(set.bind("mode", Modes.IDLE)) + + color_picker_popup.popup() + + +#region HELPERS +func position_to_offset(pos:Vector2) -> float: + var gradient_start_position = %Gradient.global_position.x - global_position.x + var gradient_end_position = gradient_start_position + (%Gradient.size.x) + var offset = clamp(remap(pos.x, gradient_start_position, gradient_end_position, 0.0, 1.0), 0, 1) + return offset + + +func get_cursor_count() -> int: + return %Gradient.get_child_count() + + +func get_cursor(idx:int) -> GradientEditCursor: + for cursor in %Gradient.get_children(): + if cursor.cursor_index == idx: + return cursor + return %Gradient.get_child(0) + + +func get_active_cursor() -> GradientEditCursor: + return get_cursor(active_cursor) + +func sort_cursors() -> void: + var cursors := %Gradient.get_children() + cursors.sort_custom( + func(a,b): return a.position.x < b.position.x + ) + for i in range(len(cursors)): + cursors[i].cursor_index = i + + +func get_gradient_color(offset:float) -> Color: + return value.get_color(offset) + + +func get_gradient_from_data(data:Variant) -> Variant: + if typeof(data) == TYPE_ARRAY: + return data + elif typeof(data) == TYPE_DICTIONARY: + if data.has("parameters") and data.parameters.has("gradient"): + return data.parameters.gradient + if data.has("type") and data.type == "Gradient": + return data + return null + +#endregion + +func add_cursor(offset, color) -> GradientEditCursor: + var cursor = preload("res://material_maker/widgets/gradient_editor/gradient_edit_cursor.tscn").instantiate() + %Gradient.add_child(cursor) + cursor.gradient_edit = self + cursor.set_cursor_offset(offset) + cursor.set_cursor_color(color, false) + return cursor + +#region SHADER + +func update_shader() -> void: + if value == null: + return + var shader := "" + shader = "shader_type canvas_item;\n" + shader += value.get_shader_params("") + shader += """ +uniform vec2 size = vec2(25.0, 25.0); +uniform vec3 background_color_1 = vec3(0.4); +uniform vec3 background_color_2 = vec3(0.6); + """ + shader += value.get_shader("") + shader += """void fragment() { + vec2 uv = UV*size; + float checkerboard = mod(floor(uv.x*0.2)+floor(uv.y*0.2), 2.0); + vec4 gradient = _gradient_fct(UV.x); + vec3 gradient_with_checkerboard = mix(mix(background_color_1, background_color_2, checkerboard).rgb, gradient.rgb, gradient.a); + if (UV.y < 0.75){ + COLOR.rgb = gradient_with_checkerboard; + }else{ + COLOR.rgb = gradient.rgb; + } + }""" + %Gradient.material.shader.set_code(shader) + update_shader_parameters() + + +func update_shader_parameters(node: Node = null) -> void: + if node == null: + node = %Gradient + var parameter_values: Dictionary = value.get_parameter_values("") + node.material.set_shader_parameter("size", node.size) + for n in parameter_values.keys(): + node.material.set_shader_parameter(n, parameter_values[n]) + +#endregion + + +func _on_gradient_resized() -> void: + if value != null: + value = value + + +func _on_popup_button_toggled(toggled_on: bool) -> void: + if toggled_on: + popup = load("res://material_maker/widgets/gradient_editor/gradient_popup.tscn").instantiate() + add_child(popup) + + popup.updated.connect( + func(val, merge_undos): + value = val + updated.emit(value, merge_undos) + ) + popup.about_to_close.connect(%PopupButton.call_deferred.bind("set_pressed_no_signal", false)) + popup.active_cursor_changed.connect(func(val): active_cursor = val) + + popup.set_gradient(value, active_cursor) + + update_popup_position() + set_notify_transform(true) + + else: + if is_instance_valid(popup): + popup.close() + set_notify_transform(false) + + +func update_popup_position() -> void: + if is_instance_valid(popup): + var popup_size := Vector2i(550, 40) + var _scale := get_global_transform().get_scale() + popup.position.x = global_position.x + size.x/2.0 * _scale.x - popup_size.x / 2.0 + popup.position.y = global_position.y + size.y * _scale.y + popup.size = popup_size + + +#region DRAG AND DROP + +func _get_drag_data(_position : Vector2) -> Variant: + if mode != Modes.IDLE: + return + var data = MMType.serialize_value(value) + var preview = ColorRect.new() + preview.size = Vector2(64, 24) + preview.material = %Gradient.material.duplicate(true) + update_shader_parameters(preview) + set_drag_preview(preview) + return data + + +func _can_drop_data(_position : Vector2, data:Variant) -> bool: + return get_gradient_from_data(data) != null or typeof(data) == TYPE_COLOR + + +func _drop_data(pos: Vector2, data: Variant) -> void: + if typeof(data) == TYPE_COLOR: + var offset = position_to_offset(pos) + var new_cursor = add_cursor(offset, data) + sort_cursors() + active_cursor = new_cursor.cursor_index + update_from_value(false) + else: + var gradient = get_gradient_from_data(data) + if gradient != null: + value = MMType.deserialize_value(gradient) + updated.emit(value, false) + + if preview_cursor: + preview_cursor.queue_free() + preview_cursor = null + +#endregion + + +#region VISUALS + +# Used on the GradientEdit that's part of the popup +func remove_popup_button() -> void: + %PopupButton.queue_free() + + +func update_visuals() -> void: + var is_hovered := Rect2(Vector2(), size).has_point(get_local_mouse_position()) + if is_hovered != hovered: + hovered = is_hovered + if hovered: + add_theme_stylebox_override("panel", get_theme_stylebox("hover")) + else: + add_theme_stylebox_override("panel", get_theme_stylebox("normal")) + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_TRANSFORM_CHANGED: + update_popup_position() + NOTIFICATION_THEME_CHANGED: + update_visuals() + + +func _draw() -> void: + var is_focused := get_viewport().gui_get_focus_owner() == self + if is_focused: + draw_style_box(get_theme_stylebox("focus"), Rect2(Vector2(), size)) + + +func _on_mouse_entered() -> void: + update_visuals() + if get_viewport().gui_is_dragging() and _can_drop_data(Vector2(), get_viewport().gui_get_drag_data()): + var data = get_viewport().gui_get_drag_data() + if typeof(data) == TYPE_COLOR: + preview_cursor = add_cursor(position_to_offset(get_local_mouse_position()), data) + preview_cursor.mode = preview_cursor.Modes.PREVIEW + preview_cursor.get_parent().move_child(preview_cursor, 0) + + +func _on_mouse_exited() -> void: + update_visuals() + if preview_cursor: + preview_cursor.queue_free() + preview_cursor = null +#endregion diff --git a/material_maker/widgets/gradient_editor/gradient_edit.tscn b/material_maker/widgets/gradient_editor/gradient_edit.tscn new file mode 100644 index 000000000..75f41740f --- /dev/null +++ b/material_maker/widgets/gradient_editor/gradient_edit.tscn @@ -0,0 +1,73 @@ +[gd_scene load_steps=7 format=3 uid="uid://cp6ft7qbucfam"] + +[ext_resource type="Script" path="res://material_maker/widgets/gradient_editor/gradient_edit.gd" id="1_51wqf"] +[ext_resource type="Texture2D" uid="uid://dysx1qjceb1od" path="res://material_maker/theme/dark/optionbutton_arrow.png" id="2_kwkci"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_j7yhr"] +content_margin_left = 3.0 +content_margin_top = 3.0 +content_margin_right = 3.0 +content_margin_bottom = 3.0 +bg_color = Color(0.168627, 0.176471, 0.192157, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e7ak6"] +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 4 + +[sub_resource type="Shader" id="Shader_786ke"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_1yahc"] +render_priority = 0 +shader = SubResource("Shader_786ke") + +[node name="GradientEdit" type="PanelContainer"] +offset_right = 351.0 +offset_bottom = 42.0 +focus_mode = 2 +theme_type_variation = &"MM_NodeGradientEdit" +theme_override_styles/panel = SubResource("StyleBoxFlat_j7yhr") +script = ExtResource("1_51wqf") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="PanelContainer" type="Panel" parent="HBoxContainer"] +clip_children = 1 +layout_mode = 2 +size_flags_horizontal = 3 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_e7ak6") + +[node name="Gradient" type="ColorRect" parent="HBoxContainer/PanelContainer"] +unique_name_in_owner = true +material = SubResource("ShaderMaterial_1yahc") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +mouse_filter = 2 + +[node name="PopupButton" type="Button" parent="HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +toggle_mode = true +icon = ExtResource("2_kwkci") +flat = true + +[connection signal="focus_entered" from="." to="." method="_on_focus_entered"] +[connection signal="focus_exited" from="." to="." method="_on_focus_exited"] +[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] +[connection signal="resized" from="HBoxContainer/PanelContainer/Gradient" to="." method="_on_gradient_resized"] +[connection signal="toggled" from="HBoxContainer/PopupButton" to="." method="_on_popup_button_toggled"] diff --git a/material_maker/widgets/gradient_editor/gradient_edit_cursor.gd b/material_maker/widgets/gradient_editor/gradient_edit_cursor.gd new file mode 100644 index 000000000..699ee033a --- /dev/null +++ b/material_maker/widgets/gradient_editor/gradient_edit_cursor.gd @@ -0,0 +1,168 @@ +class_name GradientEditCursor +extends Control + +# The color value +var color: Color +# The color to display (usualy same as "color", except when dropping in a color) +var display_color: Color + +# Updated by the GradientEdit +var cursor_index: int: + set(val): + cursor_index = val + +# Reference to the GradientEdit +var gradient_edit: Control = null + +# Depends on the height of the GradientEdit +var width: float = 10 + +enum Modes {IDLE, SLIDING, PREVIEW} +var mode := Modes.IDLE + +var slide_start_point := 0.0 + + +func _ready() -> void: + width = get_parent().size.y / 2.0 + size = Vector2(width, get_parent().size.y) + position = Vector2(position.x, 0) + + mouse_default_cursor_shape = CURSOR_POINTING_HAND + + +func _draw() -> void: + var HEIGHT := size.y + var WIDTH := size.y/2.0 + + # Define the HOUSE shape + var polygon := PackedVector2Array([Vector2(0, HEIGHT*0.75), Vector2(WIDTH*0.5, HEIGHT*0.5), Vector2(WIDTH, HEIGHT*0.75), Vector2(WIDTH, HEIGHT), Vector2(0, HEIGHT), Vector2(0, HEIGHT*0.75)]) + draw_colored_polygon(polygon, display_color) + + var outline_color := Color.BLACK if (display_color.v > 0.5 and display_color.s < 0.6) else Color.WHITE + draw_polyline(polygon, outline_color) + draw_dashed_line(Vector2(WIDTH/2, 0), Vector2(WIDTH/2, HEIGHT*0.5), outline_color) + + # Draw the TRIANGLE (house roof) shape + if gradient_edit.active_cursor == cursor_index: + var active_polygon := PackedVector2Array([Vector2(0, HEIGHT*0.75), Vector2(WIDTH*0.5, HEIGHT*0.5), Vector2(WIDTH, HEIGHT*0.75), Vector2(0, HEIGHT*0.75)]) + draw_colored_polygon(active_polygon, outline_color) + + +func _gui_input(ev: InputEvent) -> void: + if mode == Modes.IDLE: + if ev is InputEventMouseButton: + if ev.button_index == MOUSE_BUTTON_LEFT: + gradient_edit.active_cursor = cursor_index + + # Handle double click -> Color Select + if ev.double_click: + gradient_edit.select_color(self) + position.x = slide_start_point + accept_event() + + # Begin sliding + elif ev.pressed: + mode = Modes.SLIDING + slide_start_point = position.x + gradient_edit.mode = gradient_edit.Modes.SLIDING + + # Handle Right-Click -> Delete + elif ev.button_index == MOUSE_BUTTON_RIGHT and gradient_edit.get_cursor_count() > 2: + var parent = get_parent() + parent.remove_child(self) + queue_free() + gradient_edit.active_cursor = cursor_index + gradient_edit.update_from_value(false) + + # Handle sliding + if mode == Modes.SLIDING: + # While sliding + if ev is InputEventMouseMotion and (ev.button_mask & MOUSE_BUTTON_MASK_LEFT) != 0: + position.x += get_local_mouse_position().x + if ev.is_command_or_control_pressed(): + position.x = round(get_cursor_offset() * 20.0) * 0.05 * get_parent().size.x + position.x = min(max(0, position.x), get_parent().size.x) - width/2.0 + gradient_edit.update_from_value() + gradient_edit.active_cursor = cursor_index + + # Sliding End + if ev is InputEventMouseButton and ev.button_index == MOUSE_BUTTON_LEFT and not ev.pressed: + mode = Modes.IDLE + gradient_edit.mode = gradient_edit.Modes.IDLE + gradient_edit.update_from_value(false) + accept_event() + + +func _input(ev:InputEvent) -> void: + if not Rect2(Vector2(), size).has_point(get_local_mouse_position()): + return + + if mode == Modes.IDLE: + # Handle Ctrl+C and Ctrl+V to copy and paste the color + if ev is InputEventKey and ev.is_command_or_control_pressed(): + if ev.keycode == KEY_V: + if DisplayServer.clipboard_get().is_valid_html_color(): + set_cursor_color(Color(DisplayServer.clipboard_get())) + accept_event() + if ev.keycode == KEY_C: + DisplayServer.clipboard_set(color.to_html()) + accept_event() + + +func set_cursor_offset(v:float, notify:=false, merge_undos:=false) -> void: + position.x = clamp(v, 0, 1) * get_parent().size.x - width/2.0 + if notify: + gradient_edit.update_from_value(merge_undos) + gradient_edit.active_cursor = cursor_index + + +func get_cursor_offset() -> float: + return (position.x + width/2.0) / get_parent().size.x + + +func set_cursor_color(c:Color, update_value:=true) -> void: + color = c + + display_color = c + display_color.a = 1 + + if update_value: + gradient_edit.update_from_value(false) + gradient_edit.active_cursor = cursor_index + queue_redraw() + + +#region DRAG AND DROP + +func _can_drop_data(_position, data) -> bool: + return typeof(data) == TYPE_COLOR and mode != Modes.PREVIEW + + +func _drop_data(_position, data) -> void: + set_cursor_color(data) + if gradient_edit.preview_cursor: + gradient_edit.preview_cursor.queue_free() + gradient_edit.preview_cursor = null + +#endregion + + +#region DROP PREVIEW + +func _on_mouse_entered() -> void: + if get_viewport().gui_is_dragging(): + if _can_drop_data(Vector2(), get_viewport().gui_get_drag_data()): + display_color = get_viewport().gui_get_drag_data() + if gradient_edit.preview_cursor: + gradient_edit.preview_cursor.hide() + queue_redraw() + + +func _on_mouse_exited() -> void: + display_color = color + if gradient_edit.preview_cursor: + gradient_edit.preview_cursor.show() + queue_redraw() + +#endregion diff --git a/material_maker/widgets/gradient_editor/gradient_edit_cursor.tscn b/material_maker/widgets/gradient_editor/gradient_edit_cursor.tscn new file mode 100644 index 000000000..808bb32ab --- /dev/null +++ b/material_maker/widgets/gradient_editor/gradient_edit_cursor.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3 uid="uid://ctoxwqbc67n3h"] + +[ext_resource type="Script" path="res://material_maker/widgets/gradient_editor/gradient_edit_cursor.gd" id="1_3jpyo"] + +[node name="GradientEditCursor" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 1 +script = ExtResource("1_3jpyo") + +[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] diff --git a/material_maker/widgets/gradient_editor/gradient_editor.gd b/material_maker/widgets/gradient_editor/gradient_editor.gd index 2e721e06a..c2e6fd2de 100644 --- a/material_maker/widgets/gradient_editor/gradient_editor.gd +++ b/material_maker/widgets/gradient_editor/gradient_editor.gd @@ -151,18 +151,21 @@ func update_from_value() -> void: emit_signal("updated", value, continuous_change) continuous_change = true + func set_value_and_update(v, cc : bool = true) -> void: if ! cc: continuous_change = false set_value(v, true) update_from_value() + func add_cursor(x, color) -> void: var cursor = GradientCursor.new() add_child(cursor) cursor.position.x = x cursor.color = color + func _gui_input(ev) -> void: if ev is InputEventMouseButton and ev.button_index == 1 and ev.double_click: if embedded and ev.position.y < 15: diff --git a/material_maker/widgets/gradient_editor/gradient_editor.tscn b/material_maker/widgets/gradient_editor/gradient_editor.tscn index f88c0732c..ffb55e760 100644 --- a/material_maker/widgets/gradient_editor/gradient_editor.tscn +++ b/material_maker/widgets/gradient_editor/gradient_editor.tscn @@ -51,74 +51,55 @@ custom_minimum_size = Vector2(120, 32) layout_mode = 3 anchors_preset = 0 offset_right = 120.0 -offset_bottom = 30.0 +offset_bottom = 32.0 focus_mode = 1 script = ExtResource("1") [node name="Border" type="ColorRect" parent="."] custom_minimum_size = Vector2(114, 19) -layout_mode = 0 -anchor_right = 1.0 -offset_left = 3.0 -offset_top = 1.0 -offset_right = -3.0 -offset_bottom = 20.0 +layout_mode = 2 +offset_right = 120.0 +offset_bottom = 32.0 mouse_filter = 2 color = Color(0.5, 0.5, 0.5, 1) [node name="Background" type="ColorRect" parent="."] material = SubResource("2") custom_minimum_size = Vector2(112, 17) -layout_mode = 0 -anchor_right = 1.0 -offset_left = 4.0 -offset_top = 2.0 -offset_right = -4.0 -offset_bottom = 15.0 +layout_mode = 2 +offset_right = 120.0 +offset_bottom = 32.0 mouse_filter = 2 [node name="Gradient" type="ColorRect" parent="."] material = SubResource("4") custom_minimum_size = Vector2(112, 17) -layout_mode = 0 -anchor_right = 1.0 -offset_left = 4.0 -offset_top = 2.0 -offset_right = -4.0 -offset_bottom = 15.0 +layout_mode = 2 +offset_right = 120.0 +offset_bottom = 32.0 mouse_filter = 2 theme = SubResource("5") [node name="Interpolation" type="OptionButton" parent="."] -layout_mode = 0 -offset_left = 0.418457 -offset_top = -2.90374 -offset_right = 73.4185 -offset_bottom = 19.0963 -scale = Vector2(0.5, 0.5) +layout_mode = 2 +offset_left = -22.0 +offset_top = -13.0 +offset_right = 42.0 +offset_bottom = 11.0 item_count = 4 -popup/item_0/text = "" popup/item_0/icon = SubResource("AtlasTexture_ajidi") -popup/item_0/id = 0 -popup/item_1/text = "" popup/item_1/icon = SubResource("AtlasTexture_pqf16") popup/item_1/id = 1 -popup/item_2/text = "" popup/item_2/icon = SubResource("AtlasTexture_e2ase") popup/item_2/id = 2 -popup/item_3/text = "" popup/item_3/icon = SubResource("AtlasTexture_w5yhn") popup/item_3/id = 3 [node name="Value" type="Label" parent="."] -layout_mode = 1 -anchors_preset = -1 -anchor_left = 0.017 -anchor_right = 0.983 -anchor_bottom = 0.656 -offset_left = -0.0400002 -offset_right = 0.0399933 -offset_bottom = 0.00799942 +layout_mode = 2 +offset_top = 6.0 +offset_right = 120.0 +offset_bottom = 26.0 grow_horizontal = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_outline_color = Color(0, 0, 0, 1) diff --git a/material_maker/widgets/gradient_editor/gradient_popup.gd b/material_maker/widgets/gradient_editor/gradient_popup.gd index 45be5583d..d8ded0def 100644 --- a/material_maker/widgets/gradient_editor/gradient_popup.gd +++ b/material_maker/widgets/gradient_editor/gradient_popup.gd @@ -1,19 +1,70 @@ -@tool -extends Popup +extends Control -signal updated(value) +signal updated(value, merge_undos) +signal about_to_close() +signal active_cursor_changed(index:int) -func init(value) -> void: - $Panel/Control.set_value(value) -func _on_Control_updated(value, cc : bool = true) -> void: - emit_signal("updated", value, cc) +func _ready() -> void: + %GradientEdit.remove_popup_button() -func _on_GradientPopup_popup_hide() -> void: + +func set_gradient(value:MMGradient, cursor_index := 0) -> void: + %GradientEdit.value = value + + # Usually the gradient isn't instantly loaded, + # because the nodes size isn't yet correct, so we wait until the Cursors are loaded + await %GradientEdit.value_was_set + %Interpolation.selected = value.interpolation + %GradientEdit.active_cursor = cursor_index + + +# Handle closing the popup +func _input(event:InputEvent) -> void: + if event is InputEventMouseButton and event.pressed: + if not get_global_rect().has_point(get_global_mouse_position()): + if not %Pin.button_pressed: + close() + accept_event() + + +func close() -> void: + about_to_close.emit() queue_free() -func _on_size_changed(): - $Panel.position = Vector2i(0, 0) - $Panel.size = size - $Panel/Control.position = Vector2i(5, 5) - $Panel/Control.size = size-Vector2i(10, 10) + +func _on_gradient_edit_updated(value: Variant, merge_undos: bool) -> void: + # Propagate changes to the parent GradientEdit + updated.emit(value, merge_undos) + + # Update values of the active cursor + _on_gradient_edit_active_cursor_changed() + + +func _on_gradient_edit_active_cursor_changed() -> void: + active_cursor_changed.emit(%GradientEdit.active_cursor) + + var active_cursor = %GradientEdit.get_active_cursor() + %Offset.set_value(snappedf(active_cursor.get_cursor_offset(), 0.001)) + %ColorRect.color = active_cursor.color + %ColorRect.color.a = 1 + + +func _on_interpolation_item_selected(index: int) -> void: + %GradientEdit.set_interpolation(index) + + +func _on_offset_value_changed_undo(value: Variant, merge_undo: Variant) -> void: + %GradientEdit.get_active_cursor().set_cursor_offset(value, merge_undo) + + +func _on_color_button_pressed() -> void: + %GradientEdit.select_color(%GradientEdit.get_active_cursor()) + + +func _on_previous_pressed() -> void: + %GradientEdit.active_cursor -= 1 + + +func _on_next_pressed() -> void: + %GradientEdit.active_cursor += 1 diff --git a/material_maker/widgets/gradient_editor/gradient_popup.tscn b/material_maker/widgets/gradient_editor/gradient_popup.tscn index cecf10f05..7b21951eb 100644 --- a/material_maker/widgets/gradient_editor/gradient_popup.tscn +++ b/material_maker/widgets/gradient_editor/gradient_popup.tscn @@ -1,34 +1,107 @@ -[gd_scene load_steps=4 format=3 uid="uid://in4lqr3eetvc"] +[gd_scene load_steps=8 format=3 uid="uid://in4lqr3eetvc"] [ext_resource type="Script" path="res://material_maker/widgets/gradient_editor/gradient_popup.gd" id="1"] -[ext_resource type="PackedScene" uid="uid://ccm3h8eyt35f5" path="res://material_maker/widgets/gradient_editor/gradient_editor.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://rflulhsuy3ax" path="res://material_maker/widgets/float_edit/float_edit.tscn" id="2_fotv7"] +[ext_resource type="PackedScene" uid="uid://cp6ft7qbucfam" path="res://material_maker/widgets/gradient_editor/gradient_edit.tscn" id="2_uait3"] +[ext_resource type="Texture2D" uid="uid://c87dumeqpcpkn" path="res://material_maker/theme/dark/tabcontainer_decrement.png" id="2_xmqsa"] +[ext_resource type="PackedScene" uid="uid://dj5q8sxvd3gci" path="res://material_maker/widgets/option_edit/option_edit.tscn" id="3_2wy2b"] +[ext_resource type="Texture2D" uid="uid://c7tbnm43rce6e" path="res://material_maker/theme/dark/vslider_grabber_highlight.png" id="3_bxwrk"] +[ext_resource type="Texture2D" uid="uid://d3y3kp5qy5x30" path="res://material_maker/theme/dark/tabcontainer_increment.png" id="4_fwye6"] -[sub_resource type="StyleBoxFlat" id="1"] -bg_color = Color(0, 0, 0.25098, 0.752941) - -[node name="GradientPopup" type="Popup"] -size = Vector2i(420, 40) -visible = true +[node name="GradientPopup" type="MarginContainer"] +top_level = true +offset_right = 400.0 +offset_bottom = 70.0 +theme_override_constants/margin_left = 0 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 0 +theme_override_constants/margin_bottom = 0 script = ExtResource("1") -[node name="Panel" type="Panel" parent="."] -offset_right = 420.0 -offset_bottom = 40.0 -theme_override_styles/panel = SubResource("1") +[node name="Panel" type="PanelContainer" parent="."] +custom_minimum_size = Vector2(400, 0) +layout_mode = 2 +theme_type_variation = &"MM_NodeGradientEditPopup" + +[node name="VBox" type="VBoxContainer" parent="Panel"] +layout_mode = 2 + +[node name="HBox" type="HBoxContainer" parent="Panel/VBox"] +layout_mode = 2 +alignment = 2 + +[node name="Previous" type="Button" parent="Panel/VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +icon = ExtResource("2_xmqsa") + +[node name="Offset" parent="Panel/VBox/HBox" instance=ExtResource("2_fotv7")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +step = 0.001 +float_only = true + +[node name="Next" type="Button" parent="Panel/VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +icon = ExtResource("4_fwye6") + +[node name="Control" type="Control" parent="Panel/VBox/HBox"] +custom_minimum_size = Vector2(15, 0) +layout_mode = 2 + +[node name="Interpolation" parent="Panel/VBox/HBox" instance=ExtResource("3_2wy2b")] +unique_name_in_owner = true +layout_mode = 2 +selected = 0 +item_count = 4 +popup/item_0/text = "Constant" +popup/item_1/text = "Linear" +popup/item_1/id = 1 +popup/item_2/text = "Cubic?" +popup/item_2/id = 2 +popup/item_3/text = "Huh?" +popup/item_3/id = 3 + +[node name="Pin" type="Button" parent="Panel/VBox/HBox"] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "Pin" +theme_override_colors/icon_pressed_color = Color(0.850395, 0.313357, 0.714746, 1) +toggle_mode = true +icon = ExtResource("3_bxwrk") +flat = true + +[node name="GradientEdit" parent="Panel/VBox" instance=ExtResource("2_uait3")] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 35) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ColorButton" type="Button" parent="Panel/VBox"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 25) +layout_mode = 2 -[node name="Control" parent="Panel" instance=ExtResource("2")] +[node name="ColorRect" type="ColorRect" parent="Panel/VBox/ColorButton"] +unique_name_in_owner = true layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = 5.0 -offset_top = 5.0 -offset_right = 415.0 -offset_bottom = 37.0 +offset_left = 3.0 +offset_top = 3.0 +offset_right = -3.0 +offset_bottom = -3.0 grow_horizontal = 2 grow_vertical = 2 -embedded = false +mouse_filter = 2 -[connection signal="popup_hide" from="." to="." method="_on_GradientPopup_popup_hide"] -[connection signal="size_changed" from="." to="." method="_on_size_changed"] -[connection signal="updated" from="Panel/Control" to="." method="_on_Control_updated"] +[connection signal="pressed" from="Panel/VBox/HBox/Previous" to="." method="_on_previous_pressed"] +[connection signal="value_changed_undo" from="Panel/VBox/HBox/Offset" to="." method="_on_offset_value_changed_undo"] +[connection signal="pressed" from="Panel/VBox/HBox/Next" to="." method="_on_next_pressed"] +[connection signal="item_selected" from="Panel/VBox/HBox/Interpolation" to="." method="_on_interpolation_item_selected"] +[connection signal="active_cursor_changed" from="Panel/VBox/GradientEdit" to="." method="_on_gradient_edit_active_cursor_changed"] +[connection signal="updated" from="Panel/VBox/GradientEdit" to="." method="_on_gradient_edit_updated"] +[connection signal="pressed" from="Panel/VBox/ColorButton" to="." method="_on_color_button_pressed"] From 0d90a96c31ba7050823a8992418c8e3dc99d0f19 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sat, 3 Aug 2024 14:16:03 +0200 Subject: [PATCH 27/42] Remove old Gradient Editor --- .../gradient_editor/gradient_editor.gd | 244 ------------------ .../gradient_editor/gradient_editor.tscn | 113 -------- .../node_editor/parameter_gradient.tscn | 5 +- 3 files changed, 3 insertions(+), 359 deletions(-) delete mode 100644 material_maker/widgets/gradient_editor/gradient_editor.gd delete mode 100644 material_maker/widgets/gradient_editor/gradient_editor.tscn diff --git a/material_maker/widgets/gradient_editor/gradient_editor.gd b/material_maker/widgets/gradient_editor/gradient_editor.gd deleted file mode 100644 index c2e6fd2de..000000000 --- a/material_maker/widgets/gradient_editor/gradient_editor.gd +++ /dev/null @@ -1,244 +0,0 @@ -extends Control - -class GradientCursor: - extends Control - - var color : Color - var sliding : bool = false - - @onready var label : Label = get_parent().get_node("Value") - - const WIDTH : int = 10 - - func _ready() -> void: - position = Vector2(0, 15) - size = Vector2(WIDTH, 15) - - func _draw() -> void: -# warning-ignore:integer_division - var polygon : PackedVector2Array = PackedVector2Array([Vector2(0, 5), Vector2(WIDTH/2, 0), Vector2(WIDTH, 5), Vector2(WIDTH, 15), Vector2(0, 15), Vector2(0, 5)]) - var c = color - c.a = 1.0 - draw_colored_polygon(polygon, c) - draw_polyline(polygon, Color(0.0, 0.0, 0.0) if color.v > 0.5 else Color(1.0, 1.0, 1.0)) - - func _gui_input(ev : InputEvent) -> void: - if ev is InputEventMouseButton: - if ev.button_index == MOUSE_BUTTON_LEFT: - if ev.double_click: - get_parent().select_color(self, ev.global_position) - elif ev.pressed: - get_parent().continuous_change = false - sliding = true - label.visible = true - label.text = "%.03f" % get_caret_column() - else: - sliding = false - label.visible = false - elif ev.button_index == MOUSE_BUTTON_RIGHT and get_parent().get_sorted_cursors().size() > 2: - var parent = get_parent() - parent.remove_child(self) - parent.continuous_change = false - parent.update_from_value() - queue_free() - elif ev is InputEventMouseMotion and (ev.button_mask & MOUSE_BUTTON_MASK_LEFT) != 0 and sliding: - position.x += get_local_mouse_position().x - if ev.is_command_or_control_pressed(): - position.x = round(get_caret_column()*20.0)*0.05*(get_parent().size.x - WIDTH) - position.x = min(max(0, position.x), get_parent().size.x-size.x) - get_parent().update_from_value() - label.text = "%.03f" % get_caret_column() - - func get_caret_column() -> float: - return position.x / (get_parent().size.x - WIDTH) - - func set_color(c) -> void: - color = c - get_parent().update_from_value() - queue_redraw() - - static func sort(a, b) -> bool: - return a.get_position() < b.get_position() - - func _can_drop_data(_position, data) -> bool: - return typeof(data) == TYPE_COLOR - - func _drop_data(_position, data) -> void: - set_color(data) - - -var actual_value : MMGradient = null -var value : MMGradient = null : - get: - return actual_value - set(new_value): - set_value(new_value) -@export var embedded : bool = true - -var continuous_change : bool = true -var popup : Popup = null - -signal updated(value, cc) - - -func _ready() -> void: - $Gradient.material = $Gradient.material.duplicate(true) - set_value(MMGradient.new()) - -func get_gradient_from_data(data): - if typeof(data) == TYPE_ARRAY: - return data - elif typeof(data) == TYPE_DICTIONARY: - if data.has("parameters") and data.parameters.has("gradient"): - return data.parameters.gradient - if data.has("type") and data.type == "Gradient": - return data - return null - -func _get_drag_data(_position : Vector2): - var data = MMType.serialize_value(value) - var preview = ColorRect.new() - preview.size = Vector2(64, 24) - preview.material = $Gradient.material - set_drag_preview(preview) - return data - -func _can_drop_data(_position : Vector2, data) -> bool: - return get_gradient_from_data(data) != null or typeof(data) == TYPE_COLOR - -func _drop_data(position : Vector2, data) -> void: - if typeof(data) == TYPE_COLOR: - var p = clamp(position.x, 0, size.x-GradientCursor.WIDTH) - add_cursor(p, data) - continuous_change = false - update_from_value() - else: - var gradient = get_gradient_from_data(data) - if gradient != null: - set_value_and_update(MMType.deserialize_value(gradient), false) - -func set_value(v : MMGradient, from_popup : bool = false) -> void: - actual_value = v - for c in get_children(): - if c is GradientCursor: - remove_child(c) - c.free() - for p in value.points: - add_cursor(p.v*(size.x-GradientCursor.WIDTH), p.c) - $Interpolation.selected = value.interpolation - update_shader() - if !from_popup and popup != null: - popup.init(value) - -func update_from_value() -> void: - var cursors : Array = [] - for c in get_children(): - if c is GradientCursor: - cursors.append(c) - if cursors.size() != value.points.size(): - value.clear() - for c in get_children(): - if c is GradientCursor: - value.add_point(c.position.x/(size.x-GradientCursor.WIDTH), c.color) - update_shader() - else: - for i in cursors.size(): - var c = cursors[i] - var p : float = c.position.x/(size.x-GradientCursor.WIDTH) - value.set_point_position(i, p) - value.points[i].c = c.color - update_shader_parameters() - emit_signal("updated", value, continuous_change) - continuous_change = true - - -func set_value_and_update(v, cc : bool = true) -> void: - if ! cc: - continuous_change = false - set_value(v, true) - update_from_value() - - -func add_cursor(x, color) -> void: - var cursor = GradientCursor.new() - add_child(cursor) - cursor.position.x = x - cursor.color = color - - -func _gui_input(ev) -> void: - if ev is InputEventMouseButton and ev.button_index == 1 and ev.double_click: - if embedded and ev.position.y < 15: - popup = load("res://material_maker/widgets/gradient_editor/gradient_popup.tscn").instantiate() - add_child(popup) - var popup_size : Vector2i = Vector2i(420, 40) - popup.popup(Rect2(get_window().position+Vector2i(ev.global_position)-Vector2i(popup_size.x / 2, 0), popup_size)) - popup.init(value) - popup.connect("updated", Callable(self, "set_value_and_update")) - popup._on_size_changed() - else: - var p = clamp(ev.position.x, 0, size.x-GradientCursor.WIDTH) - add_cursor(p, get_gradient_color(p)) - continuous_change = false - update_from_value() - -# Showing a color picker popup to change a cursor's color - -var active_cursor - -func select_color(cursor, at_position) -> void: - active_cursor = cursor - var color_picker_popup = preload("res://material_maker/widgets/color_picker_popup/color_picker_popup.tscn").instantiate() - add_child(color_picker_popup) - var color_picker = color_picker_popup.get_node("ColorPicker") - color_picker.color = cursor.color - color_picker.connect("color_changed",Callable(cursor,"set_color")) - color_picker_popup.position = at_position - color_picker_popup.connect("popup_hide",Callable(color_picker_popup,"queue_free")) - color_picker_popup.connect("popup_hide",Callable(self,"on_close_popup")) - color_picker_popup.popup() - -# Calculating a color from the gradient and generating the shader - -func get_sorted_cursors() -> Array: - var array = [] - for c in get_children(): - if c is GradientCursor: - array.append(c) - array.sort_custom(Callable(GradientCursor, "sort")) - return array - -func get_gradient_color(x) -> Color: - return value.get_color(x / (size.x - GradientCursor.WIDTH)) - -func update_shader() -> void: - var shader - shader = "shader_type canvas_item;\n" - shader += value.get_shader_params("") - shader += value.get_shader("") - shader += "void fragment() { COLOR = _gradient_fct(UV.x); }" - $Gradient.material.shader.set_code(shader) - update_shader_parameters() - -func update_shader_parameters() -> void: - var parameter_values : Dictionary = value.get_parameter_values("") - for n in parameter_values.keys(): - $Gradient.material.set_shader_parameter(n, parameter_values[n]) - -func _on_interpolation_pressed(): - pass - #var popup : PopupMenu = $Interpolation.get_popup() - #TODO set scaling factor - #popup.content_scale_factor = 0.5 - -func _on_interpolation_item_selected(ID) -> void: - value.interpolation = ID - update_shader() - emit_signal("updated", value, false) - -func _on_Control_resized(): - if value != null: - set_value(value) - -func on_close_popup(): - popup = null diff --git a/material_maker/widgets/gradient_editor/gradient_editor.tscn b/material_maker/widgets/gradient_editor/gradient_editor.tscn deleted file mode 100644 index ffb55e760..000000000 --- a/material_maker/widgets/gradient_editor/gradient_editor.tscn +++ /dev/null @@ -1,113 +0,0 @@ -[gd_scene load_steps=12 format=3 uid="uid://ccm3h8eyt35f5"] - -[ext_resource type="Script" path="res://material_maker/widgets/gradient_editor/gradient_editor.gd" id="1"] -[ext_resource type="Texture2D" uid="uid://c0j4px4n72di5" path="res://material_maker/icons/icons.tres" id="2"] - -[sub_resource type="Shader" id="1"] -code = "shader_type canvas_item; - -void fragment() { - COLOR = vec4(vec3(2.0*fract(0.5*(floor(0.12*FRAGCOORD.x)+floor(0.125*FRAGCOORD.y)))), 1.0); -}" - -[sub_resource type="ShaderMaterial" id="2"] -shader = SubResource("1") - -[sub_resource type="Shader" id="3"] -code = "shader_type canvas_item; -vec4 gradient(float x) { - if (x < 0.000000000) { - return vec4(0.000000000,0.000000000,0.000000000,0.000000000); - } else if (x < 1.000000000) { - return (mix(vec4(0.000000000,0.000000000,0.000000000,0.000000000), vec4(1.000000000,1.000000000,1.000000000,1.000000000), (x-0.000000000)/1.000000000)); - } - return vec4(1.000000000,1.000000000,1.000000000,1.000000000); -} -void fragment() { COLOR = gradient(UV.x); }" - -[sub_resource type="ShaderMaterial" id="4"] -shader = SubResource("3") - -[sub_resource type="Theme" id="5"] - -[sub_resource type="AtlasTexture" id="AtlasTexture_ajidi"] -atlas = ExtResource("2") -region = Rect2(64, 0, 32, 16) - -[sub_resource type="AtlasTexture" id="AtlasTexture_pqf16"] -atlas = ExtResource("2") -region = Rect2(96, 0, 32, 16) - -[sub_resource type="AtlasTexture" id="AtlasTexture_e2ase"] -atlas = ExtResource("2") -region = Rect2(64, 16, 32, 16) - -[sub_resource type="AtlasTexture" id="AtlasTexture_w5yhn"] -atlas = ExtResource("2") -region = Rect2(96, 16, 32, 16) - -[node name="Control" type="Control"] -custom_minimum_size = Vector2(120, 32) -layout_mode = 3 -anchors_preset = 0 -offset_right = 120.0 -offset_bottom = 32.0 -focus_mode = 1 -script = ExtResource("1") - -[node name="Border" type="ColorRect" parent="."] -custom_minimum_size = Vector2(114, 19) -layout_mode = 2 -offset_right = 120.0 -offset_bottom = 32.0 -mouse_filter = 2 -color = Color(0.5, 0.5, 0.5, 1) - -[node name="Background" type="ColorRect" parent="."] -material = SubResource("2") -custom_minimum_size = Vector2(112, 17) -layout_mode = 2 -offset_right = 120.0 -offset_bottom = 32.0 -mouse_filter = 2 - -[node name="Gradient" type="ColorRect" parent="."] -material = SubResource("4") -custom_minimum_size = Vector2(112, 17) -layout_mode = 2 -offset_right = 120.0 -offset_bottom = 32.0 -mouse_filter = 2 -theme = SubResource("5") - -[node name="Interpolation" type="OptionButton" parent="."] -layout_mode = 2 -offset_left = -22.0 -offset_top = -13.0 -offset_right = 42.0 -offset_bottom = 11.0 -item_count = 4 -popup/item_0/icon = SubResource("AtlasTexture_ajidi") -popup/item_1/icon = SubResource("AtlasTexture_pqf16") -popup/item_1/id = 1 -popup/item_2/icon = SubResource("AtlasTexture_e2ase") -popup/item_2/id = 2 -popup/item_3/icon = SubResource("AtlasTexture_w5yhn") -popup/item_3/id = 3 - -[node name="Value" type="Label" parent="."] -layout_mode = 2 -offset_top = 6.0 -offset_right = 120.0 -offset_bottom = 26.0 -grow_horizontal = 2 -theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 4 -theme_override_font_sizes/font_size = 14 -horizontal_alignment = 1 -vertical_alignment = 1 - -[connection signal="resized" from="." to="." method="_on_Control_resized"] -[connection signal="item_selected" from="Interpolation" to="." method="_on_interpolation_item_selected"] -[connection signal="pressed" from="Interpolation" to="." method="_on_interpolation_pressed"] diff --git a/material_maker/windows/node_editor/parameter_gradient.tscn b/material_maker/windows/node_editor/parameter_gradient.tscn index fdb421ade..b44ac0210 100644 --- a/material_maker/windows/node_editor/parameter_gradient.tscn +++ b/material_maker/windows/node_editor/parameter_gradient.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://c6pc6upxc23kc"] [ext_resource type="Script" path="res://material_maker/windows/node_editor/parameter_gradient.gd" id="1"] -[ext_resource type="PackedScene" uid="uid://ccm3h8eyt35f5" path="res://material_maker/widgets/gradient_editor/gradient_editor.tscn" id="2"] +[ext_resource type="PackedScene" uid="uid://cp6ft7qbucfam" path="res://material_maker/widgets/gradient_editor/gradient_edit.tscn" id="2_v2daf"] [node name="gradient" type="HBoxContainer"] offset_right = 148.0 @@ -12,5 +12,6 @@ script = ExtResource("1") layout_mode = 2 text = "Default:" -[node name="Default" parent="." instance=ExtResource("2")] +[node name="Default" parent="." instance=ExtResource("2_v2daf")] +custom_minimum_size = Vector2(200, 0) layout_mode = 2 From ffb23bee7be5e8ec09ae4cac07e24b32413ccbd7 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sat, 3 Aug 2024 14:16:41 +0200 Subject: [PATCH 28/42] Allow to Ctrl+C and Ctrl+V Gradient --- .../widgets/gradient_editor/gradient_edit.gd | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/material_maker/widgets/gradient_editor/gradient_edit.gd b/material_maker/widgets/gradient_editor/gradient_edit.gd index 87f05d7ba..d944b0abb 100644 --- a/material_maker/widgets/gradient_editor/gradient_edit.gd +++ b/material_maker/widgets/gradient_editor/gradient_edit.gd @@ -286,6 +286,29 @@ func _drop_data(pos: Vector2, data: Variant) -> void: preview_cursor.queue_free() preview_cursor = null + +# Handle Ctrl+C and Ctrl+V to copy and paste the gradient +func _input(ev:InputEvent) -> void: + if not Rect2(Vector2(), size).has_point(get_local_mouse_position()): + return + + if mode == Modes.IDLE: + if ev is InputEventKey and ev.is_command_or_control_pressed(): + if not ev.pressed: + return + if ev.keycode == KEY_V: + var val = "" + if DisplayServer.clipboard_get().is_valid_html_color(): + val = Color(val) + else: + val = str_to_var(DisplayServer.clipboard_get()) + + _drop_data(get_local_mouse_position(), val) + accept_event() + + if ev.keycode == KEY_C: + DisplayServer.clipboard_set(var_to_str(MMType.serialize_value(value))) + accept_event() #endregion From 815e62e5e79d369c0319fee21273643a1ad4484b Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sat, 3 Aug 2024 14:48:40 +0200 Subject: [PATCH 29/42] Tiny fix to GradientEdit pasting color --- material_maker/widgets/gradient_editor/gradient_edit.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/material_maker/widgets/gradient_editor/gradient_edit.gd b/material_maker/widgets/gradient_editor/gradient_edit.gd index d944b0abb..eff34af4d 100644 --- a/material_maker/widgets/gradient_editor/gradient_edit.gd +++ b/material_maker/widgets/gradient_editor/gradient_edit.gd @@ -299,7 +299,7 @@ func _input(ev:InputEvent) -> void: if ev.keycode == KEY_V: var val = "" if DisplayServer.clipboard_get().is_valid_html_color(): - val = Color(val) + val = Color.from_string(DisplayServer.clipboard_get(), Color.WHITE) else: val = str_to_var(DisplayServer.clipboard_get()) From f130436bb48a9de01e447de7b89fc6ecf129022e Mon Sep 17 00:00:00 2001 From: Rodz Labs Date: Sat, 3 Aug 2024 19:18:19 +0200 Subject: [PATCH 30/42] Updated export presets for new gradient parameter editor --- export_presets.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/export_presets.cfg b/export_presets.cfg index a36c6d176..1580e3165 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -7,7 +7,7 @@ advanced_options=false dedicated_server=false custom_features="" export_filter="resources" -export_files=PackedStringArray("res://addons/material_maker/engine/dependencies.gd", "res://addons/material_maker/engine/io_types.gd", "res://addons/material_maker/engine/loader.gd", "res://addons/material_maker/engine/multi_renderer.gd", "res://addons/material_maker/engine/paths.gd", "res://addons/material_maker/engine/preprocessor.gd", "res://addons/material_maker/engine/renderer.gd", "res://addons/material_maker/engine/renderer.tscn", "res://addons/material_maker/parser/glsl_parser.gd", "res://addons/material_maker/parser/glsl_parser_base.gd", "res://addons/material_maker/parser/parser_base.gd", "res://material_maker/windows/node_editor/parameter.gd", "res://material_maker/main_window_projects_panel.gd", "res://material_maker/panel_container.gd", "res://material_maker/windows/sdf_builder/preview_3d.gdshader", "res://material_maker/windows/sdf_builder/preview_2d.gdshader", "res://material_maker/windows/sdf_builder/gizmo.gdshader", "res://material_maker/icons/icons.gd", "res://start.tscn", "res://start.gd", "res://material_maker/windows/sdf_builder/sdf_builder_tree.gd", "res://material_maker/windows/sdf_builder/sdf_builder.tscn", "res://material_maker/windows/sdf_builder/sdf_builder.gd", "res://material_maker/windows/sdf_builder/preview_3d.tscn", "res://material_maker/windows/sdf_builder/preview_3d.gd", "res://material_maker/windows/sdf_builder/preview_2d.tscn", "res://material_maker/windows/sdf_builder/preview_2d.gd", "res://material_maker/windows/sdf_builder/gizmo_arrow.tscn", "res://material_maker/windows/sdf_builder/gizmo_arrow.gd", "res://material_maker/windows/sdf_builder/gizmo.tscn", "res://material_maker/windows/sdf_builder/gizmo.gd", "res://material_maker/windows/progress_window/progress_window.tscn", "res://material_maker/windows/progress_window/progress_window.gd", "res://material_maker/windows/preferences/preferences.tscn", "res://material_maker/windows/preferences/preferences.gd", "res://material_maker/windows/preferences/language_download.tscn", "res://material_maker/windows/preferences/language_download.gd", "res://material_maker/windows/preferences/lang_option.gd", "res://material_maker/windows/preferences/float_option.tscn", "res://material_maker/windows/preferences/float_option.gd", "res://material_maker/windows/preferences/bool_option.tscn", "res://material_maker/windows/preferences/bool_option.gd", "res://material_maker/windows/node_editor/parameter_size.tscn", "res://material_maker/windows/node_editor/parameter_size.gd", "res://material_maker/windows/node_editor/parameter_polyline.tscn", "res://material_maker/windows/node_editor/parameter_polygon.tscn", "res://material_maker/windows/node_editor/parameter_polygon.gd", "res://material_maker/windows/node_editor/parameter_gradient.tscn", "res://material_maker/windows/node_editor/parameter_gradient.gd", "res://material_maker/windows/node_editor/parameter_float.tscn", "res://material_maker/windows/node_editor/parameter_float.gd", "res://material_maker/windows/node_editor/output.tscn", "res://material_maker/windows/node_editor/output.gd", "res://material_maker/windows/node_editor/parameter_enum.tscn", "res://material_maker/windows/node_editor/parameter_enum.gd", "res://material_maker/windows/node_editor/parameter_curve.tscn", "res://material_maker/windows/node_editor/parameter_curve.gd", "res://material_maker/windows/node_editor/parameter_color.tscn", "res://material_maker/windows/node_editor/parameter_color.gd", "res://material_maker/windows/node_editor/parameter_boolean.tscn", "res://material_maker/windows/node_editor/parameter_boolean.gd", "res://material_maker/windows/node_editor/parameter.tscn", "res://addons/material_maker/types/curve.gd", "res://addons/material_maker/types/gradient.gd", "res://addons/material_maker/types/polygon.gd", "res://addons/material_maker/types/types.gd", "res://default_env.tres", "res://icon.png", "res://material_maker/darken.gd", "res://material_maker/darken.tscn", "res://material_maker/fonts/DroidSansFallback.ttf", "res://material_maker/fonts/DroidSansJapanese.ttf", "res://material_maker/fonts/hack.ttf", "res://material_maker/fonts/vegur_regular.otf", "res://material_maker/globals.gd", "res://material_maker/globals.tscn", "res://material_maker/globals_menu_manager.gd", "res://material_maker/icons/add.tres", "res://material_maker/icons/add_generic.tres", "res://material_maker/icons/buffer.tres", "res://material_maker/icons/buffer_paused.tres", "res://material_maker/icons/color_palette.png", "res://material_maker/icons/color_picker.png", "res://material_maker/icons/custom.png", "res://material_maker/icons/down.tres", "res://material_maker/icons/edit.tres", "res://material_maker/icons/eye_closed.tres", "res://material_maker/icons/eye_open.tres", "res://material_maker/icons/godot_logo.svg", "res://material_maker/icons/icons.svg", "res://material_maker/icons/icons.tres", "res://material_maker/icons/link.tres", "res://material_maker/icons/lmb.tres", "res://material_maker/icons/minimize.tres", "res://material_maker/icons/mmb.tres", "res://material_maker/icons/ok.tres", "res://material_maker/icons/output_preview.tres", "res://material_maker/icons/paste_graph.tres", "res://material_maker/icons/paste_newgraph.tres", "res://material_maker/icons/paste_none.tres", "res://material_maker/icons/paste_palette.tres", "res://material_maker/icons/port_group_0.tres", "res://material_maker/icons/port_group_1.tres", "res://material_maker/icons/port_group_2.tres", "res://material_maker/icons/port_group_3.tres", "res://material_maker/icons/preview.png", "res://material_maker/icons/preview_locked.png", "res://material_maker/icons/randomness_locked.tres", "res://material_maker/icons/randomness_unlocked.tres", "res://material_maker/icons/remove.tres", "res://material_maker/icons/rmb.tres", "res://material_maker/icons/up.tres", "res://material_maker/locale/locale.gd", "res://material_maker/main_window.gd", "res://material_maker/main_window.tscn", "res://material_maker/main_window_layout.gd", "res://material_maker/meshes/suzanne.obj", "res://material_maker/node_factory.gd", "res://material_maker/nodes/base.gd", "res://material_maker/nodes/comment/comment.gd", "res://material_maker/nodes/comment/comment.tscn", "res://material_maker/nodes/comment/palette_button.gd", "res://material_maker/nodes/debug/debug.gd", "res://material_maker/nodes/debug/debug.tscn", "res://material_maker/nodes/debug/debug_popup.gd", "res://material_maker/nodes/debug/debug_popup.tscn", "res://material_maker/nodes/edit_buttons.gd", "res://material_maker/nodes/edit_buttons.tscn", "res://material_maker/nodes/generic/generic.gd", "res://material_maker/nodes/generic/generic.tscn", "res://material_maker/nodes/ios/add.tscn", "res://material_maker/nodes/ios/ios.gd", "res://material_maker/nodes/ios/ios.tscn", "res://material_maker/nodes/ios/port.gd", "res://material_maker/nodes/ios/port.tscn", "res://material_maker/nodes/material_export/material_export.gd", "res://material_maker/nodes/material_export/material_export.tscn", "res://material_maker/nodes/minimal.gd", "res://material_maker/nodes/remote/named_parameter_dialog.gd", "res://material_maker/nodes/remote/named_parameter_dialog.tscn", "res://material_maker/nodes/remote/remote.gd", "res://material_maker/nodes/remote/remote.tscn", "res://material_maker/nodes/reroute/reroute.gd", "res://material_maker/nodes/reroute/reroute.tscn", "res://material_maker/nodes/switch/switch.gd", "res://material_maker/nodes/switch/switch.tscn", "res://material_maker/nodes/tones/tones.gd", "res://material_maker/nodes/tones/tones.tscn", "res://material_maker/panels/brushes/brushes.gd", "res://material_maker/panels/brushes/brushes.tscn", "res://material_maker/panels/graph_edit/graph_edit.gd", "res://material_maker/panels/graph_edit/graph_edit.tscn", "res://material_maker/panels/hierarchy/hierarchy_panel.gd", "res://material_maker/panels/hierarchy/hierarchy_panel.tscn", "res://material_maker/panels/layers/add_layer_menu.tscn", "res://material_maker/panels/layers/icons/layer_mask.tres", "res://material_maker/panels/layers/icons/layer_paint.tres", "res://material_maker/panels/layers/icons/layer_proc.tres", "res://material_maker/panels/layers/icons/not_visible.tres", "res://material_maker/panels/layers/icons/visible.tres", "res://material_maker/panels/layers/layer_config_popup.gd", "res://material_maker/panels/layers/layer_config_popup.tscn", "res://material_maker/panels/layers/layer_tooltip.gd", "res://material_maker/panels/layers/layer_tooltip.tscn", "res://material_maker/panels/layers/layer_tooltip_thumbnail.gd", "res://material_maker/panels/layers/layer_tooltip_thumbnail.tscn", "res://material_maker/panels/layers/layers.gd", "res://material_maker/panels/layers/layers.tscn", "res://material_maker/panels/layers/layers_tree.gd", "res://material_maker/panels/library/button_greyed.tres", "res://material_maker/panels/library/create_lib_dialog.gd", "res://material_maker/panels/library/create_lib_dialog.tscn", "res://material_maker/panels/library/library.gd", "res://material_maker/panels/library/library.tscn", "res://material_maker/panels/library/library_tree.gd", "res://material_maker/panels/paint/export.gd", "res://material_maker/panels/paint/export.tscn", "res://material_maker/panels/paint/layer_types/layer.gd", "res://material_maker/panels/paint/layer_types/layer_mask.gd", "res://material_maker/panels/paint/layer_types/layer_paint.gd", "res://material_maker/panels/paint/layer_types/layer_procedural.gd", "res://material_maker/panels/paint/paint.gd", "res://material_maker/panels/paint/paint.tscn", "res://material_maker/panels/paint/paint_layers.gd", "res://material_maker/panels/paint/paint_layers.tscn", "res://material_maker/panels/paint/paint_project_settings.gd", "res://material_maker/panels/paint/paint_project_settings.tscn", "res://material_maker/panels/paint/collapse_button.tscn", "res://material_maker/panels/paint/collapse_button.gd", "res://material_maker/panels/parameters/parameters.gd", "res://material_maker/panels/parameters/parameters.tscn", "res://material_maker/panels/preview_2d/control_point.gd", "res://material_maker/panels/preview_2d/control_point.tscn", "res://material_maker/panels/preview_2d/lines.gd", "res://material_maker/panels/preview_2d/preview_2d.gd", "res://material_maker/panels/preview_2d/preview_2d.tscn", "res://material_maker/panels/preview_2d/preview_2d_node.gd", "res://material_maker/panels/preview_2d/preview_2d_node.tscn", "res://material_maker/panels/preview_2d/preview_2d_panel.gd", "res://material_maker/panels/preview_2d/preview_2d_panel.tscn", "res://material_maker/panels/preview_3d/materials/shader_material_tesselated.tres", "res://material_maker/panels/preview_3d/materials/spatial_material.tres", "res://material_maker/panels/preview_3d/mesh_config_popup.gd", "res://material_maker/panels/preview_3d/mesh_config_popup.tscn", "res://material_maker/panels/preview_3d/preview_3d.gd", "res://material_maker/panels/preview_3d/preview_3d.tscn", "res://material_maker/panels/preview_3d/preview_3d_panel.gd", "res://material_maker/panels/preview_3d/preview_3d_panel.tscn", "res://material_maker/panels/preview_3d/preview_3d_scene.tscn", "res://material_maker/panels/preview_3d/preview_3d_ui.gd", "res://material_maker/panels/preview_3d/preview_3d_ui.tscn", "res://material_maker/panels/preview_3d/preview_light.gd", "res://material_maker/panels/preview_3d/preview_light.tscn", "res://material_maker/panels/preview_3d/preview_mesh.gd", "res://material_maker/panels/preview_3d/preview_objects.tscn", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cube.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Custom.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cylinder.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Plane.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Prism.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Sphere.png", "res://material_maker/panels/reference/color_slot.gd", "res://material_maker/panels/reference/color_slot.tscn", "res://material_maker/panels/reference/gradient_slot.gd", "res://material_maker/panels/reference/gradient_slot.tscn", "res://material_maker/panels/reference/reference_panel.gd", "res://material_maker/panels/reference/reference_panel.tscn", "res://material_maker/theme/dark.tres", "res://material_maker/theme/dark/checkbox_checked.png", "res://material_maker/theme/dark/checkbox_radio_checked.png", "res://material_maker/theme/dark/checkbox_radio_unchecked.png", "res://material_maker/theme/dark/checkbox_unchecked.png", "res://material_maker/theme/dark/checkbutton_off.png", "res://material_maker/theme/dark/checkbutton_off_disabled.png", "res://material_maker/theme/dark/checkbutton_on.png", "res://material_maker/theme/dark/checkbutton_on_disabled.png", "res://material_maker/theme/dark/colorpickerbutton_bg.png", "res://material_maker/theme/dark/curve_preset_bevel.tres", "res://material_maker/theme/dark/curve_preset_bounce.tres", "res://material_maker/theme/dark/curve_preset_easein.tres", "res://material_maker/theme/dark/curve_preset_easeinout.tres", "res://material_maker/theme/dark/curve_preset_easeout.tres", "res://material_maker/theme/dark/curve_preset_linear.tres", "res://material_maker/theme/dark/curve_preset_sawtooth.tres", "res://material_maker/theme/dark/curve_presets.svg", "res://material_maker/theme/dark/graphedit_minus.png", "res://material_maker/theme/dark/graphedit_more.png", "res://material_maker/theme/dark/graphedit_reset.png", "res://material_maker/theme/dark/graphedit_snap.png", "res://material_maker/theme/dark/graphnode_close.png", "res://material_maker/theme/dark/graphnode_port.png", "res://material_maker/theme/dark/graphnode_resizer.png", "res://material_maker/theme/dark/hslider_grabber.png", "res://material_maker/theme/dark/hslider_grabber_disabled.png", "res://material_maker/theme/dark/hslider_grabber_highlight.png", "res://material_maker/theme/dark/hslider_tick.png", "res://material_maker/theme/dark/hsplitcontainer_grabber.png", "res://material_maker/theme/dark/lineedit_clear.png", "res://material_maker/theme/dark/optionbutton_arrow.png", "res://material_maker/theme/dark/popupmenu_checked.png", "res://material_maker/theme/dark/popupmenu_radio_checked.png", "res://material_maker/theme/dark/popupmenu_radio_unchecked.png", "res://material_maker/theme/dark/popupmenu_submenu.png", "res://material_maker/theme/dark/popupmenu_unchecked.png", "res://material_maker/theme/dark/popupmenu_visibility_hidden.png", "res://material_maker/theme/dark/popupmenu_visibility_visible.png", "res://material_maker/theme/dark/popupmenu_visibility_xray.png", "res://material_maker/theme/dark/sb_checkbox_focus_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_hslider_focus_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/sb_panel_panelf_texture.png", "res://material_maker/theme/dark/sb_panel_panelnc_texture.png", "res://material_maker/theme/dark/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/dark/sb_progressbar_bg_texture.png", "res://material_maker/theme/dark/sb_progressbar_fg_texture.png", "res://material_maker/theme/dark/sb_textedit_completion_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/tabcontainer_decrement.png", "res://material_maker/theme/dark/tabcontainer_decrement_highlight.png", "res://material_maker/theme/dark/tabcontainer_increment.png", "res://material_maker/theme/dark/tabcontainer_increment_highlight.png", "res://material_maker/theme/dark/tabcontainer_menu.png", "res://material_maker/theme/dark/tabcontainer_menu_highlight.png", "res://material_maker/theme/dark/tabs_close.png", "res://material_maker/theme/dark/tabs_decrement.png", "res://material_maker/theme/dark/tabs_decrement_highlight.png", "res://material_maker/theme/dark/tabs_increment.png", "res://material_maker/theme/dark/tabs_increment_highlight.png", "res://material_maker/theme/dark/textedit_fold.png", "res://material_maker/theme/dark/textedit_folded.png", "res://material_maker/theme/dark/textedit_space.png", "res://material_maker/theme/dark/textedit_tab.png", "res://material_maker/theme/dark/tree_arrow.png", "res://material_maker/theme/dark/tree_arrow_collapsed.png", "res://material_maker/theme/dark/tree_checked.png", "res://material_maker/theme/dark/tree_select_arrow.png", "res://material_maker/theme/dark/tree_unchecked.png", "res://material_maker/theme/dark/tree_updown.png", "res://material_maker/theme/dark/vslider_grabber.png", "res://material_maker/theme/dark/vslider_grabber_highlight.png", "res://material_maker/theme/dark/vsplitcontainer_grabber.png", "res://material_maker/theme/dark/windowdialog_close.png", "res://material_maker/theme/dark/windowdialog_close_highlight.png", "res://material_maker/theme/default.tres", "res://material_maker/theme/font.tres", "res://material_maker/theme/light.tres", "res://material_maker/theme/light/checkbox_checked.png", "res://material_maker/theme/light/checkbox_radio_checked.png", "res://material_maker/theme/light/checkbox_radio_unchecked.png", "res://material_maker/theme/light/checkbox_unchecked.png", "res://material_maker/theme/light/checkbutton_off.png", "res://material_maker/theme/light/checkbutton_off_disabled.png", "res://material_maker/theme/light/checkbutton_on.png", "res://material_maker/theme/light/checkbutton_on_disabled.png", "res://material_maker/theme/light/colorpickerbutton_bg.png", "res://material_maker/theme/light/curve_preset_bevel.tres", "res://material_maker/theme/light/curve_preset_bounce.tres", "res://material_maker/theme/light/curve_preset_easein.tres", "res://material_maker/theme/light/curve_preset_easeinout.tres", "res://material_maker/theme/light/curve_preset_easeout.tres", "res://material_maker/theme/light/curve_preset_linear.tres", "res://material_maker/theme/light/curve_preset_sawtooth.tres", "res://material_maker/theme/light/curve_presets.svg", "res://material_maker/theme/light/graphedit_minus.png", "res://material_maker/theme/light/graphedit_more.png", "res://material_maker/theme/light/graphedit_reset.png", "res://material_maker/theme/light/graphedit_snap.png", "res://material_maker/theme/light/graphnode_close.png", "res://material_maker/theme/light/graphnode_port.png", "res://material_maker/theme/light/graphnode_resizer.png", "res://material_maker/theme/light/hslider_grabber.png", "res://material_maker/theme/light/hslider_grabber_disabled.png", "res://material_maker/theme/light/hslider_grabber_highlight.png", "res://material_maker/theme/light/hslider_tick.png", "res://material_maker/theme/light/hsplitcontainer_grabber.png", "res://material_maker/theme/light/lineedit_clear.png", "res://material_maker/theme/light/optionbutton_arrow.png", "res://material_maker/theme/light/popupmenu_checked.png", "res://material_maker/theme/light/popupmenu_radio_checked.png", "res://material_maker/theme/light/popupmenu_radio_unchecked.png", "res://material_maker/theme/light/popupmenu_submenu.png", "res://material_maker/theme/light/popupmenu_unchecked.png", "res://material_maker/theme/light/popupmenu_visibility_hidden.png", "res://material_maker/theme/light/popupmenu_visibility_visible.png", "res://material_maker/theme/light/popupmenu_visibility_xray.png", "res://material_maker/theme/light/sb_checkbox_focus_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_hslider_focus_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/light/sb_panel_panelf_texture.png", "res://material_maker/theme/light/sb_panel_panelnc_texture.png", "res://material_maker/theme/light/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/light/sb_progressbar_bg_texture.png", "res://material_maker/theme/light/sb_progressbar_fg_texture.png", "res://material_maker/theme/light/sb_textedit_completion_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/light/tabcontainer_decrement.png", "res://material_maker/theme/light/tabcontainer_decrement_highlight.png", "res://material_maker/theme/light/tabcontainer_increment.png", "res://material_maker/theme/light/tabcontainer_increment_highlight.png", "res://material_maker/theme/light/tabcontainer_menu.png", "res://material_maker/theme/light/tabcontainer_menu_highlight.png", "res://material_maker/theme/light/tabs_close.png", "res://material_maker/theme/light/tabs_decrement.png", "res://material_maker/theme/light/tabs_decrement_highlight.png", "res://material_maker/theme/light/tabs_increment.png", "res://material_maker/theme/light/tabs_increment_highlight.png", "res://material_maker/theme/light/textedit_fold.png", "res://material_maker/theme/light/textedit_folded.png", "res://material_maker/theme/light/textedit_space.png", "res://material_maker/theme/light/textedit_tab.png", "res://material_maker/theme/light/tree_arrow.png", "res://material_maker/theme/light/tree_arrow_collapsed.png", "res://material_maker/theme/light/tree_checked.png", "res://material_maker/theme/light/tree_select_arrow.png", "res://material_maker/theme/light/tree_unchecked.png", "res://material_maker/theme/light/tree_updown.png", "res://material_maker/theme/light/vslider_grabber.png", "res://material_maker/theme/light/vslider_grabber_highlight.png", "res://material_maker/theme/light/vsplitcontainer_grabber.png", "res://material_maker/theme/light/windowdialog_close.png", "res://material_maker/theme/light/windowdialog_close_highlight.png", "res://material_maker/tools/environment_manager/environment_manager.gd", "res://material_maker/tools/environment_manager/environment_manager.tscn", "res://material_maker/tools/library_manager/library.gd", "res://material_maker/tools/library_manager/library_manager.gd", "res://material_maker/tools/map_renderer/map_renderer.gd", "res://material_maker/tools/map_renderer/map_renderer.tscn", "res://material_maker/tools/painter/brush_preview.gd", "res://material_maker/tools/painter/brush_preview.tscn", "res://material_maker/tools/painter/painter.gd", "res://material_maker/tools/painter/painter.tscn", "res://material_maker/tools/painter/painter_viewport.gd", "res://material_maker/tools/painter/painter_viewport.tscn", "res://material_maker/tools/painter/shaders/init.tres", "res://material_maker/tools/painter/shaders/init_channels.tres", "res://material_maker/tools/painter/shaders/init_copy_shader.tres", "res://material_maker/tools/share/broken_link.tres", "res://material_maker/tools/share/golden_link.tres", "res://material_maker/tools/share/hdri/kloofendal_48d_partly_cloudy_1k.exr", "res://material_maker/tools/share/link.tres", "res://material_maker/tools/share/login_dialog.gd", "res://material_maker/tools/share/login_dialog.tscn", "res://material_maker/tools/share/preview_scene.tscn", "res://material_maker/tools/share/preview_scene_viewer.tscn", "res://material_maker/tools/share/preview_viewport.gd", "res://material_maker/tools/share/preview_viewport.tscn", "res://material_maker/tools/share/share_button.gd", "res://material_maker/tools/share/share_button.tscn", "res://material_maker/tools/share/share_http_request.gd", "res://material_maker/tools/share/share_node_dialog.gd", "res://material_maker/tools/share/share_node_dialog.tscn", "res://material_maker/tools/share/upload_dialog.gd", "res://material_maker/tools/share/upload_dialog.tscn", "res://material_maker/tools/undo_redo/undo_redo.gd", "res://material_maker/widgets/color_picker_button/color_picker_button.gd", "res://material_maker/widgets/color_picker_popup/color_picker_popup.tscn", "res://material_maker/widgets/curve_edit/control_point.gd", "res://material_maker/widgets/curve_edit/control_point.tscn", "res://material_maker/widgets/curve_edit/curve_dialog.gd", "res://material_maker/widgets/curve_edit/curve_dialog.tscn", "res://material_maker/widgets/curve_edit/curve_edit.gd", "res://material_maker/widgets/curve_edit/curve_edit.tscn", "res://material_maker/widgets/curve_edit/curve_editor.gd", "res://material_maker/widgets/curve_edit/curve_editor.tscn", "res://material_maker/widgets/curve_edit/curve_view.gd", "res://material_maker/widgets/curve_edit/curve_view.tscn", "res://material_maker/widgets/curve_edit/presets_selector.gd", "res://material_maker/widgets/curve_edit/slope_point.gd", "res://material_maker/widgets/desc_button/desc_button.gd", "res://material_maker/widgets/desc_button/desc_button.tscn", "res://material_maker/widgets/file_picker_button/file_picker_button.gd", "res://material_maker/widgets/file_picker_button/file_picker_button.tscn", "res://material_maker/widgets/float_edit/expression_editor.gd", "res://material_maker/widgets/float_edit/expression_editor.tscn", "res://material_maker/widgets/float_edit/float_edit.gd", "res://material_maker/widgets/float_edit/float_edit.tscn", "res://material_maker/widgets/gradient_editor/gradient_editor.gd", "res://material_maker/widgets/gradient_editor/gradient_editor.tscn", "res://material_maker/widgets/gradient_editor/gradient_popup.gd", "res://material_maker/widgets/gradient_editor/gradient_popup.tscn", "res://material_maker/widgets/graph_tree/graph_tree.gd", "res://material_maker/widgets/graph_tree/graph_tree.tscn", "res://material_maker/widgets/histogram/histogram.gd", "res://material_maker/widgets/histogram/histogram.tscn", "res://material_maker/widgets/image_picker_button/image_picker_button.gd", "res://material_maker/widgets/image_picker_button/image_picker_button.tscn", "res://material_maker/widgets/linked_widgets/editable_label.gd", "res://material_maker/widgets/linked_widgets/editable_label.tscn", "res://material_maker/widgets/linked_widgets/link.gd", "res://material_maker/widgets/polygon_edit/control_point.gd", "res://material_maker/widgets/polygon_edit/control_point.tscn", "res://material_maker/widgets/polygon_edit/polygon_dialog.gd", "res://material_maker/widgets/polygon_edit/polygon_dialog.tscn", "res://material_maker/widgets/polygon_edit/polygon_edit.gd", "res://material_maker/widgets/polygon_edit/polygon_edit.tscn", "res://material_maker/widgets/polygon_edit/polygon_editor.gd", "res://material_maker/widgets/polygon_edit/polygon_editor.tscn", "res://material_maker/widgets/polygon_edit/polygon_view.gd", "res://material_maker/widgets/polygon_edit/polygon_view.tscn", "res://material_maker/widgets/port_group_button/port_group_button.gd", "res://material_maker/widgets/port_group_button/port_group_button.tscn", "res://material_maker/widgets/render_counter/render_counter.gd", "res://material_maker/widgets/render_counter/render_counter.tscn", "res://material_maker/widgets/size_option_button/size_option_button.gd", "res://material_maker/widgets/tabs/tabs.gd", "res://material_maker/windows/about/about.gd", "res://material_maker/windows/about/about.tscn", "res://material_maker/windows/about/discord.png", "res://material_maker/windows/about/epic_megagrant.svg", "res://material_maker/windows/about/facebook.png", "res://material_maker/windows/about/github.png", "res://material_maker/windows/about/icon.png", "res://material_maker/windows/about/itchio.png", "res://material_maker/windows/about/patreon.png", "res://material_maker/windows/about/twitter.png", "res://material_maker/windows/about/youtube.png", "res://material_maker/windows/accept_dialog/accept_dialog.gd", "res://material_maker/windows/accept_dialog/accept_dialog.tscn", "res://material_maker/windows/add_node_popup/add_node_popup.gd", "res://material_maker/windows/add_node_popup/add_node_popup.tscn", "res://material_maker/windows/add_node_popup/quick_button.gd", "res://material_maker/windows/add_node_popup/quick_button.tscn", "res://material_maker/windows/desc_dialog/desc_dialog.gd", "res://material_maker/windows/desc_dialog/desc_dialog.tscn", "res://material_maker/windows/environment_editor/environment_editor.gd", "res://material_maker/windows/environment_editor/environment_editor.tscn", "res://material_maker/windows/environment_editor/environment_editor_scene.tscn", "res://material_maker/windows/environment_editor/environment_editor_viewport.tscn", "res://material_maker/windows/environment_editor/new_environment.png", "res://material_maker/windows/export_animation/export_animation.gd", "res://material_maker/windows/export_animation/export_animation.tscn", "res://material_maker/windows/file_dialog/fav_button.tscn", "res://material_maker/windows/file_dialog/file_dialog.gd", "res://material_maker/windows/file_dialog/file_dialog.tscn", "res://material_maker/windows/file_dialog/left_panel.gd", "res://material_maker/windows/file_dialog/left_panel.tscn", "res://material_maker/windows/line_dialog/line_dialog.gd", "res://material_maker/windows/line_dialog/line_dialog.tscn", "res://material_maker/windows/load_from_website/load_from_website.gd", "res://material_maker/windows/load_from_website/load_from_website.tscn", "res://material_maker/windows/material_editor/export_editor.gd", "res://material_maker/windows/material_editor/export_editor.tscn", "res://material_maker/windows/material_editor/expression_line_edit.gd", "res://material_maker/windows/material_editor/expression_line_edit.tscn", "res://material_maker/windows/material_editor/material_editor.gd", "res://material_maker/windows/material_editor/material_editor.tscn", "res://material_maker/windows/new_painter/new_painter.gd", "res://material_maker/windows/new_painter/new_painter.tscn", "res://material_maker/windows/node_editor/enum_editor.gd", "res://material_maker/windows/node_editor/enum_editor.tscn", "res://material_maker/windows/node_editor/input.gd", "res://material_maker/windows/node_editor/input.tscn", "res://material_maker/windows/node_editor/node_editor.gd", "res://material_maker/windows/node_editor/node_editor.tscn", "res://material_maker/windows/node_editor/node_editor_item_list.gd", "res://addons/material_maker/sdf_builder/icons/icons.svg", "res://addons/material_maker/sdf_builder/sdf2d/annular.gd", "res://addons/material_maker/sdf_builder/sdf2d/bend.gd", "res://addons/material_maker/sdf_builder/sdf2d/box.gd", "res://addons/material_maker/sdf_builder/sdf2d/circle.gd", "res://addons/material_maker/sdf_builder/sdf2d/color.gd", "res://addons/material_maker/sdf_builder/sdf2d/difference.gd", "res://addons/material_maker/sdf_builder/sdf2d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf2d/flip.gd", "res://addons/material_maker/sdf_builder/sdf2d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf2d/line.gd", "res://addons/material_maker/sdf_builder/sdf2d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf2d/morph.gd", "res://addons/material_maker/sdf_builder/sdf2d/ngon.gd", "res://addons/material_maker/sdf_builder/sdf2d/polygon.gd", "res://addons/material_maker/sdf_builder/sdf2d/round.gd", "res://addons/material_maker/sdf_builder/sdf2d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf2d/stairs.gd", "res://addons/material_maker/sdf_builder/sdf2d/star.gd", "res://addons/material_maker/sdf_builder/sdf2d/union.gd", "res://addons/material_maker/sdf_builder/sdf3d/annular.gd", "res://addons/material_maker/sdf_builder/sdf3d/bend.gd", "res://addons/material_maker/sdf_builder/sdf3d/box.gd", "res://addons/material_maker/sdf_builder/sdf3d/color.gd", "res://addons/material_maker/sdf_builder/sdf3d/cylinder.gd", "res://addons/material_maker/sdf_builder/sdf3d/difference.gd", "res://addons/material_maker/sdf_builder/sdf3d/distort.gd", "res://addons/material_maker/sdf_builder/sdf3d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf3d/extrusion.gd", "res://addons/material_maker/sdf_builder/sdf3d/flip.gd", "res://addons/material_maker/sdf_builder/sdf3d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf3d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf3d/morph.gd", "res://addons/material_maker/sdf_builder/sdf3d/revolution.gd", "res://addons/material_maker/sdf_builder/sdf3d/round.gd", "res://addons/material_maker/sdf_builder/sdf3d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf3d/sphere.gd", "res://addons/material_maker/sdf_builder/sdf3d/torus.gd", "res://addons/material_maker/sdf_builder/sdf3d/twist.gd", "res://addons/material_maker/sdf_builder/sdf3d/union.gd", "res://addons/material_maker/sdf_builder/tex/blend.gd", "res://addons/material_maker/sdf_builder/tex/brightness_contrast.gd", "res://addons/material_maker/sdf_builder/tex/deform.gd", "res://addons/material_maker/sdf_builder/tex/fbm.gd", "res://addons/material_maker/sdf_builder/tex/pattern.gd", "res://addons/material_maker/sdf_builder/tex/simple_gradient.gd", "res://addons/material_maker/sdf_builder/tex/step.gd", "res://addons/material_maker/sdf_builder/tex/uniform.gd", "res://addons/material_maker/sdf_builder/tex/uniform_gs.gd", "res://addons/material_maker/sdf_builder/base.gd", "res://addons/material_maker/sdf_builder/sdf_builder.gd", "res://addons/material_maker/sdf_builder/sdf_builder.tscn", "res://addons/material_maker/shader_functions.tres", "res://addons/material_maker/engine/text_resource.gd", "res://splash_screen/rodz_labs_logo.png", "res://addons/material_maker/engine/shader_material.gd", "res://addons/material_maker/engine/shader_compute.gd", "res://splash_screen/splash_screen.gd", "res://splash_screen/splash_screen.gdshader", "res://splash_screen/splash_screen.tscn", "res://splash_screen/splash_title.png", "res://splash_screen/arrow.png", "res://addons/material_maker/engine/shader_base.gd", "res://splash_screen/splash_screen_bottom.gdshader", "res://material_maker/widgets/code_editor/code_editor.gd", "res://material_maker/widgets/code_editor/code_editor.tscn", "res://material_maker/panels/preview_2d/custom_size_dialog.gd", "res://material_maker/panels/preview_2d/custom_size_dialog.tscn", "res://material_maker/theme/green.tres", "res://material_maker/theme/birch.tres", "res://material_maker/theme/mangosteen.tres", "res://addons/material_maker/engine/nodes/gen_base.gd", "res://addons/material_maker/engine/nodes/gen_brush.gd", "res://addons/material_maker/engine/nodes/gen_buffer.gd", "res://addons/material_maker/engine/nodes/gen_comment.gd", "res://addons/material_maker/engine/nodes/gen_context.gd", "res://addons/material_maker/engine/nodes/gen_debug.gd", "res://addons/material_maker/engine/nodes/gen_export.gd", "res://addons/material_maker/engine/nodes/gen_graph.gd", "res://addons/material_maker/engine/nodes/gen_image.gd", "res://addons/material_maker/engine/nodes/gen_ios.gd", "res://addons/material_maker/engine/nodes/gen_iterate_buffer.gd", "res://addons/material_maker/engine/nodes/gen_material.gd", "res://addons/material_maker/engine/nodes/gen_remote.gd", "res://addons/material_maker/engine/nodes/gen_reroute.gd", "res://addons/material_maker/engine/nodes/gen_sdf.gd", "res://addons/material_maker/engine/nodes/gen_shader.gd", "res://addons/material_maker/engine/nodes/gen_switch.gd", "res://addons/material_maker/engine/nodes/gen_text.gd", "res://addons/material_maker/engine/nodes/gen_texture.gd", "res://addons/material_maker/engine/pipeline/compute_shader.gd", "res://addons/material_maker/engine/pipeline/pipeline.gd", "res://addons/material_maker/engine/pipeline/rendering_pipeline.gd", "res://material_maker/nodes/node_button.tscn", "res://material_maker/nodes/node_button.gd", "res://material_maker/icons/close.tres", "res://parse_args.tscn", "res://parse_args.gd", "res://splash_screen/backgrounds/oneiric_worlds_zefyr.png", "res://addons/material_maker/engine/pipeline/texture.gd", "res://splash_screen/backgrounds/angel_soft_nurball.png", "res://splash_screen/backgrounds/angel_beanbag_chair.png", "res://splash_screen/backgrounds/paulo_falcao_green_thing.png", "res://material_maker/windows/export_taa/export_taa.tscn", "res://material_maker/windows/export_taa/export_taa.gd", "res://material_maker/windows/export_taa/divide_compute.tres", "res://material_maker/windows/export_taa/accumulate_compute.tres", "res://addons/material_maker/engine/nodes/iterate_buffer_compute.tres", "res://addons/material_maker/engine/nodes/buffer_compute.tres", "res://splash_screen/backgrounds/pixelmuncher_golden_tiles.png", "res://splash_screen/backgrounds/cgmytro_old_doors.png", "res://splash_screen/backgrounds/cybereality_brutalism.png", "res://splash_screen/backgrounds/cybereality_dirty_tiles.png", "res://splash_screen/backgrounds/cybereality_future_visions.png", "res://splash_screen/backgrounds/droppedbeat_matrix_rain.tres", "res://splash_screen/backgrounds/droppedbeat_procedural_material.png", "res://splash_screen/backgrounds/droppedbeat_spiral_trails.tres", "res://splash_screen/backgrounds/droppedbeat_vending_machines.png", "res://splash_screen/backgrounds/paulo_falcao_fractal_octahedron.tres", "res://splash_screen/backgrounds/paulo_falcao_terminator_ball.tres", "res://splash_screen/backgrounds/pavel_oliva_carved_wood.png", "res://splash_screen/backgrounds/pavel_oliva_celestial_floor.png", "res://splash_screen/backgrounds/pavel_oliva_cursed_planks.png", "res://splash_screen/backgrounds/pavel_oliva_flowing_lava.png", "res://splash_screen/backgrounds/pavel_oliva_lace.png", "res://splash_screen/backgrounds/pavel_oliva_pavement_generator.png", "res://splash_screen/backgrounds/pavel_oliva_stylized_pavement.png", "res://splash_screen/backgrounds/pavel_oliva_treasures.png", "res://splash_screen/backgrounds/pavel_oliva_vintage_luggage.png", "res://addons/material_maker/map_generator/ao_fragment.tres", "res://addons/material_maker/map_generator/ao_vertex.tres", "res://addons/material_maker/map_generator/bvh_generator.gd", "res://addons/material_maker/map_generator/common_fragment.tres", "res://addons/material_maker/map_generator/curvature_generator.gd", "res://addons/material_maker/map_generator/curvature_vertex.tres", "res://addons/material_maker/map_generator/denoise_compute.tres", "res://addons/material_maker/map_generator/dilate_1_compute.tres", "res://addons/material_maker/map_generator/dilate_2_compute.tres", "res://addons/material_maker/map_generator/map_generator.gd", "res://addons/material_maker/map_generator/mesh_rendering_pipeline.gd", "res://addons/material_maker/map_generator/normalize_compute.tres", "res://addons/material_maker/map_generator/normal_fragment.tres", "res://addons/material_maker/map_generator/normal_vertex.tres", "res://addons/material_maker/map_generator/position_vertex.tres", "res://addons/material_maker/map_generator/seams_1_compute.tres", "res://addons/material_maker/map_generator/seams_2_compute.tres", "res://addons/material_maker/map_generator/tangent_vertex.tres", "res://addons/material_maker/engine/nodes/gen_meshmap.gd", "res://material_maker/projects_panel.tscn", "res://addons/flexible_layout/tab.svg", "res://addons/flexible_layout/flexible_tabs.tscn", "res://addons/flexible_layout/flexible_tabs.gd", "res://addons/flexible_layout/flexible_tab.tscn", "res://addons/flexible_layout/flexible_tab.gd", "res://addons/flexible_layout/flexible_overlay.tscn", "res://addons/flexible_layout/flexible_overlay.gd", "res://addons/flexible_layout/flexible_layout.tscn", "res://addons/flexible_layout/flexible_layout.gd", "res://addons/flexible_layout/arrow.svg", "res://addons/flexible_layout/flexible_dragger.gd", "res://addons/flexible_layout/flexible_dragger.tscn", "res://addons/material_maker/engine/nodes/gen_webcam.gd", "res://material_maker/tools/painter/shaders/paint_shader_template.tres", "res://addons/material_maker/loaders/mesh_loader.gd", "res://addons/material_maker/loaders/obj_loader.gd", "res://material_maker/tools/painter/shaders/t2v_fragment.tres", "res://material_maker/tools/painter/shaders/t2v_vertex.tres", "res://material_maker/tools/painter/shaders/v2t_fragment.tres", "res://material_maker/tools/painter/shaders/v2t_vertex.tres", "res://material_maker/tools/painter/shaders/brush.gdshader", "res://material_maker/tools/painter/shaders/brush_common_decl.gdshader", "res://material_maker/tools/painter/shaders/brush_pattern.gdshader", "res://material_maker/tools/painter/shaders/brush_stamp.gdshader", "res://material_maker/tools/painter/shaders/brush_uv_pattern.gdshader", "res://addons/material_maker/types/splines.gd", "res://material_maker/widgets/splines_edit/splines_dialog.gd", "res://material_maker/widgets/splines_edit/splines_dialog.tscn", "res://material_maker/widgets/splines_edit/splines_edit.gd", "res://material_maker/widgets/splines_edit/splines_edit.tscn", "res://material_maker/widgets/splines_edit/splines_editor.gd", "res://material_maker/widgets/splines_edit/splines_editor.tscn", "res://material_maker/widgets/splines_edit/splines_view.gd", "res://material_maker/widgets/splines_edit/splines_view.tscn", "res://addons/flexible_layout/undock.png", "res://addons/material_maker/engine/shader_error_handler.gd", "res://addons/material_maker/types/pixels.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.tscn", "res://material_maker/widgets/pixels_edit/pixels_edit.gd", "res://material_maker/widgets/pixels_edit/pixels_edit.tscn", "res://material_maker/widgets/pixels_edit/pixels_editor.gd", "res://material_maker/widgets/pixels_edit/pixels_editor.tscn", "res://material_maker/widgets/pixels_edit/pixels_view.gd", "res://material_maker/widgets/pixels_edit/pixels_view.tscn", "res://material_maker/windows/node_editor/parameter_splines.gd", "res://material_maker/windows/node_editor/parameter_splines.tscn", "res://material_maker/windows/node_editor/parameter_pixels.gd", "res://material_maker/windows/node_editor/parameter_pixels.tscn", "res://addons/material_maker/engine/logger.gd", "res://material_maker/console.gd", "res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf", "res://material_maker/theme/modern.tres") +export_files=PackedStringArray("res://addons/material_maker/engine/dependencies.gd", "res://addons/material_maker/engine/io_types.gd", "res://addons/material_maker/engine/loader.gd", "res://addons/material_maker/engine/multi_renderer.gd", "res://addons/material_maker/engine/paths.gd", "res://addons/material_maker/engine/preprocessor.gd", "res://addons/material_maker/engine/renderer.gd", "res://addons/material_maker/engine/renderer.tscn", "res://addons/material_maker/parser/glsl_parser.gd", "res://addons/material_maker/parser/glsl_parser_base.gd", "res://addons/material_maker/parser/parser_base.gd", "res://material_maker/windows/node_editor/parameter.gd", "res://material_maker/main_window_projects_panel.gd", "res://material_maker/panel_container.gd", "res://material_maker/windows/sdf_builder/preview_3d.gdshader", "res://material_maker/windows/sdf_builder/preview_2d.gdshader", "res://material_maker/windows/sdf_builder/gizmo.gdshader", "res://material_maker/icons/icons.gd", "res://start.tscn", "res://start.gd", "res://material_maker/windows/sdf_builder/sdf_builder_tree.gd", "res://material_maker/windows/sdf_builder/sdf_builder.tscn", "res://material_maker/windows/sdf_builder/sdf_builder.gd", "res://material_maker/windows/sdf_builder/preview_3d.tscn", "res://material_maker/windows/sdf_builder/preview_3d.gd", "res://material_maker/windows/sdf_builder/preview_2d.tscn", "res://material_maker/windows/sdf_builder/preview_2d.gd", "res://material_maker/windows/sdf_builder/gizmo_arrow.tscn", "res://material_maker/windows/sdf_builder/gizmo_arrow.gd", "res://material_maker/windows/sdf_builder/gizmo.tscn", "res://material_maker/windows/sdf_builder/gizmo.gd", "res://material_maker/windows/progress_window/progress_window.tscn", "res://material_maker/windows/progress_window/progress_window.gd", "res://material_maker/windows/preferences/preferences.tscn", "res://material_maker/windows/preferences/preferences.gd", "res://material_maker/windows/preferences/language_download.tscn", "res://material_maker/windows/preferences/language_download.gd", "res://material_maker/windows/preferences/lang_option.gd", "res://material_maker/windows/preferences/float_option.tscn", "res://material_maker/windows/preferences/float_option.gd", "res://material_maker/windows/preferences/bool_option.tscn", "res://material_maker/windows/preferences/bool_option.gd", "res://material_maker/windows/node_editor/parameter_size.tscn", "res://material_maker/windows/node_editor/parameter_size.gd", "res://material_maker/windows/node_editor/parameter_polyline.tscn", "res://material_maker/windows/node_editor/parameter_polygon.tscn", "res://material_maker/windows/node_editor/parameter_polygon.gd", "res://material_maker/windows/node_editor/parameter_gradient.tscn", "res://material_maker/windows/node_editor/parameter_gradient.gd", "res://material_maker/windows/node_editor/parameter_float.tscn", "res://material_maker/windows/node_editor/parameter_float.gd", "res://material_maker/windows/node_editor/output.tscn", "res://material_maker/windows/node_editor/output.gd", "res://material_maker/windows/node_editor/parameter_enum.tscn", "res://material_maker/windows/node_editor/parameter_enum.gd", "res://material_maker/windows/node_editor/parameter_curve.tscn", "res://material_maker/windows/node_editor/parameter_curve.gd", "res://material_maker/windows/node_editor/parameter_color.tscn", "res://material_maker/windows/node_editor/parameter_color.gd", "res://material_maker/windows/node_editor/parameter_boolean.tscn", "res://material_maker/windows/node_editor/parameter_boolean.gd", "res://material_maker/windows/node_editor/parameter.tscn", "res://addons/material_maker/types/curve.gd", "res://addons/material_maker/types/gradient.gd", "res://addons/material_maker/types/polygon.gd", "res://addons/material_maker/types/types.gd", "res://default_env.tres", "res://icon.png", "res://material_maker/darken.gd", "res://material_maker/darken.tscn", "res://material_maker/fonts/DroidSansFallback.ttf", "res://material_maker/fonts/DroidSansJapanese.ttf", "res://material_maker/fonts/hack.ttf", "res://material_maker/fonts/vegur_regular.otf", "res://material_maker/globals.gd", "res://material_maker/globals.tscn", "res://material_maker/globals_menu_manager.gd", "res://material_maker/icons/add.tres", "res://material_maker/icons/add_generic.tres", "res://material_maker/icons/buffer.tres", "res://material_maker/icons/buffer_paused.tres", "res://material_maker/icons/color_palette.png", "res://material_maker/icons/color_picker.png", "res://material_maker/icons/custom.png", "res://material_maker/icons/down.tres", "res://material_maker/icons/edit.tres", "res://material_maker/icons/eye_closed.tres", "res://material_maker/icons/eye_open.tres", "res://material_maker/icons/godot_logo.svg", "res://material_maker/icons/icons.svg", "res://material_maker/icons/icons.tres", "res://material_maker/icons/link.tres", "res://material_maker/icons/lmb.tres", "res://material_maker/icons/minimize.tres", "res://material_maker/icons/mmb.tres", "res://material_maker/icons/ok.tres", "res://material_maker/icons/output_preview.tres", "res://material_maker/icons/paste_graph.tres", "res://material_maker/icons/paste_newgraph.tres", "res://material_maker/icons/paste_none.tres", "res://material_maker/icons/paste_palette.tres", "res://material_maker/icons/port_group_0.tres", "res://material_maker/icons/port_group_1.tres", "res://material_maker/icons/port_group_2.tres", "res://material_maker/icons/port_group_3.tres", "res://material_maker/icons/preview.png", "res://material_maker/icons/preview_locked.png", "res://material_maker/icons/randomness_locked.tres", "res://material_maker/icons/randomness_unlocked.tres", "res://material_maker/icons/remove.tres", "res://material_maker/icons/rmb.tres", "res://material_maker/icons/up.tres", "res://material_maker/locale/locale.gd", "res://material_maker/main_window.gd", "res://material_maker/main_window.tscn", "res://material_maker/main_window_layout.gd", "res://material_maker/meshes/suzanne.obj", "res://material_maker/node_factory.gd", "res://material_maker/nodes/base.gd", "res://material_maker/nodes/comment/comment.gd", "res://material_maker/nodes/comment/comment.tscn", "res://material_maker/nodes/comment/palette_button.gd", "res://material_maker/nodes/debug/debug.gd", "res://material_maker/nodes/debug/debug.tscn", "res://material_maker/nodes/debug/debug_popup.gd", "res://material_maker/nodes/debug/debug_popup.tscn", "res://material_maker/nodes/edit_buttons.gd", "res://material_maker/nodes/edit_buttons.tscn", "res://material_maker/nodes/generic/generic.gd", "res://material_maker/nodes/generic/generic.tscn", "res://material_maker/nodes/ios/add.tscn", "res://material_maker/nodes/ios/ios.gd", "res://material_maker/nodes/ios/ios.tscn", "res://material_maker/nodes/ios/port.gd", "res://material_maker/nodes/ios/port.tscn", "res://material_maker/nodes/material_export/material_export.gd", "res://material_maker/nodes/material_export/material_export.tscn", "res://material_maker/nodes/minimal.gd", "res://material_maker/nodes/remote/named_parameter_dialog.gd", "res://material_maker/nodes/remote/named_parameter_dialog.tscn", "res://material_maker/nodes/remote/remote.gd", "res://material_maker/nodes/remote/remote.tscn", "res://material_maker/nodes/reroute/reroute.gd", "res://material_maker/nodes/reroute/reroute.tscn", "res://material_maker/nodes/switch/switch.gd", "res://material_maker/nodes/switch/switch.tscn", "res://material_maker/nodes/tones/tones.gd", "res://material_maker/nodes/tones/tones.tscn", "res://material_maker/panels/brushes/brushes.gd", "res://material_maker/panels/brushes/brushes.tscn", "res://material_maker/panels/graph_edit/graph_edit.gd", "res://material_maker/panels/graph_edit/graph_edit.tscn", "res://material_maker/panels/hierarchy/hierarchy_panel.gd", "res://material_maker/panels/hierarchy/hierarchy_panel.tscn", "res://material_maker/panels/layers/add_layer_menu.tscn", "res://material_maker/panels/layers/icons/layer_mask.tres", "res://material_maker/panels/layers/icons/layer_paint.tres", "res://material_maker/panels/layers/icons/layer_proc.tres", "res://material_maker/panels/layers/icons/not_visible.tres", "res://material_maker/panels/layers/icons/visible.tres", "res://material_maker/panels/layers/layer_config_popup.gd", "res://material_maker/panels/layers/layer_config_popup.tscn", "res://material_maker/panels/layers/layer_tooltip.gd", "res://material_maker/panels/layers/layer_tooltip.tscn", "res://material_maker/panels/layers/layer_tooltip_thumbnail.gd", "res://material_maker/panels/layers/layer_tooltip_thumbnail.tscn", "res://material_maker/panels/layers/layers.gd", "res://material_maker/panels/layers/layers.tscn", "res://material_maker/panels/layers/layers_tree.gd", "res://material_maker/panels/library/button_greyed.tres", "res://material_maker/panels/library/create_lib_dialog.gd", "res://material_maker/panels/library/create_lib_dialog.tscn", "res://material_maker/panels/library/library.gd", "res://material_maker/panels/library/library.tscn", "res://material_maker/panels/library/library_tree.gd", "res://material_maker/panels/paint/export.gd", "res://material_maker/panels/paint/export.tscn", "res://material_maker/panels/paint/layer_types/layer.gd", "res://material_maker/panels/paint/layer_types/layer_mask.gd", "res://material_maker/panels/paint/layer_types/layer_paint.gd", "res://material_maker/panels/paint/layer_types/layer_procedural.gd", "res://material_maker/panels/paint/paint.gd", "res://material_maker/panels/paint/paint.tscn", "res://material_maker/panels/paint/paint_layers.gd", "res://material_maker/panels/paint/paint_layers.tscn", "res://material_maker/panels/paint/paint_project_settings.gd", "res://material_maker/panels/paint/paint_project_settings.tscn", "res://material_maker/panels/paint/collapse_button.tscn", "res://material_maker/panels/paint/collapse_button.gd", "res://material_maker/panels/parameters/parameters.gd", "res://material_maker/panels/parameters/parameters.tscn", "res://material_maker/panels/preview_2d/control_point.gd", "res://material_maker/panels/preview_2d/control_point.tscn", "res://material_maker/panels/preview_2d/lines.gd", "res://material_maker/panels/preview_2d/preview_2d.gd", "res://material_maker/panels/preview_2d/preview_2d.tscn", "res://material_maker/panels/preview_2d/preview_2d_node.gd", "res://material_maker/panels/preview_2d/preview_2d_node.tscn", "res://material_maker/panels/preview_2d/preview_2d_panel.gd", "res://material_maker/panels/preview_2d/preview_2d_panel.tscn", "res://material_maker/panels/preview_3d/materials/shader_material_tesselated.tres", "res://material_maker/panels/preview_3d/materials/spatial_material.tres", "res://material_maker/panels/preview_3d/mesh_config_popup.gd", "res://material_maker/panels/preview_3d/mesh_config_popup.tscn", "res://material_maker/panels/preview_3d/preview_3d.gd", "res://material_maker/panels/preview_3d/preview_3d.tscn", "res://material_maker/panels/preview_3d/preview_3d_panel.gd", "res://material_maker/panels/preview_3d/preview_3d_panel.tscn", "res://material_maker/panels/preview_3d/preview_3d_scene.tscn", "res://material_maker/panels/preview_3d/preview_3d_ui.gd", "res://material_maker/panels/preview_3d/preview_3d_ui.tscn", "res://material_maker/panels/preview_3d/preview_light.gd", "res://material_maker/panels/preview_3d/preview_light.tscn", "res://material_maker/panels/preview_3d/preview_mesh.gd", "res://material_maker/panels/preview_3d/preview_objects.tscn", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cube.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Custom.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cylinder.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Plane.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Prism.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Sphere.png", "res://material_maker/panels/reference/color_slot.gd", "res://material_maker/panels/reference/color_slot.tscn", "res://material_maker/panels/reference/gradient_slot.gd", "res://material_maker/panels/reference/gradient_slot.tscn", "res://material_maker/panels/reference/reference_panel.gd", "res://material_maker/panels/reference/reference_panel.tscn", "res://material_maker/theme/dark.tres", "res://material_maker/theme/dark/checkbox_checked.png", "res://material_maker/theme/dark/checkbox_radio_checked.png", "res://material_maker/theme/dark/checkbox_radio_unchecked.png", "res://material_maker/theme/dark/checkbox_unchecked.png", "res://material_maker/theme/dark/checkbutton_off.png", "res://material_maker/theme/dark/checkbutton_off_disabled.png", "res://material_maker/theme/dark/checkbutton_on.png", "res://material_maker/theme/dark/checkbutton_on_disabled.png", "res://material_maker/theme/dark/colorpickerbutton_bg.png", "res://material_maker/theme/dark/curve_preset_bevel.tres", "res://material_maker/theme/dark/curve_preset_bounce.tres", "res://material_maker/theme/dark/curve_preset_easein.tres", "res://material_maker/theme/dark/curve_preset_easeinout.tres", "res://material_maker/theme/dark/curve_preset_easeout.tres", "res://material_maker/theme/dark/curve_preset_linear.tres", "res://material_maker/theme/dark/curve_preset_sawtooth.tres", "res://material_maker/theme/dark/curve_presets.svg", "res://material_maker/theme/dark/graphedit_minus.png", "res://material_maker/theme/dark/graphedit_more.png", "res://material_maker/theme/dark/graphedit_reset.png", "res://material_maker/theme/dark/graphedit_snap.png", "res://material_maker/theme/dark/graphnode_close.png", "res://material_maker/theme/dark/graphnode_port.png", "res://material_maker/theme/dark/graphnode_resizer.png", "res://material_maker/theme/dark/hslider_grabber.png", "res://material_maker/theme/dark/hslider_grabber_disabled.png", "res://material_maker/theme/dark/hslider_grabber_highlight.png", "res://material_maker/theme/dark/hslider_tick.png", "res://material_maker/theme/dark/hsplitcontainer_grabber.png", "res://material_maker/theme/dark/lineedit_clear.png", "res://material_maker/theme/dark/optionbutton_arrow.png", "res://material_maker/theme/dark/popupmenu_checked.png", "res://material_maker/theme/dark/popupmenu_radio_checked.png", "res://material_maker/theme/dark/popupmenu_radio_unchecked.png", "res://material_maker/theme/dark/popupmenu_submenu.png", "res://material_maker/theme/dark/popupmenu_unchecked.png", "res://material_maker/theme/dark/popupmenu_visibility_hidden.png", "res://material_maker/theme/dark/popupmenu_visibility_visible.png", "res://material_maker/theme/dark/popupmenu_visibility_xray.png", "res://material_maker/theme/dark/sb_checkbox_focus_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_hslider_focus_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/sb_panel_panelf_texture.png", "res://material_maker/theme/dark/sb_panel_panelnc_texture.png", "res://material_maker/theme/dark/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/dark/sb_progressbar_bg_texture.png", "res://material_maker/theme/dark/sb_progressbar_fg_texture.png", "res://material_maker/theme/dark/sb_textedit_completion_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/tabcontainer_decrement.png", "res://material_maker/theme/dark/tabcontainer_decrement_highlight.png", "res://material_maker/theme/dark/tabcontainer_increment.png", "res://material_maker/theme/dark/tabcontainer_increment_highlight.png", "res://material_maker/theme/dark/tabcontainer_menu.png", "res://material_maker/theme/dark/tabcontainer_menu_highlight.png", "res://material_maker/theme/dark/tabs_close.png", "res://material_maker/theme/dark/tabs_decrement.png", "res://material_maker/theme/dark/tabs_decrement_highlight.png", "res://material_maker/theme/dark/tabs_increment.png", "res://material_maker/theme/dark/tabs_increment_highlight.png", "res://material_maker/theme/dark/textedit_fold.png", "res://material_maker/theme/dark/textedit_folded.png", "res://material_maker/theme/dark/textedit_space.png", "res://material_maker/theme/dark/textedit_tab.png", "res://material_maker/theme/dark/tree_arrow.png", "res://material_maker/theme/dark/tree_arrow_collapsed.png", "res://material_maker/theme/dark/tree_checked.png", "res://material_maker/theme/dark/tree_select_arrow.png", "res://material_maker/theme/dark/tree_unchecked.png", "res://material_maker/theme/dark/tree_updown.png", "res://material_maker/theme/dark/vslider_grabber.png", "res://material_maker/theme/dark/vslider_grabber_highlight.png", "res://material_maker/theme/dark/vsplitcontainer_grabber.png", "res://material_maker/theme/dark/windowdialog_close.png", "res://material_maker/theme/dark/windowdialog_close_highlight.png", "res://material_maker/theme/default.tres", "res://material_maker/theme/font.tres", "res://material_maker/theme/light.tres", "res://material_maker/theme/light/checkbox_checked.png", "res://material_maker/theme/light/checkbox_radio_checked.png", "res://material_maker/theme/light/checkbox_radio_unchecked.png", "res://material_maker/theme/light/checkbox_unchecked.png", "res://material_maker/theme/light/checkbutton_off.png", "res://material_maker/theme/light/checkbutton_off_disabled.png", "res://material_maker/theme/light/checkbutton_on.png", "res://material_maker/theme/light/checkbutton_on_disabled.png", "res://material_maker/theme/light/colorpickerbutton_bg.png", "res://material_maker/theme/light/curve_preset_bevel.tres", "res://material_maker/theme/light/curve_preset_bounce.tres", "res://material_maker/theme/light/curve_preset_easein.tres", "res://material_maker/theme/light/curve_preset_easeinout.tres", "res://material_maker/theme/light/curve_preset_easeout.tres", "res://material_maker/theme/light/curve_preset_linear.tres", "res://material_maker/theme/light/curve_preset_sawtooth.tres", "res://material_maker/theme/light/curve_presets.svg", "res://material_maker/theme/light/graphedit_minus.png", "res://material_maker/theme/light/graphedit_more.png", "res://material_maker/theme/light/graphedit_reset.png", "res://material_maker/theme/light/graphedit_snap.png", "res://material_maker/theme/light/graphnode_close.png", "res://material_maker/theme/light/graphnode_port.png", "res://material_maker/theme/light/graphnode_resizer.png", "res://material_maker/theme/light/hslider_grabber.png", "res://material_maker/theme/light/hslider_grabber_disabled.png", "res://material_maker/theme/light/hslider_grabber_highlight.png", "res://material_maker/theme/light/hslider_tick.png", "res://material_maker/theme/light/hsplitcontainer_grabber.png", "res://material_maker/theme/light/lineedit_clear.png", "res://material_maker/theme/light/optionbutton_arrow.png", "res://material_maker/theme/light/popupmenu_checked.png", "res://material_maker/theme/light/popupmenu_radio_checked.png", "res://material_maker/theme/light/popupmenu_radio_unchecked.png", "res://material_maker/theme/light/popupmenu_submenu.png", "res://material_maker/theme/light/popupmenu_unchecked.png", "res://material_maker/theme/light/popupmenu_visibility_hidden.png", "res://material_maker/theme/light/popupmenu_visibility_visible.png", "res://material_maker/theme/light/popupmenu_visibility_xray.png", "res://material_maker/theme/light/sb_checkbox_focus_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_hslider_focus_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/light/sb_panel_panelf_texture.png", "res://material_maker/theme/light/sb_panel_panelnc_texture.png", "res://material_maker/theme/light/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/light/sb_progressbar_bg_texture.png", "res://material_maker/theme/light/sb_progressbar_fg_texture.png", "res://material_maker/theme/light/sb_textedit_completion_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/light/tabcontainer_decrement.png", "res://material_maker/theme/light/tabcontainer_decrement_highlight.png", "res://material_maker/theme/light/tabcontainer_increment.png", "res://material_maker/theme/light/tabcontainer_increment_highlight.png", "res://material_maker/theme/light/tabcontainer_menu.png", "res://material_maker/theme/light/tabcontainer_menu_highlight.png", "res://material_maker/theme/light/tabs_close.png", "res://material_maker/theme/light/tabs_decrement.png", "res://material_maker/theme/light/tabs_decrement_highlight.png", "res://material_maker/theme/light/tabs_increment.png", "res://material_maker/theme/light/tabs_increment_highlight.png", "res://material_maker/theme/light/textedit_fold.png", "res://material_maker/theme/light/textedit_folded.png", "res://material_maker/theme/light/textedit_space.png", "res://material_maker/theme/light/textedit_tab.png", "res://material_maker/theme/light/tree_arrow.png", "res://material_maker/theme/light/tree_arrow_collapsed.png", "res://material_maker/theme/light/tree_checked.png", "res://material_maker/theme/light/tree_select_arrow.png", "res://material_maker/theme/light/tree_unchecked.png", "res://material_maker/theme/light/tree_updown.png", "res://material_maker/theme/light/vslider_grabber.png", "res://material_maker/theme/light/vslider_grabber_highlight.png", "res://material_maker/theme/light/vsplitcontainer_grabber.png", "res://material_maker/theme/light/windowdialog_close.png", "res://material_maker/theme/light/windowdialog_close_highlight.png", "res://material_maker/tools/environment_manager/environment_manager.gd", "res://material_maker/tools/environment_manager/environment_manager.tscn", "res://material_maker/tools/library_manager/library.gd", "res://material_maker/tools/library_manager/library_manager.gd", "res://material_maker/tools/map_renderer/map_renderer.gd", "res://material_maker/tools/map_renderer/map_renderer.tscn", "res://material_maker/tools/painter/brush_preview.gd", "res://material_maker/tools/painter/brush_preview.tscn", "res://material_maker/tools/painter/painter.gd", "res://material_maker/tools/painter/painter.tscn", "res://material_maker/tools/painter/painter_viewport.gd", "res://material_maker/tools/painter/painter_viewport.tscn", "res://material_maker/tools/painter/shaders/init.tres", "res://material_maker/tools/painter/shaders/init_channels.tres", "res://material_maker/tools/painter/shaders/init_copy_shader.tres", "res://material_maker/tools/share/broken_link.tres", "res://material_maker/tools/share/golden_link.tres", "res://material_maker/tools/share/hdri/kloofendal_48d_partly_cloudy_1k.exr", "res://material_maker/tools/share/link.tres", "res://material_maker/tools/share/login_dialog.gd", "res://material_maker/tools/share/login_dialog.tscn", "res://material_maker/tools/share/preview_scene.tscn", "res://material_maker/tools/share/preview_scene_viewer.tscn", "res://material_maker/tools/share/preview_viewport.gd", "res://material_maker/tools/share/preview_viewport.tscn", "res://material_maker/tools/share/share_button.gd", "res://material_maker/tools/share/share_button.tscn", "res://material_maker/tools/share/share_http_request.gd", "res://material_maker/tools/share/share_node_dialog.gd", "res://material_maker/tools/share/share_node_dialog.tscn", "res://material_maker/tools/share/upload_dialog.gd", "res://material_maker/tools/share/upload_dialog.tscn", "res://material_maker/tools/undo_redo/undo_redo.gd", "res://material_maker/widgets/color_picker_button/color_picker_button.gd", "res://material_maker/widgets/color_picker_popup/color_picker_popup.tscn", "res://material_maker/widgets/curve_edit/control_point.gd", "res://material_maker/widgets/curve_edit/control_point.tscn", "res://material_maker/widgets/curve_edit/curve_dialog.gd", "res://material_maker/widgets/curve_edit/curve_dialog.tscn", "res://material_maker/widgets/curve_edit/curve_edit.gd", "res://material_maker/widgets/curve_edit/curve_edit.tscn", "res://material_maker/widgets/curve_edit/curve_editor.gd", "res://material_maker/widgets/curve_edit/curve_editor.tscn", "res://material_maker/widgets/curve_edit/curve_view.gd", "res://material_maker/widgets/curve_edit/curve_view.tscn", "res://material_maker/widgets/curve_edit/presets_selector.gd", "res://material_maker/widgets/curve_edit/slope_point.gd", "res://material_maker/widgets/desc_button/desc_button.gd", "res://material_maker/widgets/desc_button/desc_button.tscn", "res://material_maker/widgets/file_picker_button/file_picker_button.gd", "res://material_maker/widgets/file_picker_button/file_picker_button.tscn", "res://material_maker/widgets/float_edit/expression_editor.gd", "res://material_maker/widgets/float_edit/expression_editor.tscn", "res://material_maker/widgets/float_edit/float_edit.gd", "res://material_maker/widgets/float_edit/float_edit.tscn", "res://material_maker/theme/modern.tres", "res://material_maker/theme/font_rubik/Rubik-VariableFont_wght.ttf", "res://material_maker/widgets/gradient_editor/gradient_popup.gd", "res://material_maker/widgets/gradient_editor/gradient_popup.tscn", "res://material_maker/widgets/graph_tree/graph_tree.gd", "res://material_maker/widgets/graph_tree/graph_tree.tscn", "res://material_maker/widgets/histogram/histogram.gd", "res://material_maker/widgets/histogram/histogram.tscn", "res://material_maker/widgets/image_picker_button/image_picker_button.gd", "res://material_maker/widgets/image_picker_button/image_picker_button.tscn", "res://material_maker/widgets/linked_widgets/editable_label.gd", "res://material_maker/widgets/linked_widgets/editable_label.tscn", "res://material_maker/widgets/linked_widgets/link.gd", "res://material_maker/widgets/polygon_edit/control_point.gd", "res://material_maker/widgets/polygon_edit/control_point.tscn", "res://material_maker/widgets/polygon_edit/polygon_dialog.gd", "res://material_maker/widgets/polygon_edit/polygon_dialog.tscn", "res://material_maker/widgets/polygon_edit/polygon_edit.gd", "res://material_maker/widgets/polygon_edit/polygon_edit.tscn", "res://material_maker/widgets/polygon_edit/polygon_editor.gd", "res://material_maker/widgets/polygon_edit/polygon_editor.tscn", "res://material_maker/widgets/polygon_edit/polygon_view.gd", "res://material_maker/widgets/polygon_edit/polygon_view.tscn", "res://material_maker/widgets/port_group_button/port_group_button.gd", "res://material_maker/widgets/port_group_button/port_group_button.tscn", "res://material_maker/widgets/render_counter/render_counter.gd", "res://material_maker/widgets/render_counter/render_counter.tscn", "res://material_maker/widgets/size_option_button/size_option_button.gd", "res://material_maker/widgets/tabs/tabs.gd", "res://material_maker/windows/about/about.gd", "res://material_maker/windows/about/about.tscn", "res://material_maker/windows/about/discord.png", "res://material_maker/windows/about/epic_megagrant.svg", "res://material_maker/windows/about/facebook.png", "res://material_maker/windows/about/github.png", "res://material_maker/windows/about/icon.png", "res://material_maker/windows/about/itchio.png", "res://material_maker/windows/about/patreon.png", "res://material_maker/windows/about/twitter.png", "res://material_maker/windows/about/youtube.png", "res://material_maker/windows/accept_dialog/accept_dialog.gd", "res://material_maker/windows/accept_dialog/accept_dialog.tscn", "res://material_maker/windows/add_node_popup/add_node_popup.gd", "res://material_maker/windows/add_node_popup/add_node_popup.tscn", "res://material_maker/windows/add_node_popup/quick_button.gd", "res://material_maker/windows/add_node_popup/quick_button.tscn", "res://material_maker/windows/desc_dialog/desc_dialog.gd", "res://material_maker/windows/desc_dialog/desc_dialog.tscn", "res://material_maker/windows/environment_editor/environment_editor.gd", "res://material_maker/windows/environment_editor/environment_editor.tscn", "res://material_maker/windows/environment_editor/environment_editor_scene.tscn", "res://material_maker/windows/environment_editor/environment_editor_viewport.tscn", "res://material_maker/windows/environment_editor/new_environment.png", "res://material_maker/windows/export_animation/export_animation.gd", "res://material_maker/windows/export_animation/export_animation.tscn", "res://material_maker/windows/file_dialog/fav_button.tscn", "res://material_maker/windows/file_dialog/file_dialog.gd", "res://material_maker/windows/file_dialog/file_dialog.tscn", "res://material_maker/windows/file_dialog/left_panel.gd", "res://material_maker/windows/file_dialog/left_panel.tscn", "res://material_maker/windows/line_dialog/line_dialog.gd", "res://material_maker/windows/line_dialog/line_dialog.tscn", "res://material_maker/windows/load_from_website/load_from_website.gd", "res://material_maker/windows/load_from_website/load_from_website.tscn", "res://material_maker/windows/material_editor/export_editor.gd", "res://material_maker/windows/material_editor/export_editor.tscn", "res://material_maker/windows/material_editor/expression_line_edit.gd", "res://material_maker/windows/material_editor/expression_line_edit.tscn", "res://material_maker/windows/material_editor/material_editor.gd", "res://material_maker/windows/material_editor/material_editor.tscn", "res://material_maker/windows/new_painter/new_painter.gd", "res://material_maker/windows/new_painter/new_painter.tscn", "res://material_maker/windows/node_editor/enum_editor.gd", "res://material_maker/windows/node_editor/enum_editor.tscn", "res://material_maker/windows/node_editor/input.gd", "res://material_maker/windows/node_editor/input.tscn", "res://material_maker/windows/node_editor/node_editor.gd", "res://material_maker/windows/node_editor/node_editor.tscn", "res://material_maker/windows/node_editor/node_editor_item_list.gd", "res://addons/material_maker/sdf_builder/icons/icons.svg", "res://addons/material_maker/sdf_builder/sdf2d/annular.gd", "res://addons/material_maker/sdf_builder/sdf2d/bend.gd", "res://addons/material_maker/sdf_builder/sdf2d/box.gd", "res://addons/material_maker/sdf_builder/sdf2d/circle.gd", "res://addons/material_maker/sdf_builder/sdf2d/color.gd", "res://addons/material_maker/sdf_builder/sdf2d/difference.gd", "res://addons/material_maker/sdf_builder/sdf2d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf2d/flip.gd", "res://addons/material_maker/sdf_builder/sdf2d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf2d/line.gd", "res://addons/material_maker/sdf_builder/sdf2d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf2d/morph.gd", "res://addons/material_maker/sdf_builder/sdf2d/ngon.gd", "res://addons/material_maker/sdf_builder/sdf2d/polygon.gd", "res://addons/material_maker/sdf_builder/sdf2d/round.gd", "res://addons/material_maker/sdf_builder/sdf2d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf2d/stairs.gd", "res://addons/material_maker/sdf_builder/sdf2d/star.gd", "res://addons/material_maker/sdf_builder/sdf2d/union.gd", "res://addons/material_maker/sdf_builder/sdf3d/annular.gd", "res://addons/material_maker/sdf_builder/sdf3d/bend.gd", "res://addons/material_maker/sdf_builder/sdf3d/box.gd", "res://addons/material_maker/sdf_builder/sdf3d/color.gd", "res://addons/material_maker/sdf_builder/sdf3d/cylinder.gd", "res://addons/material_maker/sdf_builder/sdf3d/difference.gd", "res://addons/material_maker/sdf_builder/sdf3d/distort.gd", "res://addons/material_maker/sdf_builder/sdf3d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf3d/extrusion.gd", "res://addons/material_maker/sdf_builder/sdf3d/flip.gd", "res://addons/material_maker/sdf_builder/sdf3d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf3d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf3d/morph.gd", "res://addons/material_maker/sdf_builder/sdf3d/revolution.gd", "res://addons/material_maker/sdf_builder/sdf3d/round.gd", "res://addons/material_maker/sdf_builder/sdf3d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf3d/sphere.gd", "res://addons/material_maker/sdf_builder/sdf3d/torus.gd", "res://addons/material_maker/sdf_builder/sdf3d/twist.gd", "res://addons/material_maker/sdf_builder/sdf3d/union.gd", "res://addons/material_maker/sdf_builder/tex/blend.gd", "res://addons/material_maker/sdf_builder/tex/brightness_contrast.gd", "res://addons/material_maker/sdf_builder/tex/deform.gd", "res://addons/material_maker/sdf_builder/tex/fbm.gd", "res://addons/material_maker/sdf_builder/tex/pattern.gd", "res://addons/material_maker/sdf_builder/tex/simple_gradient.gd", "res://addons/material_maker/sdf_builder/tex/step.gd", "res://addons/material_maker/sdf_builder/tex/uniform.gd", "res://addons/material_maker/sdf_builder/tex/uniform_gs.gd", "res://addons/material_maker/sdf_builder/base.gd", "res://addons/material_maker/sdf_builder/sdf_builder.gd", "res://addons/material_maker/sdf_builder/sdf_builder.tscn", "res://addons/material_maker/shader_functions.tres", "res://addons/material_maker/engine/text_resource.gd", "res://splash_screen/rodz_labs_logo.png", "res://addons/material_maker/engine/shader_material.gd", "res://addons/material_maker/engine/shader_compute.gd", "res://splash_screen/splash_screen.gd", "res://splash_screen/splash_screen.gdshader", "res://splash_screen/splash_screen.tscn", "res://splash_screen/splash_title.png", "res://splash_screen/arrow.png", "res://addons/material_maker/engine/shader_base.gd", "res://splash_screen/splash_screen_bottom.gdshader", "res://material_maker/widgets/code_editor/code_editor.gd", "res://material_maker/widgets/code_editor/code_editor.tscn", "res://material_maker/panels/preview_2d/custom_size_dialog.gd", "res://material_maker/panels/preview_2d/custom_size_dialog.tscn", "res://material_maker/theme/green.tres", "res://material_maker/theme/birch.tres", "res://material_maker/theme/mangosteen.tres", "res://addons/material_maker/engine/nodes/gen_base.gd", "res://addons/material_maker/engine/nodes/gen_brush.gd", "res://addons/material_maker/engine/nodes/gen_buffer.gd", "res://addons/material_maker/engine/nodes/gen_comment.gd", "res://addons/material_maker/engine/nodes/gen_context.gd", "res://addons/material_maker/engine/nodes/gen_debug.gd", "res://addons/material_maker/engine/nodes/gen_export.gd", "res://addons/material_maker/engine/nodes/gen_graph.gd", "res://addons/material_maker/engine/nodes/gen_image.gd", "res://addons/material_maker/engine/nodes/gen_ios.gd", "res://addons/material_maker/engine/nodes/gen_iterate_buffer.gd", "res://addons/material_maker/engine/nodes/gen_material.gd", "res://addons/material_maker/engine/nodes/gen_remote.gd", "res://addons/material_maker/engine/nodes/gen_reroute.gd", "res://addons/material_maker/engine/nodes/gen_sdf.gd", "res://addons/material_maker/engine/nodes/gen_shader.gd", "res://addons/material_maker/engine/nodes/gen_switch.gd", "res://addons/material_maker/engine/nodes/gen_text.gd", "res://addons/material_maker/engine/nodes/gen_texture.gd", "res://addons/material_maker/engine/pipeline/compute_shader.gd", "res://addons/material_maker/engine/pipeline/pipeline.gd", "res://addons/material_maker/engine/pipeline/rendering_pipeline.gd", "res://material_maker/nodes/node_button.tscn", "res://material_maker/nodes/node_button.gd", "res://material_maker/icons/close.tres", "res://parse_args.tscn", "res://parse_args.gd", "res://splash_screen/backgrounds/oneiric_worlds_zefyr.png", "res://addons/material_maker/engine/pipeline/texture.gd", "res://splash_screen/backgrounds/angel_soft_nurball.png", "res://splash_screen/backgrounds/angel_beanbag_chair.png", "res://splash_screen/backgrounds/paulo_falcao_green_thing.png", "res://material_maker/windows/export_taa/export_taa.tscn", "res://material_maker/windows/export_taa/export_taa.gd", "res://material_maker/windows/export_taa/divide_compute.tres", "res://material_maker/windows/export_taa/accumulate_compute.tres", "res://addons/material_maker/engine/nodes/iterate_buffer_compute.tres", "res://addons/material_maker/engine/nodes/buffer_compute.tres", "res://splash_screen/backgrounds/pixelmuncher_golden_tiles.png", "res://splash_screen/backgrounds/cgmytro_old_doors.png", "res://splash_screen/backgrounds/cybereality_brutalism.png", "res://splash_screen/backgrounds/cybereality_dirty_tiles.png", "res://splash_screen/backgrounds/cybereality_future_visions.png", "res://splash_screen/backgrounds/droppedbeat_matrix_rain.tres", "res://splash_screen/backgrounds/droppedbeat_procedural_material.png", "res://splash_screen/backgrounds/droppedbeat_spiral_trails.tres", "res://splash_screen/backgrounds/droppedbeat_vending_machines.png", "res://splash_screen/backgrounds/paulo_falcao_fractal_octahedron.tres", "res://splash_screen/backgrounds/paulo_falcao_terminator_ball.tres", "res://splash_screen/backgrounds/pavel_oliva_carved_wood.png", "res://splash_screen/backgrounds/pavel_oliva_celestial_floor.png", "res://splash_screen/backgrounds/pavel_oliva_cursed_planks.png", "res://splash_screen/backgrounds/pavel_oliva_flowing_lava.png", "res://splash_screen/backgrounds/pavel_oliva_lace.png", "res://splash_screen/backgrounds/pavel_oliva_pavement_generator.png", "res://splash_screen/backgrounds/pavel_oliva_stylized_pavement.png", "res://splash_screen/backgrounds/pavel_oliva_treasures.png", "res://splash_screen/backgrounds/pavel_oliva_vintage_luggage.png", "res://addons/material_maker/map_generator/ao_fragment.tres", "res://addons/material_maker/map_generator/ao_vertex.tres", "res://addons/material_maker/map_generator/bvh_generator.gd", "res://addons/material_maker/map_generator/common_fragment.tres", "res://addons/material_maker/map_generator/curvature_generator.gd", "res://addons/material_maker/map_generator/curvature_vertex.tres", "res://addons/material_maker/map_generator/denoise_compute.tres", "res://addons/material_maker/map_generator/dilate_1_compute.tres", "res://addons/material_maker/map_generator/dilate_2_compute.tres", "res://addons/material_maker/map_generator/map_generator.gd", "res://addons/material_maker/map_generator/mesh_rendering_pipeline.gd", "res://addons/material_maker/map_generator/normalize_compute.tres", "res://addons/material_maker/map_generator/normal_fragment.tres", "res://addons/material_maker/map_generator/normal_vertex.tres", "res://addons/material_maker/map_generator/position_vertex.tres", "res://addons/material_maker/map_generator/seams_1_compute.tres", "res://addons/material_maker/map_generator/seams_2_compute.tres", "res://addons/material_maker/map_generator/tangent_vertex.tres", "res://addons/material_maker/engine/nodes/gen_meshmap.gd", "res://material_maker/projects_panel.tscn", "res://addons/flexible_layout/tab.svg", "res://addons/flexible_layout/flexible_tabs.tscn", "res://addons/flexible_layout/flexible_tabs.gd", "res://addons/flexible_layout/flexible_tab.tscn", "res://addons/flexible_layout/flexible_tab.gd", "res://addons/flexible_layout/flexible_overlay.tscn", "res://addons/flexible_layout/flexible_overlay.gd", "res://addons/flexible_layout/flexible_layout.tscn", "res://addons/flexible_layout/flexible_layout.gd", "res://addons/flexible_layout/arrow.svg", "res://addons/flexible_layout/flexible_dragger.gd", "res://addons/flexible_layout/flexible_dragger.tscn", "res://addons/material_maker/engine/nodes/gen_webcam.gd", "res://material_maker/tools/painter/shaders/paint_shader_template.tres", "res://addons/material_maker/loaders/mesh_loader.gd", "res://addons/material_maker/loaders/obj_loader.gd", "res://material_maker/tools/painter/shaders/t2v_fragment.tres", "res://material_maker/tools/painter/shaders/t2v_vertex.tres", "res://material_maker/tools/painter/shaders/v2t_fragment.tres", "res://material_maker/tools/painter/shaders/v2t_vertex.tres", "res://material_maker/tools/painter/shaders/brush.gdshader", "res://material_maker/tools/painter/shaders/brush_common_decl.gdshader", "res://material_maker/tools/painter/shaders/brush_pattern.gdshader", "res://material_maker/tools/painter/shaders/brush_stamp.gdshader", "res://material_maker/tools/painter/shaders/brush_uv_pattern.gdshader", "res://addons/material_maker/types/splines.gd", "res://material_maker/widgets/splines_edit/splines_dialog.gd", "res://material_maker/widgets/splines_edit/splines_dialog.tscn", "res://material_maker/widgets/splines_edit/splines_edit.gd", "res://material_maker/widgets/splines_edit/splines_edit.tscn", "res://material_maker/widgets/splines_edit/splines_editor.gd", "res://material_maker/widgets/splines_edit/splines_editor.tscn", "res://material_maker/widgets/splines_edit/splines_view.gd", "res://material_maker/widgets/splines_edit/splines_view.tscn", "res://addons/flexible_layout/undock.png", "res://addons/material_maker/engine/shader_error_handler.gd", "res://addons/material_maker/types/pixels.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.tscn", "res://material_maker/widgets/pixels_edit/pixels_edit.gd", "res://material_maker/widgets/pixels_edit/pixels_edit.tscn", "res://material_maker/widgets/pixels_edit/pixels_editor.gd", "res://material_maker/widgets/pixels_edit/pixels_editor.tscn", "res://material_maker/widgets/pixels_edit/pixels_view.gd", "res://material_maker/widgets/pixels_edit/pixels_view.tscn", "res://material_maker/windows/node_editor/parameter_splines.gd", "res://material_maker/windows/node_editor/parameter_splines.tscn", "res://material_maker/windows/node_editor/parameter_pixels.gd", "res://material_maker/windows/node_editor/parameter_pixels.tscn", "res://addons/material_maker/engine/logger.gd", "res://material_maker/console.gd", "res://material_maker/widgets/gradient_editor/gradient_edit.gd", "res://material_maker/widgets/gradient_editor/gradient_edit.tscn", "res://material_maker/widgets/gradient_editor/gradient_edit_cursor.gd", "res://material_maker/widgets/gradient_editor/gradient_edit_cursor.tscn") include_filter="*.tmpl" exclude_filter="*.ptex,*.mmn,*.mmg" export_path="C:/Users/rodzi/Downloads/material_maker_1_4a1_windows/material_maker.exe" @@ -77,7 +77,7 @@ advanced_options=false dedicated_server=false custom_features="" export_filter="resources" -export_files=PackedStringArray("res://addons/material_maker/engine/dependencies.gd", "res://addons/material_maker/engine/io_types.gd", "res://addons/material_maker/engine/loader.gd", "res://addons/material_maker/engine/multi_renderer.gd", "res://addons/material_maker/engine/paths.gd", "res://addons/material_maker/engine/preprocessor.gd", "res://addons/material_maker/engine/renderer.gd", "res://addons/material_maker/engine/renderer.tscn", "res://addons/material_maker/parser/glsl_parser.gd", "res://addons/material_maker/parser/glsl_parser_base.gd", "res://addons/material_maker/parser/parser_base.gd", "res://addons/material_maker/sdf_builder/base.gd", "res://addons/material_maker/sdf_builder/icons/icons.svg", "res://addons/material_maker/sdf_builder/sdf2d/annular.gd", "res://addons/material_maker/sdf_builder/sdf2d/bend.gd", "res://addons/material_maker/sdf_builder/sdf2d/box.gd", "res://addons/material_maker/sdf_builder/sdf2d/circle.gd", "res://addons/material_maker/sdf_builder/sdf2d/color.gd", "res://addons/material_maker/sdf_builder/sdf2d/difference.gd", "res://addons/material_maker/sdf_builder/sdf2d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf2d/flip.gd", "res://addons/material_maker/sdf_builder/sdf2d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf2d/line.gd", "res://addons/material_maker/sdf_builder/sdf2d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf2d/morph.gd", "res://addons/material_maker/sdf_builder/sdf2d/ngon.gd", "res://addons/material_maker/sdf_builder/sdf2d/polygon.gd", "res://addons/material_maker/sdf_builder/sdf2d/round.gd", "res://addons/material_maker/sdf_builder/sdf2d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf2d/stairs.gd", "res://addons/material_maker/sdf_builder/sdf2d/star.gd", "res://addons/material_maker/sdf_builder/sdf2d/union.gd", "res://addons/material_maker/sdf_builder/sdf3d/annular.gd", "res://addons/material_maker/sdf_builder/sdf3d/bend.gd", "res://addons/material_maker/sdf_builder/sdf3d/box.gd", "res://addons/material_maker/sdf_builder/sdf3d/color.gd", "res://addons/material_maker/sdf_builder/sdf3d/cylinder.gd", "res://addons/material_maker/sdf_builder/sdf3d/difference.gd", "res://addons/material_maker/sdf_builder/sdf3d/distort.gd", "res://addons/material_maker/sdf_builder/sdf3d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf3d/extrusion.gd", "res://addons/material_maker/sdf_builder/sdf3d/flip.gd", "res://addons/material_maker/sdf_builder/sdf3d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf3d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf3d/morph.gd", "res://addons/material_maker/sdf_builder/sdf3d/revolution.gd", "res://addons/material_maker/sdf_builder/sdf3d/round.gd", "res://addons/material_maker/sdf_builder/sdf3d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf3d/sphere.gd", "res://addons/material_maker/sdf_builder/sdf3d/torus.gd", "res://addons/material_maker/sdf_builder/sdf3d/twist.gd", "res://addons/material_maker/sdf_builder/sdf3d/union.gd", "res://addons/material_maker/sdf_builder/sdf_builder.gd", "res://addons/material_maker/sdf_builder/sdf_builder.tscn", "res://addons/material_maker/sdf_builder/tex/blend.gd", "res://addons/material_maker/sdf_builder/tex/brightness_contrast.gd", "res://addons/material_maker/sdf_builder/tex/deform.gd", "res://addons/material_maker/sdf_builder/tex/fbm.gd", "res://addons/material_maker/sdf_builder/tex/pattern.gd", "res://addons/material_maker/sdf_builder/tex/simple_gradient.gd", "res://addons/material_maker/sdf_builder/tex/step.gd", "res://addons/material_maker/sdf_builder/tex/uniform.gd", "res://addons/material_maker/sdf_builder/tex/uniform_gs.gd", "res://addons/material_maker/types/curve.gd", "res://addons/material_maker/types/gradient.gd", "res://addons/material_maker/types/polygon.gd", "res://addons/material_maker/types/types.gd", "res://default_env.tres", "res://icon.png", "res://material_maker/darken.gd", "res://material_maker/darken.tscn", "res://material_maker/fonts/DroidSansFallback.ttf", "res://material_maker/fonts/DroidSansJapanese.ttf", "res://material_maker/fonts/hack.ttf", "res://material_maker/fonts/vegur_regular.otf", "res://material_maker/globals.gd", "res://material_maker/globals.tscn", "res://material_maker/globals_menu_manager.gd", "res://material_maker/icons/add.tres", "res://material_maker/icons/add_generic.tres", "res://material_maker/icons/buffer.tres", "res://material_maker/icons/buffer_paused.tres", "res://material_maker/icons/color_palette.png", "res://material_maker/icons/color_picker.png", "res://material_maker/icons/custom.png", "res://material_maker/icons/down.tres", "res://material_maker/icons/edit.tres", "res://material_maker/icons/eye_closed.tres", "res://material_maker/icons/eye_open.tres", "res://material_maker/icons/godot_logo.svg", "res://material_maker/icons/icons.svg", "res://material_maker/icons/icons.tres", "res://material_maker/icons/link.tres", "res://material_maker/icons/lmb.tres", "res://material_maker/icons/minimize.tres", "res://material_maker/icons/mmb.tres", "res://material_maker/icons/ok.tres", "res://material_maker/icons/output_preview.tres", "res://material_maker/icons/paste_graph.tres", "res://material_maker/icons/paste_newgraph.tres", "res://material_maker/icons/paste_none.tres", "res://material_maker/icons/paste_palette.tres", "res://material_maker/icons/port_group_0.tres", "res://material_maker/icons/port_group_1.tres", "res://material_maker/icons/port_group_2.tres", "res://material_maker/icons/port_group_3.tres", "res://material_maker/icons/preview.png", "res://material_maker/icons/preview_locked.png", "res://material_maker/icons/randomness_locked.tres", "res://material_maker/icons/randomness_unlocked.tres", "res://material_maker/icons/remove.tres", "res://material_maker/icons/rmb.tres", "res://material_maker/icons/up.tres", "res://material_maker/locale/locale.gd", "res://material_maker/main_window.gd", "res://material_maker/main_window.tscn", "res://material_maker/main_window_layout.gd", "res://material_maker/meshes/suzanne.obj", "res://material_maker/node_factory.gd", "res://material_maker/nodes/base.gd", "res://material_maker/nodes/comment/comment.gd", "res://material_maker/nodes/comment/comment.tscn", "res://material_maker/nodes/comment/palette_button.gd", "res://material_maker/nodes/debug/debug.gd", "res://material_maker/nodes/debug/debug.tscn", "res://material_maker/nodes/debug/debug_popup.gd", "res://material_maker/nodes/debug/debug_popup.tscn", "res://material_maker/nodes/edit_buttons.gd", "res://material_maker/nodes/edit_buttons.tscn", "res://material_maker/nodes/generic/generic.gd", "res://material_maker/nodes/generic/generic.tscn", "res://material_maker/nodes/ios/add.tscn", "res://material_maker/nodes/ios/ios.gd", "res://material_maker/nodes/ios/ios.tscn", "res://material_maker/nodes/ios/port.gd", "res://material_maker/nodes/ios/port.tscn", "res://material_maker/nodes/material_export/material_export.gd", "res://material_maker/nodes/material_export/material_export.tscn", "res://material_maker/nodes/minimal.gd", "res://material_maker/nodes/remote/named_parameter_dialog.gd", "res://material_maker/nodes/remote/named_parameter_dialog.tscn", "res://material_maker/nodes/remote/remote.gd", "res://material_maker/nodes/remote/remote.tscn", "res://material_maker/nodes/reroute/reroute.gd", "res://material_maker/nodes/reroute/reroute.tscn", "res://material_maker/nodes/switch/switch.gd", "res://material_maker/nodes/switch/switch.tscn", "res://material_maker/nodes/tones/tones.gd", "res://material_maker/nodes/tones/tones.tscn", "res://material_maker/panels/brushes/brushes.gd", "res://material_maker/panels/brushes/brushes.tscn", "res://material_maker/panels/graph_edit/graph_edit.gd", "res://material_maker/panels/graph_edit/graph_edit.tscn", "res://material_maker/panels/hierarchy/hierarchy_panel.gd", "res://material_maker/panels/hierarchy/hierarchy_panel.tscn", "res://material_maker/panels/layers/add_layer_menu.tscn", "res://material_maker/panels/layers/icons/layer_mask.tres", "res://material_maker/panels/layers/icons/layer_paint.tres", "res://material_maker/panels/layers/icons/layer_proc.tres", "res://material_maker/panels/layers/icons/not_visible.tres", "res://material_maker/panels/layers/icons/visible.tres", "res://material_maker/panels/layers/layer_config_popup.gd", "res://material_maker/panels/layers/layer_config_popup.tscn", "res://material_maker/panels/layers/layer_tooltip.gd", "res://material_maker/panels/layers/layer_tooltip.tscn", "res://material_maker/panels/layers/layer_tooltip_thumbnail.gd", "res://material_maker/panels/layers/layer_tooltip_thumbnail.tscn", "res://material_maker/panels/layers/layers.gd", "res://material_maker/panels/layers/layers.tscn", "res://material_maker/panels/layers/layers_tree.gd", "res://material_maker/panels/library/button_greyed.tres", "res://material_maker/panels/library/create_lib_dialog.gd", "res://material_maker/panels/library/create_lib_dialog.tscn", "res://material_maker/panels/library/library.gd", "res://material_maker/panels/library/library.tscn", "res://material_maker/panels/library/library_tree.gd", "res://material_maker/panels/paint/export.gd", "res://material_maker/panels/paint/export.tscn", "res://material_maker/panels/paint/layer_types/layer.gd", "res://material_maker/panels/paint/layer_types/layer_mask.gd", "res://material_maker/panels/paint/layer_types/layer_paint.gd", "res://material_maker/panels/paint/layer_types/layer_procedural.gd", "res://material_maker/panels/paint/paint.gd", "res://material_maker/panels/paint/paint.tscn", "res://material_maker/panels/paint/paint_layers.gd", "res://material_maker/panels/paint/paint_layers.tscn", "res://material_maker/panels/paint/paint_project_settings.gd", "res://material_maker/panels/paint/paint_project_settings.tscn", "res://material_maker/panels/paint/collapse_button.tscn", "res://material_maker/panels/paint/collapse_button.gd", "res://material_maker/panels/parameters/parameters.gd", "res://material_maker/panels/parameters/parameters.tscn", "res://material_maker/panels/preview_2d/control_point.gd", "res://material_maker/panels/preview_2d/control_point.tscn", "res://material_maker/panels/preview_2d/lines.gd", "res://material_maker/panels/preview_2d/preview_2d.gd", "res://material_maker/panels/preview_2d/preview_2d.tscn", "res://material_maker/panels/preview_2d/preview_2d_node.gd", "res://material_maker/panels/preview_2d/preview_2d_node.tscn", "res://material_maker/panels/preview_2d/preview_2d_panel.gd", "res://material_maker/panels/preview_2d/preview_2d_panel.tscn", "res://material_maker/panels/preview_3d/materials/shader_material_tesselated.tres", "res://material_maker/panels/preview_3d/materials/spatial_material.tres", "res://material_maker/panels/preview_3d/mesh_config_popup.gd", "res://material_maker/panels/preview_3d/mesh_config_popup.tscn", "res://material_maker/panels/preview_3d/preview_3d.gd", "res://material_maker/panels/preview_3d/preview_3d.tscn", "res://material_maker/panels/preview_3d/preview_3d_panel.gd", "res://material_maker/panels/preview_3d/preview_3d_panel.tscn", "res://material_maker/panels/preview_3d/preview_3d_scene.tscn", "res://material_maker/panels/preview_3d/preview_3d_ui.gd", "res://material_maker/panels/preview_3d/preview_3d_ui.tscn", "res://material_maker/panels/preview_3d/preview_light.gd", "res://material_maker/panels/preview_3d/preview_light.tscn", "res://material_maker/panels/preview_3d/preview_mesh.gd", "res://material_maker/panels/preview_3d/preview_objects.tscn", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cube.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Custom.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cylinder.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Plane.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Prism.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Sphere.png", "res://material_maker/panels/reference/color_slot.gd", "res://material_maker/panels/reference/color_slot.tscn", "res://material_maker/panels/reference/gradient_slot.gd", "res://material_maker/panels/reference/gradient_slot.tscn", "res://material_maker/panels/reference/reference_panel.gd", "res://material_maker/panels/reference/reference_panel.tscn", "res://material_maker/theme/dark.tres", "res://material_maker/theme/dark/checkbox_checked.png", "res://material_maker/theme/dark/checkbox_radio_checked.png", "res://material_maker/theme/dark/checkbox_radio_unchecked.png", "res://material_maker/theme/dark/checkbox_unchecked.png", "res://material_maker/theme/dark/checkbutton_off.png", "res://material_maker/theme/dark/checkbutton_off_disabled.png", "res://material_maker/theme/dark/checkbutton_on.png", "res://material_maker/theme/dark/checkbutton_on_disabled.png", "res://material_maker/theme/dark/colorpickerbutton_bg.png", "res://material_maker/theme/dark/curve_preset_bevel.tres", "res://material_maker/theme/dark/curve_preset_bounce.tres", "res://material_maker/theme/dark/curve_preset_easein.tres", "res://material_maker/theme/dark/curve_preset_easeinout.tres", "res://material_maker/theme/dark/curve_preset_easeout.tres", "res://material_maker/theme/dark/curve_preset_linear.tres", "res://material_maker/theme/dark/curve_preset_sawtooth.tres", "res://material_maker/theme/dark/curve_presets.svg", "res://material_maker/theme/dark/graphedit_minus.png", "res://material_maker/theme/dark/graphedit_more.png", "res://material_maker/theme/dark/graphedit_reset.png", "res://material_maker/theme/dark/graphedit_snap.png", "res://material_maker/theme/dark/graphnode_close.png", "res://material_maker/theme/dark/graphnode_port.png", "res://material_maker/theme/dark/graphnode_resizer.png", "res://material_maker/theme/dark/hslider_grabber.png", "res://material_maker/theme/dark/hslider_grabber_disabled.png", "res://material_maker/theme/dark/hslider_grabber_highlight.png", "res://material_maker/theme/dark/hslider_tick.png", "res://material_maker/theme/dark/hsplitcontainer_grabber.png", "res://material_maker/theme/dark/lineedit_clear.png", "res://material_maker/theme/dark/optionbutton_arrow.png", "res://material_maker/theme/dark/popupmenu_checked.png", "res://material_maker/theme/dark/popupmenu_radio_checked.png", "res://material_maker/theme/dark/popupmenu_radio_unchecked.png", "res://material_maker/theme/dark/popupmenu_submenu.png", "res://material_maker/theme/dark/popupmenu_unchecked.png", "res://material_maker/theme/dark/popupmenu_visibility_hidden.png", "res://material_maker/theme/dark/popupmenu_visibility_visible.png", "res://material_maker/theme/dark/popupmenu_visibility_xray.png", "res://material_maker/theme/dark/sb_checkbox_focus_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_hslider_focus_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/sb_panel_panelf_texture.png", "res://material_maker/theme/dark/sb_panel_panelnc_texture.png", "res://material_maker/theme/dark/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/dark/sb_progressbar_bg_texture.png", "res://material_maker/theme/dark/sb_progressbar_fg_texture.png", "res://material_maker/theme/dark/sb_textedit_completion_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/tabcontainer_decrement.png", "res://material_maker/theme/dark/tabcontainer_decrement_highlight.png", "res://material_maker/theme/dark/tabcontainer_increment.png", "res://material_maker/theme/dark/tabcontainer_increment_highlight.png", "res://material_maker/theme/dark/tabcontainer_menu.png", "res://material_maker/theme/dark/tabcontainer_menu_highlight.png", "res://material_maker/theme/dark/tabs_close.png", "res://material_maker/theme/dark/tabs_decrement.png", "res://material_maker/theme/dark/tabs_decrement_highlight.png", "res://material_maker/theme/dark/tabs_increment.png", "res://material_maker/theme/dark/tabs_increment_highlight.png", "res://material_maker/theme/dark/textedit_fold.png", "res://material_maker/theme/dark/textedit_folded.png", "res://material_maker/theme/dark/textedit_space.png", "res://material_maker/theme/dark/textedit_tab.png", "res://material_maker/theme/dark/tree_arrow.png", "res://material_maker/theme/dark/tree_arrow_collapsed.png", "res://material_maker/theme/dark/tree_checked.png", "res://material_maker/theme/dark/tree_select_arrow.png", "res://material_maker/theme/dark/tree_unchecked.png", "res://material_maker/theme/dark/tree_updown.png", "res://material_maker/theme/dark/vslider_grabber.png", "res://material_maker/theme/dark/vslider_grabber_highlight.png", "res://material_maker/theme/dark/vsplitcontainer_grabber.png", "res://material_maker/theme/dark/windowdialog_close.png", "res://material_maker/theme/dark/windowdialog_close_highlight.png", "res://material_maker/theme/default.tres", "res://material_maker/theme/font.tres", "res://material_maker/theme/light.tres", "res://material_maker/theme/light/checkbox_checked.png", "res://material_maker/theme/light/checkbox_radio_checked.png", "res://material_maker/theme/light/checkbox_radio_unchecked.png", "res://material_maker/theme/light/checkbox_unchecked.png", "res://material_maker/theme/light/checkbutton_off.png", "res://material_maker/theme/light/checkbutton_off_disabled.png", "res://material_maker/theme/light/checkbutton_on.png", "res://material_maker/theme/light/checkbutton_on_disabled.png", "res://material_maker/theme/light/colorpickerbutton_bg.png", "res://material_maker/theme/light/curve_preset_bevel.tres", "res://material_maker/theme/light/curve_preset_bounce.tres", "res://material_maker/theme/light/curve_preset_easein.tres", "res://material_maker/theme/light/curve_preset_easeinout.tres", "res://material_maker/theme/light/curve_preset_easeout.tres", "res://material_maker/theme/light/curve_preset_linear.tres", "res://material_maker/theme/light/curve_preset_sawtooth.tres", "res://material_maker/theme/light/curve_presets.svg", "res://material_maker/theme/light/graphedit_minus.png", "res://material_maker/theme/light/graphedit_more.png", "res://material_maker/theme/light/graphedit_reset.png", "res://material_maker/theme/light/graphedit_snap.png", "res://material_maker/theme/light/graphnode_close.png", "res://material_maker/theme/light/graphnode_port.png", "res://material_maker/theme/light/graphnode_resizer.png", "res://material_maker/theme/light/hslider_grabber.png", "res://material_maker/theme/light/hslider_grabber_disabled.png", "res://material_maker/theme/light/hslider_grabber_highlight.png", "res://material_maker/theme/light/hslider_tick.png", "res://material_maker/theme/light/hsplitcontainer_grabber.png", "res://material_maker/theme/light/lineedit_clear.png", "res://material_maker/theme/light/optionbutton_arrow.png", "res://material_maker/theme/light/popupmenu_checked.png", "res://material_maker/theme/light/popupmenu_radio_checked.png", "res://material_maker/theme/light/popupmenu_radio_unchecked.png", "res://material_maker/theme/light/popupmenu_submenu.png", "res://material_maker/theme/light/popupmenu_unchecked.png", "res://material_maker/theme/light/popupmenu_visibility_hidden.png", "res://material_maker/theme/light/popupmenu_visibility_visible.png", "res://material_maker/theme/light/popupmenu_visibility_xray.png", "res://material_maker/theme/light/sb_checkbox_focus_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_hslider_focus_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/light/sb_panel_panelf_texture.png", "res://material_maker/theme/light/sb_panel_panelnc_texture.png", "res://material_maker/theme/light/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/light/sb_progressbar_bg_texture.png", "res://material_maker/theme/light/sb_progressbar_fg_texture.png", "res://material_maker/theme/light/sb_textedit_completion_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/light/tabcontainer_decrement.png", "res://material_maker/theme/light/tabcontainer_decrement_highlight.png", "res://material_maker/theme/light/tabcontainer_increment.png", "res://material_maker/theme/light/tabcontainer_increment_highlight.png", "res://material_maker/theme/light/tabcontainer_menu.png", "res://material_maker/theme/light/tabcontainer_menu_highlight.png", "res://material_maker/theme/light/tabs_close.png", "res://material_maker/theme/light/tabs_decrement.png", "res://material_maker/theme/light/tabs_decrement_highlight.png", "res://material_maker/theme/light/tabs_increment.png", "res://material_maker/theme/light/tabs_increment_highlight.png", "res://material_maker/theme/light/textedit_fold.png", "res://material_maker/theme/light/textedit_folded.png", "res://material_maker/theme/light/textedit_space.png", "res://material_maker/theme/light/textedit_tab.png", "res://material_maker/theme/light/tree_arrow.png", "res://material_maker/theme/light/tree_arrow_collapsed.png", "res://material_maker/theme/light/tree_checked.png", "res://material_maker/theme/light/tree_select_arrow.png", "res://material_maker/theme/light/tree_unchecked.png", "res://material_maker/theme/light/tree_updown.png", "res://material_maker/theme/light/vslider_grabber.png", "res://material_maker/theme/light/vslider_grabber_highlight.png", "res://material_maker/theme/light/vsplitcontainer_grabber.png", "res://material_maker/theme/light/windowdialog_close.png", "res://material_maker/theme/light/windowdialog_close_highlight.png", "res://material_maker/tools/environment_manager/environment_manager.gd", "res://material_maker/tools/environment_manager/environment_manager.tscn", "res://material_maker/tools/library_manager/library.gd", "res://material_maker/tools/library_manager/library_manager.gd", "res://material_maker/tools/map_renderer/map_renderer.gd", "res://material_maker/tools/map_renderer/map_renderer.tscn", "res://material_maker/tools/painter/brush_preview.gd", "res://material_maker/tools/painter/brush_preview.tscn", "res://material_maker/tools/painter/painter.gd", "res://material_maker/tools/painter/painter.tscn", "res://material_maker/tools/painter/painter_viewport.gd", "res://material_maker/tools/painter/painter_viewport.tscn", "res://material_maker/tools/painter/shaders/init.tres", "res://material_maker/tools/painter/shaders/init_channels.tres", "res://material_maker/tools/painter/shaders/init_copy_shader.tres", "res://material_maker/tools/share/broken_link.tres", "res://material_maker/tools/share/golden_link.tres", "res://material_maker/tools/share/hdri/kloofendal_48d_partly_cloudy_1k.exr", "res://material_maker/tools/share/link.tres", "res://material_maker/tools/share/login_dialog.gd", "res://material_maker/tools/share/login_dialog.tscn", "res://material_maker/tools/share/preview_scene.tscn", "res://material_maker/tools/share/preview_scene_viewer.tscn", "res://material_maker/tools/share/preview_viewport.gd", "res://material_maker/tools/share/preview_viewport.tscn", "res://material_maker/tools/share/share_button.gd", "res://material_maker/tools/share/share_button.tscn", "res://material_maker/tools/share/share_http_request.gd", "res://material_maker/tools/share/share_node_dialog.gd", "res://material_maker/tools/share/share_node_dialog.tscn", "res://material_maker/tools/share/upload_dialog.gd", "res://material_maker/tools/share/upload_dialog.tscn", "res://material_maker/tools/undo_redo/undo_redo.gd", "res://material_maker/widgets/color_picker_button/color_picker_button.gd", "res://material_maker/widgets/color_picker_popup/color_picker_popup.tscn", "res://material_maker/widgets/curve_edit/control_point.gd", "res://material_maker/widgets/curve_edit/control_point.tscn", "res://material_maker/widgets/curve_edit/curve_dialog.gd", "res://material_maker/widgets/curve_edit/curve_dialog.tscn", "res://material_maker/widgets/curve_edit/curve_edit.gd", "res://material_maker/widgets/curve_edit/curve_edit.tscn", "res://material_maker/widgets/curve_edit/curve_editor.gd", "res://material_maker/widgets/curve_edit/curve_editor.tscn", "res://material_maker/widgets/curve_edit/curve_view.gd", "res://material_maker/widgets/curve_edit/curve_view.tscn", "res://material_maker/widgets/curve_edit/presets_selector.gd", "res://material_maker/widgets/curve_edit/slope_point.gd", "res://material_maker/widgets/desc_button/desc_button.gd", "res://material_maker/widgets/desc_button/desc_button.tscn", "res://material_maker/widgets/file_picker_button/file_picker_button.gd", "res://material_maker/widgets/file_picker_button/file_picker_button.tscn", "res://material_maker/widgets/float_edit/expression_editor.gd", "res://material_maker/widgets/float_edit/expression_editor.tscn", "res://material_maker/widgets/float_edit/float_edit.gd", "res://material_maker/widgets/float_edit/float_edit.tscn", "res://material_maker/widgets/gradient_editor/gradient_editor.gd", "res://material_maker/widgets/gradient_editor/gradient_editor.tscn", "res://material_maker/widgets/gradient_editor/gradient_popup.gd", "res://material_maker/widgets/gradient_editor/gradient_popup.tscn", "res://material_maker/widgets/graph_tree/graph_tree.gd", "res://material_maker/widgets/graph_tree/graph_tree.tscn", "res://material_maker/widgets/histogram/histogram.gd", "res://material_maker/widgets/histogram/histogram.tscn", "res://material_maker/widgets/image_picker_button/image_picker_button.gd", "res://material_maker/widgets/image_picker_button/image_picker_button.tscn", "res://material_maker/widgets/linked_widgets/editable_label.gd", "res://material_maker/widgets/linked_widgets/editable_label.tscn", "res://material_maker/widgets/linked_widgets/link.gd", "res://material_maker/widgets/polygon_edit/control_point.gd", "res://material_maker/widgets/polygon_edit/control_point.tscn", "res://material_maker/widgets/polygon_edit/polygon_dialog.gd", "res://material_maker/widgets/polygon_edit/polygon_dialog.tscn", "res://material_maker/widgets/polygon_edit/polygon_edit.gd", "res://material_maker/widgets/polygon_edit/polygon_edit.tscn", "res://material_maker/widgets/polygon_edit/polygon_editor.gd", "res://material_maker/widgets/polygon_edit/polygon_editor.tscn", "res://material_maker/widgets/polygon_edit/polygon_view.gd", "res://material_maker/widgets/polygon_edit/polygon_view.tscn", "res://material_maker/widgets/port_group_button/port_group_button.gd", "res://material_maker/widgets/port_group_button/port_group_button.tscn", "res://material_maker/widgets/render_counter/render_counter.gd", "res://material_maker/widgets/render_counter/render_counter.tscn", "res://material_maker/widgets/size_option_button/size_option_button.gd", "res://material_maker/widgets/tabs/tabs.gd", "res://material_maker/windows/about/about.gd", "res://material_maker/windows/about/about.tscn", "res://material_maker/windows/about/discord.png", "res://material_maker/windows/about/epic_megagrant.svg", "res://material_maker/windows/about/facebook.png", "res://material_maker/windows/about/github.png", "res://material_maker/windows/about/icon.png", "res://material_maker/windows/about/itchio.png", "res://material_maker/windows/about/patreon.png", "res://material_maker/windows/about/twitter.png", "res://material_maker/windows/about/youtube.png", "res://material_maker/windows/accept_dialog/accept_dialog.gd", "res://material_maker/windows/accept_dialog/accept_dialog.tscn", "res://material_maker/windows/add_node_popup/add_node_popup.gd", "res://material_maker/windows/add_node_popup/add_node_popup.tscn", "res://material_maker/windows/add_node_popup/quick_button.gd", "res://material_maker/windows/add_node_popup/quick_button.tscn", "res://material_maker/windows/desc_dialog/desc_dialog.gd", "res://material_maker/windows/desc_dialog/desc_dialog.tscn", "res://material_maker/windows/environment_editor/environment_editor.gd", "res://material_maker/windows/environment_editor/environment_editor.tscn", "res://material_maker/windows/environment_editor/environment_editor_scene.tscn", "res://material_maker/windows/environment_editor/environment_editor_viewport.tscn", "res://material_maker/windows/environment_editor/new_environment.png", "res://material_maker/windows/export_animation/export_animation.gd", "res://material_maker/windows/export_animation/export_animation.tscn", "res://material_maker/windows/file_dialog/fav_button.tscn", "res://material_maker/windows/file_dialog/file_dialog.gd", "res://material_maker/windows/file_dialog/file_dialog.tscn", "res://material_maker/windows/file_dialog/left_panel.gd", "res://material_maker/windows/file_dialog/left_panel.tscn", "res://material_maker/windows/line_dialog/line_dialog.gd", "res://material_maker/windows/line_dialog/line_dialog.tscn", "res://material_maker/windows/load_from_website/load_from_website.gd", "res://material_maker/windows/load_from_website/load_from_website.tscn", "res://material_maker/windows/material_editor/export_editor.gd", "res://material_maker/windows/material_editor/export_editor.tscn", "res://material_maker/windows/material_editor/expression_line_edit.gd", "res://material_maker/windows/material_editor/expression_line_edit.tscn", "res://material_maker/windows/material_editor/material_editor.gd", "res://material_maker/windows/material_editor/material_editor.tscn", "res://material_maker/windows/new_painter/new_painter.gd", "res://material_maker/windows/new_painter/new_painter.tscn", "res://material_maker/windows/node_editor/enum_editor.gd", "res://material_maker/windows/node_editor/enum_editor.tscn", "res://material_maker/windows/node_editor/input.gd", "res://material_maker/windows/node_editor/input.tscn", "res://material_maker/windows/node_editor/node_editor.gd", "res://material_maker/windows/node_editor/node_editor.tscn", "res://material_maker/windows/node_editor/node_editor_item_list.gd", "res://material_maker/windows/node_editor/output.gd", "res://material_maker/windows/node_editor/output.tscn", "res://material_maker/windows/node_editor/parameter.gd", "res://material_maker/windows/node_editor/parameter.tscn", "res://material_maker/windows/node_editor/parameter_boolean.gd", "res://material_maker/windows/node_editor/parameter_boolean.tscn", "res://material_maker/windows/node_editor/parameter_color.gd", "res://material_maker/windows/node_editor/parameter_color.tscn", "res://material_maker/windows/node_editor/parameter_curve.gd", "res://material_maker/windows/node_editor/parameter_curve.tscn", "res://material_maker/windows/node_editor/parameter_enum.gd", "res://material_maker/windows/node_editor/parameter_enum.tscn", "res://material_maker/windows/node_editor/parameter_float.gd", "res://material_maker/windows/node_editor/parameter_float.tscn", "res://material_maker/windows/node_editor/parameter_gradient.gd", "res://material_maker/windows/node_editor/parameter_gradient.tscn", "res://material_maker/windows/node_editor/parameter_polygon.gd", "res://material_maker/windows/node_editor/parameter_polygon.tscn", "res://material_maker/windows/node_editor/parameter_polyline.tscn", "res://material_maker/windows/node_editor/parameter_size.gd", "res://material_maker/windows/node_editor/parameter_size.tscn", "res://material_maker/windows/preferences/bool_option.gd", "res://material_maker/windows/preferences/bool_option.tscn", "res://material_maker/windows/preferences/float_option.gd", "res://material_maker/windows/preferences/float_option.tscn", "res://material_maker/windows/preferences/lang_option.gd", "res://material_maker/windows/preferences/language_download.gd", "res://material_maker/windows/preferences/language_download.tscn", "res://material_maker/windows/preferences/preferences.gd", "res://material_maker/windows/preferences/preferences.tscn", "res://material_maker/windows/progress_window/progress_window.gd", "res://material_maker/windows/progress_window/progress_window.tscn", "res://material_maker/windows/sdf_builder/gizmo.gd", "res://material_maker/windows/sdf_builder/gizmo.tscn", "res://material_maker/windows/sdf_builder/gizmo_arrow.gd", "res://material_maker/windows/sdf_builder/gizmo_arrow.tscn", "res://material_maker/windows/sdf_builder/preview_2d.gd", "res://material_maker/windows/sdf_builder/preview_2d.tscn", "res://material_maker/windows/sdf_builder/preview_3d.gd", "res://material_maker/windows/sdf_builder/preview_3d.tscn", "res://material_maker/windows/sdf_builder/sdf_builder.gd", "res://material_maker/windows/sdf_builder/sdf_builder.tscn", "res://material_maker/windows/sdf_builder/sdf_builder_tree.gd", "res://start.gd", "res://start.tscn", "res://material_maker/icons/icons.gd", "res://material_maker/windows/sdf_builder/gizmo.gdshader", "res://material_maker/windows/sdf_builder/preview_2d.gdshader", "res://material_maker/windows/sdf_builder/preview_3d.gdshader", "res://material_maker/panel_container.gd", "res://material_maker/main_window_projects_panel.gd", "res://addons/material_maker/shader_functions.tres", "res://addons/material_maker/engine/text_resource.gd", "res://splash_screen/rodz_labs_logo.png", "res://addons/material_maker/engine/shader_material.gd", "res://splash_screen/splash_screen.gd", "res://splash_screen/splash_screen.gdshader", "res://splash_screen/splash_screen.tscn", "res://splash_screen/splash_title.png", "res://splash_screen/arrow.png", "res://addons/material_maker/engine/shader_compute.gd", "res://addons/material_maker/engine/shader_base.gd", "res://splash_screen/splash_screen_bottom.gdshader", "res://material_maker/widgets/code_editor/code_editor.gd", "res://material_maker/widgets/code_editor/code_editor.tscn", "res://material_maker/panels/preview_2d/custom_size_dialog.gd", "res://material_maker/panels/preview_2d/custom_size_dialog.tscn", "res://material_maker/theme/green.tres", "res://material_maker/theme/birch.tres", "res://material_maker/theme/mangosteen.tres", "res://addons/material_maker/engine/pipeline/compute_shader.gd", "res://addons/material_maker/engine/pipeline/pipeline.gd", "res://addons/material_maker/engine/nodes/gen_base.gd", "res://addons/material_maker/engine/nodes/gen_brush.gd", "res://addons/material_maker/engine/nodes/gen_buffer.gd", "res://addons/material_maker/engine/nodes/gen_comment.gd", "res://addons/material_maker/engine/nodes/gen_context.gd", "res://addons/material_maker/engine/nodes/gen_debug.gd", "res://addons/material_maker/engine/nodes/gen_export.gd", "res://addons/material_maker/engine/nodes/gen_graph.gd", "res://addons/material_maker/engine/nodes/gen_image.gd", "res://addons/material_maker/engine/nodes/gen_ios.gd", "res://addons/material_maker/engine/nodes/gen_iterate_buffer.gd", "res://addons/material_maker/engine/nodes/gen_material.gd", "res://addons/material_maker/engine/nodes/gen_remote.gd", "res://addons/material_maker/engine/nodes/gen_reroute.gd", "res://addons/material_maker/engine/nodes/gen_sdf.gd", "res://addons/material_maker/engine/nodes/gen_shader.gd", "res://addons/material_maker/engine/nodes/gen_switch.gd", "res://addons/material_maker/engine/nodes/gen_text.gd", "res://addons/material_maker/engine/nodes/gen_texture.gd", "res://addons/material_maker/engine/pipeline/rendering_pipeline.gd", "res://material_maker/nodes/node_button.tscn", "res://material_maker/nodes/node_button.gd", "res://material_maker/icons/close.tres", "res://parse_args.tscn", "res://parse_args.gd", "res://splash_screen/backgrounds/oneiric_worlds_zefyr.png", "res://addons/material_maker/engine/pipeline/texture.gd", "res://splash_screen/backgrounds/angel_soft_nurball.png", "res://splash_screen/backgrounds/angel_beanbag_chair.png", "res://splash_screen/backgrounds/paulo_falcao_green_thing.png", "res://material_maker/windows/export_taa/export_taa.tscn", "res://material_maker/windows/export_taa/export_taa.gd", "res://material_maker/windows/export_taa/divide_compute.tres", "res://material_maker/windows/export_taa/accumulate_compute.tres", "res://addons/material_maker/engine/nodes/iterate_buffer_compute.tres", "res://addons/material_maker/engine/nodes/buffer_compute.tres", "res://splash_screen/backgrounds/pixelmuncher_golden_tiles.png", "res://splash_screen/backgrounds/cgmytro_old_doors.png", "res://splash_screen/backgrounds/cybereality_brutalism.png", "res://splash_screen/backgrounds/cybereality_dirty_tiles.png", "res://splash_screen/backgrounds/cybereality_future_visions.png", "res://splash_screen/backgrounds/droppedbeat_matrix_rain.tres", "res://splash_screen/backgrounds/droppedbeat_procedural_material.png", "res://splash_screen/backgrounds/droppedbeat_spiral_trails.tres", "res://splash_screen/backgrounds/droppedbeat_vending_machines.png", "res://splash_screen/backgrounds/paulo_falcao_fractal_octahedron.tres", "res://splash_screen/backgrounds/paulo_falcao_terminator_ball.tres", "res://splash_screen/backgrounds/pavel_oliva_carved_wood.png", "res://splash_screen/backgrounds/pavel_oliva_celestial_floor.png", "res://splash_screen/backgrounds/pavel_oliva_cursed_planks.png", "res://splash_screen/backgrounds/pavel_oliva_flowing_lava.png", "res://splash_screen/backgrounds/pavel_oliva_lace.png", "res://splash_screen/backgrounds/pavel_oliva_pavement_generator.png", "res://splash_screen/backgrounds/pavel_oliva_stylized_pavement.png", "res://splash_screen/backgrounds/pavel_oliva_treasures.png", "res://splash_screen/backgrounds/pavel_oliva_vintage_luggage.png", "res://addons/material_maker/map_generator/ao_fragment.tres", "res://addons/material_maker/map_generator/ao_vertex.tres", "res://addons/material_maker/map_generator/bvh_generator.gd", "res://addons/material_maker/map_generator/common_fragment.tres", "res://addons/material_maker/map_generator/curvature_generator.gd", "res://addons/material_maker/map_generator/curvature_vertex.tres", "res://addons/material_maker/map_generator/denoise_compute.tres", "res://addons/material_maker/map_generator/dilate_1_compute.tres", "res://addons/material_maker/map_generator/dilate_2_compute.tres", "res://addons/material_maker/map_generator/map_generator.gd", "res://addons/material_maker/map_generator/mesh_rendering_pipeline.gd", "res://addons/material_maker/map_generator/normalize_compute.tres", "res://addons/material_maker/map_generator/normal_fragment.tres", "res://addons/material_maker/map_generator/normal_vertex.tres", "res://addons/material_maker/map_generator/position_vertex.tres", "res://addons/material_maker/map_generator/seams_1_compute.tres", "res://addons/material_maker/map_generator/seams_2_compute.tres", "res://addons/material_maker/map_generator/tangent_vertex.tres", "res://addons/material_maker/engine/nodes/gen_meshmap.gd", "res://material_maker/projects_panel.tscn", "res://addons/flexible_layout/arrow.svg", "res://addons/flexible_layout/flexible_dragger.gd", "res://addons/flexible_layout/flexible_dragger.tscn", "res://addons/flexible_layout/flexible_layout.gd", "res://addons/flexible_layout/flexible_layout.tscn", "res://addons/flexible_layout/flexible_overlay.gd", "res://addons/flexible_layout/flexible_overlay.tscn", "res://addons/flexible_layout/flexible_tab.gd", "res://addons/flexible_layout/flexible_tab.tscn", "res://addons/flexible_layout/flexible_tabs.gd", "res://addons/flexible_layout/flexible_tabs.tscn", "res://addons/flexible_layout/tab.svg", "res://addons/material_maker/engine/nodes/gen_webcam.gd", "res://addons/material_maker/loaders/mesh_loader.gd", "res://addons/material_maker/loaders/obj_loader.gd", "res://material_maker/tools/painter/shaders/paint_shader_template.tres", "res://material_maker/tools/painter/shaders/t2v_fragment.tres", "res://material_maker/tools/painter/shaders/t2v_vertex.tres", "res://material_maker/tools/painter/shaders/v2t_fragment.tres", "res://material_maker/tools/painter/shaders/v2t_vertex.tres", "res://material_maker/tools/painter/shaders/brush.gdshader", "res://material_maker/tools/painter/shaders/brush_common_decl.gdshader", "res://material_maker/tools/painter/shaders/brush_pattern.gdshader", "res://material_maker/tools/painter/shaders/brush_stamp.gdshader", "res://material_maker/tools/painter/shaders/brush_uv_pattern.gdshader", "res://addons/material_maker/types/splines.gd", "res://material_maker/widgets/splines_edit/splines_dialog.gd", "res://material_maker/widgets/splines_edit/splines_dialog.tscn", "res://material_maker/widgets/splines_edit/splines_edit.gd", "res://material_maker/widgets/splines_edit/splines_edit.tscn", "res://material_maker/widgets/splines_edit/splines_editor.gd", "res://material_maker/widgets/splines_edit/splines_editor.tscn", "res://material_maker/widgets/splines_edit/splines_view.gd", "res://material_maker/widgets/splines_edit/splines_view.tscn", "res://addons/flexible_layout/undock.png", "res://addons/material_maker/engine/shader_error_handler.gd", "res://addons/material_maker/types/pixels.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.tscn", "res://material_maker/widgets/pixels_edit/pixels_edit.gd", "res://material_maker/widgets/pixels_edit/pixels_edit.tscn", "res://material_maker/widgets/pixels_edit/pixels_editor.gd", "res://material_maker/widgets/pixels_edit/pixels_editor.tscn", "res://material_maker/widgets/pixels_edit/pixels_view.gd", "res://material_maker/widgets/pixels_edit/pixels_view.tscn", "res://material_maker/windows/node_editor/parameter_pixels.gd", "res://material_maker/windows/node_editor/parameter_pixels.tscn", "res://material_maker/windows/node_editor/parameter_splines.gd", "res://material_maker/windows/node_editor/parameter_splines.tscn", "res://addons/material_maker/engine/logger.gd", "res://material_maker/console.gd") +export_files=PackedStringArray("res://addons/material_maker/engine/dependencies.gd", "res://addons/material_maker/engine/io_types.gd", "res://addons/material_maker/engine/loader.gd", "res://addons/material_maker/engine/multi_renderer.gd", "res://addons/material_maker/engine/paths.gd", "res://addons/material_maker/engine/preprocessor.gd", "res://addons/material_maker/engine/renderer.gd", "res://addons/material_maker/engine/renderer.tscn", "res://addons/material_maker/parser/glsl_parser.gd", "res://addons/material_maker/parser/glsl_parser_base.gd", "res://addons/material_maker/parser/parser_base.gd", "res://addons/material_maker/sdf_builder/base.gd", "res://addons/material_maker/sdf_builder/icons/icons.svg", "res://addons/material_maker/sdf_builder/sdf2d/annular.gd", "res://addons/material_maker/sdf_builder/sdf2d/bend.gd", "res://addons/material_maker/sdf_builder/sdf2d/box.gd", "res://addons/material_maker/sdf_builder/sdf2d/circle.gd", "res://addons/material_maker/sdf_builder/sdf2d/color.gd", "res://addons/material_maker/sdf_builder/sdf2d/difference.gd", "res://addons/material_maker/sdf_builder/sdf2d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf2d/flip.gd", "res://addons/material_maker/sdf_builder/sdf2d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf2d/line.gd", "res://addons/material_maker/sdf_builder/sdf2d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf2d/morph.gd", "res://addons/material_maker/sdf_builder/sdf2d/ngon.gd", "res://addons/material_maker/sdf_builder/sdf2d/polygon.gd", "res://addons/material_maker/sdf_builder/sdf2d/round.gd", "res://addons/material_maker/sdf_builder/sdf2d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf2d/stairs.gd", "res://addons/material_maker/sdf_builder/sdf2d/star.gd", "res://addons/material_maker/sdf_builder/sdf2d/union.gd", "res://addons/material_maker/sdf_builder/sdf3d/annular.gd", "res://addons/material_maker/sdf_builder/sdf3d/bend.gd", "res://addons/material_maker/sdf_builder/sdf3d/box.gd", "res://addons/material_maker/sdf_builder/sdf3d/color.gd", "res://addons/material_maker/sdf_builder/sdf3d/cylinder.gd", "res://addons/material_maker/sdf_builder/sdf3d/difference.gd", "res://addons/material_maker/sdf_builder/sdf3d/distort.gd", "res://addons/material_maker/sdf_builder/sdf3d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf3d/extrusion.gd", "res://addons/material_maker/sdf_builder/sdf3d/flip.gd", "res://addons/material_maker/sdf_builder/sdf3d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf3d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf3d/morph.gd", "res://addons/material_maker/sdf_builder/sdf3d/revolution.gd", "res://addons/material_maker/sdf_builder/sdf3d/round.gd", "res://addons/material_maker/sdf_builder/sdf3d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf3d/sphere.gd", "res://addons/material_maker/sdf_builder/sdf3d/torus.gd", "res://addons/material_maker/sdf_builder/sdf3d/twist.gd", "res://addons/material_maker/sdf_builder/sdf3d/union.gd", "res://addons/material_maker/sdf_builder/sdf_builder.gd", "res://addons/material_maker/sdf_builder/sdf_builder.tscn", "res://addons/material_maker/sdf_builder/tex/blend.gd", "res://addons/material_maker/sdf_builder/tex/brightness_contrast.gd", "res://addons/material_maker/sdf_builder/tex/deform.gd", "res://addons/material_maker/sdf_builder/tex/fbm.gd", "res://addons/material_maker/sdf_builder/tex/pattern.gd", "res://addons/material_maker/sdf_builder/tex/simple_gradient.gd", "res://addons/material_maker/sdf_builder/tex/step.gd", "res://addons/material_maker/sdf_builder/tex/uniform.gd", "res://addons/material_maker/sdf_builder/tex/uniform_gs.gd", "res://addons/material_maker/types/curve.gd", "res://addons/material_maker/types/gradient.gd", "res://addons/material_maker/types/polygon.gd", "res://addons/material_maker/types/types.gd", "res://default_env.tres", "res://icon.png", "res://material_maker/darken.gd", "res://material_maker/darken.tscn", "res://material_maker/fonts/DroidSansFallback.ttf", "res://material_maker/fonts/DroidSansJapanese.ttf", "res://material_maker/fonts/hack.ttf", "res://material_maker/fonts/vegur_regular.otf", "res://material_maker/globals.gd", "res://material_maker/globals.tscn", "res://material_maker/globals_menu_manager.gd", "res://material_maker/icons/add.tres", "res://material_maker/icons/add_generic.tres", "res://material_maker/icons/buffer.tres", "res://material_maker/icons/buffer_paused.tres", "res://material_maker/icons/color_palette.png", "res://material_maker/icons/color_picker.png", "res://material_maker/icons/custom.png", "res://material_maker/icons/down.tres", "res://material_maker/icons/edit.tres", "res://material_maker/icons/eye_closed.tres", "res://material_maker/icons/eye_open.tres", "res://material_maker/icons/godot_logo.svg", "res://material_maker/icons/icons.svg", "res://material_maker/icons/icons.tres", "res://material_maker/icons/link.tres", "res://material_maker/icons/lmb.tres", "res://material_maker/icons/minimize.tres", "res://material_maker/icons/mmb.tres", "res://material_maker/icons/ok.tres", "res://material_maker/icons/output_preview.tres", "res://material_maker/icons/paste_graph.tres", "res://material_maker/icons/paste_newgraph.tres", "res://material_maker/icons/paste_none.tres", "res://material_maker/icons/paste_palette.tres", "res://material_maker/icons/port_group_0.tres", "res://material_maker/icons/port_group_1.tres", "res://material_maker/icons/port_group_2.tres", "res://material_maker/icons/port_group_3.tres", "res://material_maker/icons/preview.png", "res://material_maker/icons/preview_locked.png", "res://material_maker/icons/randomness_locked.tres", "res://material_maker/icons/randomness_unlocked.tres", "res://material_maker/icons/remove.tres", "res://material_maker/icons/rmb.tres", "res://material_maker/icons/up.tres", "res://material_maker/locale/locale.gd", "res://material_maker/main_window.gd", "res://material_maker/main_window.tscn", "res://material_maker/main_window_layout.gd", "res://material_maker/meshes/suzanne.obj", "res://material_maker/node_factory.gd", "res://material_maker/nodes/base.gd", "res://material_maker/nodes/comment/comment.gd", "res://material_maker/nodes/comment/comment.tscn", "res://material_maker/nodes/comment/palette_button.gd", "res://material_maker/nodes/debug/debug.gd", "res://material_maker/nodes/debug/debug.tscn", "res://material_maker/nodes/debug/debug_popup.gd", "res://material_maker/nodes/debug/debug_popup.tscn", "res://material_maker/nodes/edit_buttons.gd", "res://material_maker/nodes/edit_buttons.tscn", "res://material_maker/nodes/generic/generic.gd", "res://material_maker/nodes/generic/generic.tscn", "res://material_maker/nodes/ios/add.tscn", "res://material_maker/nodes/ios/ios.gd", "res://material_maker/nodes/ios/ios.tscn", "res://material_maker/nodes/ios/port.gd", "res://material_maker/nodes/ios/port.tscn", "res://material_maker/nodes/material_export/material_export.gd", "res://material_maker/nodes/material_export/material_export.tscn", "res://material_maker/nodes/minimal.gd", "res://material_maker/nodes/remote/named_parameter_dialog.gd", "res://material_maker/nodes/remote/named_parameter_dialog.tscn", "res://material_maker/nodes/remote/remote.gd", "res://material_maker/nodes/remote/remote.tscn", "res://material_maker/nodes/reroute/reroute.gd", "res://material_maker/nodes/reroute/reroute.tscn", "res://material_maker/nodes/switch/switch.gd", "res://material_maker/nodes/switch/switch.tscn", "res://material_maker/nodes/tones/tones.gd", "res://material_maker/nodes/tones/tones.tscn", "res://material_maker/panels/brushes/brushes.gd", "res://material_maker/panels/brushes/brushes.tscn", "res://material_maker/panels/graph_edit/graph_edit.gd", "res://material_maker/panels/graph_edit/graph_edit.tscn", "res://material_maker/panels/hierarchy/hierarchy_panel.gd", "res://material_maker/panels/hierarchy/hierarchy_panel.tscn", "res://material_maker/panels/layers/add_layer_menu.tscn", "res://material_maker/panels/layers/icons/layer_mask.tres", "res://material_maker/panels/layers/icons/layer_paint.tres", "res://material_maker/panels/layers/icons/layer_proc.tres", "res://material_maker/panels/layers/icons/not_visible.tres", "res://material_maker/panels/layers/icons/visible.tres", "res://material_maker/panels/layers/layer_config_popup.gd", "res://material_maker/panels/layers/layer_config_popup.tscn", "res://material_maker/panels/layers/layer_tooltip.gd", "res://material_maker/panels/layers/layer_tooltip.tscn", "res://material_maker/panels/layers/layer_tooltip_thumbnail.gd", "res://material_maker/panels/layers/layer_tooltip_thumbnail.tscn", "res://material_maker/panels/layers/layers.gd", "res://material_maker/panels/layers/layers.tscn", "res://material_maker/panels/layers/layers_tree.gd", "res://material_maker/panels/library/button_greyed.tres", "res://material_maker/panels/library/create_lib_dialog.gd", "res://material_maker/panels/library/create_lib_dialog.tscn", "res://material_maker/panels/library/library.gd", "res://material_maker/panels/library/library.tscn", "res://material_maker/panels/library/library_tree.gd", "res://material_maker/panels/paint/export.gd", "res://material_maker/panels/paint/export.tscn", "res://material_maker/panels/paint/layer_types/layer.gd", "res://material_maker/panels/paint/layer_types/layer_mask.gd", "res://material_maker/panels/paint/layer_types/layer_paint.gd", "res://material_maker/panels/paint/layer_types/layer_procedural.gd", "res://material_maker/panels/paint/paint.gd", "res://material_maker/panels/paint/paint.tscn", "res://material_maker/panels/paint/paint_layers.gd", "res://material_maker/panels/paint/paint_layers.tscn", "res://material_maker/panels/paint/paint_project_settings.gd", "res://material_maker/panels/paint/paint_project_settings.tscn", "res://material_maker/panels/paint/collapse_button.tscn", "res://material_maker/panels/paint/collapse_button.gd", "res://material_maker/panels/parameters/parameters.gd", "res://material_maker/panels/parameters/parameters.tscn", "res://material_maker/panels/preview_2d/control_point.gd", "res://material_maker/panels/preview_2d/control_point.tscn", "res://material_maker/panels/preview_2d/lines.gd", "res://material_maker/panels/preview_2d/preview_2d.gd", "res://material_maker/panels/preview_2d/preview_2d.tscn", "res://material_maker/panels/preview_2d/preview_2d_node.gd", "res://material_maker/panels/preview_2d/preview_2d_node.tscn", "res://material_maker/panels/preview_2d/preview_2d_panel.gd", "res://material_maker/panels/preview_2d/preview_2d_panel.tscn", "res://material_maker/panels/preview_3d/materials/shader_material_tesselated.tres", "res://material_maker/panels/preview_3d/materials/spatial_material.tres", "res://material_maker/panels/preview_3d/mesh_config_popup.gd", "res://material_maker/panels/preview_3d/mesh_config_popup.tscn", "res://material_maker/panels/preview_3d/preview_3d.gd", "res://material_maker/panels/preview_3d/preview_3d.tscn", "res://material_maker/panels/preview_3d/preview_3d_panel.gd", "res://material_maker/panels/preview_3d/preview_3d_panel.tscn", "res://material_maker/panels/preview_3d/preview_3d_scene.tscn", "res://material_maker/panels/preview_3d/preview_3d_ui.gd", "res://material_maker/panels/preview_3d/preview_3d_ui.tscn", "res://material_maker/panels/preview_3d/preview_light.gd", "res://material_maker/panels/preview_3d/preview_light.tscn", "res://material_maker/panels/preview_3d/preview_mesh.gd", "res://material_maker/panels/preview_3d/preview_objects.tscn", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cube.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Custom.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cylinder.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Plane.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Prism.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Sphere.png", "res://material_maker/panels/reference/color_slot.gd", "res://material_maker/panels/reference/color_slot.tscn", "res://material_maker/panels/reference/gradient_slot.gd", "res://material_maker/panels/reference/gradient_slot.tscn", "res://material_maker/panels/reference/reference_panel.gd", "res://material_maker/panels/reference/reference_panel.tscn", "res://material_maker/theme/dark.tres", "res://material_maker/theme/dark/checkbox_checked.png", "res://material_maker/theme/dark/checkbox_radio_checked.png", "res://material_maker/theme/dark/checkbox_radio_unchecked.png", "res://material_maker/theme/dark/checkbox_unchecked.png", "res://material_maker/theme/dark/checkbutton_off.png", "res://material_maker/theme/dark/checkbutton_off_disabled.png", "res://material_maker/theme/dark/checkbutton_on.png", "res://material_maker/theme/dark/checkbutton_on_disabled.png", "res://material_maker/theme/dark/colorpickerbutton_bg.png", "res://material_maker/theme/dark/curve_preset_bevel.tres", "res://material_maker/theme/dark/curve_preset_bounce.tres", "res://material_maker/theme/dark/curve_preset_easein.tres", "res://material_maker/theme/dark/curve_preset_easeinout.tres", "res://material_maker/theme/dark/curve_preset_easeout.tres", "res://material_maker/theme/dark/curve_preset_linear.tres", "res://material_maker/theme/dark/curve_preset_sawtooth.tres", "res://material_maker/theme/dark/curve_presets.svg", "res://material_maker/theme/dark/graphedit_minus.png", "res://material_maker/theme/dark/graphedit_more.png", "res://material_maker/theme/dark/graphedit_reset.png", "res://material_maker/theme/dark/graphedit_snap.png", "res://material_maker/theme/dark/graphnode_close.png", "res://material_maker/theme/dark/graphnode_port.png", "res://material_maker/theme/dark/graphnode_resizer.png", "res://material_maker/theme/dark/hslider_grabber.png", "res://material_maker/theme/dark/hslider_grabber_disabled.png", "res://material_maker/theme/dark/hslider_grabber_highlight.png", "res://material_maker/theme/dark/hslider_tick.png", "res://material_maker/theme/dark/hsplitcontainer_grabber.png", "res://material_maker/theme/dark/lineedit_clear.png", "res://material_maker/theme/dark/optionbutton_arrow.png", "res://material_maker/theme/dark/popupmenu_checked.png", "res://material_maker/theme/dark/popupmenu_radio_checked.png", "res://material_maker/theme/dark/popupmenu_radio_unchecked.png", "res://material_maker/theme/dark/popupmenu_submenu.png", "res://material_maker/theme/dark/popupmenu_unchecked.png", "res://material_maker/theme/dark/popupmenu_visibility_hidden.png", "res://material_maker/theme/dark/popupmenu_visibility_visible.png", "res://material_maker/theme/dark/popupmenu_visibility_xray.png", "res://material_maker/theme/dark/sb_checkbox_focus_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_hslider_focus_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/sb_panel_panelf_texture.png", "res://material_maker/theme/dark/sb_panel_panelnc_texture.png", "res://material_maker/theme/dark/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/dark/sb_progressbar_bg_texture.png", "res://material_maker/theme/dark/sb_progressbar_fg_texture.png", "res://material_maker/theme/dark/sb_textedit_completion_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/tabcontainer_decrement.png", "res://material_maker/theme/dark/tabcontainer_decrement_highlight.png", "res://material_maker/theme/dark/tabcontainer_increment.png", "res://material_maker/theme/dark/tabcontainer_increment_highlight.png", "res://material_maker/theme/dark/tabcontainer_menu.png", "res://material_maker/theme/dark/tabcontainer_menu_highlight.png", "res://material_maker/theme/dark/tabs_close.png", "res://material_maker/theme/dark/tabs_decrement.png", "res://material_maker/theme/dark/tabs_decrement_highlight.png", "res://material_maker/theme/dark/tabs_increment.png", "res://material_maker/theme/dark/tabs_increment_highlight.png", "res://material_maker/theme/dark/textedit_fold.png", "res://material_maker/theme/dark/textedit_folded.png", "res://material_maker/theme/dark/textedit_space.png", "res://material_maker/theme/dark/textedit_tab.png", "res://material_maker/theme/dark/tree_arrow.png", "res://material_maker/theme/dark/tree_arrow_collapsed.png", "res://material_maker/theme/dark/tree_checked.png", "res://material_maker/theme/dark/tree_select_arrow.png", "res://material_maker/theme/dark/tree_unchecked.png", "res://material_maker/theme/dark/tree_updown.png", "res://material_maker/theme/dark/vslider_grabber.png", "res://material_maker/theme/dark/vslider_grabber_highlight.png", "res://material_maker/theme/dark/vsplitcontainer_grabber.png", "res://material_maker/theme/dark/windowdialog_close.png", "res://material_maker/theme/dark/windowdialog_close_highlight.png", "res://material_maker/theme/default.tres", "res://material_maker/theme/font.tres", "res://material_maker/theme/light.tres", "res://material_maker/theme/light/checkbox_checked.png", "res://material_maker/theme/light/checkbox_radio_checked.png", "res://material_maker/theme/light/checkbox_radio_unchecked.png", "res://material_maker/theme/light/checkbox_unchecked.png", "res://material_maker/theme/light/checkbutton_off.png", "res://material_maker/theme/light/checkbutton_off_disabled.png", "res://material_maker/theme/light/checkbutton_on.png", "res://material_maker/theme/light/checkbutton_on_disabled.png", "res://material_maker/theme/light/colorpickerbutton_bg.png", "res://material_maker/theme/light/curve_preset_bevel.tres", "res://material_maker/theme/light/curve_preset_bounce.tres", "res://material_maker/theme/light/curve_preset_easein.tres", "res://material_maker/theme/light/curve_preset_easeinout.tres", "res://material_maker/theme/light/curve_preset_easeout.tres", "res://material_maker/theme/light/curve_preset_linear.tres", "res://material_maker/theme/light/curve_preset_sawtooth.tres", "res://material_maker/theme/light/curve_presets.svg", "res://material_maker/theme/light/graphedit_minus.png", "res://material_maker/theme/light/graphedit_more.png", "res://material_maker/theme/light/graphedit_reset.png", "res://material_maker/theme/light/graphedit_snap.png", "res://material_maker/theme/light/graphnode_close.png", "res://material_maker/theme/light/graphnode_port.png", "res://material_maker/theme/light/graphnode_resizer.png", "res://material_maker/theme/light/hslider_grabber.png", "res://material_maker/theme/light/hslider_grabber_disabled.png", "res://material_maker/theme/light/hslider_grabber_highlight.png", "res://material_maker/theme/light/hslider_tick.png", "res://material_maker/theme/light/hsplitcontainer_grabber.png", "res://material_maker/theme/light/lineedit_clear.png", "res://material_maker/theme/light/optionbutton_arrow.png", "res://material_maker/theme/light/popupmenu_checked.png", "res://material_maker/theme/light/popupmenu_radio_checked.png", "res://material_maker/theme/light/popupmenu_radio_unchecked.png", "res://material_maker/theme/light/popupmenu_submenu.png", "res://material_maker/theme/light/popupmenu_unchecked.png", "res://material_maker/theme/light/popupmenu_visibility_hidden.png", "res://material_maker/theme/light/popupmenu_visibility_visible.png", "res://material_maker/theme/light/popupmenu_visibility_xray.png", "res://material_maker/theme/light/sb_checkbox_focus_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_hslider_focus_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/light/sb_panel_panelf_texture.png", "res://material_maker/theme/light/sb_panel_panelnc_texture.png", "res://material_maker/theme/light/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/light/sb_progressbar_bg_texture.png", "res://material_maker/theme/light/sb_progressbar_fg_texture.png", "res://material_maker/theme/light/sb_textedit_completion_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/light/tabcontainer_decrement.png", "res://material_maker/theme/light/tabcontainer_decrement_highlight.png", "res://material_maker/theme/light/tabcontainer_increment.png", "res://material_maker/theme/light/tabcontainer_increment_highlight.png", "res://material_maker/theme/light/tabcontainer_menu.png", "res://material_maker/theme/light/tabcontainer_menu_highlight.png", "res://material_maker/theme/light/tabs_close.png", "res://material_maker/theme/light/tabs_decrement.png", "res://material_maker/theme/light/tabs_decrement_highlight.png", "res://material_maker/theme/light/tabs_increment.png", "res://material_maker/theme/light/tabs_increment_highlight.png", "res://material_maker/theme/light/textedit_fold.png", "res://material_maker/theme/light/textedit_folded.png", "res://material_maker/theme/light/textedit_space.png", "res://material_maker/theme/light/textedit_tab.png", "res://material_maker/theme/light/tree_arrow.png", "res://material_maker/theme/light/tree_arrow_collapsed.png", "res://material_maker/theme/light/tree_checked.png", "res://material_maker/theme/light/tree_select_arrow.png", "res://material_maker/theme/light/tree_unchecked.png", "res://material_maker/theme/light/tree_updown.png", "res://material_maker/theme/light/vslider_grabber.png", "res://material_maker/theme/light/vslider_grabber_highlight.png", "res://material_maker/theme/light/vsplitcontainer_grabber.png", "res://material_maker/theme/light/windowdialog_close.png", "res://material_maker/theme/light/windowdialog_close_highlight.png", "res://material_maker/tools/environment_manager/environment_manager.gd", "res://material_maker/tools/environment_manager/environment_manager.tscn", "res://material_maker/tools/library_manager/library.gd", "res://material_maker/tools/library_manager/library_manager.gd", "res://material_maker/tools/map_renderer/map_renderer.gd", "res://material_maker/tools/map_renderer/map_renderer.tscn", "res://material_maker/tools/painter/brush_preview.gd", "res://material_maker/tools/painter/brush_preview.tscn", "res://material_maker/tools/painter/painter.gd", "res://material_maker/tools/painter/painter.tscn", "res://material_maker/tools/painter/painter_viewport.gd", "res://material_maker/tools/painter/painter_viewport.tscn", "res://material_maker/tools/painter/shaders/init.tres", "res://material_maker/tools/painter/shaders/init_channels.tres", "res://material_maker/tools/painter/shaders/init_copy_shader.tres", "res://material_maker/tools/share/broken_link.tres", "res://material_maker/tools/share/golden_link.tres", "res://material_maker/tools/share/hdri/kloofendal_48d_partly_cloudy_1k.exr", "res://material_maker/tools/share/link.tres", "res://material_maker/tools/share/login_dialog.gd", "res://material_maker/tools/share/login_dialog.tscn", "res://material_maker/tools/share/preview_scene.tscn", "res://material_maker/tools/share/preview_scene_viewer.tscn", "res://material_maker/tools/share/preview_viewport.gd", "res://material_maker/tools/share/preview_viewport.tscn", "res://material_maker/tools/share/share_button.gd", "res://material_maker/tools/share/share_button.tscn", "res://material_maker/tools/share/share_http_request.gd", "res://material_maker/tools/share/share_node_dialog.gd", "res://material_maker/tools/share/share_node_dialog.tscn", "res://material_maker/tools/share/upload_dialog.gd", "res://material_maker/tools/share/upload_dialog.tscn", "res://material_maker/tools/undo_redo/undo_redo.gd", "res://material_maker/widgets/color_picker_button/color_picker_button.gd", "res://material_maker/widgets/color_picker_popup/color_picker_popup.tscn", "res://material_maker/widgets/curve_edit/control_point.gd", "res://material_maker/widgets/curve_edit/control_point.tscn", "res://material_maker/widgets/curve_edit/curve_dialog.gd", "res://material_maker/widgets/curve_edit/curve_dialog.tscn", "res://material_maker/widgets/curve_edit/curve_edit.gd", "res://material_maker/widgets/curve_edit/curve_edit.tscn", "res://material_maker/widgets/curve_edit/curve_editor.gd", "res://material_maker/widgets/curve_edit/curve_editor.tscn", "res://material_maker/widgets/curve_edit/curve_view.gd", "res://material_maker/widgets/curve_edit/curve_view.tscn", "res://material_maker/widgets/curve_edit/presets_selector.gd", "res://material_maker/widgets/curve_edit/slope_point.gd", "res://material_maker/widgets/desc_button/desc_button.gd", "res://material_maker/widgets/desc_button/desc_button.tscn", "res://material_maker/widgets/file_picker_button/file_picker_button.gd", "res://material_maker/widgets/file_picker_button/file_picker_button.tscn", "res://material_maker/widgets/float_edit/expression_editor.gd", "res://material_maker/widgets/float_edit/expression_editor.tscn", "res://material_maker/widgets/float_edit/float_edit.gd", "res://material_maker/widgets/float_edit/float_edit.tscn", "res://material_maker/console.gd", "res://addons/material_maker/engine/logger.gd", "res://material_maker/widgets/gradient_editor/gradient_popup.gd", "res://material_maker/widgets/gradient_editor/gradient_popup.tscn", "res://material_maker/widgets/graph_tree/graph_tree.gd", "res://material_maker/widgets/graph_tree/graph_tree.tscn", "res://material_maker/widgets/histogram/histogram.gd", "res://material_maker/widgets/histogram/histogram.tscn", "res://material_maker/widgets/image_picker_button/image_picker_button.gd", "res://material_maker/widgets/image_picker_button/image_picker_button.tscn", "res://material_maker/widgets/linked_widgets/editable_label.gd", "res://material_maker/widgets/linked_widgets/editable_label.tscn", "res://material_maker/widgets/linked_widgets/link.gd", "res://material_maker/widgets/polygon_edit/control_point.gd", "res://material_maker/widgets/polygon_edit/control_point.tscn", "res://material_maker/widgets/polygon_edit/polygon_dialog.gd", "res://material_maker/widgets/polygon_edit/polygon_dialog.tscn", "res://material_maker/widgets/polygon_edit/polygon_edit.gd", "res://material_maker/widgets/polygon_edit/polygon_edit.tscn", "res://material_maker/widgets/polygon_edit/polygon_editor.gd", "res://material_maker/widgets/polygon_edit/polygon_editor.tscn", "res://material_maker/widgets/polygon_edit/polygon_view.gd", "res://material_maker/widgets/polygon_edit/polygon_view.tscn", "res://material_maker/widgets/port_group_button/port_group_button.gd", "res://material_maker/widgets/port_group_button/port_group_button.tscn", "res://material_maker/widgets/render_counter/render_counter.gd", "res://material_maker/widgets/render_counter/render_counter.tscn", "res://material_maker/widgets/size_option_button/size_option_button.gd", "res://material_maker/widgets/tabs/tabs.gd", "res://material_maker/windows/about/about.gd", "res://material_maker/windows/about/about.tscn", "res://material_maker/windows/about/discord.png", "res://material_maker/windows/about/epic_megagrant.svg", "res://material_maker/windows/about/facebook.png", "res://material_maker/windows/about/github.png", "res://material_maker/windows/about/icon.png", "res://material_maker/windows/about/itchio.png", "res://material_maker/windows/about/patreon.png", "res://material_maker/windows/about/twitter.png", "res://material_maker/windows/about/youtube.png", "res://material_maker/windows/accept_dialog/accept_dialog.gd", "res://material_maker/windows/accept_dialog/accept_dialog.tscn", "res://material_maker/windows/add_node_popup/add_node_popup.gd", "res://material_maker/windows/add_node_popup/add_node_popup.tscn", "res://material_maker/windows/add_node_popup/quick_button.gd", "res://material_maker/windows/add_node_popup/quick_button.tscn", "res://material_maker/windows/desc_dialog/desc_dialog.gd", "res://material_maker/windows/desc_dialog/desc_dialog.tscn", "res://material_maker/windows/environment_editor/environment_editor.gd", "res://material_maker/windows/environment_editor/environment_editor.tscn", "res://material_maker/windows/environment_editor/environment_editor_scene.tscn", "res://material_maker/windows/environment_editor/environment_editor_viewport.tscn", "res://material_maker/windows/environment_editor/new_environment.png", "res://material_maker/windows/export_animation/export_animation.gd", "res://material_maker/windows/export_animation/export_animation.tscn", "res://material_maker/windows/file_dialog/fav_button.tscn", "res://material_maker/windows/file_dialog/file_dialog.gd", "res://material_maker/windows/file_dialog/file_dialog.tscn", "res://material_maker/windows/file_dialog/left_panel.gd", "res://material_maker/windows/file_dialog/left_panel.tscn", "res://material_maker/windows/line_dialog/line_dialog.gd", "res://material_maker/windows/line_dialog/line_dialog.tscn", "res://material_maker/windows/load_from_website/load_from_website.gd", "res://material_maker/windows/load_from_website/load_from_website.tscn", "res://material_maker/windows/material_editor/export_editor.gd", "res://material_maker/windows/material_editor/export_editor.tscn", "res://material_maker/windows/material_editor/expression_line_edit.gd", "res://material_maker/windows/material_editor/expression_line_edit.tscn", "res://material_maker/windows/material_editor/material_editor.gd", "res://material_maker/windows/material_editor/material_editor.tscn", "res://material_maker/windows/new_painter/new_painter.gd", "res://material_maker/windows/new_painter/new_painter.tscn", "res://material_maker/windows/node_editor/enum_editor.gd", "res://material_maker/windows/node_editor/enum_editor.tscn", "res://material_maker/windows/node_editor/input.gd", "res://material_maker/windows/node_editor/input.tscn", "res://material_maker/windows/node_editor/node_editor.gd", "res://material_maker/windows/node_editor/node_editor.tscn", "res://material_maker/windows/node_editor/node_editor_item_list.gd", "res://material_maker/windows/node_editor/output.gd", "res://material_maker/windows/node_editor/output.tscn", "res://material_maker/windows/node_editor/parameter.gd", "res://material_maker/windows/node_editor/parameter.tscn", "res://material_maker/windows/node_editor/parameter_boolean.gd", "res://material_maker/windows/node_editor/parameter_boolean.tscn", "res://material_maker/windows/node_editor/parameter_color.gd", "res://material_maker/windows/node_editor/parameter_color.tscn", "res://material_maker/windows/node_editor/parameter_curve.gd", "res://material_maker/windows/node_editor/parameter_curve.tscn", "res://material_maker/windows/node_editor/parameter_enum.gd", "res://material_maker/windows/node_editor/parameter_enum.tscn", "res://material_maker/windows/node_editor/parameter_float.gd", "res://material_maker/windows/node_editor/parameter_float.tscn", "res://material_maker/windows/node_editor/parameter_gradient.gd", "res://material_maker/windows/node_editor/parameter_gradient.tscn", "res://material_maker/windows/node_editor/parameter_polygon.gd", "res://material_maker/windows/node_editor/parameter_polygon.tscn", "res://material_maker/windows/node_editor/parameter_polyline.tscn", "res://material_maker/windows/node_editor/parameter_size.gd", "res://material_maker/windows/node_editor/parameter_size.tscn", "res://material_maker/windows/preferences/bool_option.gd", "res://material_maker/windows/preferences/bool_option.tscn", "res://material_maker/windows/preferences/float_option.gd", "res://material_maker/windows/preferences/float_option.tscn", "res://material_maker/windows/preferences/lang_option.gd", "res://material_maker/windows/preferences/language_download.gd", "res://material_maker/windows/preferences/language_download.tscn", "res://material_maker/windows/preferences/preferences.gd", "res://material_maker/windows/preferences/preferences.tscn", "res://material_maker/windows/progress_window/progress_window.gd", "res://material_maker/windows/progress_window/progress_window.tscn", "res://material_maker/windows/sdf_builder/gizmo.gd", "res://material_maker/windows/sdf_builder/gizmo.tscn", "res://material_maker/windows/sdf_builder/gizmo_arrow.gd", "res://material_maker/windows/sdf_builder/gizmo_arrow.tscn", "res://material_maker/windows/sdf_builder/preview_2d.gd", "res://material_maker/windows/sdf_builder/preview_2d.tscn", "res://material_maker/windows/sdf_builder/preview_3d.gd", "res://material_maker/windows/sdf_builder/preview_3d.tscn", "res://material_maker/windows/sdf_builder/sdf_builder.gd", "res://material_maker/windows/sdf_builder/sdf_builder.tscn", "res://material_maker/windows/sdf_builder/sdf_builder_tree.gd", "res://start.gd", "res://start.tscn", "res://material_maker/icons/icons.gd", "res://material_maker/windows/sdf_builder/gizmo.gdshader", "res://material_maker/windows/sdf_builder/preview_2d.gdshader", "res://material_maker/windows/sdf_builder/preview_3d.gdshader", "res://material_maker/panel_container.gd", "res://material_maker/main_window_projects_panel.gd", "res://addons/material_maker/shader_functions.tres", "res://addons/material_maker/engine/text_resource.gd", "res://splash_screen/rodz_labs_logo.png", "res://addons/material_maker/engine/shader_material.gd", "res://splash_screen/splash_screen.gd", "res://splash_screen/splash_screen.gdshader", "res://splash_screen/splash_screen.tscn", "res://splash_screen/splash_title.png", "res://splash_screen/arrow.png", "res://addons/material_maker/engine/shader_compute.gd", "res://addons/material_maker/engine/shader_base.gd", "res://splash_screen/splash_screen_bottom.gdshader", "res://material_maker/widgets/code_editor/code_editor.gd", "res://material_maker/widgets/code_editor/code_editor.tscn", "res://material_maker/panels/preview_2d/custom_size_dialog.gd", "res://material_maker/panels/preview_2d/custom_size_dialog.tscn", "res://material_maker/theme/green.tres", "res://material_maker/theme/birch.tres", "res://material_maker/theme/mangosteen.tres", "res://addons/material_maker/engine/pipeline/compute_shader.gd", "res://addons/material_maker/engine/pipeline/pipeline.gd", "res://addons/material_maker/engine/nodes/gen_base.gd", "res://addons/material_maker/engine/nodes/gen_brush.gd", "res://addons/material_maker/engine/nodes/gen_buffer.gd", "res://addons/material_maker/engine/nodes/gen_comment.gd", "res://addons/material_maker/engine/nodes/gen_context.gd", "res://addons/material_maker/engine/nodes/gen_debug.gd", "res://addons/material_maker/engine/nodes/gen_export.gd", "res://addons/material_maker/engine/nodes/gen_graph.gd", "res://addons/material_maker/engine/nodes/gen_image.gd", "res://addons/material_maker/engine/nodes/gen_ios.gd", "res://addons/material_maker/engine/nodes/gen_iterate_buffer.gd", "res://addons/material_maker/engine/nodes/gen_material.gd", "res://addons/material_maker/engine/nodes/gen_remote.gd", "res://addons/material_maker/engine/nodes/gen_reroute.gd", "res://addons/material_maker/engine/nodes/gen_sdf.gd", "res://addons/material_maker/engine/nodes/gen_shader.gd", "res://addons/material_maker/engine/nodes/gen_switch.gd", "res://addons/material_maker/engine/nodes/gen_text.gd", "res://addons/material_maker/engine/nodes/gen_texture.gd", "res://addons/material_maker/engine/pipeline/rendering_pipeline.gd", "res://material_maker/nodes/node_button.tscn", "res://material_maker/nodes/node_button.gd", "res://material_maker/icons/close.tres", "res://parse_args.tscn", "res://parse_args.gd", "res://splash_screen/backgrounds/oneiric_worlds_zefyr.png", "res://addons/material_maker/engine/pipeline/texture.gd", "res://splash_screen/backgrounds/angel_soft_nurball.png", "res://splash_screen/backgrounds/angel_beanbag_chair.png", "res://splash_screen/backgrounds/paulo_falcao_green_thing.png", "res://material_maker/windows/export_taa/export_taa.tscn", "res://material_maker/windows/export_taa/export_taa.gd", "res://material_maker/windows/export_taa/divide_compute.tres", "res://material_maker/windows/export_taa/accumulate_compute.tres", "res://addons/material_maker/engine/nodes/iterate_buffer_compute.tres", "res://addons/material_maker/engine/nodes/buffer_compute.tres", "res://splash_screen/backgrounds/pixelmuncher_golden_tiles.png", "res://splash_screen/backgrounds/cgmytro_old_doors.png", "res://splash_screen/backgrounds/cybereality_brutalism.png", "res://splash_screen/backgrounds/cybereality_dirty_tiles.png", "res://splash_screen/backgrounds/cybereality_future_visions.png", "res://splash_screen/backgrounds/droppedbeat_matrix_rain.tres", "res://splash_screen/backgrounds/droppedbeat_procedural_material.png", "res://splash_screen/backgrounds/droppedbeat_spiral_trails.tres", "res://splash_screen/backgrounds/droppedbeat_vending_machines.png", "res://splash_screen/backgrounds/paulo_falcao_fractal_octahedron.tres", "res://splash_screen/backgrounds/paulo_falcao_terminator_ball.tres", "res://splash_screen/backgrounds/pavel_oliva_carved_wood.png", "res://splash_screen/backgrounds/pavel_oliva_celestial_floor.png", "res://splash_screen/backgrounds/pavel_oliva_cursed_planks.png", "res://splash_screen/backgrounds/pavel_oliva_flowing_lava.png", "res://splash_screen/backgrounds/pavel_oliva_lace.png", "res://splash_screen/backgrounds/pavel_oliva_pavement_generator.png", "res://splash_screen/backgrounds/pavel_oliva_stylized_pavement.png", "res://splash_screen/backgrounds/pavel_oliva_treasures.png", "res://splash_screen/backgrounds/pavel_oliva_vintage_luggage.png", "res://addons/material_maker/map_generator/ao_fragment.tres", "res://addons/material_maker/map_generator/ao_vertex.tres", "res://addons/material_maker/map_generator/bvh_generator.gd", "res://addons/material_maker/map_generator/common_fragment.tres", "res://addons/material_maker/map_generator/curvature_generator.gd", "res://addons/material_maker/map_generator/curvature_vertex.tres", "res://addons/material_maker/map_generator/denoise_compute.tres", "res://addons/material_maker/map_generator/dilate_1_compute.tres", "res://addons/material_maker/map_generator/dilate_2_compute.tres", "res://addons/material_maker/map_generator/map_generator.gd", "res://addons/material_maker/map_generator/mesh_rendering_pipeline.gd", "res://addons/material_maker/map_generator/normalize_compute.tres", "res://addons/material_maker/map_generator/normal_fragment.tres", "res://addons/material_maker/map_generator/normal_vertex.tres", "res://addons/material_maker/map_generator/position_vertex.tres", "res://addons/material_maker/map_generator/seams_1_compute.tres", "res://addons/material_maker/map_generator/seams_2_compute.tres", "res://addons/material_maker/map_generator/tangent_vertex.tres", "res://addons/material_maker/engine/nodes/gen_meshmap.gd", "res://material_maker/projects_panel.tscn", "res://addons/flexible_layout/arrow.svg", "res://addons/flexible_layout/flexible_dragger.gd", "res://addons/flexible_layout/flexible_dragger.tscn", "res://addons/flexible_layout/flexible_layout.gd", "res://addons/flexible_layout/flexible_layout.tscn", "res://addons/flexible_layout/flexible_overlay.gd", "res://addons/flexible_layout/flexible_overlay.tscn", "res://addons/flexible_layout/flexible_tab.gd", "res://addons/flexible_layout/flexible_tab.tscn", "res://addons/flexible_layout/flexible_tabs.gd", "res://addons/flexible_layout/flexible_tabs.tscn", "res://addons/flexible_layout/tab.svg", "res://addons/material_maker/engine/nodes/gen_webcam.gd", "res://addons/material_maker/loaders/mesh_loader.gd", "res://addons/material_maker/loaders/obj_loader.gd", "res://material_maker/tools/painter/shaders/paint_shader_template.tres", "res://material_maker/tools/painter/shaders/t2v_fragment.tres", "res://material_maker/tools/painter/shaders/t2v_vertex.tres", "res://material_maker/tools/painter/shaders/v2t_fragment.tres", "res://material_maker/tools/painter/shaders/v2t_vertex.tres", "res://material_maker/tools/painter/shaders/brush.gdshader", "res://material_maker/tools/painter/shaders/brush_common_decl.gdshader", "res://material_maker/tools/painter/shaders/brush_pattern.gdshader", "res://material_maker/tools/painter/shaders/brush_stamp.gdshader", "res://material_maker/tools/painter/shaders/brush_uv_pattern.gdshader", "res://addons/material_maker/types/splines.gd", "res://material_maker/widgets/splines_edit/splines_dialog.gd", "res://material_maker/widgets/splines_edit/splines_dialog.tscn", "res://material_maker/widgets/splines_edit/splines_edit.gd", "res://material_maker/widgets/splines_edit/splines_edit.tscn", "res://material_maker/widgets/splines_edit/splines_editor.gd", "res://material_maker/widgets/splines_edit/splines_editor.tscn", "res://material_maker/widgets/splines_edit/splines_view.gd", "res://material_maker/widgets/splines_edit/splines_view.tscn", "res://addons/flexible_layout/undock.png", "res://addons/material_maker/engine/shader_error_handler.gd", "res://addons/material_maker/types/pixels.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.tscn", "res://material_maker/widgets/pixels_edit/pixels_edit.gd", "res://material_maker/widgets/pixels_edit/pixels_edit.tscn", "res://material_maker/widgets/pixels_edit/pixels_editor.gd", "res://material_maker/widgets/pixels_edit/pixels_editor.tscn", "res://material_maker/widgets/pixels_edit/pixels_view.gd", "res://material_maker/widgets/pixels_edit/pixels_view.tscn", "res://material_maker/windows/node_editor/parameter_pixels.gd", "res://material_maker/windows/node_editor/parameter_pixels.tscn", "res://material_maker/windows/node_editor/parameter_splines.gd", "res://material_maker/windows/node_editor/parameter_splines.tscn", "res://material_maker/widgets/gradient_editor/gradient_edit.gd", "res://material_maker/widgets/gradient_editor/gradient_edit.tscn", "res://material_maker/widgets/gradient_editor/gradient_edit_cursor.gd", "res://material_maker/widgets/gradient_editor/gradient_edit_cursor.tscn") include_filter="*.tmpl" exclude_filter="*.ptex,*.mmn,*.mmg" export_path="../material_maker.x86_64" @@ -122,7 +122,7 @@ advanced_options=false dedicated_server=false custom_features="" export_filter="resources" -export_files=PackedStringArray("res://addons/material_maker/engine/dependencies.gd", "res://addons/material_maker/engine/io_types.gd", "res://addons/material_maker/engine/loader.gd", "res://addons/material_maker/engine/multi_renderer.gd", "res://addons/material_maker/engine/paths.gd", "res://addons/material_maker/engine/preprocessor.gd", "res://addons/material_maker/engine/renderer.gd", "res://addons/material_maker/engine/renderer.tscn", "res://addons/material_maker/parser/glsl_parser.gd", "res://addons/material_maker/parser/glsl_parser_base.gd", "res://addons/material_maker/parser/parser_base.gd", "res://addons/material_maker/sdf_builder/base.gd", "res://addons/material_maker/sdf_builder/icons/icons.svg", "res://addons/material_maker/sdf_builder/sdf2d/annular.gd", "res://addons/material_maker/sdf_builder/sdf2d/bend.gd", "res://addons/material_maker/sdf_builder/sdf2d/box.gd", "res://addons/material_maker/sdf_builder/sdf2d/circle.gd", "res://addons/material_maker/sdf_builder/sdf2d/color.gd", "res://addons/material_maker/sdf_builder/sdf2d/difference.gd", "res://addons/material_maker/sdf_builder/sdf2d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf2d/flip.gd", "res://addons/material_maker/sdf_builder/sdf2d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf2d/line.gd", "res://addons/material_maker/sdf_builder/sdf2d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf2d/morph.gd", "res://addons/material_maker/sdf_builder/sdf2d/ngon.gd", "res://addons/material_maker/sdf_builder/sdf2d/polygon.gd", "res://addons/material_maker/sdf_builder/sdf2d/round.gd", "res://addons/material_maker/sdf_builder/sdf2d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf2d/stairs.gd", "res://addons/material_maker/sdf_builder/sdf2d/star.gd", "res://addons/material_maker/sdf_builder/sdf2d/union.gd", "res://addons/material_maker/sdf_builder/sdf3d/annular.gd", "res://addons/material_maker/sdf_builder/sdf3d/bend.gd", "res://addons/material_maker/sdf_builder/sdf3d/box.gd", "res://addons/material_maker/sdf_builder/sdf3d/color.gd", "res://addons/material_maker/sdf_builder/sdf3d/cylinder.gd", "res://addons/material_maker/sdf_builder/sdf3d/difference.gd", "res://addons/material_maker/sdf_builder/sdf3d/distort.gd", "res://addons/material_maker/sdf_builder/sdf3d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf3d/extrusion.gd", "res://addons/material_maker/sdf_builder/sdf3d/flip.gd", "res://addons/material_maker/sdf_builder/sdf3d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf3d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf3d/morph.gd", "res://addons/material_maker/sdf_builder/sdf3d/revolution.gd", "res://addons/material_maker/sdf_builder/sdf3d/round.gd", "res://addons/material_maker/sdf_builder/sdf3d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf3d/sphere.gd", "res://addons/material_maker/sdf_builder/sdf3d/torus.gd", "res://addons/material_maker/sdf_builder/sdf3d/twist.gd", "res://addons/material_maker/sdf_builder/sdf3d/union.gd", "res://addons/material_maker/sdf_builder/sdf_builder.gd", "res://addons/material_maker/sdf_builder/sdf_builder.tscn", "res://addons/material_maker/sdf_builder/tex/blend.gd", "res://addons/material_maker/sdf_builder/tex/brightness_contrast.gd", "res://addons/material_maker/sdf_builder/tex/deform.gd", "res://addons/material_maker/sdf_builder/tex/fbm.gd", "res://addons/material_maker/sdf_builder/tex/pattern.gd", "res://addons/material_maker/sdf_builder/tex/simple_gradient.gd", "res://addons/material_maker/sdf_builder/tex/step.gd", "res://addons/material_maker/sdf_builder/tex/uniform.gd", "res://addons/material_maker/sdf_builder/tex/uniform_gs.gd", "res://addons/material_maker/types/curve.gd", "res://addons/material_maker/types/gradient.gd", "res://addons/material_maker/types/polygon.gd", "res://addons/material_maker/types/types.gd", "res://default_env.tres", "res://icon.png", "res://material_maker/darken.gd", "res://material_maker/darken.tscn", "res://material_maker/fonts/DroidSansFallback.ttf", "res://material_maker/fonts/DroidSansJapanese.ttf", "res://material_maker/fonts/hack.ttf", "res://material_maker/fonts/vegur_regular.otf", "res://material_maker/globals.gd", "res://material_maker/globals.tscn", "res://material_maker/globals_menu_manager.gd", "res://material_maker/icons/add.tres", "res://material_maker/icons/add_generic.tres", "res://material_maker/icons/buffer.tres", "res://material_maker/icons/buffer_paused.tres", "res://material_maker/icons/color_palette.png", "res://material_maker/icons/color_picker.png", "res://material_maker/icons/custom.png", "res://material_maker/icons/down.tres", "res://material_maker/icons/edit.tres", "res://material_maker/icons/eye_closed.tres", "res://material_maker/icons/eye_open.tres", "res://material_maker/icons/godot_logo.svg", "res://material_maker/icons/icons.svg", "res://material_maker/icons/icons.tres", "res://material_maker/icons/link.tres", "res://material_maker/icons/lmb.tres", "res://material_maker/icons/minimize.tres", "res://material_maker/icons/mmb.tres", "res://material_maker/icons/ok.tres", "res://material_maker/icons/output_preview.tres", "res://material_maker/icons/paste_graph.tres", "res://material_maker/icons/paste_newgraph.tres", "res://material_maker/icons/paste_none.tres", "res://material_maker/icons/paste_palette.tres", "res://material_maker/icons/port_group_0.tres", "res://material_maker/icons/port_group_1.tres", "res://material_maker/icons/port_group_2.tres", "res://material_maker/icons/port_group_3.tres", "res://material_maker/icons/preview.png", "res://material_maker/icons/preview_locked.png", "res://material_maker/icons/randomness_locked.tres", "res://material_maker/icons/randomness_unlocked.tres", "res://material_maker/icons/remove.tres", "res://material_maker/icons/rmb.tres", "res://material_maker/icons/up.tres", "res://material_maker/locale/locale.gd", "res://material_maker/main_window.gd", "res://material_maker/main_window.tscn", "res://material_maker/main_window_layout.gd", "res://material_maker/meshes/suzanne.obj", "res://material_maker/node_factory.gd", "res://material_maker/nodes/base.gd", "res://material_maker/nodes/comment/comment.gd", "res://material_maker/nodes/comment/comment.tscn", "res://material_maker/nodes/comment/palette_button.gd", "res://material_maker/nodes/debug/debug.gd", "res://material_maker/nodes/debug/debug.tscn", "res://material_maker/nodes/debug/debug_popup.gd", "res://material_maker/nodes/debug/debug_popup.tscn", "res://material_maker/nodes/edit_buttons.gd", "res://material_maker/nodes/edit_buttons.tscn", "res://material_maker/nodes/generic/generic.gd", "res://material_maker/nodes/generic/generic.tscn", "res://material_maker/nodes/ios/add.tscn", "res://material_maker/nodes/ios/ios.gd", "res://material_maker/nodes/ios/ios.tscn", "res://material_maker/nodes/ios/port.gd", "res://material_maker/nodes/ios/port.tscn", "res://material_maker/nodes/material_export/material_export.gd", "res://material_maker/nodes/material_export/material_export.tscn", "res://material_maker/nodes/minimal.gd", "res://material_maker/nodes/remote/named_parameter_dialog.gd", "res://material_maker/nodes/remote/named_parameter_dialog.tscn", "res://material_maker/nodes/remote/remote.gd", "res://material_maker/nodes/remote/remote.tscn", "res://material_maker/nodes/reroute/reroute.gd", "res://material_maker/nodes/reroute/reroute.tscn", "res://material_maker/nodes/switch/switch.gd", "res://material_maker/nodes/switch/switch.tscn", "res://material_maker/nodes/tones/tones.gd", "res://material_maker/nodes/tones/tones.tscn", "res://material_maker/panels/brushes/brushes.gd", "res://material_maker/panels/brushes/brushes.tscn", "res://material_maker/panels/graph_edit/graph_edit.gd", "res://material_maker/panels/graph_edit/graph_edit.tscn", "res://material_maker/panels/hierarchy/hierarchy_panel.gd", "res://material_maker/panels/hierarchy/hierarchy_panel.tscn", "res://material_maker/panels/layers/add_layer_menu.tscn", "res://material_maker/panels/layers/icons/layer_mask.tres", "res://material_maker/panels/layers/icons/layer_paint.tres", "res://material_maker/panels/layers/icons/layer_proc.tres", "res://material_maker/panels/layers/icons/not_visible.tres", "res://material_maker/panels/layers/icons/visible.tres", "res://material_maker/panels/layers/layer_config_popup.gd", "res://material_maker/panels/layers/layer_config_popup.tscn", "res://material_maker/panels/layers/layer_tooltip.gd", "res://material_maker/panels/layers/layer_tooltip.tscn", "res://material_maker/panels/layers/layer_tooltip_thumbnail.gd", "res://material_maker/panels/layers/layer_tooltip_thumbnail.tscn", "res://material_maker/panels/layers/layers.gd", "res://material_maker/panels/layers/layers.tscn", "res://material_maker/panels/layers/layers_tree.gd", "res://material_maker/panels/library/button_greyed.tres", "res://material_maker/panels/library/create_lib_dialog.gd", "res://material_maker/panels/library/create_lib_dialog.tscn", "res://material_maker/panels/library/library.gd", "res://material_maker/panels/library/library.tscn", "res://material_maker/panels/library/library_tree.gd", "res://material_maker/panels/paint/export.gd", "res://material_maker/panels/paint/export.tscn", "res://material_maker/panels/paint/layer_types/layer.gd", "res://material_maker/panels/paint/layer_types/layer_mask.gd", "res://material_maker/panels/paint/layer_types/layer_paint.gd", "res://material_maker/panels/paint/layer_types/layer_procedural.gd", "res://material_maker/panels/paint/paint.gd", "res://material_maker/panels/paint/paint.tscn", "res://material_maker/panels/paint/paint_layers.gd", "res://material_maker/panels/paint/paint_layers.tscn", "res://material_maker/panels/paint/paint_project_settings.gd", "res://material_maker/panels/paint/paint_project_settings.tscn", "res://material_maker/panels/paint/collapse_button.tscn", "res://material_maker/panels/paint/collapse_button.gd", "res://material_maker/panels/parameters/parameters.gd", "res://material_maker/panels/parameters/parameters.tscn", "res://material_maker/panels/preview_2d/control_point.gd", "res://material_maker/panels/preview_2d/control_point.tscn", "res://material_maker/panels/preview_2d/lines.gd", "res://material_maker/panels/preview_2d/preview_2d.gd", "res://material_maker/panels/preview_2d/preview_2d.tscn", "res://material_maker/panels/preview_2d/preview_2d_node.gd", "res://material_maker/panels/preview_2d/preview_2d_node.tscn", "res://material_maker/panels/preview_2d/preview_2d_panel.gd", "res://material_maker/panels/preview_2d/preview_2d_panel.tscn", "res://material_maker/panels/preview_3d/materials/shader_material_tesselated.tres", "res://material_maker/panels/preview_3d/materials/spatial_material.tres", "res://material_maker/panels/preview_3d/mesh_config_popup.gd", "res://material_maker/panels/preview_3d/mesh_config_popup.tscn", "res://material_maker/panels/preview_3d/preview_3d.gd", "res://material_maker/panels/preview_3d/preview_3d.tscn", "res://material_maker/panels/preview_3d/preview_3d_panel.gd", "res://material_maker/panels/preview_3d/preview_3d_panel.tscn", "res://material_maker/panels/preview_3d/preview_3d_scene.tscn", "res://material_maker/panels/preview_3d/preview_3d_ui.gd", "res://material_maker/panels/preview_3d/preview_3d_ui.tscn", "res://material_maker/panels/preview_3d/preview_light.gd", "res://material_maker/panels/preview_3d/preview_light.tscn", "res://material_maker/panels/preview_3d/preview_mesh.gd", "res://material_maker/panels/preview_3d/preview_objects.tscn", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cube.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Custom.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cylinder.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Plane.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Prism.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Sphere.png", "res://material_maker/panels/reference/color_slot.gd", "res://material_maker/panels/reference/color_slot.tscn", "res://material_maker/panels/reference/gradient_slot.gd", "res://material_maker/panels/reference/gradient_slot.tscn", "res://material_maker/panels/reference/reference_panel.gd", "res://material_maker/panels/reference/reference_panel.tscn", "res://material_maker/theme/dark.tres", "res://material_maker/theme/dark/checkbox_checked.png", "res://material_maker/theme/dark/checkbox_radio_checked.png", "res://material_maker/theme/dark/checkbox_radio_unchecked.png", "res://material_maker/theme/dark/checkbox_unchecked.png", "res://material_maker/theme/dark/checkbutton_off.png", "res://material_maker/theme/dark/checkbutton_off_disabled.png", "res://material_maker/theme/dark/checkbutton_on.png", "res://material_maker/theme/dark/checkbutton_on_disabled.png", "res://material_maker/theme/dark/colorpickerbutton_bg.png", "res://material_maker/theme/dark/curve_preset_bevel.tres", "res://material_maker/theme/dark/curve_preset_bounce.tres", "res://material_maker/theme/dark/curve_preset_easein.tres", "res://material_maker/theme/dark/curve_preset_easeinout.tres", "res://material_maker/theme/dark/curve_preset_easeout.tres", "res://material_maker/theme/dark/curve_preset_linear.tres", "res://material_maker/theme/dark/curve_preset_sawtooth.tres", "res://material_maker/theme/dark/curve_presets.svg", "res://material_maker/theme/dark/graphedit_minus.png", "res://material_maker/theme/dark/graphedit_more.png", "res://material_maker/theme/dark/graphedit_reset.png", "res://material_maker/theme/dark/graphedit_snap.png", "res://material_maker/theme/dark/graphnode_close.png", "res://material_maker/theme/dark/graphnode_port.png", "res://material_maker/theme/dark/graphnode_resizer.png", "res://material_maker/theme/dark/hslider_grabber.png", "res://material_maker/theme/dark/hslider_grabber_disabled.png", "res://material_maker/theme/dark/hslider_grabber_highlight.png", "res://material_maker/theme/dark/hslider_tick.png", "res://material_maker/theme/dark/hsplitcontainer_grabber.png", "res://material_maker/theme/dark/lineedit_clear.png", "res://material_maker/theme/dark/optionbutton_arrow.png", "res://material_maker/theme/dark/popupmenu_checked.png", "res://material_maker/theme/dark/popupmenu_radio_checked.png", "res://material_maker/theme/dark/popupmenu_radio_unchecked.png", "res://material_maker/theme/dark/popupmenu_submenu.png", "res://material_maker/theme/dark/popupmenu_unchecked.png", "res://material_maker/theme/dark/popupmenu_visibility_hidden.png", "res://material_maker/theme/dark/popupmenu_visibility_visible.png", "res://material_maker/theme/dark/popupmenu_visibility_xray.png", "res://material_maker/theme/dark/sb_checkbox_focus_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_hslider_focus_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/sb_panel_panelf_texture.png", "res://material_maker/theme/dark/sb_panel_panelnc_texture.png", "res://material_maker/theme/dark/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/dark/sb_progressbar_bg_texture.png", "res://material_maker/theme/dark/sb_progressbar_fg_texture.png", "res://material_maker/theme/dark/sb_textedit_completion_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/tabcontainer_decrement.png", "res://material_maker/theme/dark/tabcontainer_decrement_highlight.png", "res://material_maker/theme/dark/tabcontainer_increment.png", "res://material_maker/theme/dark/tabcontainer_increment_highlight.png", "res://material_maker/theme/dark/tabcontainer_menu.png", "res://material_maker/theme/dark/tabcontainer_menu_highlight.png", "res://material_maker/theme/dark/tabs_close.png", "res://material_maker/theme/dark/tabs_decrement.png", "res://material_maker/theme/dark/tabs_decrement_highlight.png", "res://material_maker/theme/dark/tabs_increment.png", "res://material_maker/theme/dark/tabs_increment_highlight.png", "res://material_maker/theme/dark/textedit_fold.png", "res://material_maker/theme/dark/textedit_folded.png", "res://material_maker/theme/dark/textedit_space.png", "res://material_maker/theme/dark/textedit_tab.png", "res://material_maker/theme/dark/tree_arrow.png", "res://material_maker/theme/dark/tree_arrow_collapsed.png", "res://material_maker/theme/dark/tree_checked.png", "res://material_maker/theme/dark/tree_select_arrow.png", "res://material_maker/theme/dark/tree_unchecked.png", "res://material_maker/theme/dark/tree_updown.png", "res://material_maker/theme/dark/vslider_grabber.png", "res://material_maker/theme/dark/vslider_grabber_highlight.png", "res://material_maker/theme/dark/vsplitcontainer_grabber.png", "res://material_maker/theme/dark/windowdialog_close.png", "res://material_maker/theme/dark/windowdialog_close_highlight.png", "res://material_maker/theme/default.tres", "res://material_maker/theme/font.tres", "res://material_maker/theme/light.tres", "res://material_maker/theme/light/checkbox_checked.png", "res://material_maker/theme/light/checkbox_radio_checked.png", "res://material_maker/theme/light/checkbox_radio_unchecked.png", "res://material_maker/theme/light/checkbox_unchecked.png", "res://material_maker/theme/light/checkbutton_off.png", "res://material_maker/theme/light/checkbutton_off_disabled.png", "res://material_maker/theme/light/checkbutton_on.png", "res://material_maker/theme/light/checkbutton_on_disabled.png", "res://material_maker/theme/light/colorpickerbutton_bg.png", "res://material_maker/theme/light/curve_preset_bevel.tres", "res://material_maker/theme/light/curve_preset_bounce.tres", "res://material_maker/theme/light/curve_preset_easein.tres", "res://material_maker/theme/light/curve_preset_easeinout.tres", "res://material_maker/theme/light/curve_preset_easeout.tres", "res://material_maker/theme/light/curve_preset_linear.tres", "res://material_maker/theme/light/curve_preset_sawtooth.tres", "res://material_maker/theme/light/curve_presets.svg", "res://material_maker/theme/light/graphedit_minus.png", "res://material_maker/theme/light/graphedit_more.png", "res://material_maker/theme/light/graphedit_reset.png", "res://material_maker/theme/light/graphedit_snap.png", "res://material_maker/theme/light/graphnode_close.png", "res://material_maker/theme/light/graphnode_port.png", "res://material_maker/theme/light/graphnode_resizer.png", "res://material_maker/theme/light/hslider_grabber.png", "res://material_maker/theme/light/hslider_grabber_disabled.png", "res://material_maker/theme/light/hslider_grabber_highlight.png", "res://material_maker/theme/light/hslider_tick.png", "res://material_maker/theme/light/hsplitcontainer_grabber.png", "res://material_maker/theme/light/lineedit_clear.png", "res://material_maker/theme/light/optionbutton_arrow.png", "res://material_maker/theme/light/popupmenu_checked.png", "res://material_maker/theme/light/popupmenu_radio_checked.png", "res://material_maker/theme/light/popupmenu_radio_unchecked.png", "res://material_maker/theme/light/popupmenu_submenu.png", "res://material_maker/theme/light/popupmenu_unchecked.png", "res://material_maker/theme/light/popupmenu_visibility_hidden.png", "res://material_maker/theme/light/popupmenu_visibility_visible.png", "res://material_maker/theme/light/popupmenu_visibility_xray.png", "res://material_maker/theme/light/sb_checkbox_focus_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_hslider_focus_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/light/sb_panel_panelf_texture.png", "res://material_maker/theme/light/sb_panel_panelnc_texture.png", "res://material_maker/theme/light/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/light/sb_progressbar_bg_texture.png", "res://material_maker/theme/light/sb_progressbar_fg_texture.png", "res://material_maker/theme/light/sb_textedit_completion_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/light/tabcontainer_decrement.png", "res://material_maker/theme/light/tabcontainer_decrement_highlight.png", "res://material_maker/theme/light/tabcontainer_increment.png", "res://material_maker/theme/light/tabcontainer_increment_highlight.png", "res://material_maker/theme/light/tabcontainer_menu.png", "res://material_maker/theme/light/tabcontainer_menu_highlight.png", "res://material_maker/theme/light/tabs_close.png", "res://material_maker/theme/light/tabs_decrement.png", "res://material_maker/theme/light/tabs_decrement_highlight.png", "res://material_maker/theme/light/tabs_increment.png", "res://material_maker/theme/light/tabs_increment_highlight.png", "res://material_maker/theme/light/textedit_fold.png", "res://material_maker/theme/light/textedit_folded.png", "res://material_maker/theme/light/textedit_space.png", "res://material_maker/theme/light/textedit_tab.png", "res://material_maker/theme/light/tree_arrow.png", "res://material_maker/theme/light/tree_arrow_collapsed.png", "res://material_maker/theme/light/tree_checked.png", "res://material_maker/theme/light/tree_select_arrow.png", "res://material_maker/theme/light/tree_unchecked.png", "res://material_maker/theme/light/tree_updown.png", "res://material_maker/theme/light/vslider_grabber.png", "res://material_maker/theme/light/vslider_grabber_highlight.png", "res://material_maker/theme/light/vsplitcontainer_grabber.png", "res://material_maker/theme/light/windowdialog_close.png", "res://material_maker/theme/light/windowdialog_close_highlight.png", "res://material_maker/tools/environment_manager/environment_manager.gd", "res://material_maker/tools/environment_manager/environment_manager.tscn", "res://material_maker/tools/library_manager/library.gd", "res://material_maker/tools/library_manager/library_manager.gd", "res://material_maker/tools/map_renderer/map_renderer.gd", "res://material_maker/tools/map_renderer/map_renderer.tscn", "res://material_maker/tools/painter/brush_preview.gd", "res://material_maker/tools/painter/brush_preview.tscn", "res://material_maker/tools/painter/painter.gd", "res://material_maker/tools/painter/painter.tscn", "res://material_maker/tools/painter/painter_viewport.gd", "res://material_maker/tools/painter/painter_viewport.tscn", "res://material_maker/tools/painter/shaders/init.tres", "res://material_maker/tools/painter/shaders/init_channels.tres", "res://material_maker/tools/painter/shaders/init_copy_shader.tres", "res://material_maker/tools/share/broken_link.tres", "res://material_maker/tools/share/golden_link.tres", "res://material_maker/tools/share/hdri/kloofendal_48d_partly_cloudy_1k.exr", "res://material_maker/tools/share/link.tres", "res://material_maker/tools/share/login_dialog.gd", "res://material_maker/tools/share/login_dialog.tscn", "res://material_maker/tools/share/preview_scene.tscn", "res://material_maker/tools/share/preview_scene_viewer.tscn", "res://material_maker/tools/share/preview_viewport.gd", "res://material_maker/tools/share/preview_viewport.tscn", "res://material_maker/tools/share/share_button.gd", "res://material_maker/tools/share/share_button.tscn", "res://material_maker/tools/share/share_http_request.gd", "res://material_maker/tools/share/share_node_dialog.gd", "res://material_maker/tools/share/share_node_dialog.tscn", "res://material_maker/tools/share/upload_dialog.gd", "res://material_maker/tools/share/upload_dialog.tscn", "res://material_maker/tools/undo_redo/undo_redo.gd", "res://material_maker/widgets/color_picker_button/color_picker_button.gd", "res://material_maker/widgets/color_picker_popup/color_picker_popup.tscn", "res://material_maker/widgets/curve_edit/control_point.gd", "res://material_maker/widgets/curve_edit/control_point.tscn", "res://material_maker/widgets/curve_edit/curve_dialog.gd", "res://material_maker/widgets/curve_edit/curve_dialog.tscn", "res://material_maker/widgets/curve_edit/curve_edit.gd", "res://material_maker/widgets/curve_edit/curve_edit.tscn", "res://material_maker/widgets/curve_edit/curve_editor.gd", "res://material_maker/widgets/curve_edit/curve_editor.tscn", "res://material_maker/widgets/curve_edit/curve_view.gd", "res://material_maker/widgets/curve_edit/curve_view.tscn", "res://material_maker/widgets/curve_edit/presets_selector.gd", "res://material_maker/widgets/curve_edit/slope_point.gd", "res://material_maker/widgets/desc_button/desc_button.gd", "res://material_maker/widgets/desc_button/desc_button.tscn", "res://material_maker/widgets/file_picker_button/file_picker_button.gd", "res://material_maker/widgets/file_picker_button/file_picker_button.tscn", "res://material_maker/widgets/float_edit/expression_editor.gd", "res://material_maker/widgets/float_edit/expression_editor.tscn", "res://material_maker/widgets/float_edit/float_edit.gd", "res://material_maker/widgets/float_edit/float_edit.tscn", "res://material_maker/widgets/gradient_editor/gradient_editor.gd", "res://material_maker/widgets/gradient_editor/gradient_editor.tscn", "res://material_maker/widgets/gradient_editor/gradient_popup.gd", "res://material_maker/widgets/gradient_editor/gradient_popup.tscn", "res://material_maker/widgets/graph_tree/graph_tree.gd", "res://material_maker/widgets/graph_tree/graph_tree.tscn", "res://material_maker/widgets/histogram/histogram.gd", "res://material_maker/widgets/histogram/histogram.tscn", "res://material_maker/widgets/image_picker_button/image_picker_button.gd", "res://material_maker/widgets/image_picker_button/image_picker_button.tscn", "res://material_maker/widgets/linked_widgets/editable_label.gd", "res://material_maker/widgets/linked_widgets/editable_label.tscn", "res://material_maker/widgets/linked_widgets/link.gd", "res://material_maker/widgets/polygon_edit/control_point.gd", "res://material_maker/widgets/polygon_edit/control_point.tscn", "res://material_maker/widgets/polygon_edit/polygon_dialog.gd", "res://material_maker/widgets/polygon_edit/polygon_dialog.tscn", "res://material_maker/widgets/polygon_edit/polygon_edit.gd", "res://material_maker/widgets/polygon_edit/polygon_edit.tscn", "res://material_maker/widgets/polygon_edit/polygon_editor.gd", "res://material_maker/widgets/polygon_edit/polygon_editor.tscn", "res://material_maker/widgets/polygon_edit/polygon_view.gd", "res://material_maker/widgets/polygon_edit/polygon_view.tscn", "res://material_maker/widgets/port_group_button/port_group_button.gd", "res://material_maker/widgets/port_group_button/port_group_button.tscn", "res://material_maker/widgets/render_counter/render_counter.gd", "res://material_maker/widgets/render_counter/render_counter.tscn", "res://material_maker/widgets/size_option_button/size_option_button.gd", "res://material_maker/widgets/tabs/tabs.gd", "res://material_maker/windows/about/about.gd", "res://material_maker/windows/about/about.tscn", "res://material_maker/windows/about/discord.png", "res://material_maker/windows/about/epic_megagrant.svg", "res://material_maker/windows/about/facebook.png", "res://material_maker/windows/about/github.png", "res://material_maker/windows/about/icon.png", "res://material_maker/windows/about/itchio.png", "res://material_maker/windows/about/patreon.png", "res://material_maker/windows/about/twitter.png", "res://material_maker/windows/about/youtube.png", "res://material_maker/windows/accept_dialog/accept_dialog.gd", "res://material_maker/windows/accept_dialog/accept_dialog.tscn", "res://material_maker/windows/add_node_popup/add_node_popup.gd", "res://material_maker/windows/add_node_popup/add_node_popup.tscn", "res://material_maker/windows/add_node_popup/quick_button.gd", "res://material_maker/windows/add_node_popup/quick_button.tscn", "res://material_maker/windows/desc_dialog/desc_dialog.gd", "res://material_maker/windows/desc_dialog/desc_dialog.tscn", "res://material_maker/windows/environment_editor/environment_editor.gd", "res://material_maker/windows/environment_editor/environment_editor.tscn", "res://material_maker/windows/environment_editor/environment_editor_scene.tscn", "res://material_maker/windows/environment_editor/environment_editor_viewport.tscn", "res://material_maker/windows/environment_editor/new_environment.png", "res://material_maker/windows/export_animation/export_animation.gd", "res://material_maker/windows/export_animation/export_animation.tscn", "res://material_maker/windows/file_dialog/fav_button.tscn", "res://material_maker/windows/file_dialog/file_dialog.gd", "res://material_maker/windows/file_dialog/file_dialog.tscn", "res://material_maker/windows/file_dialog/left_panel.gd", "res://material_maker/windows/file_dialog/left_panel.tscn", "res://material_maker/windows/line_dialog/line_dialog.gd", "res://material_maker/windows/line_dialog/line_dialog.tscn", "res://material_maker/windows/load_from_website/load_from_website.gd", "res://material_maker/windows/load_from_website/load_from_website.tscn", "res://material_maker/windows/material_editor/export_editor.gd", "res://material_maker/windows/material_editor/export_editor.tscn", "res://material_maker/windows/material_editor/expression_line_edit.gd", "res://material_maker/windows/material_editor/expression_line_edit.tscn", "res://material_maker/windows/material_editor/material_editor.gd", "res://material_maker/windows/material_editor/material_editor.tscn", "res://material_maker/windows/new_painter/new_painter.gd", "res://material_maker/windows/new_painter/new_painter.tscn", "res://material_maker/windows/node_editor/enum_editor.gd", "res://material_maker/windows/node_editor/enum_editor.tscn", "res://material_maker/windows/node_editor/input.gd", "res://material_maker/windows/node_editor/input.tscn", "res://material_maker/windows/node_editor/node_editor.gd", "res://material_maker/windows/node_editor/node_editor.tscn", "res://material_maker/windows/node_editor/node_editor_item_list.gd", "res://material_maker/windows/node_editor/output.gd", "res://material_maker/windows/node_editor/output.tscn", "res://material_maker/windows/node_editor/parameter.gd", "res://material_maker/windows/node_editor/parameter.tscn", "res://material_maker/windows/node_editor/parameter_boolean.gd", "res://material_maker/windows/node_editor/parameter_boolean.tscn", "res://material_maker/windows/node_editor/parameter_color.gd", "res://material_maker/windows/node_editor/parameter_color.tscn", "res://material_maker/windows/node_editor/parameter_curve.gd", "res://material_maker/windows/node_editor/parameter_curve.tscn", "res://material_maker/windows/node_editor/parameter_enum.gd", "res://material_maker/windows/node_editor/parameter_enum.tscn", "res://material_maker/windows/node_editor/parameter_float.gd", "res://material_maker/windows/node_editor/parameter_float.tscn", "res://material_maker/windows/node_editor/parameter_gradient.gd", "res://material_maker/windows/node_editor/parameter_gradient.tscn", "res://material_maker/windows/node_editor/parameter_polygon.gd", "res://material_maker/windows/node_editor/parameter_polygon.tscn", "res://material_maker/windows/node_editor/parameter_polyline.tscn", "res://material_maker/windows/node_editor/parameter_size.gd", "res://material_maker/windows/node_editor/parameter_size.tscn", "res://material_maker/windows/preferences/bool_option.gd", "res://material_maker/windows/preferences/bool_option.tscn", "res://material_maker/windows/preferences/float_option.gd", "res://material_maker/windows/preferences/float_option.tscn", "res://material_maker/windows/preferences/lang_option.gd", "res://material_maker/windows/preferences/language_download.gd", "res://material_maker/windows/preferences/language_download.tscn", "res://material_maker/windows/preferences/preferences.gd", "res://material_maker/windows/preferences/preferences.tscn", "res://material_maker/windows/progress_window/progress_window.gd", "res://material_maker/windows/progress_window/progress_window.tscn", "res://material_maker/windows/sdf_builder/gizmo.gd", "res://material_maker/windows/sdf_builder/gizmo.tscn", "res://material_maker/windows/sdf_builder/gizmo_arrow.gd", "res://material_maker/windows/sdf_builder/gizmo_arrow.tscn", "res://material_maker/windows/sdf_builder/preview_2d.gd", "res://material_maker/windows/sdf_builder/preview_2d.tscn", "res://material_maker/windows/sdf_builder/preview_3d.gd", "res://material_maker/windows/sdf_builder/preview_3d.tscn", "res://material_maker/windows/sdf_builder/sdf_builder.gd", "res://material_maker/windows/sdf_builder/sdf_builder.tscn", "res://material_maker/windows/sdf_builder/sdf_builder_tree.gd", "res://start.gd", "res://start.tscn", "res://material_maker/icons/icons.gd", "res://material_maker/windows/sdf_builder/gizmo.gdshader", "res://material_maker/windows/sdf_builder/preview_2d.gdshader", "res://material_maker/windows/sdf_builder/preview_3d.gdshader", "res://material_maker/panel_container.gd", "res://material_maker/main_window_projects_panel.gd", "res://addons/material_maker/shader_functions.tres", "res://addons/material_maker/engine/shader_base.gd", "res://splash_screen/rodz_labs_logo.png", "res://addons/material_maker/engine/shader_compute.gd", "res://addons/material_maker/engine/shader_material.gd", "res://splash_screen/splash_screen.gd", "res://splash_screen/splash_screen.gdshader", "res://splash_screen/splash_screen.tscn", "res://splash_screen/splash_title.png", "res://splash_screen/arrow.png", "res://addons/material_maker/engine/text_resource.gd", "res://splash_screen/splash_screen_bottom.gdshader", "res://material_maker/widgets/code_editor/code_editor.gd", "res://material_maker/widgets/code_editor/code_editor.tscn", "res://material_maker/panels/preview_2d/custom_size_dialog.gd", "res://material_maker/panels/preview_2d/custom_size_dialog.tscn", "res://material_maker/theme/green.tres", "res://material_maker/theme/birch.tres", "res://material_maker/theme/mangosteen.tres", "res://addons/material_maker/engine/nodes/gen_base.gd", "res://addons/material_maker/engine/nodes/gen_brush.gd", "res://addons/material_maker/engine/nodes/gen_buffer.gd", "res://addons/material_maker/engine/nodes/gen_comment.gd", "res://addons/material_maker/engine/nodes/gen_context.gd", "res://addons/material_maker/engine/nodes/gen_debug.gd", "res://addons/material_maker/engine/nodes/gen_export.gd", "res://addons/material_maker/engine/nodes/gen_graph.gd", "res://addons/material_maker/engine/nodes/gen_image.gd", "res://addons/material_maker/engine/nodes/gen_ios.gd", "res://addons/material_maker/engine/nodes/gen_iterate_buffer.gd", "res://addons/material_maker/engine/nodes/gen_material.gd", "res://addons/material_maker/engine/nodes/gen_remote.gd", "res://addons/material_maker/engine/nodes/gen_reroute.gd", "res://addons/material_maker/engine/nodes/gen_sdf.gd", "res://addons/material_maker/engine/nodes/gen_shader.gd", "res://addons/material_maker/engine/nodes/gen_switch.gd", "res://addons/material_maker/engine/nodes/gen_text.gd", "res://addons/material_maker/engine/nodes/gen_texture.gd", "res://addons/material_maker/engine/pipeline/compute_shader.gd", "res://addons/material_maker/engine/pipeline/pipeline.gd", "res://addons/material_maker/engine/pipeline/rendering_pipeline.gd", "res://material_maker/nodes/node_button.tscn", "res://material_maker/nodes/node_button.gd", "res://material_maker/icons/close.tres", "res://parse_args.tscn", "res://parse_args.gd", "res://splash_screen/backgrounds/pixelmuncher_golden_tiles.png", "res://addons/material_maker/engine/pipeline/texture.gd", "res://splash_screen/backgrounds/pavel_oliva_vintage_luggage.png", "res://splash_screen/backgrounds/pavel_oliva_treasures.png", "res://splash_screen/backgrounds/pavel_oliva_stylized_pavement.png", "res://splash_screen/backgrounds/pavel_oliva_pavement_generator.png", "res://splash_screen/backgrounds/pavel_oliva_lace.png", "res://splash_screen/backgrounds/pavel_oliva_flowing_lava.png", "res://splash_screen/backgrounds/pavel_oliva_cursed_planks.png", "res://splash_screen/backgrounds/pavel_oliva_celestial_floor.png", "res://splash_screen/backgrounds/pavel_oliva_carved_wood.png", "res://splash_screen/backgrounds/paulo_falcao_terminator_ball.tres", "res://material_maker/windows/export_taa/export_taa.gd", "res://addons/material_maker/engine/nodes/buffer_compute.tres", "res://material_maker/windows/export_taa/export_taa.tscn", "res://addons/material_maker/engine/nodes/iterate_buffer_compute.tres", "res://material_maker/windows/export_taa/divide_compute.tres", "res://material_maker/windows/export_taa/accumulate_compute.tres", "res://splash_screen/backgrounds/angel_beanbag_chair.png", "res://splash_screen/backgrounds/angel_soft_nurball.png", "res://splash_screen/backgrounds/cgmytro_old_doors.png", "res://splash_screen/backgrounds/cybereality_brutalism.png", "res://splash_screen/backgrounds/cybereality_dirty_tiles.png", "res://splash_screen/backgrounds/cybereality_future_visions.png", "res://splash_screen/backgrounds/droppedbeat_matrix_rain.tres", "res://splash_screen/backgrounds/droppedbeat_procedural_material.png", "res://splash_screen/backgrounds/droppedbeat_spiral_trails.tres", "res://splash_screen/backgrounds/droppedbeat_vending_machines.png", "res://splash_screen/backgrounds/oneiric_worlds_zefyr.png", "res://splash_screen/backgrounds/paulo_falcao_fractal_octahedron.tres", "res://splash_screen/backgrounds/paulo_falcao_green_thing.png", "res://addons/material_maker/map_generator/ao_fragment.tres", "res://addons/material_maker/map_generator/ao_vertex.tres", "res://addons/material_maker/map_generator/bvh_generator.gd", "res://addons/material_maker/map_generator/common_fragment.tres", "res://addons/material_maker/map_generator/curvature_generator.gd", "res://addons/material_maker/map_generator/curvature_vertex.tres", "res://addons/material_maker/map_generator/denoise_compute.tres", "res://addons/material_maker/map_generator/dilate_1_compute.tres", "res://addons/material_maker/map_generator/dilate_2_compute.tres", "res://addons/material_maker/map_generator/map_generator.gd", "res://addons/material_maker/map_generator/mesh_rendering_pipeline.gd", "res://addons/material_maker/map_generator/normalize_compute.tres", "res://addons/material_maker/map_generator/normal_fragment.tres", "res://addons/material_maker/map_generator/normal_vertex.tres", "res://addons/material_maker/map_generator/position_vertex.tres", "res://addons/material_maker/map_generator/seams_1_compute.tres", "res://addons/material_maker/map_generator/seams_2_compute.tres", "res://addons/material_maker/map_generator/tangent_vertex.tres", "res://addons/material_maker/engine/nodes/gen_meshmap.gd", "res://material_maker/projects_panel.tscn", "res://addons/flexible_layout/tab.svg", "res://addons/flexible_layout/flexible_tabs.tscn", "res://addons/flexible_layout/flexible_tabs.gd", "res://addons/flexible_layout/flexible_tab.tscn", "res://addons/flexible_layout/flexible_tab.gd", "res://addons/flexible_layout/flexible_overlay.tscn", "res://addons/flexible_layout/flexible_overlay.gd", "res://addons/flexible_layout/flexible_layout.tscn", "res://addons/flexible_layout/arrow.svg", "res://addons/flexible_layout/flexible_dragger.gd", "res://addons/flexible_layout/flexible_dragger.tscn", "res://addons/flexible_layout/flexible_layout.gd", "res://addons/material_maker/engine/nodes/gen_webcam.gd", "res://addons/material_maker/loaders/mesh_loader.gd", "res://addons/material_maker/loaders/obj_loader.gd", "res://material_maker/tools/painter/shaders/paint_shader_template.tres", "res://material_maker/tools/painter/shaders/t2v_fragment.tres", "res://material_maker/tools/painter/shaders/t2v_vertex.tres", "res://material_maker/tools/painter/shaders/v2t_fragment.tres", "res://material_maker/tools/painter/shaders/v2t_vertex.tres", "res://material_maker/tools/painter/shaders/brush.gdshader", "res://material_maker/tools/painter/shaders/brush_common_decl.gdshader", "res://material_maker/tools/painter/shaders/brush_pattern.gdshader", "res://material_maker/tools/painter/shaders/brush_stamp.gdshader", "res://material_maker/tools/painter/shaders/brush_uv_pattern.gdshader", "res://addons/material_maker/types/splines.gd", "res://material_maker/widgets/splines_edit/splines_dialog.gd", "res://material_maker/widgets/splines_edit/splines_dialog.tscn", "res://material_maker/widgets/splines_edit/splines_edit.gd", "res://material_maker/widgets/splines_edit/splines_edit.tscn", "res://material_maker/widgets/splines_edit/splines_editor.gd", "res://material_maker/widgets/splines_edit/splines_editor.tscn", "res://material_maker/widgets/splines_edit/splines_view.gd", "res://material_maker/widgets/splines_edit/splines_view.tscn", "res://addons/flexible_layout/undock.png", "res://addons/material_maker/engine/shader_error_handler.gd", "res://addons/material_maker/types/pixels.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.tscn", "res://material_maker/widgets/pixels_edit/pixels_edit.gd", "res://material_maker/widgets/pixels_edit/pixels_edit.tscn", "res://material_maker/widgets/pixels_edit/pixels_editor.gd", "res://material_maker/widgets/pixels_edit/pixels_editor.tscn", "res://material_maker/widgets/pixels_edit/pixels_view.gd", "res://material_maker/widgets/pixels_edit/pixels_view.tscn", "res://material_maker/windows/node_editor/parameter_pixels.gd", "res://material_maker/windows/node_editor/parameter_pixels.tscn", "res://material_maker/windows/node_editor/parameter_splines.gd", "res://material_maker/windows/node_editor/parameter_splines.tscn", "res://addons/material_maker/engine/logger.gd", "res://material_maker/console.gd") +export_files=PackedStringArray("res://addons/material_maker/engine/dependencies.gd", "res://addons/material_maker/engine/io_types.gd", "res://addons/material_maker/engine/loader.gd", "res://addons/material_maker/engine/multi_renderer.gd", "res://addons/material_maker/engine/paths.gd", "res://addons/material_maker/engine/preprocessor.gd", "res://addons/material_maker/engine/renderer.gd", "res://addons/material_maker/engine/renderer.tscn", "res://addons/material_maker/parser/glsl_parser.gd", "res://addons/material_maker/parser/glsl_parser_base.gd", "res://addons/material_maker/parser/parser_base.gd", "res://addons/material_maker/sdf_builder/base.gd", "res://addons/material_maker/sdf_builder/icons/icons.svg", "res://addons/material_maker/sdf_builder/sdf2d/annular.gd", "res://addons/material_maker/sdf_builder/sdf2d/bend.gd", "res://addons/material_maker/sdf_builder/sdf2d/box.gd", "res://addons/material_maker/sdf_builder/sdf2d/circle.gd", "res://addons/material_maker/sdf_builder/sdf2d/color.gd", "res://addons/material_maker/sdf_builder/sdf2d/difference.gd", "res://addons/material_maker/sdf_builder/sdf2d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf2d/flip.gd", "res://addons/material_maker/sdf_builder/sdf2d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf2d/line.gd", "res://addons/material_maker/sdf_builder/sdf2d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf2d/morph.gd", "res://addons/material_maker/sdf_builder/sdf2d/ngon.gd", "res://addons/material_maker/sdf_builder/sdf2d/polygon.gd", "res://addons/material_maker/sdf_builder/sdf2d/round.gd", "res://addons/material_maker/sdf_builder/sdf2d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf2d/stairs.gd", "res://addons/material_maker/sdf_builder/sdf2d/star.gd", "res://addons/material_maker/sdf_builder/sdf2d/union.gd", "res://addons/material_maker/sdf_builder/sdf3d/annular.gd", "res://addons/material_maker/sdf_builder/sdf3d/bend.gd", "res://addons/material_maker/sdf_builder/sdf3d/box.gd", "res://addons/material_maker/sdf_builder/sdf3d/color.gd", "res://addons/material_maker/sdf_builder/sdf3d/cylinder.gd", "res://addons/material_maker/sdf_builder/sdf3d/difference.gd", "res://addons/material_maker/sdf_builder/sdf3d/distort.gd", "res://addons/material_maker/sdf_builder/sdf3d/elongate.gd", "res://addons/material_maker/sdf_builder/sdf3d/extrusion.gd", "res://addons/material_maker/sdf_builder/sdf3d/flip.gd", "res://addons/material_maker/sdf_builder/sdf3d/intersection.gd", "res://addons/material_maker/sdf_builder/sdf3d/mirror.gd", "res://addons/material_maker/sdf_builder/sdf3d/morph.gd", "res://addons/material_maker/sdf_builder/sdf3d/revolution.gd", "res://addons/material_maker/sdf_builder/sdf3d/round.gd", "res://addons/material_maker/sdf_builder/sdf3d/smooth_union.gd", "res://addons/material_maker/sdf_builder/sdf3d/sphere.gd", "res://addons/material_maker/sdf_builder/sdf3d/torus.gd", "res://addons/material_maker/sdf_builder/sdf3d/twist.gd", "res://addons/material_maker/sdf_builder/sdf3d/union.gd", "res://addons/material_maker/sdf_builder/sdf_builder.gd", "res://addons/material_maker/sdf_builder/sdf_builder.tscn", "res://addons/material_maker/sdf_builder/tex/blend.gd", "res://addons/material_maker/sdf_builder/tex/brightness_contrast.gd", "res://addons/material_maker/sdf_builder/tex/deform.gd", "res://addons/material_maker/sdf_builder/tex/fbm.gd", "res://addons/material_maker/sdf_builder/tex/pattern.gd", "res://addons/material_maker/sdf_builder/tex/simple_gradient.gd", "res://addons/material_maker/sdf_builder/tex/step.gd", "res://addons/material_maker/sdf_builder/tex/uniform.gd", "res://addons/material_maker/sdf_builder/tex/uniform_gs.gd", "res://addons/material_maker/types/curve.gd", "res://addons/material_maker/types/gradient.gd", "res://addons/material_maker/types/polygon.gd", "res://addons/material_maker/types/types.gd", "res://default_env.tres", "res://icon.png", "res://material_maker/darken.gd", "res://material_maker/darken.tscn", "res://material_maker/fonts/DroidSansFallback.ttf", "res://material_maker/fonts/DroidSansJapanese.ttf", "res://material_maker/fonts/hack.ttf", "res://material_maker/fonts/vegur_regular.otf", "res://material_maker/globals.gd", "res://material_maker/globals.tscn", "res://material_maker/globals_menu_manager.gd", "res://material_maker/icons/add.tres", "res://material_maker/icons/add_generic.tres", "res://material_maker/icons/buffer.tres", "res://material_maker/icons/buffer_paused.tres", "res://material_maker/icons/color_palette.png", "res://material_maker/icons/color_picker.png", "res://material_maker/icons/custom.png", "res://material_maker/icons/down.tres", "res://material_maker/icons/edit.tres", "res://material_maker/icons/eye_closed.tres", "res://material_maker/icons/eye_open.tres", "res://material_maker/icons/godot_logo.svg", "res://material_maker/icons/icons.svg", "res://material_maker/icons/icons.tres", "res://material_maker/icons/link.tres", "res://material_maker/icons/lmb.tres", "res://material_maker/icons/minimize.tres", "res://material_maker/icons/mmb.tres", "res://material_maker/icons/ok.tres", "res://material_maker/icons/output_preview.tres", "res://material_maker/icons/paste_graph.tres", "res://material_maker/icons/paste_newgraph.tres", "res://material_maker/icons/paste_none.tres", "res://material_maker/icons/paste_palette.tres", "res://material_maker/icons/port_group_0.tres", "res://material_maker/icons/port_group_1.tres", "res://material_maker/icons/port_group_2.tres", "res://material_maker/icons/port_group_3.tres", "res://material_maker/icons/preview.png", "res://material_maker/icons/preview_locked.png", "res://material_maker/icons/randomness_locked.tres", "res://material_maker/icons/randomness_unlocked.tres", "res://material_maker/icons/remove.tres", "res://material_maker/icons/rmb.tres", "res://material_maker/icons/up.tres", "res://material_maker/locale/locale.gd", "res://material_maker/main_window.gd", "res://material_maker/main_window.tscn", "res://material_maker/main_window_layout.gd", "res://material_maker/meshes/suzanne.obj", "res://material_maker/node_factory.gd", "res://material_maker/nodes/base.gd", "res://material_maker/nodes/comment/comment.gd", "res://material_maker/nodes/comment/comment.tscn", "res://material_maker/nodes/comment/palette_button.gd", "res://material_maker/nodes/debug/debug.gd", "res://material_maker/nodes/debug/debug.tscn", "res://material_maker/nodes/debug/debug_popup.gd", "res://material_maker/nodes/debug/debug_popup.tscn", "res://material_maker/nodes/edit_buttons.gd", "res://material_maker/nodes/edit_buttons.tscn", "res://material_maker/nodes/generic/generic.gd", "res://material_maker/nodes/generic/generic.tscn", "res://material_maker/nodes/ios/add.tscn", "res://material_maker/nodes/ios/ios.gd", "res://material_maker/nodes/ios/ios.tscn", "res://material_maker/nodes/ios/port.gd", "res://material_maker/nodes/ios/port.tscn", "res://material_maker/nodes/material_export/material_export.gd", "res://material_maker/nodes/material_export/material_export.tscn", "res://material_maker/nodes/minimal.gd", "res://material_maker/nodes/remote/named_parameter_dialog.gd", "res://material_maker/nodes/remote/named_parameter_dialog.tscn", "res://material_maker/nodes/remote/remote.gd", "res://material_maker/nodes/remote/remote.tscn", "res://material_maker/nodes/reroute/reroute.gd", "res://material_maker/nodes/reroute/reroute.tscn", "res://material_maker/nodes/switch/switch.gd", "res://material_maker/nodes/switch/switch.tscn", "res://material_maker/nodes/tones/tones.gd", "res://material_maker/nodes/tones/tones.tscn", "res://material_maker/panels/brushes/brushes.gd", "res://material_maker/panels/brushes/brushes.tscn", "res://material_maker/panels/graph_edit/graph_edit.gd", "res://material_maker/panels/graph_edit/graph_edit.tscn", "res://material_maker/panels/hierarchy/hierarchy_panel.gd", "res://material_maker/panels/hierarchy/hierarchy_panel.tscn", "res://material_maker/panels/layers/add_layer_menu.tscn", "res://material_maker/panels/layers/icons/layer_mask.tres", "res://material_maker/panels/layers/icons/layer_paint.tres", "res://material_maker/panels/layers/icons/layer_proc.tres", "res://material_maker/panels/layers/icons/not_visible.tres", "res://material_maker/panels/layers/icons/visible.tres", "res://material_maker/panels/layers/layer_config_popup.gd", "res://material_maker/panels/layers/layer_config_popup.tscn", "res://material_maker/panels/layers/layer_tooltip.gd", "res://material_maker/panels/layers/layer_tooltip.tscn", "res://material_maker/panels/layers/layer_tooltip_thumbnail.gd", "res://material_maker/panels/layers/layer_tooltip_thumbnail.tscn", "res://material_maker/panels/layers/layers.gd", "res://material_maker/panels/layers/layers.tscn", "res://material_maker/panels/layers/layers_tree.gd", "res://material_maker/panels/library/button_greyed.tres", "res://material_maker/panels/library/create_lib_dialog.gd", "res://material_maker/panels/library/create_lib_dialog.tscn", "res://material_maker/panels/library/library.gd", "res://material_maker/panels/library/library.tscn", "res://material_maker/panels/library/library_tree.gd", "res://material_maker/panels/paint/export.gd", "res://material_maker/panels/paint/export.tscn", "res://material_maker/panels/paint/layer_types/layer.gd", "res://material_maker/panels/paint/layer_types/layer_mask.gd", "res://material_maker/panels/paint/layer_types/layer_paint.gd", "res://material_maker/panels/paint/layer_types/layer_procedural.gd", "res://material_maker/panels/paint/paint.gd", "res://material_maker/panels/paint/paint.tscn", "res://material_maker/panels/paint/paint_layers.gd", "res://material_maker/panels/paint/paint_layers.tscn", "res://material_maker/panels/paint/paint_project_settings.gd", "res://material_maker/panels/paint/paint_project_settings.tscn", "res://material_maker/panels/paint/collapse_button.tscn", "res://material_maker/panels/paint/collapse_button.gd", "res://material_maker/panels/parameters/parameters.gd", "res://material_maker/panels/parameters/parameters.tscn", "res://material_maker/panels/preview_2d/control_point.gd", "res://material_maker/panels/preview_2d/control_point.tscn", "res://material_maker/panels/preview_2d/lines.gd", "res://material_maker/panels/preview_2d/preview_2d.gd", "res://material_maker/panels/preview_2d/preview_2d.tscn", "res://material_maker/panels/preview_2d/preview_2d_node.gd", "res://material_maker/panels/preview_2d/preview_2d_node.tscn", "res://material_maker/panels/preview_2d/preview_2d_panel.gd", "res://material_maker/panels/preview_2d/preview_2d_panel.tscn", "res://material_maker/panels/preview_3d/materials/shader_material_tesselated.tres", "res://material_maker/panels/preview_3d/materials/spatial_material.tres", "res://material_maker/panels/preview_3d/mesh_config_popup.gd", "res://material_maker/panels/preview_3d/mesh_config_popup.tscn", "res://material_maker/panels/preview_3d/preview_3d.gd", "res://material_maker/panels/preview_3d/preview_3d.tscn", "res://material_maker/panels/preview_3d/preview_3d_panel.gd", "res://material_maker/panels/preview_3d/preview_3d_panel.tscn", "res://material_maker/panels/preview_3d/preview_3d_scene.tscn", "res://material_maker/panels/preview_3d/preview_3d_ui.gd", "res://material_maker/panels/preview_3d/preview_3d_ui.tscn", "res://material_maker/panels/preview_3d/preview_light.gd", "res://material_maker/panels/preview_3d/preview_light.tscn", "res://material_maker/panels/preview_3d/preview_mesh.gd", "res://material_maker/panels/preview_3d/preview_objects.tscn", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cube.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Custom.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Cylinder.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Plane.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Prism.png", "res://material_maker/panels/preview_3d/thumbnails/meshes/Sphere.png", "res://material_maker/panels/reference/color_slot.gd", "res://material_maker/panels/reference/color_slot.tscn", "res://material_maker/panels/reference/gradient_slot.gd", "res://material_maker/panels/reference/gradient_slot.tscn", "res://material_maker/panels/reference/reference_panel.gd", "res://material_maker/panels/reference/reference_panel.tscn", "res://material_maker/theme/dark.tres", "res://material_maker/theme/dark/checkbox_checked.png", "res://material_maker/theme/dark/checkbox_radio_checked.png", "res://material_maker/theme/dark/checkbox_radio_unchecked.png", "res://material_maker/theme/dark/checkbox_unchecked.png", "res://material_maker/theme/dark/checkbutton_off.png", "res://material_maker/theme/dark/checkbutton_off_disabled.png", "res://material_maker/theme/dark/checkbutton_on.png", "res://material_maker/theme/dark/checkbutton_on_disabled.png", "res://material_maker/theme/dark/colorpickerbutton_bg.png", "res://material_maker/theme/dark/curve_preset_bevel.tres", "res://material_maker/theme/dark/curve_preset_bounce.tres", "res://material_maker/theme/dark/curve_preset_easein.tres", "res://material_maker/theme/dark/curve_preset_easeinout.tres", "res://material_maker/theme/dark/curve_preset_easeout.tres", "res://material_maker/theme/dark/curve_preset_linear.tres", "res://material_maker/theme/dark/curve_preset_sawtooth.tres", "res://material_maker/theme/dark/curve_presets.svg", "res://material_maker/theme/dark/graphedit_minus.png", "res://material_maker/theme/dark/graphedit_more.png", "res://material_maker/theme/dark/graphedit_reset.png", "res://material_maker/theme/dark/graphedit_snap.png", "res://material_maker/theme/dark/graphnode_close.png", "res://material_maker/theme/dark/graphnode_port.png", "res://material_maker/theme/dark/graphnode_resizer.png", "res://material_maker/theme/dark/hslider_grabber.png", "res://material_maker/theme/dark/hslider_grabber_disabled.png", "res://material_maker/theme/dark/hslider_grabber_highlight.png", "res://material_maker/theme/dark/hslider_tick.png", "res://material_maker/theme/dark/hsplitcontainer_grabber.png", "res://material_maker/theme/dark/lineedit_clear.png", "res://material_maker/theme/dark/optionbutton_arrow.png", "res://material_maker/theme/dark/popupmenu_checked.png", "res://material_maker/theme/dark/popupmenu_radio_checked.png", "res://material_maker/theme/dark/popupmenu_radio_unchecked.png", "res://material_maker/theme/dark/popupmenu_submenu.png", "res://material_maker/theme/dark/popupmenu_unchecked.png", "res://material_maker/theme/dark/popupmenu_visibility_hidden.png", "res://material_maker/theme/dark/popupmenu_visibility_visible.png", "res://material_maker/theme/dark/popupmenu_visibility_xray.png", "res://material_maker/theme/dark/sb_checkbox_focus_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/dark/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_hslider_focus_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/dark/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/sb_panel_panelf_texture.png", "res://material_maker/theme/dark/sb_panel_panelnc_texture.png", "res://material_maker/theme/dark/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/dark/sb_progressbar_bg_texture.png", "res://material_maker/theme/dark/sb_progressbar_fg_texture.png", "res://material_maker/theme/dark/sb_textedit_completion_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/dark/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/dark/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/dark/tabcontainer_decrement.png", "res://material_maker/theme/dark/tabcontainer_decrement_highlight.png", "res://material_maker/theme/dark/tabcontainer_increment.png", "res://material_maker/theme/dark/tabcontainer_increment_highlight.png", "res://material_maker/theme/dark/tabcontainer_menu.png", "res://material_maker/theme/dark/tabcontainer_menu_highlight.png", "res://material_maker/theme/dark/tabs_close.png", "res://material_maker/theme/dark/tabs_decrement.png", "res://material_maker/theme/dark/tabs_decrement_highlight.png", "res://material_maker/theme/dark/tabs_increment.png", "res://material_maker/theme/dark/tabs_increment_highlight.png", "res://material_maker/theme/dark/textedit_fold.png", "res://material_maker/theme/dark/textedit_folded.png", "res://material_maker/theme/dark/textedit_space.png", "res://material_maker/theme/dark/textedit_tab.png", "res://material_maker/theme/dark/tree_arrow.png", "res://material_maker/theme/dark/tree_arrow_collapsed.png", "res://material_maker/theme/dark/tree_checked.png", "res://material_maker/theme/dark/tree_select_arrow.png", "res://material_maker/theme/dark/tree_unchecked.png", "res://material_maker/theme/dark/tree_updown.png", "res://material_maker/theme/dark/vslider_grabber.png", "res://material_maker/theme/dark/vslider_grabber_highlight.png", "res://material_maker/theme/dark/vsplitcontainer_grabber.png", "res://material_maker/theme/dark/windowdialog_close.png", "res://material_maker/theme/dark/windowdialog_close_highlight.png", "res://material_maker/theme/default.tres", "res://material_maker/theme/font.tres", "res://material_maker/theme/light.tres", "res://material_maker/theme/light/checkbox_checked.png", "res://material_maker/theme/light/checkbox_radio_checked.png", "res://material_maker/theme/light/checkbox_radio_unchecked.png", "res://material_maker/theme/light/checkbox_unchecked.png", "res://material_maker/theme/light/checkbutton_off.png", "res://material_maker/theme/light/checkbutton_off_disabled.png", "res://material_maker/theme/light/checkbutton_on.png", "res://material_maker/theme/light/checkbutton_on_disabled.png", "res://material_maker/theme/light/colorpickerbutton_bg.png", "res://material_maker/theme/light/curve_preset_bevel.tres", "res://material_maker/theme/light/curve_preset_bounce.tres", "res://material_maker/theme/light/curve_preset_easein.tres", "res://material_maker/theme/light/curve_preset_easeinout.tres", "res://material_maker/theme/light/curve_preset_easeout.tres", "res://material_maker/theme/light/curve_preset_linear.tres", "res://material_maker/theme/light/curve_preset_sawtooth.tres", "res://material_maker/theme/light/curve_presets.svg", "res://material_maker/theme/light/graphedit_minus.png", "res://material_maker/theme/light/graphedit_more.png", "res://material_maker/theme/light/graphedit_reset.png", "res://material_maker/theme/light/graphedit_snap.png", "res://material_maker/theme/light/graphnode_close.png", "res://material_maker/theme/light/graphnode_port.png", "res://material_maker/theme/light/graphnode_resizer.png", "res://material_maker/theme/light/hslider_grabber.png", "res://material_maker/theme/light/hslider_grabber_disabled.png", "res://material_maker/theme/light/hslider_grabber_highlight.png", "res://material_maker/theme/light/hslider_tick.png", "res://material_maker/theme/light/hsplitcontainer_grabber.png", "res://material_maker/theme/light/lineedit_clear.png", "res://material_maker/theme/light/optionbutton_arrow.png", "res://material_maker/theme/light/popupmenu_checked.png", "res://material_maker/theme/light/popupmenu_radio_checked.png", "res://material_maker/theme/light/popupmenu_radio_unchecked.png", "res://material_maker/theme/light/popupmenu_submenu.png", "res://material_maker/theme/light/popupmenu_unchecked.png", "res://material_maker/theme/light/popupmenu_visibility_hidden.png", "res://material_maker/theme/light/popupmenu_visibility_visible.png", "res://material_maker/theme/light/popupmenu_visibility_xray.png", "res://material_maker/theme/light/sb_checkbox_focus_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_disabled_texture.png", "res://material_maker/theme/light/sb_colorpickerbutton_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_hscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_hscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_hslider_focus_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_disabled_texture.png", "res://material_maker/theme/light/sb_hslider_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_hsplitcontainer_bg_texture.png", "res://material_maker/theme/light/sb_panel_panelf_texture.png", "res://material_maker/theme/light/sb_panel_panelnc_texture.png", "res://material_maker/theme/light/sb_popupmenu_panel_disabled_texture.png", "res://material_maker/theme/light/sb_progressbar_bg_texture.png", "res://material_maker/theme/light/sb_progressbar_fg_texture.png", "res://material_maker/theme/light/sb_textedit_completion_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_highlight_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_pressed_texture.png", "res://material_maker/theme/light/sb_vscrollbar_grabber_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_focus_texture.png", "res://material_maker/theme/light/sb_vscrollbar_scroll_texture.png", "res://material_maker/theme/light/sb_vsplitcontainer_bg_texture.png", "res://material_maker/theme/light/tabcontainer_decrement.png", "res://material_maker/theme/light/tabcontainer_decrement_highlight.png", "res://material_maker/theme/light/tabcontainer_increment.png", "res://material_maker/theme/light/tabcontainer_increment_highlight.png", "res://material_maker/theme/light/tabcontainer_menu.png", "res://material_maker/theme/light/tabcontainer_menu_highlight.png", "res://material_maker/theme/light/tabs_close.png", "res://material_maker/theme/light/tabs_decrement.png", "res://material_maker/theme/light/tabs_decrement_highlight.png", "res://material_maker/theme/light/tabs_increment.png", "res://material_maker/theme/light/tabs_increment_highlight.png", "res://material_maker/theme/light/textedit_fold.png", "res://material_maker/theme/light/textedit_folded.png", "res://material_maker/theme/light/textedit_space.png", "res://material_maker/theme/light/textedit_tab.png", "res://material_maker/theme/light/tree_arrow.png", "res://material_maker/theme/light/tree_arrow_collapsed.png", "res://material_maker/theme/light/tree_checked.png", "res://material_maker/theme/light/tree_select_arrow.png", "res://material_maker/theme/light/tree_unchecked.png", "res://material_maker/theme/light/tree_updown.png", "res://material_maker/theme/light/vslider_grabber.png", "res://material_maker/theme/light/vslider_grabber_highlight.png", "res://material_maker/theme/light/vsplitcontainer_grabber.png", "res://material_maker/theme/light/windowdialog_close.png", "res://material_maker/theme/light/windowdialog_close_highlight.png", "res://material_maker/tools/environment_manager/environment_manager.gd", "res://material_maker/tools/environment_manager/environment_manager.tscn", "res://material_maker/tools/library_manager/library.gd", "res://material_maker/tools/library_manager/library_manager.gd", "res://material_maker/tools/map_renderer/map_renderer.gd", "res://material_maker/tools/map_renderer/map_renderer.tscn", "res://material_maker/tools/painter/brush_preview.gd", "res://material_maker/tools/painter/brush_preview.tscn", "res://material_maker/tools/painter/painter.gd", "res://material_maker/tools/painter/painter.tscn", "res://material_maker/tools/painter/painter_viewport.gd", "res://material_maker/tools/painter/painter_viewport.tscn", "res://material_maker/tools/painter/shaders/init.tres", "res://material_maker/tools/painter/shaders/init_channels.tres", "res://material_maker/tools/painter/shaders/init_copy_shader.tres", "res://material_maker/tools/share/broken_link.tres", "res://material_maker/tools/share/golden_link.tres", "res://material_maker/tools/share/hdri/kloofendal_48d_partly_cloudy_1k.exr", "res://material_maker/tools/share/link.tres", "res://material_maker/tools/share/login_dialog.gd", "res://material_maker/tools/share/login_dialog.tscn", "res://material_maker/tools/share/preview_scene.tscn", "res://material_maker/tools/share/preview_scene_viewer.tscn", "res://material_maker/tools/share/preview_viewport.gd", "res://material_maker/tools/share/preview_viewport.tscn", "res://material_maker/tools/share/share_button.gd", "res://material_maker/tools/share/share_button.tscn", "res://material_maker/tools/share/share_http_request.gd", "res://material_maker/tools/share/share_node_dialog.gd", "res://material_maker/tools/share/share_node_dialog.tscn", "res://material_maker/tools/share/upload_dialog.gd", "res://material_maker/tools/share/upload_dialog.tscn", "res://material_maker/tools/undo_redo/undo_redo.gd", "res://material_maker/widgets/color_picker_button/color_picker_button.gd", "res://material_maker/widgets/color_picker_popup/color_picker_popup.tscn", "res://material_maker/widgets/curve_edit/control_point.gd", "res://material_maker/widgets/curve_edit/control_point.tscn", "res://material_maker/widgets/curve_edit/curve_dialog.gd", "res://material_maker/widgets/curve_edit/curve_dialog.tscn", "res://material_maker/widgets/curve_edit/curve_edit.gd", "res://material_maker/widgets/curve_edit/curve_edit.tscn", "res://material_maker/widgets/curve_edit/curve_editor.gd", "res://material_maker/widgets/curve_edit/curve_editor.tscn", "res://material_maker/widgets/curve_edit/curve_view.gd", "res://material_maker/widgets/curve_edit/curve_view.tscn", "res://material_maker/widgets/curve_edit/presets_selector.gd", "res://material_maker/widgets/curve_edit/slope_point.gd", "res://material_maker/widgets/desc_button/desc_button.gd", "res://material_maker/widgets/desc_button/desc_button.tscn", "res://material_maker/widgets/file_picker_button/file_picker_button.gd", "res://material_maker/widgets/file_picker_button/file_picker_button.tscn", "res://material_maker/widgets/float_edit/expression_editor.gd", "res://material_maker/widgets/float_edit/expression_editor.tscn", "res://material_maker/widgets/float_edit/float_edit.gd", "res://material_maker/widgets/float_edit/float_edit.tscn", "res://material_maker/console.gd", "res://addons/material_maker/engine/logger.gd", "res://material_maker/widgets/gradient_editor/gradient_popup.gd", "res://material_maker/widgets/gradient_editor/gradient_popup.tscn", "res://material_maker/widgets/graph_tree/graph_tree.gd", "res://material_maker/widgets/graph_tree/graph_tree.tscn", "res://material_maker/widgets/histogram/histogram.gd", "res://material_maker/widgets/histogram/histogram.tscn", "res://material_maker/widgets/image_picker_button/image_picker_button.gd", "res://material_maker/widgets/image_picker_button/image_picker_button.tscn", "res://material_maker/widgets/linked_widgets/editable_label.gd", "res://material_maker/widgets/linked_widgets/editable_label.tscn", "res://material_maker/widgets/linked_widgets/link.gd", "res://material_maker/widgets/polygon_edit/control_point.gd", "res://material_maker/widgets/polygon_edit/control_point.tscn", "res://material_maker/widgets/polygon_edit/polygon_dialog.gd", "res://material_maker/widgets/polygon_edit/polygon_dialog.tscn", "res://material_maker/widgets/polygon_edit/polygon_edit.gd", "res://material_maker/widgets/polygon_edit/polygon_edit.tscn", "res://material_maker/widgets/polygon_edit/polygon_editor.gd", "res://material_maker/widgets/polygon_edit/polygon_editor.tscn", "res://material_maker/widgets/polygon_edit/polygon_view.gd", "res://material_maker/widgets/polygon_edit/polygon_view.tscn", "res://material_maker/widgets/port_group_button/port_group_button.gd", "res://material_maker/widgets/port_group_button/port_group_button.tscn", "res://material_maker/widgets/render_counter/render_counter.gd", "res://material_maker/widgets/render_counter/render_counter.tscn", "res://material_maker/widgets/size_option_button/size_option_button.gd", "res://material_maker/widgets/tabs/tabs.gd", "res://material_maker/windows/about/about.gd", "res://material_maker/windows/about/about.tscn", "res://material_maker/windows/about/discord.png", "res://material_maker/windows/about/epic_megagrant.svg", "res://material_maker/windows/about/facebook.png", "res://material_maker/windows/about/github.png", "res://material_maker/windows/about/icon.png", "res://material_maker/windows/about/itchio.png", "res://material_maker/windows/about/patreon.png", "res://material_maker/windows/about/twitter.png", "res://material_maker/windows/about/youtube.png", "res://material_maker/windows/accept_dialog/accept_dialog.gd", "res://material_maker/windows/accept_dialog/accept_dialog.tscn", "res://material_maker/windows/add_node_popup/add_node_popup.gd", "res://material_maker/windows/add_node_popup/add_node_popup.tscn", "res://material_maker/windows/add_node_popup/quick_button.gd", "res://material_maker/windows/add_node_popup/quick_button.tscn", "res://material_maker/windows/desc_dialog/desc_dialog.gd", "res://material_maker/windows/desc_dialog/desc_dialog.tscn", "res://material_maker/windows/environment_editor/environment_editor.gd", "res://material_maker/windows/environment_editor/environment_editor.tscn", "res://material_maker/windows/environment_editor/environment_editor_scene.tscn", "res://material_maker/windows/environment_editor/environment_editor_viewport.tscn", "res://material_maker/windows/environment_editor/new_environment.png", "res://material_maker/windows/export_animation/export_animation.gd", "res://material_maker/windows/export_animation/export_animation.tscn", "res://material_maker/windows/file_dialog/fav_button.tscn", "res://material_maker/windows/file_dialog/file_dialog.gd", "res://material_maker/windows/file_dialog/file_dialog.tscn", "res://material_maker/windows/file_dialog/left_panel.gd", "res://material_maker/windows/file_dialog/left_panel.tscn", "res://material_maker/windows/line_dialog/line_dialog.gd", "res://material_maker/windows/line_dialog/line_dialog.tscn", "res://material_maker/windows/load_from_website/load_from_website.gd", "res://material_maker/windows/load_from_website/load_from_website.tscn", "res://material_maker/windows/material_editor/export_editor.gd", "res://material_maker/windows/material_editor/export_editor.tscn", "res://material_maker/windows/material_editor/expression_line_edit.gd", "res://material_maker/windows/material_editor/expression_line_edit.tscn", "res://material_maker/windows/material_editor/material_editor.gd", "res://material_maker/windows/material_editor/material_editor.tscn", "res://material_maker/windows/new_painter/new_painter.gd", "res://material_maker/windows/new_painter/new_painter.tscn", "res://material_maker/windows/node_editor/enum_editor.gd", "res://material_maker/windows/node_editor/enum_editor.tscn", "res://material_maker/windows/node_editor/input.gd", "res://material_maker/windows/node_editor/input.tscn", "res://material_maker/windows/node_editor/node_editor.gd", "res://material_maker/windows/node_editor/node_editor.tscn", "res://material_maker/windows/node_editor/node_editor_item_list.gd", "res://material_maker/windows/node_editor/output.gd", "res://material_maker/windows/node_editor/output.tscn", "res://material_maker/windows/node_editor/parameter.gd", "res://material_maker/windows/node_editor/parameter.tscn", "res://material_maker/windows/node_editor/parameter_boolean.gd", "res://material_maker/windows/node_editor/parameter_boolean.tscn", "res://material_maker/windows/node_editor/parameter_color.gd", "res://material_maker/windows/node_editor/parameter_color.tscn", "res://material_maker/windows/node_editor/parameter_curve.gd", "res://material_maker/windows/node_editor/parameter_curve.tscn", "res://material_maker/windows/node_editor/parameter_enum.gd", "res://material_maker/windows/node_editor/parameter_enum.tscn", "res://material_maker/windows/node_editor/parameter_float.gd", "res://material_maker/windows/node_editor/parameter_float.tscn", "res://material_maker/windows/node_editor/parameter_gradient.gd", "res://material_maker/windows/node_editor/parameter_gradient.tscn", "res://material_maker/windows/node_editor/parameter_polygon.gd", "res://material_maker/windows/node_editor/parameter_polygon.tscn", "res://material_maker/windows/node_editor/parameter_polyline.tscn", "res://material_maker/windows/node_editor/parameter_size.gd", "res://material_maker/windows/node_editor/parameter_size.tscn", "res://material_maker/windows/preferences/bool_option.gd", "res://material_maker/windows/preferences/bool_option.tscn", "res://material_maker/windows/preferences/float_option.gd", "res://material_maker/windows/preferences/float_option.tscn", "res://material_maker/windows/preferences/lang_option.gd", "res://material_maker/windows/preferences/language_download.gd", "res://material_maker/windows/preferences/language_download.tscn", "res://material_maker/windows/preferences/preferences.gd", "res://material_maker/windows/preferences/preferences.tscn", "res://material_maker/windows/progress_window/progress_window.gd", "res://material_maker/windows/progress_window/progress_window.tscn", "res://material_maker/windows/sdf_builder/gizmo.gd", "res://material_maker/windows/sdf_builder/gizmo.tscn", "res://material_maker/windows/sdf_builder/gizmo_arrow.gd", "res://material_maker/windows/sdf_builder/gizmo_arrow.tscn", "res://material_maker/windows/sdf_builder/preview_2d.gd", "res://material_maker/windows/sdf_builder/preview_2d.tscn", "res://material_maker/windows/sdf_builder/preview_3d.gd", "res://material_maker/windows/sdf_builder/preview_3d.tscn", "res://material_maker/windows/sdf_builder/sdf_builder.gd", "res://material_maker/windows/sdf_builder/sdf_builder.tscn", "res://material_maker/windows/sdf_builder/sdf_builder_tree.gd", "res://start.gd", "res://start.tscn", "res://material_maker/icons/icons.gd", "res://material_maker/windows/sdf_builder/gizmo.gdshader", "res://material_maker/windows/sdf_builder/preview_2d.gdshader", "res://material_maker/windows/sdf_builder/preview_3d.gdshader", "res://material_maker/panel_container.gd", "res://material_maker/main_window_projects_panel.gd", "res://addons/material_maker/shader_functions.tres", "res://addons/material_maker/engine/shader_base.gd", "res://splash_screen/rodz_labs_logo.png", "res://addons/material_maker/engine/shader_compute.gd", "res://addons/material_maker/engine/shader_material.gd", "res://splash_screen/splash_screen.gd", "res://splash_screen/splash_screen.gdshader", "res://splash_screen/splash_screen.tscn", "res://splash_screen/splash_title.png", "res://splash_screen/arrow.png", "res://addons/material_maker/engine/text_resource.gd", "res://splash_screen/splash_screen_bottom.gdshader", "res://material_maker/widgets/code_editor/code_editor.gd", "res://material_maker/widgets/code_editor/code_editor.tscn", "res://material_maker/panels/preview_2d/custom_size_dialog.gd", "res://material_maker/panels/preview_2d/custom_size_dialog.tscn", "res://material_maker/theme/green.tres", "res://material_maker/theme/birch.tres", "res://material_maker/theme/mangosteen.tres", "res://addons/material_maker/engine/nodes/gen_base.gd", "res://addons/material_maker/engine/nodes/gen_brush.gd", "res://addons/material_maker/engine/nodes/gen_buffer.gd", "res://addons/material_maker/engine/nodes/gen_comment.gd", "res://addons/material_maker/engine/nodes/gen_context.gd", "res://addons/material_maker/engine/nodes/gen_debug.gd", "res://addons/material_maker/engine/nodes/gen_export.gd", "res://addons/material_maker/engine/nodes/gen_graph.gd", "res://addons/material_maker/engine/nodes/gen_image.gd", "res://addons/material_maker/engine/nodes/gen_ios.gd", "res://addons/material_maker/engine/nodes/gen_iterate_buffer.gd", "res://addons/material_maker/engine/nodes/gen_material.gd", "res://addons/material_maker/engine/nodes/gen_remote.gd", "res://addons/material_maker/engine/nodes/gen_reroute.gd", "res://addons/material_maker/engine/nodes/gen_sdf.gd", "res://addons/material_maker/engine/nodes/gen_shader.gd", "res://addons/material_maker/engine/nodes/gen_switch.gd", "res://addons/material_maker/engine/nodes/gen_text.gd", "res://addons/material_maker/engine/nodes/gen_texture.gd", "res://addons/material_maker/engine/pipeline/compute_shader.gd", "res://addons/material_maker/engine/pipeline/pipeline.gd", "res://addons/material_maker/engine/pipeline/rendering_pipeline.gd", "res://material_maker/nodes/node_button.tscn", "res://material_maker/nodes/node_button.gd", "res://material_maker/icons/close.tres", "res://parse_args.tscn", "res://parse_args.gd", "res://splash_screen/backgrounds/pixelmuncher_golden_tiles.png", "res://addons/material_maker/engine/pipeline/texture.gd", "res://splash_screen/backgrounds/pavel_oliva_vintage_luggage.png", "res://splash_screen/backgrounds/pavel_oliva_treasures.png", "res://splash_screen/backgrounds/pavel_oliva_stylized_pavement.png", "res://splash_screen/backgrounds/pavel_oliva_pavement_generator.png", "res://splash_screen/backgrounds/pavel_oliva_lace.png", "res://splash_screen/backgrounds/pavel_oliva_flowing_lava.png", "res://splash_screen/backgrounds/pavel_oliva_cursed_planks.png", "res://splash_screen/backgrounds/pavel_oliva_celestial_floor.png", "res://splash_screen/backgrounds/pavel_oliva_carved_wood.png", "res://splash_screen/backgrounds/paulo_falcao_terminator_ball.tres", "res://material_maker/windows/export_taa/export_taa.gd", "res://addons/material_maker/engine/nodes/buffer_compute.tres", "res://material_maker/windows/export_taa/export_taa.tscn", "res://addons/material_maker/engine/nodes/iterate_buffer_compute.tres", "res://material_maker/windows/export_taa/divide_compute.tres", "res://material_maker/windows/export_taa/accumulate_compute.tres", "res://splash_screen/backgrounds/angel_beanbag_chair.png", "res://splash_screen/backgrounds/angel_soft_nurball.png", "res://splash_screen/backgrounds/cgmytro_old_doors.png", "res://splash_screen/backgrounds/cybereality_brutalism.png", "res://splash_screen/backgrounds/cybereality_dirty_tiles.png", "res://splash_screen/backgrounds/cybereality_future_visions.png", "res://splash_screen/backgrounds/droppedbeat_matrix_rain.tres", "res://splash_screen/backgrounds/droppedbeat_procedural_material.png", "res://splash_screen/backgrounds/droppedbeat_spiral_trails.tres", "res://splash_screen/backgrounds/droppedbeat_vending_machines.png", "res://splash_screen/backgrounds/oneiric_worlds_zefyr.png", "res://splash_screen/backgrounds/paulo_falcao_fractal_octahedron.tres", "res://splash_screen/backgrounds/paulo_falcao_green_thing.png", "res://addons/material_maker/map_generator/ao_fragment.tres", "res://addons/material_maker/map_generator/ao_vertex.tres", "res://addons/material_maker/map_generator/bvh_generator.gd", "res://addons/material_maker/map_generator/common_fragment.tres", "res://addons/material_maker/map_generator/curvature_generator.gd", "res://addons/material_maker/map_generator/curvature_vertex.tres", "res://addons/material_maker/map_generator/denoise_compute.tres", "res://addons/material_maker/map_generator/dilate_1_compute.tres", "res://addons/material_maker/map_generator/dilate_2_compute.tres", "res://addons/material_maker/map_generator/map_generator.gd", "res://addons/material_maker/map_generator/mesh_rendering_pipeline.gd", "res://addons/material_maker/map_generator/normalize_compute.tres", "res://addons/material_maker/map_generator/normal_fragment.tres", "res://addons/material_maker/map_generator/normal_vertex.tres", "res://addons/material_maker/map_generator/position_vertex.tres", "res://addons/material_maker/map_generator/seams_1_compute.tres", "res://addons/material_maker/map_generator/seams_2_compute.tres", "res://addons/material_maker/map_generator/tangent_vertex.tres", "res://addons/material_maker/engine/nodes/gen_meshmap.gd", "res://material_maker/projects_panel.tscn", "res://addons/flexible_layout/tab.svg", "res://addons/flexible_layout/flexible_tabs.tscn", "res://addons/flexible_layout/flexible_tabs.gd", "res://addons/flexible_layout/flexible_tab.tscn", "res://addons/flexible_layout/flexible_tab.gd", "res://addons/flexible_layout/flexible_overlay.tscn", "res://addons/flexible_layout/flexible_overlay.gd", "res://addons/flexible_layout/flexible_layout.tscn", "res://addons/flexible_layout/arrow.svg", "res://addons/flexible_layout/flexible_dragger.gd", "res://addons/flexible_layout/flexible_dragger.tscn", "res://addons/flexible_layout/flexible_layout.gd", "res://addons/material_maker/engine/nodes/gen_webcam.gd", "res://addons/material_maker/loaders/mesh_loader.gd", "res://addons/material_maker/loaders/obj_loader.gd", "res://material_maker/tools/painter/shaders/paint_shader_template.tres", "res://material_maker/tools/painter/shaders/t2v_fragment.tres", "res://material_maker/tools/painter/shaders/t2v_vertex.tres", "res://material_maker/tools/painter/shaders/v2t_fragment.tres", "res://material_maker/tools/painter/shaders/v2t_vertex.tres", "res://material_maker/tools/painter/shaders/brush.gdshader", "res://material_maker/tools/painter/shaders/brush_common_decl.gdshader", "res://material_maker/tools/painter/shaders/brush_pattern.gdshader", "res://material_maker/tools/painter/shaders/brush_stamp.gdshader", "res://material_maker/tools/painter/shaders/brush_uv_pattern.gdshader", "res://addons/material_maker/types/splines.gd", "res://material_maker/widgets/splines_edit/splines_dialog.gd", "res://material_maker/widgets/splines_edit/splines_dialog.tscn", "res://material_maker/widgets/splines_edit/splines_edit.gd", "res://material_maker/widgets/splines_edit/splines_edit.tscn", "res://material_maker/widgets/splines_edit/splines_editor.gd", "res://material_maker/widgets/splines_edit/splines_editor.tscn", "res://material_maker/widgets/splines_edit/splines_view.gd", "res://material_maker/widgets/splines_edit/splines_view.tscn", "res://addons/flexible_layout/undock.png", "res://addons/material_maker/engine/shader_error_handler.gd", "res://addons/material_maker/types/pixels.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.gd", "res://material_maker/widgets/pixels_edit/pixels_dialog.tscn", "res://material_maker/widgets/pixels_edit/pixels_edit.gd", "res://material_maker/widgets/pixels_edit/pixels_edit.tscn", "res://material_maker/widgets/pixels_edit/pixels_editor.gd", "res://material_maker/widgets/pixels_edit/pixels_editor.tscn", "res://material_maker/widgets/pixels_edit/pixels_view.gd", "res://material_maker/widgets/pixels_edit/pixels_view.tscn", "res://material_maker/windows/node_editor/parameter_pixels.gd", "res://material_maker/windows/node_editor/parameter_pixels.tscn", "res://material_maker/windows/node_editor/parameter_splines.gd", "res://material_maker/windows/node_editor/parameter_splines.tscn", "res://material_maker/widgets/gradient_editor/gradient_edit.gd", "res://material_maker/widgets/gradient_editor/gradient_edit.tscn", "res://material_maker/widgets/gradient_editor/gradient_edit_cursor.gd", "res://material_maker/widgets/gradient_editor/gradient_edit_cursor.tscn") include_filter="*.tmpl" exclude_filter="*.ptex,*.mmn,*.mmg" export_path="./material_maker_macosx.dmg.zip" From 6fed02dc58fbf7df92fa97a5411dc7a11560cd56 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sat, 3 Aug 2024 20:07:30 +0200 Subject: [PATCH 31/42] Increase port-zone and fix Reference panel Gradient preview --- .../panels/graph_edit/graph_edit.tscn | 4 ++-- .../panels/reference/gradient_slot.gd | 23 +++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/material_maker/panels/graph_edit/graph_edit.tscn b/material_maker/panels/graph_edit/graph_edit.tscn index d7d3e43e9..d637e90b3 100644 --- a/material_maker/panels/graph_edit/graph_edit.tscn +++ b/material_maker/panels/graph_edit/graph_edit.tscn @@ -23,8 +23,8 @@ anchor_right = 1.0 anchor_bottom = 1.0 offset_top = -1.49829 offset_bottom = -1.49829 -theme_override_constants/port_hotzone_inner_extent = 4 -theme_override_constants/port_hotzone_outer_extent = 4 +theme_override_constants/port_hotzone_inner_extent = 50 +theme_override_constants/port_hotzone_outer_extent = 25 grid_pattern = 1 right_disconnects = true show_zoom_label = true diff --git a/material_maker/panels/reference/gradient_slot.gd b/material_maker/panels/reference/gradient_slot.gd index 5a54c518d..2b0b0edc9 100644 --- a/material_maker/panels/reference/gradient_slot.gd +++ b/material_maker/panels/reference/gradient_slot.gd @@ -4,27 +4,36 @@ var gradient = MMGradient.new() signal clicked -func _ready() -> void: - pass # Replace with function body. func set_gradient(g) -> void: gradient = g - var shadertext = "shader_type canvas_item;\n" - shadertext += gradient.get_shader_params("my") - shadertext += gradient.get_shader("my") - shadertext += "void fragment() {\nCOLOR = my_gradient_fct(UV.x);\n}\n" - $ColorRect.material.shader.code = shadertext + var shader := "" + shader = "shader_type canvas_item;\n" + shader += gradient.get_shader_params("") + shader += gradient.get_shader("") + shader += "void fragment() { COLOR = _gradient_fct(UV.x); }" + $ColorRect.material.shader.code = shader + update_shader_parameters() + func select(b : bool) -> void: color = Color(1.0, 1.0, 1.0, 1.0) if b else Color(1.0, 1.0, 1.0, 0.0) + func _on_ColorSlot_gui_input(event : InputEvent): if event is InputEventMouseButton and event.pressed: emit_signal("clicked", self) + func _get_drag_data(_position): var preview = ColorRect.new() preview.material = $ColorRect.material preview.custom_minimum_size = Vector2(64, 16) set_drag_preview(preview) return gradient.serialize() + + +func update_shader_parameters() -> void: + var parameter_values : Dictionary = gradient.get_parameter_values("") + for n in parameter_values.keys(): + $ColorRect.material.set_shader_parameter(n, parameter_values[n]) From 84b839ed598c02b4d5479b2306b44c11862ac527 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sun, 4 Aug 2024 13:45:41 +0200 Subject: [PATCH 32/42] Improve ImagePicker ui --- material_maker/theme/modern.tres | 1 + .../image_picker_button.gd | 62 +++++++++++------- .../image_picker_button.tscn | 63 ++++++++++++++----- 3 files changed, 88 insertions(+), 38 deletions(-) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 7ee666087..0e674de06 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -582,6 +582,7 @@ MM_NodeFloatEdit/styles/normal = SubResource("StyleBoxFlat_8fogc") MM_NodeGradientEdit/base_type = &"Button" MM_NodeGradientEditPopup/base_type = &"PanelContainer" MM_NodeGradientEditPopup/styles/panel = SubResource("StyleBoxFlat_omwbs") +MM_NodeImageEdit/base_type = &"Button" MM_NodeOptionEdit/base_type = &"OptionButton" MM_NodeOptionEditPopup/base_type = &"PopupMenu" MM_NodeOptionEditPopup/styles/hover = SubResource("StyleBoxFlat_3j6py") diff --git a/material_maker/widgets/image_picker_button/image_picker_button.gd b/material_maker/widgets/image_picker_button/image_picker_button.gd index b2d468cf6..0d195ff45 100644 --- a/material_maker/widgets/image_picker_button/image_picker_button.gd +++ b/material_maker/widgets/image_picker_button/image_picker_button.gd @@ -1,27 +1,32 @@ -extends TextureButton +extends PanelContainer -var image_path = "" -var filetime : int = 0 - +var image_path := "" +var filetime: int = 0 signal on_file_selected(f) -func _init(): - set_size(Vector2(64, 64)) - size_flags_horizontal = Control.SIZE_SHRINK_CENTER | Control.SIZE_EXPAND +func _ready() -> void: + %Image.custom_minimum_size = Vector2(64, 64) + _on_mouse_exited() + func update_image() -> void: - if texture_normal == null: - texture_normal = ImageTexture.new() - set_size(Vector2(64, 64)) - size_flags_horizontal = Control.SIZE_SHRINK_CENTER | Control.SIZE_EXPAND - var image : Image = Image.load_from_file(image_path) - texture_normal.set_image(image) + if %Image.texture == null: + %Image.texture = ImageTexture.new() + + var image: Image = Image.load_from_file(image_path) + %Image.texture.set_image(image) queue_redraw() -func do_set_image_path(path) -> void: + +func _gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + open_image_dialog() + + +func do_set_image_path(path:String) -> void: if path == null: return image_path = path @@ -29,22 +34,19 @@ func do_set_image_path(path) -> void: tooltip_text = path filetime = get_filetime(image_path) -func set_image_path(path) -> void: + +func set_image_path(path:String) -> void: do_set_image_path(path) emit_signal("on_file_selected", path) -func get_filetime(file_path : String) -> int: + +func get_filetime(file_path: String) -> int: if FileAccess.file_exists(file_path): return FileAccess.get_modified_time(file_path) return 0 -func _on_Timer_timeout(): - var new_filetime : int = get_filetime(image_path) - if filetime != new_filetime: - update_image() - filetime = new_filetime -func _on_ImagePicker_pressed(): +func open_image_dialog() -> void: var dialog = preload("res://material_maker/windows/file_dialog/file_dialog.tscn").instantiate() dialog.min_size = Vector2(500, 500) dialog.access = FileDialog.ACCESS_FILESYSTEM @@ -61,5 +63,21 @@ func _on_ImagePicker_pressed(): if files.size() > 0: set_image_path(files[0]) + func on_drop_image_file(file_name : String) -> void: set_image_path(file_name) + + +func _on_timer_timeout() -> void: + var new_filetime : int = get_filetime(image_path) + if filetime != new_filetime: + update_image() + filetime = new_filetime + + +func _on_mouse_entered() -> void: + add_theme_stylebox_override("panel", get_theme_stylebox("hover")) + + +func _on_mouse_exited() -> void: + add_theme_stylebox_override("panel", get_theme_stylebox("normal")) diff --git a/material_maker/widgets/image_picker_button/image_picker_button.tscn b/material_maker/widgets/image_picker_button/image_picker_button.tscn index 912e698b8..9a6c7e31b 100644 --- a/material_maker/widgets/image_picker_button/image_picker_button.tscn +++ b/material_maker/widgets/image_picker_button/image_picker_button.tscn @@ -1,28 +1,59 @@ -[gd_scene load_steps=2 format=3 uid="uid://csobd8p72hgfx"] +[gd_scene load_steps=4 format=3 uid="uid://csobd8p72hgfx"] [ext_resource type="Script" path="res://material_maker/widgets/image_picker_button/image_picker_button.gd" id="2"] -[node name="ImagePicker" type="TextureButton"] +[sub_resource type="Shader" id="Shader_ttwu0"] +code = "shader_type canvas_item; + +uniform vec4 background_color_1 = vec4(0.4); +uniform vec4 background_color_2 = vec4(0.6); + +void fragment() { + vec2 uv = UV; + float checkerboard = mod(floor(uv.x*10.0)+floor(uv.y*10.0), 2.0); + COLOR.rgb = mix(background_color_1, background_color_2, checkerboard).rgb; +} +" + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_y2gye"] +shader = SubResource("Shader_ttwu0") +shader_parameter/background_color_1 = Vector4(0.4, 0.4, 0.4, 0.4) +shader_parameter/background_color_2 = Vector4(0.6, 0.6, 0.6, 0.6) + +[node name="ImageEdit" type="PanelContainer"] +offset_right = 180.0 +offset_bottom = 64.0 +theme_type_variation = &"MM_NodeImageEdit" +script = ExtResource("2") + +[node name="Image" type="TextureRect" parent="."] +unique_name_in_owner = true clip_contents = true custom_minimum_size = Vector2(64, 64) -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -32.0 -offset_top = -32.0 -offset_right = 32.0 -offset_bottom = 32.0 +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +mouse_filter = 2 +expand_mode = 1 +stretch_mode = 5 + +[node name="Transparency" type="ColorRect" parent="Image"] +show_behind_parent = true +material = SubResource("ShaderMaterial_y2gye") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -ignore_texture_size = true -stretch_mode = 5 -script = ExtResource("2") +size_flags_horizontal = 4 +size_flags_vertical = 4 +mouse_filter = 2 [node name="Timer" type="Timer" parent="."] wait_time = 2.0 autostart = true -[connection signal="pressed" from="." to="." method="_on_ImagePicker_pressed"] -[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] +[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] From 49b999c65ba7edbbc46319ff57f6ec3270e93221 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sun, 4 Aug 2024 14:21:46 +0200 Subject: [PATCH 33/42] Re-introduce minimum size This minimum size was previously ensured because empty labels were added to all the rows. This messed up a bunch of nodes that have lot's of ports with no settings or labels. --- material_maker/nodes/generic/generic.gd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/material_maker/nodes/generic/generic.gd b/material_maker/nodes/generic/generic.gd index e3e59d3d1..c4a18029f 100644 --- a/material_maker/nodes/generic/generic.gd +++ b/material_maker/nodes/generic/generic.gd @@ -464,9 +464,11 @@ func update_node() -> void: while get_child_count() < index: hsizer = HBoxContainer.new() hsizer.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL + hsizer.custom_minimum_size.y = 25 add_child(hsizer) set_slot(get_child_count()-1, false, 0, Color(), false, 0, Color()) hsizer = HBoxContainer.new() + hsizer.custom_minimum_size.y = 25 hsizer.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL add_child(hsizer) if label != "": From 03648729364fa15a138c89e3f622786e3a6d260b Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sun, 4 Aug 2024 15:05:56 +0200 Subject: [PATCH 34/42] Improve/fix Float Edit snapping Snapping (activated by pressing CTRL when dragging) now snaps to more useful increments based on the range of possible values of the field. --- material_maker/widgets/float_edit/float_edit.gd | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/material_maker/widgets/float_edit/float_edit.gd b/material_maker/widgets/float_edit/float_edit.gd index 0f5645cee..d218f2278 100644 --- a/material_maker/widgets/float_edit/float_edit.gd +++ b/material_maker/widgets/float_edit/float_edit.gd @@ -175,16 +175,23 @@ func _gui_input(event: InputEvent) -> void: var current_step := step if event.is_command_or_control_pressed(): - delta *= 2 + if step == 1: + current_step *= 5 + if step < 1: + if max_value-min_value > 50: + current_step = 5 + elif max_value-min_value > 1: + current_step = 1 + else: + current_step = 0.1 elif event.shift_pressed: delta *= 0.2 - if event.alt_pressed: - current_step *= 0.01 + var v: float = start_value + delta / (size.x / abs(max_value - min_value)) if current_step != 0: - v = min_value + floor((v - min_value)/current_step) * current_step + v = snappedf(v, current_step) if from_lower_bound and v > min_value: from_lower_bound = false From b4843421776b4f128acfe42da4b094eaec4d9144 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Sun, 4 Aug 2024 15:17:53 +0200 Subject: [PATCH 35/42] Fix HoverPressed stylebox for CheckBox buttons --- material_maker/nodes/generic/generic.gd | 1 + material_maker/theme/modern.tres | 2 ++ 2 files changed, 3 insertions(+) diff --git a/material_maker/nodes/generic/generic.gd b/material_maker/nodes/generic/generic.gd index c4a18029f..40a20d428 100644 --- a/material_maker/nodes/generic/generic.gd +++ b/material_maker/nodes/generic/generic.gd @@ -315,6 +315,7 @@ static func create_parameter_control(p : Dictionary, accept_float_expressions : control.custom_minimum_size.x = 80 elif p.type == "boolean": control = CheckBox.new() + control.theme_type_variation = "MM_NodeCheckbox" elif p.type == "color": control = ColorPickerButton.new() control.set_script(preload("res://material_maker/widgets/color_picker_button/color_picker_button.gd")) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index 0e674de06..db0d555eb 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -535,6 +535,7 @@ Button/colors/icon_pressed_color = Color(0.792157, 0.478431, 0.94902, 1) Button/styles/disabled = SubResource("StyleBoxFlat_inl5r") Button/styles/focus = SubResource("StyleBoxFlat_kvrsn") Button/styles/hover = SubResource("StyleBoxFlat_2qiie") +Button/styles/hover_pressed = SubResource("StyleBoxFlat_2qiie") Button/styles/normal = SubResource("StyleBoxFlat_rxikb") Button/styles/pressed = SubResource("StyleBoxFlat_rxikb") GraphEdit/colors/grid_major = Color(0.137255, 0.141176, 0.152941, 1) @@ -571,6 +572,7 @@ MM_FlexibleTab/base_type = &"TabBar" MM_FlexibleTab/constants/separation = 3 MM_MainBackground/base_type = &"PanelContainer" MM_MainBackground/styles/panel = SubResource("StyleBoxFlat_wqwm5") +MM_NodeCheckbox/base_type = &"Button" MM_NodeFloatEdit/base_type = &"Button" MM_NodeFloatEdit/font_sizes/font_size = 15 MM_NodeFloatEdit/fonts/font = SubResource("FontVariation_80ifi") From 6ef78b33dec5f9a6b0a5e1bd09bd99e429e0dca1 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Tue, 6 Aug 2024 13:11:16 +0200 Subject: [PATCH 36/42] Attempt at fixing the graph loading This is an attempt at fixing the graph not fully loading sometimes. --- addons/material_maker/engine/loader.gd | 2 +- addons/material_maker/engine/nodes/gen_base.gd | 2 +- addons/material_maker/engine/nodes/gen_buffer.gd | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/material_maker/engine/loader.gd b/addons/material_maker/engine/loader.gd index 75d6e8648..6eb8535dc 100644 --- a/addons/material_maker/engine/loader.gd +++ b/addons/material_maker/engine/loader.gd @@ -275,7 +275,7 @@ func create_gen(data : Dictionary, fix : bool = true) -> MMGenBase: if generator == null: print("LOADER: data not supported:"+str(data)) if generator != null: - var status = generator.deserialize(data) + var status = await generator.deserialize(data) return generator func get_generator_list() -> Array: diff --git a/addons/material_maker/engine/nodes/gen_base.gd b/addons/material_maker/engine/nodes/gen_base.gd index 70664bdd6..9e2b6ae5e 100644 --- a/addons/material_maker/engine/nodes/gen_base.gd +++ b/addons/material_maker/engine/nodes/gen_base.gd @@ -669,7 +669,7 @@ func _deserialize(_data : Dictionary) -> void: pass func deserialize(data : Dictionary) -> void: - _deserialize(data) + await _deserialize(data) if data.has("name"): name = data.name if data.has("node_position"): diff --git a/addons/material_maker/engine/nodes/gen_buffer.gd b/addons/material_maker/engine/nodes/gen_buffer.gd index b0a0fd238..2f63b6d1d 100644 --- a/addons/material_maker/engine/nodes/gen_buffer.gd +++ b/addons/material_maker/engine/nodes/gen_buffer.gd @@ -92,6 +92,8 @@ func update_shader() -> void: func do_update_shader() -> void: if ! is_instance_valid(self) or exiting: return + if not is_node_ready(): + await ready updating_shader = false var context : MMGenContext = MMGenContext.new() var source : ShaderCode From d9886e90254eac71ce9f35352aa5cefd11bed1d7 Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Thu, 8 Aug 2024 12:32:27 +0200 Subject: [PATCH 37/42] Decrease port-hotzone to fix reroute moving and right-click menu I had increased the hotzone so much, that the small reroute node wasn't even grabbable anymore. --- material_maker/nodes/reroute/reroute.gd | 7 +++++-- material_maker/panels/graph_edit/graph_edit.tscn | 2 -- material_maker/theme/modern.tres | 2 ++ .../widgets/image_picker_button/image_picker_button.gd | 7 ++++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/material_maker/nodes/reroute/reroute.gd b/material_maker/nodes/reroute/reroute.gd index 5fcfa1ad7..943e120cd 100644 --- a/material_maker/nodes/reroute/reroute.gd +++ b/material_maker/nodes/reroute/reroute.gd @@ -55,7 +55,10 @@ func update_preview(preview : Control = null): else: preview.set_generator(preview_source.generator, preview_source.output_index) -func _on_gui_input(event): + +func _input(event:InputEvent) -> void: + if not Rect2(Vector2(), size).has_point(get_local_mouse_position()): + return if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_RIGHT: accept_event() var menu : PopupMenu = PopupMenu.new() @@ -67,6 +70,7 @@ func _on_gui_input(event): menu.id_pressed.connect(self.on_context_menu) menu.popup(Rect2(get_global_mouse_position(), Vector2(0, 0))) + func on_context_menu(id : int): var old_value = generator.get_parameter("preview") if old_value != id and get_parent().get("undoredo") != null: @@ -103,4 +107,3 @@ func set_preview(v : int): set_theme_type("ReroutePreview") await get_tree().process_frame size = Vector2(0, 0) - diff --git a/material_maker/panels/graph_edit/graph_edit.tscn b/material_maker/panels/graph_edit/graph_edit.tscn index d637e90b3..481e089c3 100644 --- a/material_maker/panels/graph_edit/graph_edit.tscn +++ b/material_maker/panels/graph_edit/graph_edit.tscn @@ -23,8 +23,6 @@ anchor_right = 1.0 anchor_bottom = 1.0 offset_top = -1.49829 offset_bottom = -1.49829 -theme_override_constants/port_hotzone_inner_extent = 50 -theme_override_constants/port_hotzone_outer_extent = 25 grid_pattern = 1 right_disconnects = true show_zoom_label = true diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index db0d555eb..cf2b2872c 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -540,6 +540,8 @@ Button/styles/normal = SubResource("StyleBoxFlat_rxikb") Button/styles/pressed = SubResource("StyleBoxFlat_rxikb") GraphEdit/colors/grid_major = Color(0.137255, 0.141176, 0.152941, 1) GraphEdit/colors/grid_minor = Color(0.137255, 0.141176, 0.152941, 1) +GraphEdit/constants/port_hotzone_inner_extent = 8 +GraphEdit/constants/port_hotzone_outer_extent = 50 GraphEdit/styles/menu_panel = SubResource("StyleBoxFlat_pxlc8") GraphEdit/styles/panel = SubResource("StyleBoxEmpty_62l4s") GraphNode/colors/portpreview_color = Color(0.89059, 0.89059, 0.89059, 1) diff --git a/material_maker/widgets/image_picker_button/image_picker_button.gd b/material_maker/widgets/image_picker_button/image_picker_button.gd index 0d195ff45..bbd15e881 100644 --- a/material_maker/widgets/image_picker_button/image_picker_button.gd +++ b/material_maker/widgets/image_picker_button/image_picker_button.gd @@ -16,9 +16,10 @@ func update_image() -> void: if %Image.texture == null: %Image.texture = ImageTexture.new() - var image: Image = Image.load_from_file(image_path) - %Image.texture.set_image(image) - queue_redraw() + if FileAccess.file_exists(image_path): + var image: Image = Image.load_from_file(image_path) + %Image.texture.set_image(image) + queue_redraw() func _gui_input(event: InputEvent) -> void: From ea3aba2bf85048b0653e7f635b63b4e92bf984c8 Mon Sep 17 00:00:00 2001 From: Rodolphe Suescun Date: Fri, 16 Aug 2024 12:20:10 +0200 Subject: [PATCH 38/42] Updated gradient type for constant interpolation --- addons/material_maker/types/gradient.gd | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/addons/material_maker/types/gradient.gd b/addons/material_maker/types/gradient.gd index 82d9f1a6b..37871ba9f 100644 --- a/addons/material_maker/types/gradient.gd +++ b/addons/material_maker/types/gradient.gd @@ -117,11 +117,11 @@ func get_shader(parameter_name : String) -> String: match interpolation: 0: if points.size() > 0: - shader += " if (x < 0.5*(%s+%s)) {\n" % [ pv(parameter_name, 0), pv(parameter_name, 1) ] + shader += " if (x < %s) {\n" % pv(parameter_name, 1) shader += " return "+pc(parameter_name, 0)+";\n" var s = points.size()-1 for i in range(1, s): - shader += " } else if (x < 0.5*(%s+%s)) {\n" % [ pv(parameter_name, i), pv(parameter_name, i+1) ] + shader += " } else if (x < %s) {\n" % pv(parameter_name, i+1) shader += " return "+pc(parameter_name, i)+";\n" shader += " }\n" shader += " return "+pc(parameter_name, s)+";\n" @@ -174,8 +174,17 @@ func get_shader(parameter_name : String) -> String: func serialize() -> Dictionary: sort() var rv = [] - for p in points: - rv.append({ pos=p.v, r=p.c.r, g=p.c.g, b=p.c.b, a=p.c.a }) + if interpolation == 0: + var p : Point = points[0] + rv.append({ pos=0, r=p.c.r, g=p.c.g, b=p.c.b, a=p.c.a }) + for i in range(1, points.size()): + var next_p : Point = points[i] + rv.append({ pos=next_p.v-0.00001, r=p.c.r, g=p.c.g, b=p.c.b, a=p.c.a }) + p = next_p + rv.append({ pos=next_p.v+0.00001, r=p.c.r, g=p.c.g, b=p.c.b, a=p.c.a }) + else: + for p in points: + rv.append({ pos=p.v, r=p.c.r, g=p.c.g, b=p.c.b, a=p.c.a }) rv = { type="Gradient", points=rv, interpolation=interpolation } return rv @@ -185,12 +194,20 @@ func deserialize(v) -> void: for i in v: if !i.has("a"): i.a = 1.0 add_point(i.pos, Color(i.r, i.g, i.b, i.a)) + interpolation = 1 elif typeof(v) == TYPE_DICTIONARY and v.has("type") && v.type == "Gradient": for i in v.points: if !i.has("a"): i.a = 1.0 add_point(i.pos, Color(i.r, i.g, i.b, i.a)) if v.has("interpolation"): interpolation = int(v.interpolation) + if interpolation == 0: + for i in range(points.size()-1, 0, -1): + if points[i].c == points[i-1].c: + points.remove_at(i) + else: + points[i].v = 0.5*(points[i-1].v+points[i].v) + points[0].v = 0 else: interpolation = 1 elif typeof(v) == TYPE_OBJECT and v.get_script() == get_script(): From 8405d4a078c70955404b9c2757b074fae7b72e47 Mon Sep 17 00:00:00 2001 From: Rodolphe Suescun Date: Fri, 16 Aug 2024 12:21:35 +0200 Subject: [PATCH 39/42] Fixed gradient interpolation names --- material_maker/widgets/gradient_editor/gradient_popup.tscn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/material_maker/widgets/gradient_editor/gradient_popup.tscn b/material_maker/widgets/gradient_editor/gradient_popup.tscn index 7b21951eb..0cd64794d 100644 --- a/material_maker/widgets/gradient_editor/gradient_popup.tscn +++ b/material_maker/widgets/gradient_editor/gradient_popup.tscn @@ -59,9 +59,9 @@ item_count = 4 popup/item_0/text = "Constant" popup/item_1/text = "Linear" popup/item_1/id = 1 -popup/item_2/text = "Cubic?" +popup/item_2/text = "SmoothStep" popup/item_2/id = 2 -popup/item_3/text = "Huh?" +popup/item_3/text = "Cubic" popup/item_3/id = 3 [node name="Pin" type="Button" parent="Panel/VBox/HBox"] From 7b4639c62c15f73997d6586f000eb105f3e8cb7f Mon Sep 17 00:00:00 2001 From: Jowan-Spooner Date: Fri, 16 Aug 2024 16:23:34 +0200 Subject: [PATCH 40/42] Fix icon_pressed_hover color --- material_maker/theme/modern.tres | 1 + material_maker/widgets/gradient_editor/gradient_popup.tscn | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/material_maker/theme/modern.tres b/material_maker/theme/modern.tres index cf2b2872c..0790e9363 100644 --- a/material_maker/theme/modern.tres +++ b/material_maker/theme/modern.tres @@ -531,6 +531,7 @@ corner_radius_bottom_left = 3 [resource] default_font = ExtResource("1_hqoqt") default_font_size = 16 +Button/colors/icon_hover_pressed_color = Color(0.874128, 0.694643, 0.972002, 1) Button/colors/icon_pressed_color = Color(0.792157, 0.478431, 0.94902, 1) Button/styles/disabled = SubResource("StyleBoxFlat_inl5r") Button/styles/focus = SubResource("StyleBoxFlat_kvrsn") diff --git a/material_maker/widgets/gradient_editor/gradient_popup.tscn b/material_maker/widgets/gradient_editor/gradient_popup.tscn index 0cd64794d..48bdddb51 100644 --- a/material_maker/widgets/gradient_editor/gradient_popup.tscn +++ b/material_maker/widgets/gradient_editor/gradient_popup.tscn @@ -68,7 +68,6 @@ popup/item_3/id = 3 unique_name_in_owner = true layout_mode = 2 tooltip_text = "Pin" -theme_override_colors/icon_pressed_color = Color(0.850395, 0.313357, 0.714746, 1) toggle_mode = true icon = ExtResource("3_bxwrk") flat = true From dc3a708d17b74f3739bf30df8f765e049a6b06be Mon Sep 17 00:00:00 2001 From: Rodolphe Suescun Date: Sun, 18 Aug 2024 07:47:50 +0200 Subject: [PATCH 41/42] Improved gradient editor cursor edge color --- .../gradient_editor/gradient_edit_cursor.gd | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/material_maker/widgets/gradient_editor/gradient_edit_cursor.gd b/material_maker/widgets/gradient_editor/gradient_edit_cursor.gd index 699ee033a..845bbf29c 100644 --- a/material_maker/widgets/gradient_editor/gradient_edit_cursor.gd +++ b/material_maker/widgets/gradient_editor/gradient_edit_cursor.gd @@ -12,15 +12,15 @@ var cursor_index: int: cursor_index = val # Reference to the GradientEdit -var gradient_edit: Control = null +var gradient_edit : Control = null # Depends on the height of the GradientEdit -var width: float = 10 +var width : float = 10 enum Modes {IDLE, SLIDING, PREVIEW} -var mode := Modes.IDLE +var mode : Modes = Modes.IDLE -var slide_start_point := 0.0 +var slide_start_point : float = 0.0 func _ready() -> void: @@ -32,20 +32,20 @@ func _ready() -> void: func _draw() -> void: - var HEIGHT := size.y - var WIDTH := size.y/2.0 + var HEIGHT : float = size.y + var WIDTH : float = size.y/2.0 # Define the HOUSE shape var polygon := PackedVector2Array([Vector2(0, HEIGHT*0.75), Vector2(WIDTH*0.5, HEIGHT*0.5), Vector2(WIDTH, HEIGHT*0.75), Vector2(WIDTH, HEIGHT), Vector2(0, HEIGHT), Vector2(0, HEIGHT*0.75)]) draw_colored_polygon(polygon, display_color) - var outline_color := Color.BLACK if (display_color.v > 0.5 and display_color.s < 0.6) else Color.WHITE + var outline_color : Color = Color.BLACK if (display_color.get_luminance() > 0.5) else Color.WHITE draw_polyline(polygon, outline_color) draw_dashed_line(Vector2(WIDTH/2, 0), Vector2(WIDTH/2, HEIGHT*0.5), outline_color) # Draw the TRIANGLE (house roof) shape if gradient_edit.active_cursor == cursor_index: - var active_polygon := PackedVector2Array([Vector2(0, HEIGHT*0.75), Vector2(WIDTH*0.5, HEIGHT*0.5), Vector2(WIDTH, HEIGHT*0.75), Vector2(0, HEIGHT*0.75)]) + var active_polygon : PackedVector2Array = PackedVector2Array([Vector2(0, HEIGHT*0.75), Vector2(WIDTH*0.5, HEIGHT*0.5), Vector2(WIDTH, HEIGHT*0.75), Vector2(0, HEIGHT*0.75)]) draw_colored_polygon(active_polygon, outline_color) From 99fd169884488e6788420cb402ebeaab8e07ed27 Mon Sep 17 00:00:00 2001 From: Rodolphe Suescun Date: Sun, 18 Aug 2024 08:56:23 +0200 Subject: [PATCH 42/42] Fixed port type colors in doc --- material_maker/doc/nodes_common.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/material_maker/doc/nodes_common.rst b/material_maker/doc/nodes_common.rst index b07478fa3..0ba6a6d7e 100644 --- a/material_maker/doc/nodes_common.rst +++ b/material_maker/doc/nodes_common.rst @@ -18,17 +18,17 @@ connected to several node inputs. Each node output (and input) can be: * a **color image** (shown in blue) -* an **RGBA image** (shown in semi-transparent green) +* an **RGBA image** (shown in blue) * a **2D signed distance function** (shown in orange) -* a **3D signed distance function** (shown in red), with or without a color index +* a **3D signed distance function** (shown in orange-red), with or without a color index -* a color or greyscale **3D texture** (shown in fuchsia), that can be associated to +* a color or greyscale **3D texture** (shown in violet), that can be associated to a color index, which makes it possible to associate several 3D textures in a single 3D scene -* **Fill information** (shown in light orange), that contain the bounding box of the +* **Fill information** (shown in green), that contain the bounding box of the area. This information is generated by the Fill node and a few pattern nodes, and is used as input by the Fill companion nodes