1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-13 13:31:48 +00:00

Rework MeshInstance3d collision shape creation into a subMenu and add all static body options

Apply suggestions from code review

Co-Authored-By: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
This commit is contained in:
ajreckof
2023-12-30 06:24:01 +01:00
committed by ajreckof
parent a4fbe4c01f
commit b84f66c5df
2 changed files with 203 additions and 202 deletions

View File

@@ -33,6 +33,7 @@
#include "editor/editor_plugin.h"
#include "scene/3d/mesh_instance_3d.h"
#include "scene/gui/option_button.h"
class AcceptDialog;
class ConfirmationDialog;
@@ -43,11 +44,7 @@ class MeshInstance3DEditor : public Control {
GDCLASS(MeshInstance3DEditor, Control);
enum Menu {
MENU_OPTION_CREATE_STATIC_TRIMESH_BODY,
MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE,
MENU_OPTION_CREATE_SINGLE_CONVEX_COLLISION_SHAPE,
MENU_OPTION_CREATE_SIMPLIFIED_CONVEX_COLLISION_SHAPE,
MENU_OPTION_CREATE_MULTIPLE_CONVEX_COLLISION_SHAPES,
MENU_OPTION_CREATE_COLLISION_SHAPE,
MENU_OPTION_CREATE_NAVMESH,
MENU_OPTION_CREATE_OUTLINE_MESH,
MENU_OPTION_CREATE_DEBUG_TANGENTS,
@@ -56,6 +53,18 @@ class MeshInstance3DEditor : public Control {
MENU_OPTION_DEBUG_UV2,
};
enum ShapePlacement {
SHAPE_PLACEMENT_SIBLING,
SHAPE_PLACEMENT_STATIC_BODY_CHILD,
};
enum ShapeType {
SHAPE_TYPE_TRIMESH,
SHAPE_TYPE_SINGLE_CONVEX,
SHAPE_TYPE_SIMPLIFIED_CONVEX,
SHAPE_TYPE_MULTIPLE_CONVEX,
};
MeshInstance3D *node = nullptr;
MenuButton *options = nullptr;
@@ -63,12 +72,18 @@ class MeshInstance3DEditor : public Control {
ConfirmationDialog *outline_dialog = nullptr;
SpinBox *outline_size = nullptr;
ConfirmationDialog *shape_dialog = nullptr;
OptionButton *shape_type = nullptr;
OptionButton *shape_placement = nullptr;
AcceptDialog *err_dialog = nullptr;
AcceptDialog *debug_uv_dialog = nullptr;
Control *debug_uv = nullptr;
Vector<Vector2> uv_lines;
void _create_collision_shape();
Vector<Ref<Shape3D>> create_shape_from_mesh(Ref<Mesh> p_mesh, int p_option, bool p_verbose);
void _menu_option(int p_option);
void _create_outline_mesh();