Ported the actions buttons for mdr ed's ui.

This commit is contained in:
Relintai 2022-04-13 20:39:17 +02:00
parent 496b1b7f34
commit 34607ff21e
6 changed files with 216 additions and 801 deletions

View File

@ -31,7 +31,7 @@ if 'TOOLS_ENABLED' in env["CPPDEFINES"]:
module_env.add_source_files(env.modules_sources,"editor/utilities/mdr_ed_mesh_outline.cpp")
module_env.add_source_files(env.modules_sources,"editor/utilities/mdr_ed_mesh_utils.cpp")
module_env.add_source_files(env.modules_sources,"editor/uv_editor/mdi_ed_uv_previewer.cpp")
module_env.add_source_files(env.modules_sources,"editor/uv_editor/mdr_ed_uv_previewer.cpp")
module_env.add_source_files(env.modules_sources,"editor/uv_editor/mdr_uv_rect_editor.cpp")
module_env.add_source_files(env.modules_sources,"editor/uv_editor/mdr_uv_rect_view_node.cpp")
module_env.add_source_files(env.modules_sources,"editor/uv_editor/mdr_uv_rect_editor_popup.cpp")

View File

@ -22,8 +22,15 @@ SOFTWARE.
#include "mdi_ed.h"
#include "./uv_editor/mdr_ed_uv_previewer.h"
#include "./uv_editor/mdr_uv_rect_editor_popup.h"
#include "core/os/keyboard.h"
#include "mdi_ed_plugin.h"
#include "scene/gui/box_container.h"
#include "scene/gui/button.h"
#include "scene/gui/label.h"
#include "scene/gui/scroll_container.h"
#include "scene/gui/separator.h"
void MDIEd::_enter_tree() {
/*
@ -310,10 +317,6 @@ void MDIEd::on_pivot_world_origin_toggled(bool on) {
if (on) {
_plugin->set_pivot_world_origin();
}
/*
if on:
_plugin.set_pivot_world_origin()
*/
}
void MDIEd::on_visual_indicator_outline_toggled(bool on) {
_plugin->visual_indicator_outline_set(on);
@ -346,783 +349,195 @@ void MDIEd::_on_flip_face_pressed() {
}
MDIEd::MDIEd() {
/*
[gd_scene load_steps=9 format=2]
[ext_resource path="res://addons/mesh_data_resource_editor/MDIEd.gd" type="Script" id=1]
[ext_resource path="res://addons/mesh_data_resource_editor/button_groups/vertex_position_operation_bg.tres" type="ButtonGroup" id=2]
[ext_resource path="res://addons/mesh_data_resource_editor/UVEditor.gd" type="Script" id=3]
[ext_resource path="res://addons/mesh_data_resource_editor/uv_editor/UVEditor.tscn" type="PackedScene" id=4]
[ext_resource path="res://addons/mesh_data_resource_editor/button_groups/edit_mode_button_group.tres" type="ButtonGroup" id=5]
[ext_resource path="res://addons/mesh_data_resource_editor/uv_editor/UVEditorPopup.gd" type="Script" id=6]
[ext_resource path="res://addons/mesh_data_resource_editor/button_groups/pivot_button_group.tres" type="ButtonGroup" id=7]
[ext_resource path="res://addons/mesh_data_resource_editor/button_groups/handle_selection_typen_group.tres" type="ButtonGroup" id=8]
[node name="MDIEd" type="PanelContainer"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
uv_preview_path = NodePath("VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/UVDisplay")
uv_editor_path = NodePath("Popups/UVEditorPopup/UVEditor")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
margin_left = 7.0
margin_top = 7.0
margin_right = 1017.0
margin_bottom = 593.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Actions" type="VBoxContainer" parent="VBoxContainer"]
margin_right = 1010.0
margin_bottom = 68.0
[node name="Actions" type="HBoxContainer" parent="VBoxContainer/Actions"]
margin_right = 1010.0
margin_bottom = 68.0
alignment = 1
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/Actions/Actions"]
margin_left = 457.0
margin_right = 466.0
margin_bottom = 68.0
[node name="Label" type="Label" parent="VBoxContainer/Actions/Actions/VBoxContainer"]
margin_right = 9.0
margin_bottom = 20.0
hint_tooltip = "Edit Mode"
mouse_filter = 0
size_flags_vertical = 7
text = "E"
align = 1
valign = 1
[node name="Label2" type="Label" parent="VBoxContainer/Actions/Actions/VBoxContainer"]
margin_top = 24.0
margin_right = 9.0
margin_bottom = 44.0
hint_tooltip = "Active Axis"
mouse_filter = 0
size_flags_vertical = 7
text = "A"
align = 1
valign = 1
[node name="Label3" type="Label" parent="VBoxContainer/Actions/Actions/VBoxContainer"]
margin_top = 48.0
margin_right = 9.0
margin_bottom = 68.0
hint_tooltip = "Selection Mode"
mouse_filter = 0
size_flags_vertical = 7
text = "S"
align = 1
valign = 1
[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/Actions/Actions"]
margin_left = 470.0
margin_right = 553.0
margin_bottom = 68.0
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/Actions/Actions/VBoxContainer2"]
margin_right = 83.0
margin_bottom = 20.0
[node name="Translate" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer"]
margin_right = 25.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Translate"
size_flags_horizontal = 3
toggle_mode = true
pressed = true
group = ExtResource( 2 )
text = "T"
[node name="Rotate" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer"]
margin_left = 29.0
margin_right = 54.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Rotate"
size_flags_horizontal = 3
toggle_mode = true
group = ExtResource( 2 )
text = "R"
[node name="Scale" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer"]
margin_left = 58.0
margin_right = 83.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Scale"
size_flags_horizontal = 3
toggle_mode = true
group = ExtResource( 2 )
text = "S"
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/Actions/Actions/VBoxContainer2"]
margin_top = 24.0
margin_right = 83.0
margin_bottom = 44.0
[node name="AxisX" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer2"]
margin_right = 25.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
size_flags_horizontal = 3
toggle_mode = true
pressed = true
text = "X"
[node name="AxisY" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer2"]
margin_left = 29.0
margin_right = 54.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
size_flags_horizontal = 3
toggle_mode = true
pressed = true
text = "Y"
[node name="AxisZ" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer2"]
margin_left = 58.0
margin_right = 83.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
size_flags_horizontal = 3
toggle_mode = true
pressed = true
text = "Z"
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/Actions/Actions/VBoxContainer2"]
margin_top = 48.0
margin_right = 83.0
margin_bottom = 68.0
[node name="Vertex" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3"]
margin_right = 25.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Vertex"
size_flags_horizontal = 3
toggle_mode = true
pressed = true
group = ExtResource( 5 )
text = "V"
[node name="Edge" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3"]
margin_left = 29.0
margin_right = 54.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Edge"
size_flags_horizontal = 3
toggle_mode = true
group = ExtResource( 5 )
text = "E"
[node name="Face" type="Button" parent="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3"]
margin_left = 58.0
margin_right = 83.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Face"
size_flags_horizontal = 3
toggle_mode = true
group = ExtResource( 5 )
text = "F"
[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
margin_top = 72.0
margin_right = 1010.0
margin_bottom = 76.0
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"]
margin_top = 80.0
margin_right = 1010.0
margin_bottom = 586.0
size_flags_horizontal = 3
size_flags_vertical = 3
scroll_horizontal_enabled = false
[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/ScrollContainer"]
margin_right = 998.0
margin_bottom = 674.0
size_flags_horizontal = 3
[node name="HBoxContainer6" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_right = 998.0
margin_bottom = 20.0
[node name="Label4" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer6"]
margin_right = 10.0
margin_bottom = 20.0
hint_tooltip = "Handle Selection type."
mouse_filter = 0
size_flags_vertical = 7
text = "H"
align = 1
valign = 1
[node name="Front" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer6"]
margin_left = 14.0
margin_right = 339.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "
"
size_flags_horizontal = 3
toggle_mode = true
pressed = true
group = ExtResource( 8 )
text = "F"
[node name="Back" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer6"]
margin_left = 343.0
margin_right = 668.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Only select handles that face away
the camera."
size_flags_horizontal = 3
toggle_mode = true
group = ExtResource( 8 )
text = "B"
[node name="All" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer6"]
margin_left = 672.0
margin_right = 998.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Ignore camera facing when selecting handles.
"
size_flags_horizontal = 3
toggle_mode = true
group = ExtResource( 8 )
text = "A"
[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 24.0
margin_right = 998.0
margin_bottom = 44.0
[node name="Label4" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer4"]
margin_right = 8.0
margin_bottom = 20.0
hint_tooltip = "Pivot"
mouse_filter = 0
size_flags_vertical = 7
text = "P"
align = 1
valign = 1
[node name="Average" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer4"]
margin_left = 12.0
margin_right = 338.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Average"
size_flags_horizontal = 3
toggle_mode = true
pressed = true
group = ExtResource( 7 )
text = "A"
[node name="MDIOrigin" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer4"]
margin_left = 342.0
margin_right = 668.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Mesh Data Instance Origin"
size_flags_horizontal = 3
toggle_mode = true
group = ExtResource( 7 )
text = "M"
[node name="WorldOrigin" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer4"]
margin_left = 672.0
margin_right = 998.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "World Origin"
size_flags_horizontal = 3
toggle_mode = true
group = ExtResource( 7 )
text = "w"
[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 48.0
margin_right = 998.0
margin_bottom = 68.0
[node name="Label4" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer5"]
margin_right = 8.0
margin_bottom = 20.0
hint_tooltip = "Visual indicators"
mouse_filter = 0
size_flags_vertical = 7
text = "V"
align = 1
valign = 1
[node name="Outline" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer5"]
margin_left = 12.0
margin_right = 338.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Outline"
size_flags_horizontal = 3
toggle_mode = true
pressed = true
text = "O"
[node name="Seam" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer5"]
margin_left = 342.0
margin_right = 668.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Seam"
size_flags_horizontal = 3
toggle_mode = true
pressed = true
text = "S"
[node name="Handle" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer5"]
margin_left = 672.0
margin_right = 998.0
margin_bottom = 20.0
rect_min_size = Vector2( 25, 20 )
hint_tooltip = "Handle"
size_flags_horizontal = 3
toggle_mode = true
pressed = true
text = "H"
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 72.0
margin_right = 998.0
margin_bottom = 76.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Select All" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 80.0
margin_right = 998.0
margin_bottom = 100.0
text = "Select All"
[node name="HSeparator5" type="HSeparator" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 104.0
margin_right = 998.0
margin_bottom = 108.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VertexOps" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 112.0
margin_right = 998.0
margin_bottom = 192.0
[node name="OperationsLabel" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps"]
margin_right = 998.0
margin_bottom = 14.0
text = "= Vertex ="
align = 1
valign = 1
[node name="Operations" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps"]
margin_top = 18.0
margin_right = 998.0
margin_bottom = 80.0
[node name="AddFace" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations"]
margin_right = 998.0
margin_bottom = 20.0
text = "Create Face"
[node name="Split" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations"]
visible = false
margin_top = 24.0
margin_right = 998.0
margin_bottom = 44.0
text = "Split"
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations"]
margin_top = 24.0
margin_right = 998.0
margin_bottom = 38.0
text = "Connect"
align = 1
valign = 1
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations"]
margin_top = 42.0
margin_right = 998.0
margin_bottom = 62.0
size_flags_horizontal = 3
[node name="ConnectToFirst" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations/HBoxContainer"]
margin_right = 330.0
margin_bottom = 20.0
hint_tooltip = "Move all vertices to the first one that was selected."
size_flags_horizontal = 3
text = "x<"
[node name="ConnectMed" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations/HBoxContainer"]
margin_left = 334.0
margin_right = 664.0
margin_bottom = 20.0
hint_tooltip = "Move all selected vertices to their average."
size_flags_horizontal = 3
text = ">x<"
[node name="ConnectToLast" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations/HBoxContainer"]
margin_left = 668.0
margin_right = 998.0
margin_bottom = 20.0
hint_tooltip = "Move all selected vertices to the last that was selected."
size_flags_horizontal = 3
text = ">x"
[node name="EdgeOps" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
visible = false
margin_top = 108.0
margin_right = 998.0
margin_bottom = 206.0
[node name="OperationsLabel" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps"]
margin_right = 998.0
margin_bottom = 14.0
text = "= Edge ="
align = 1
valign = 1
[node name="Operations" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps"]
margin_top = 18.0
margin_right = 998.0
margin_bottom = 98.0
[node name="Extrude" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations"]
margin_right = 1010.0
margin_bottom = 20.0
text = "Extrude"
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations"]
margin_right = 998.0
margin_bottom = 14.0
text = "Append"
align = 1
valign = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations"]
margin_top = 18.0
margin_right = 998.0
margin_bottom = 38.0
[node name="TriAt" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/HBoxContainer2"]
margin_right = 497.0
margin_bottom = 20.0
size_flags_horizontal = 3
size_flags_vertical = 3
text = "Tri"
[node name="QuadAt" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/HBoxContainer2"]
margin_left = 501.0
margin_right = 998.0
margin_bottom = 20.0
size_flags_horizontal = 3
text = "Quad"
[node name="SeamLabel" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations"]
margin_top = 42.0
margin_right = 998.0
margin_bottom = 56.0
text = "Seam"
align = 1
valign = 1
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations"]
margin_top = 60.0
margin_right = 998.0
margin_bottom = 80.0
size_flags_horizontal = 3
[node name="Mark" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/HBoxContainer"]
margin_right = 497.0
margin_bottom = 20.0
size_flags_horizontal = 3
text = "Mark"
[node name="Unmark" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/HBoxContainer"]
margin_left = 501.0
margin_right = 998.0
margin_bottom = 20.0
size_flags_horizontal = 3
text = "Unmark"
[node name="FaceOps" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
visible = false
margin_right = 55.0
margin_bottom = 38.0
[node name="OperationsLabel" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/FaceOps"]
margin_right = 1010.0
margin_bottom = 14.0
text = "= Face ="
align = 1
valign = 1
[node name="Operations" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2/FaceOps"]
margin_top = 18.0
margin_right = 1010.0
margin_bottom = 110.0
[node name="Delete" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/FaceOps/Operations"]
margin_right = 1010.0
margin_bottom = 20.0
text = "Delete"
[node name="Flip" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/FaceOps/Operations"]
margin_right = 1010.0
margin_bottom = 20.0
text = "Flip"
[node name="HSeparator4" type="HSeparator" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 196.0
margin_right = 998.0
margin_bottom = 200.0
[node name="Operations" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 204.0
margin_right = 998.0
margin_bottom = 568.0
[node name="OperationsLabel" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations"]
margin_right = 998.0
margin_bottom = 14.0
text = "= Operations ="
align = 1
valign = 1
[node name="Operations" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations"]
margin_top = 18.0
margin_right = 998.0
margin_bottom = 364.0
[node name="Label2" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_right = 998.0
margin_bottom = 14.0
text = "Generate"
align = 1
valign = 1
[node name="GenNormals" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 18.0
margin_right = 998.0
margin_bottom = 38.0
text = "Normals"
[node name="GenTangents" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 42.0
margin_right = 998.0
margin_bottom = 62.0
text = "Tangents"
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 66.0
margin_right = 998.0
margin_bottom = 80.0
text = "Optimizations"
align = 1
valign = 1
[node name="RemDoubles" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 84.0
margin_right = 998.0
margin_bottom = 104.0
text = "Rem Doubles"
[node name="MergeOptimize" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 108.0
margin_right = 998.0
margin_bottom = 128.0
text = "Full Merge"
[node name="Clean" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 132.0
margin_right = 998.0
margin_bottom = 152.0
hint_tooltip = "Clean mesh for example for unused verts."
text = "Clean"
[node name="Label3" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 156.0
margin_right = 998.0
margin_bottom = 170.0
text = "UV"
align = 1
valign = 1
[node name="UVDisplay" type="Control" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 174.0
margin_right = 998.0
margin_bottom = 274.0
rect_min_size = Vector2( 100, 100 )
script = ExtResource( 3 )
[node name="UVEditButton" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 278.0
margin_right = 998.0
margin_bottom = 298.0
text = "Edit"
[node name="ApplySeams" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 302.0
margin_right = 998.0
margin_bottom = 322.0
text = "Apply seams"
[node name="UnwrapButton2" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations"]
margin_top = 326.0
margin_right = 998.0
margin_bottom = 346.0
text = "Unwrap"
[node name="HSeparator3" type="HSeparator" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 572.0
margin_right = 998.0
margin_bottom = 576.0
[node name="Add" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 580.0
margin_right = 998.0
margin_bottom = 666.0
[node name="AddLabel" type="Label" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Add"]
margin_right = 998.0
margin_bottom = 14.0
text = "= Add ="
align = 1
valign = 1
[node name="Add" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Add"]
margin_top = 18.0
margin_right = 998.0
margin_bottom = 86.0
[node name="AddBox" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Add/Add"]
margin_right = 998.0
margin_bottom = 20.0
text = "Box"
[node name="AddTriangle" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Add/Add"]
margin_top = 24.0
margin_right = 998.0
margin_bottom = 44.0
size_flags_horizontal = 3
text = "Tri"
[node name="AddQuad" type="Button" parent="VBoxContainer/ScrollContainer/VBoxContainer2/Add/Add"]
margin_top = 48.0
margin_right = 998.0
margin_bottom = 68.0
size_flags_horizontal = 3
text = "Quad"
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer/ScrollContainer/VBoxContainer2"]
margin_top = 670.0
margin_right = 998.0
margin_bottom = 674.0
[node name="Popups" type="Control" parent="."]
margin_left = 7.0
margin_top = 7.0
margin_right = 1017.0
margin_bottom = 593.0
mouse_filter = 2
__meta__ = {
"_edit_lock_": true
}
[node name="UVEditorPopup" type="ConfirmationDialog" parent="Popups"]
margin_left = 149.0
margin_top = 35.0
margin_right = 901.0
margin_bottom = 803.0
window_title = "UV Editor"
resizable = true
script = ExtResource( 6 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="UVEditor" parent="Popups/UVEditorPopup" instance=ExtResource( 4 )]
margin_left = 8.0
margin_top = 8.0
margin_right = -8.0
margin_bottom = -36.0
size_flags_horizontal = 3
size_flags_vertical = 3
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer/Translate" to="." method="on_edit_mode_translate_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer/Rotate" to="." method="on_edit_mode_rotate_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer/Scale" to="." method="on_edit_mode_scale_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer2/AxisX" to="." method="on_axis_x_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer2/AxisY" to="." method="on_axis_y_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer2/AxisZ" to="." method="on_axis_z_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3/Vertex" to="." method="on_selection_mode_vertex_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3/Vertex" to="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps" method="set_visible"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3/Edge" to="." method="on_selection_mode_edge_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3/Edge" to="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps" method="set_visible"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3/Face" to="." method="on_selection_mode_face_toggled"]
[connection signal="toggled" from="VBoxContainer/Actions/Actions/VBoxContainer2/HBoxContainer3/Face" to="VBoxContainer/ScrollContainer/VBoxContainer2/FaceOps" method="set_visible"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer6/Front" to="." method="onhandle_selection_type_front_toggled"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer6/Back" to="." method="onhandle_selection_type_back_toggled"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer6/All" to="." method="onhandle_selection_type_all_toggled"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer4/Average" to="." method="on_pivot_average_toggled"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer4/MDIOrigin" to="." method="on_pivot_mdi_origin_toggled"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer4/WorldOrigin" to="." method="on_pivot_world_origin_toggled"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer5/Outline" to="." method="on_visual_indicator_outline_toggled"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer5/Seam" to="." method="on_visual_indicator_seam_toggled"]
[connection signal="toggled" from="VBoxContainer/ScrollContainer/VBoxContainer2/HBoxContainer5/Handle" to="." method="on_visual_indicator_handle_toggled"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Select All" to="." method="_on_select_all_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations/AddFace" to="." method="_oncreate_face_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations/Split" to="." method="_on_split_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations/HBoxContainer/ConnectToFirst" to="." method="_on_connect_to_first_selected_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations/HBoxContainer/ConnectMed" to="." method="_on_connect_to_avg_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/VertexOps/Operations/HBoxContainer/ConnectToLast" to="." method="_on_connect_to_last_selected_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/Extrude" to="." method="_on_Extrude_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/HBoxContainer2/TriAt" to="." method="_on_add_triangle_at_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/HBoxContainer2/QuadAt" to="." method="_on_add_auad_at_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/HBoxContainer/Mark" to="." method="_on_mark_seam_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/EdgeOps/Operations/HBoxContainer/Unmark" to="." method="_on_unmark_seam_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/FaceOps/Operations/Delete" to="." method="_on_delete_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/FaceOps/Operations/Flip" to="." method="_on_flip_face_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/GenNormals" to="." method="_on_GenNormals_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/GenTangents" to="." method="_on_GenTangents_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/RemDoubles" to="." method="_on_RemDoubles_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/MergeOptimize" to="." method="_on_MergeOptimize_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/Clean" to="." method="_on_clean_mesh_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/UVEditButton" to="." method="_on_uv_edit_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/ApplySeams" to="." method="_on_apply_seams_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Operations/Operations/UnwrapButton2" to="." method="_on_UnwrapButton_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Add/Add/AddBox" to="." method="_on_AddBox_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Add/Add/AddTriangle" to="." method="_on_add_triangle_pressed"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/VBoxContainer2/Add/Add/AddQuad" to="." method="_on_add_quad_pressed"]
*/
uv_preview = nullptr;
//Main
VBoxContainer *main_cont = memnew(VBoxContainer);
add_child(main_cont);
// -- Actions
VBoxContainer *main_actions_container = memnew(VBoxContainer);
main_cont->add_child(main_actions_container);
HBoxContainer *actions_inner_container = memnew(HBoxContainer);
actions_inner_container->set_alignment(BoxContainer::ALIGN_CENTER);
main_actions_container->add_child(actions_inner_container);
VBoxContainer *left_actions_container = memnew(VBoxContainer);
actions_inner_container->add_child(left_actions_container);
VBoxContainer *right_actions_container = memnew(VBoxContainer);
actions_inner_container->add_child(right_actions_container);
// -- Actions -- Edit Mode
Label *action_label = memnew(Label);
action_label->set_text("E");
action_label->set_align(Label::ALIGN_CENTER);
action_label->set_valign(Label::VALIGN_CENTER);
action_label->set_tooltip("Edit Mode");
action_label->set_mouse_filter(Control::MOUSE_FILTER_STOP);
action_label->set_v_size_flags(SIZE_EXPAND_FILL | SIZE_SHRINK_CENTER);
left_actions_container->add_child(action_label);
Ref<ButtonGroup> action_button_group;
action_button_group.instance();
HBoxContainer *action_buttons_container = memnew(HBoxContainer);
right_actions_container->add_child(action_buttons_container);
Button *action_button = memnew(Button);
action_button->set_text("T");
action_button->set_toggle_mode(true);
action_button->set_pressed(true);
action_button->set_button_group(action_button_group);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_tooltip("Translate");
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_edit_mode_translate_toggled");
action_buttons_container->add_child(action_button);
action_button = memnew(Button);
action_button->set_text("R");
action_button->set_toggle_mode(true);
action_button->set_pressed(false);
action_button->set_button_group(action_button_group);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_tooltip("Rotate");
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_edit_mode_rotate_toggled");
action_buttons_container->add_child(action_button);
action_button = memnew(Button);
action_button->set_text("S");
action_button->set_toggle_mode(true);
action_button->set_pressed(false);
action_button->set_button_group(action_button_group);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_tooltip("Scale");
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_edit_mode_scale_toggled");
action_buttons_container->add_child(action_button);
// -- Actions -- Active Axis
action_label = memnew(Label);
action_label->set_text("A");
action_label->set_align(Label::ALIGN_CENTER);
action_label->set_valign(Label::VALIGN_CENTER);
action_label->set_tooltip("Active Axis");
action_label->set_mouse_filter(Control::MOUSE_FILTER_STOP);
action_label->set_v_size_flags(SIZE_EXPAND_FILL | SIZE_SHRINK_CENTER);
left_actions_container->add_child(action_label);
action_buttons_container = memnew(HBoxContainer);
right_actions_container->add_child(action_buttons_container);
action_button = memnew(Button);
action_button->set_text("X");
action_button->set_toggle_mode(true);
action_button->set_pressed(true);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_axis_x_toggled");
action_buttons_container->add_child(action_button);
action_button = memnew(Button);
action_button->set_text("Y");
action_button->set_toggle_mode(true);
action_button->set_pressed(true);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_axis_y_toggled");
action_buttons_container->add_child(action_button);
action_button = memnew(Button);
action_button->set_text("Z");
action_button->set_toggle_mode(true);
action_button->set_pressed(true);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_axis_z_toggled");
action_buttons_container->add_child(action_button);
// -- Actions -- Selection Mode
action_label = memnew(Label);
action_label->set_text("S");
action_label->set_align(Label::ALIGN_CENTER);
action_label->set_valign(Label::VALIGN_CENTER);
action_label->set_tooltip("Selection Mode");
action_label->set_mouse_filter(Control::MOUSE_FILTER_STOP);
action_label->set_v_size_flags(SIZE_EXPAND_FILL | SIZE_SHRINK_CENTER);
left_actions_container->add_child(action_label);
action_button_group.instance();
action_buttons_container = memnew(HBoxContainer);
right_actions_container->add_child(action_buttons_container);
action_button = memnew(Button);
action_button->set_text("V");
action_button->set_toggle_mode(true);
action_button->set_pressed(true);
action_button->set_button_group(action_button_group);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_tooltip("Vertex");
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_selection_mode_vertex_toggled");
action_buttons_container->add_child(action_button);
action_button = memnew(Button);
action_button->set_text("E");
action_button->set_toggle_mode(true);
action_button->set_pressed(false);
action_button->set_button_group(action_button_group);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_tooltip("Edge");
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_selection_mode_edge_toggled");
action_buttons_container->add_child(action_button);
action_button = memnew(Button);
action_button->set_text("F");
action_button->set_toggle_mode(true);
action_button->set_pressed(false);
action_button->set_button_group(action_button_group);
action_button->set_custom_minimum_size(Size2(25, 20));
action_button->set_tooltip("Face");
action_button->set_h_size_flags(SIZE_EXPAND_FILL);
action_button->connect("toggled", this, "on_selection_mode_face_toggled");
action_buttons_container->add_child(action_button);
// -- Main separator
main_cont->add_child(memnew(HSeparator));
// -- Main ScrollContainer
ScrollContainer *main_scroll_container = memnew(ScrollContainer);
main_cont->add_child(main_scroll_container);
//Popups
Control *popups_node = memnew(Control);
popups_node->set_mouse_filter(MOUSE_FILTER_IGNORE);
add_child(popups_node);
uv_editor = memnew(MDRUVRectEditorPopup);
uv_editor->set_title("UV Editor");
uv_editor->set_resizable(true);
uv_editor->hide();
popups_node->add_child(uv_editor);
}
MDIEd::~MDIEd() {
}
void MDIEd::_bind_methods() {
ClassDB::bind_method(D_METHOD("on_edit_mode_translate_toggled"), &MDIEd::on_edit_mode_translate_toggled);
ClassDB::bind_method(D_METHOD("on_edit_mode_rotate_toggled"), &MDIEd::on_edit_mode_rotate_toggled);
ClassDB::bind_method(D_METHOD("on_edit_mode_scale_toggled"), &MDIEd::on_edit_mode_scale_toggled);
ClassDB::bind_method(D_METHOD("on_axis_x_toggled"), &MDIEd::on_axis_x_toggled);
ClassDB::bind_method(D_METHOD("on_axis_y_toggled"), &MDIEd::on_axis_y_toggled);
ClassDB::bind_method(D_METHOD("on_axis_z_toggled"), &MDIEd::on_axis_z_toggled);
ClassDB::bind_method(D_METHOD("on_selection_mode_vertex_toggled"), &MDIEd::on_selection_mode_vertex_toggled);
ClassDB::bind_method(D_METHOD("on_selection_mode_edge_toggled"), &MDIEd::on_selection_mode_edge_toggled);
ClassDB::bind_method(D_METHOD("on_selection_mode_face_toggled"), &MDIEd::on_selection_mode_face_toggled);
}

View File

@ -23,15 +23,17 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#include "scene/gui/control.h"
#include "scene/gui/panel_container.h"
class EditorPlugin;
class MeshDataResource;
class MeshDataInstance;
class MDIEdPlugin;
class MDREdUVPreviewer;
class MDRUVRectEditorPopup;
class MDIEd : public Control {
GDCLASS(MDIEd, Control);
class MDIEd : public PanelContainer {
GDCLASS(MDIEd, PanelContainer);
public:
void _enter_tree();
@ -113,11 +115,8 @@ public:
MDIEdPlugin *_plugin;
//export var uv_preview_path : NodePath
//export var uv_editor_path : NodePath
Node *uv_preview;
Node *uv_editor;
MDREdUVPreviewer *uv_preview;
MDRUVRectEditorPopup *uv_editor;
protected:
static void _bind_methods();

View File

@ -20,13 +20,13 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#include "mdi_ed_uv_previewer.h"
#include "mdr_ed_uv_previewer.h"
#include "../../mesh_data_resource.h"
#include "../../nodes/mesh_data_instance.h"
#include "scene/resources/texture.h"
void MDIEdUVPreviewer::set_mesh_data_resource(Ref<MeshDataResource> a) {
void MDREdUVPreviewer::set_mesh_data_resource(Ref<MeshDataResource> a) {
if (mesh_data_resource.is_valid()) {
mesh_data_resource->disconnect("changed", this, "on_mdr_changed");
}
@ -40,7 +40,7 @@ void MDIEdUVPreviewer::set_mesh_data_resource(Ref<MeshDataResource> a) {
update();
}
void MDIEdUVPreviewer::set_mesh_data_instance(MeshDataInstance *a) {
void MDREdUVPreviewer::set_mesh_data_instance(MeshDataInstance *a) {
if (!a) {
background_texture.unref();
return;
@ -49,11 +49,11 @@ void MDIEdUVPreviewer::set_mesh_data_instance(MeshDataInstance *a) {
background_texture = a->get_texture();
}
void MDIEdUVPreviewer::on_mdr_changed() {
void MDREdUVPreviewer::on_mdr_changed() {
update();
}
void MDIEdUVPreviewer::_draw() {
void MDREdUVPreviewer::_draw() {
if (background_texture.is_valid()) {
draw_texture_rect_region(background_texture, Rect2(Vector2(), get_size()), Rect2(Vector2(), background_texture->get_size()));
}
@ -102,11 +102,11 @@ void MDIEdUVPreviewer::_draw() {
}
}
MDIEdUVPreviewer::MDIEdUVPreviewer() {
MDREdUVPreviewer::MDREdUVPreviewer() {
}
MDIEdUVPreviewer::~MDIEdUVPreviewer() {
MDREdUVPreviewer::~MDREdUVPreviewer() {
}
void MDIEdUVPreviewer::_bind_methods() {
void MDREdUVPreviewer::_bind_methods() {
}

View File

@ -1,5 +1,5 @@
#ifndef MDI_ED_UV_PREVIEWER_H
#define MDI_ED_UV_PREVIEWER_H
#ifndef MDR_ED_UV_PREVIEWER_H
#define MDR_ED_UV_PREVIEWER_H
/*
Copyright (c) 2019-2022 Péter Magyar
@ -31,8 +31,8 @@ class MeshDataResource;
class MeshDataInstance;
class Texture;
class MDIEdUVPreviewer : public Control {
GDCLASS(MDIEdUVPreviewer, Control);
class MDREdUVPreviewer : public Control {
GDCLASS(MDREdUVPreviewer, Control);
public:
void set_mesh_data_resource(Ref<MeshDataResource> a);
@ -40,8 +40,8 @@ public:
void on_mdr_changed();
void _draw();
MDIEdUVPreviewer();
~MDIEdUVPreviewer();
MDREdUVPreviewer();
~MDREdUVPreviewer();
protected:
static void _bind_methods();

View File

@ -34,7 +34,8 @@ void MDRUVRectEditorPopup::on_cancel_pressed() {
MDRUVRectEditorPopup::MDRUVRectEditorPopup() {
_editor = memnew(MDRUVRectEditor);
_editor->set_h_size_flags(SIZE_EXPAND_FILL);
_editor->set_v_size_flags(SIZE_EXPAND_FILL);
add_child(_editor);
connect("confirmed", this, "on_ok_pressed");