[gd_scene format=3 uid="uid://bfn70q6drs4oy"] [ext_resource type="Script" uid="uid://dbcyurv4m7mka" path="res://scripts/tools/skin_shader_generator.gd" id="1_script"] [ext_resource type="Texture2D" uid="uid://c1i00chwkmxtw" path="res://assets/characters/Oldpop_oldpop-tex.png" id="2_ac8h2"] [node name="SkinShaderGenerator" type="Control"] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_script") [node name="MainHSplit" type="HSplitContainer" parent="."] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 offset_left = 6.0 offset_top = 6.0 offset_right = -6.0 offset_bottom = -6.0 grow_horizontal = 2 grow_vertical = 2 split_offsets = PackedInt32Array(480) split_offset = 480 [node name="UVEditorVBox" type="VBoxContainer" parent="MainHSplit"] custom_minimum_size = Vector2(480, 0) layout_mode = 2 [node name="UVPanel" type="PanelContainer" parent="MainHSplit/UVEditorVBox"] layout_mode = 2 size_flags_vertical = 3 [node name="UVPreview" type="TextureRect" parent="MainHSplit/UVEditorVBox/UVPanel"] unique_name_in_owner = true layout_mode = 2 texture = ExtResource("2_ac8h2") expand_mode = 1 stretch_mode = 5 [node name="UVOverlay" type="Control" parent="MainHSplit/UVEditorVBox/UVPanel"] unique_name_in_owner = true layout_mode = 2 [node name="UVToolsHBox" type="HBoxContainer" parent="MainHSplit/UVEditorVBox"] custom_minimum_size = Vector2(0, 28) layout_mode = 2 [node name="ShowAllUVs" type="CheckBox" parent="MainHSplit/UVEditorVBox/UVToolsHBox"] unique_name_in_owner = true layout_mode = 2 text = "Show All UVs" [node name="FlipUV" type="CheckBox" parent="MainHSplit/UVEditorVBox/UVToolsHBox"] unique_name_in_owner = true layout_mode = 2 text = "Flip UV" [node name="HideRef" type="CheckBox" parent="MainHSplit/UVEditorVBox/UVToolsHBox"] unique_name_in_owner = true layout_mode = 2 text = "Hide Ref" [node name="RightHSplit" type="HSplitContainer" parent="MainHSplit"] layout_mode = 2 split_offsets = PackedInt32Array(400) split_offset = 400 [node name="PreviewVBox" type="VBoxContainer" parent="MainHSplit/RightHSplit"] layout_mode = 2 [node name="ViewportPanel" type="PanelContainer" parent="MainHSplit/RightHSplit/PreviewVBox"] layout_mode = 2 size_flags_vertical = 3 [node name="ViewportContainer" type="SubViewportContainer" parent="MainHSplit/RightHSplit/PreviewVBox/ViewportPanel"] layout_mode = 2 stretch = true [node name="Viewport3D" type="SubViewport" parent="MainHSplit/RightHSplit/PreviewVBox/ViewportPanel/ViewportContainer"] unique_name_in_owner = true own_world_3d = true handle_input_locally = false msaa_3d = 2 size = Vector2i(400, 646) render_target_update_mode = 4 [node name="ZoomHBox" type="HBoxContainer" parent="MainHSplit/RightHSplit/PreviewVBox"] layout_mode = 2 [node name="ZoomMinus" type="Button" parent="MainHSplit/RightHSplit/PreviewVBox/ZoomHBox"] unique_name_in_owner = true layout_mode = 2 text = " − " [node name="ZoomSlider" type="HSlider" parent="MainHSplit/RightHSplit/PreviewVBox/ZoomHBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 1 min_value = 0.3 max_value = 10.0 step = 0.1 value = 1.8 [node name="ZoomPlus" type="Button" parent="MainHSplit/RightHSplit/PreviewVBox/ZoomHBox"] unique_name_in_owner = true layout_mode = 2 text = " + " [node name="InspectedLabel" type="Label" parent="MainHSplit/RightHSplit/PreviewVBox"] unique_name_in_owner = true layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 0, 1) horizontal_alignment = 1 [node name="TabContainer" type="TabContainer" parent="MainHSplit/RightHSplit"] unique_name_in_owner = true custom_minimum_size = Vector2(360, 0) layout_mode = 2 current_tab = 1 [node name="Scene Tree" type="ScrollContainer" parent="MainHSplit/RightHSplit/TabContainer"] visible = false layout_mode = 2 metadata/_tab_index = 0 [node name="MeshList" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Scene Tree"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 [node name="Inspector" type="ScrollContainer" parent="MainHSplit/RightHSplit/TabContainer"] layout_mode = 2 horizontal_scroll_mode = 0 metadata/_tab_index = 1 [node name="PIPanel" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 theme_override_constants/separation = 12 [node name="Margin" type="MarginContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel"] layout_mode = 2 theme_override_constants/margin_left = 6 theme_override_constants/margin_top = 10 theme_override_constants/margin_right = 6 theme_override_constants/margin_bottom = 6 [node name="VBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin"] layout_mode = 2 theme_override_constants/separation = 12 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox"] layout_mode = 2 theme_override_colors/font_color = Color(0, 1, 1, 1) text = "▼ Part Properties" [node name="PIName" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox"] unique_name_in_owner = true layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 0, 1) text = "(no part selected)" [node name="Grid" type="GridContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox"] layout_mode = 2 columns = 2 [node name="Label4" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid"] layout_mode = 2 text = "Ref UV Img:" [node name="PIRefHBox" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid"] layout_mode = 2 [node name="PIRefBtn" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid/PIRefHBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "Default" text_overrun_behavior = 3 [node name="PIRefClear" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid/PIRefHBox"] unique_name_in_owner = true layout_mode = 2 text = "✕" [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid"] layout_mode = 2 text = "Category:" [node name="PICategory" type="OptionButton" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 [node name="Label2" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid"] layout_mode = 2 text = "Fill Color:" [node name="PIColor" type="ColorPickerButton" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid"] unique_name_in_owner = true custom_minimum_size = Vector2(60, 0) layout_mode = 2 color = Color(1, 1, 1, 1) [node name="Label3" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid"] layout_mode = 2 text = "Sticker Img:" [node name="PIImageHBox" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid"] layout_mode = 2 [node name="PIImageBtn" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid/PIImageHBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "None" text_overrun_behavior = 3 [node name="PIImageClear" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/Grid/PIImageHBox"] unique_name_in_owner = true layout_mode = 2 text = "✕" [node name="TransformVBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox"] unique_name_in_owner = true layout_mode = 2 theme_override_constants/separation = 8 [node name="HBox" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox/HBox"] layout_mode = 2 text = "Pos X:" [node name="PIPosX" type="HSlider" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox/HBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 min_value = -1.0 max_value = 2.0 step = 0.01 [node name="HBox2" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox/HBox2"] layout_mode = 2 text = "Pos Y:" [node name="PIPosY" type="HSlider" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox/HBox2"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 min_value = -1.0 max_value = 2.0 step = 0.01 [node name="HBox3" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox/HBox3"] layout_mode = 2 text = "Scale:" [node name="PIScale" type="HSlider" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox/HBox3"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 min_value = 0.01 max_value = 5.0 step = 0.01 value = 1.0 [node name="HBox4" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox/HBox4"] layout_mode = 2 text = "Rotate:" [node name="PIRot" type="HSlider" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/TransformVBox/HBox4"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 min_value = -180.0 max_value = 180.0 [node name="HSeparator" type="HSeparator" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox"] layout_mode = 2 [node name="MaskSection" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox"] layout_mode = 2 theme_override_constants/separation = 8 [node name="HBox" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/MaskSection"] layout_mode = 2 [node name="Label2" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/MaskSection/HBox"] layout_mode = 2 size_flags_horizontal = 3 theme_override_colors/font_color = Color(1, 1, 0, 1) text = "UV Masks (isolate regions):" [node name="AddMaskBtn" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/MaskSection/HBox"] unique_name_in_owner = true layout_mode = 2 text = "+ Add" [node name="MaskList" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/MaskSection"] unique_name_in_owner = true layout_mode = 2 [node name="DrawingToolbar" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/MaskSection"] unique_name_in_owner = true visible = false layout_mode = 2 [node name="DrawStatus" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/MaskSection/DrawingToolbar"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "Editing Mask A..." [node name="FinishBtn" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/MaskSection/DrawingToolbar"] unique_name_in_owner = true layout_mode = 2 text = "✓ Done" [node name="ClearBtn" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Inspector/PIPanel/Margin/VBox/MaskSection/DrawingToolbar"] unique_name_in_owner = true layout_mode = 2 text = "✕ Clear" [node name="Settings" type="ScrollContainer" parent="MainHSplit/RightHSplit/TabContainer"] visible = false layout_mode = 2 horizontal_scroll_mode = 0 metadata/_tab_index = 2 [node name="VBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Settings"] layout_mode = 2 size_flags_horizontal = 3 theme_override_constants/separation = 10 [node name="Margin" type="MarginContainer" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox"] layout_mode = 2 theme_override_constants/margin_left = 6 theme_override_constants/margin_top = 10 theme_override_constants/margin_right = 6 theme_override_constants/margin_bottom = 6 [node name="VBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin"] layout_mode = 2 theme_override_constants/separation = 12 [node name="CharBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/CharBox"] layout_mode = 2 theme_override_colors/font_color = Color(0.5, 1, 1, 1) text = "Active Character:" [node name="CharacterOpt" type="OptionButton" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/CharBox"] unique_name_in_owner = true layout_mode = 2 [node name="WireBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/WireBox"] layout_mode = 2 theme_override_colors/font_color = Color(0.5, 1, 1, 1) text = "Wireframe Opacity:" [node name="WireOpacity" type="HSlider" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/WireBox"] unique_name_in_owner = true layout_mode = 2 max_value = 1.0 step = 0.05 value = 0.07 [node name="HBox" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/WireBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/WireBox/HBox"] layout_mode = 2 text = "Color:" [node name="WireColor" type="OptionButton" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/WireBox/HBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 selected = 0 [node name="HSeparator" type="HSeparator" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox"] layout_mode = 2 [node name="PresetBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/PresetBox"] layout_mode = 2 theme_override_colors/font_color = Color(0.5, 1, 1, 1) text = "Session Presets:" [node name="HBox" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/PresetBox"] layout_mode = 2 [node name="SavePresetBtn" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/PresetBox/HBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "💾 Save JSON" [node name="LoadPresetBtn" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox/PresetBox/HBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "📂 Load JSON" [node name="Label2" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Settings/VBox/Margin/VBox"] layout_mode = 2 theme_override_colors/font_color = Color(0.5, 0.5, 0.5, 1) theme_override_font_sizes/font_size = 12 text = "Workflow: 1. Click mesh in Scene Tree. 2. Set Category & Color in Inspector. 3. Add Sticker/Decal if needed. 4. Hit GENERATE to bake." autowrap_mode = 3 [node name="Export" type="ScrollContainer" parent="MainHSplit/RightHSplit/TabContainer"] visible = false layout_mode = 2 horizontal_scroll_mode = 0 metadata/_tab_index = 3 [node name="ExportVBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Export"] layout_mode = 2 size_flags_horizontal = 3 [node name="Margin" type="MarginContainer" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox"] layout_mode = 2 theme_override_constants/margin_left = 10 theme_override_constants/margin_top = 10 theme_override_constants/margin_right = 10 theme_override_constants/margin_bottom = 10 [node name="VBox" type="VBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin"] layout_mode = 2 theme_override_constants/separation = 12 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox"] layout_mode = 2 theme_override_colors/font_color = Color(0, 1, 0.5, 1) text = "▼ Export Assets" [node name="PrefixLabel" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox"] unique_name_in_owner = true layout_mode = 2 theme_override_colors/font_color = Color(0, 1, 0.5, 1) theme_override_font_sizes/font_size = 13 text = "oldpop_skin_" horizontal_alignment = 2 [node name="HBoxContainer" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox/HBoxContainer"] layout_mode = 2 text = "Name:" [node name="ExportName" type="LineEdit" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox/HBoxContainer"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 placeholder_text = "custom_name" [node name="HBoxContainer2" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox/HBoxContainer2"] layout_mode = 2 text = "Target Folder:" [node name="ExportFolder" type="OptionButton" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox/HBoxContainer2"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 [node name="HBoxContainer3" type="HBoxContainer" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox"] layout_mode = 2 [node name="Label" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox/HBoxContainer3"] layout_mode = 2 text = "Mode:" [node name="ExportMode" type="OptionButton" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox/HBoxContainer3"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 [node name="GenerateBtn" type="Button" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox"] unique_name_in_owner = true custom_minimum_size = Vector2(0, 44) layout_mode = 2 text = "🚀 GENERATE & EXPORT" [node name="StatusLabel" type="Label" parent="MainHSplit/RightHSplit/TabContainer/Export/ExportVBox/Margin/VBox"] unique_name_in_owner = true layout_mode = 2 horizontal_alignment = 1