mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-01-24 10:07:17 +01:00
Small cleanups, and enabled / registered the mesh data instance editor plugins. Editing itself seems to work, however the UI still need to be fixed.
This commit is contained in:
parent
cd3366f6c4
commit
496b1b7f34
@ -27,32 +27,7 @@ SOFTWARE.
|
|||||||
#include "mdi_gizmo.h"
|
#include "mdi_gizmo.h"
|
||||||
#include "mdi_gizmo_plugin.h"
|
#include "mdi_gizmo_plugin.h"
|
||||||
|
|
||||||
void MDIEdPlugin::_enter_tree() {
|
|
||||||
gizmo_plugin = memnew(MDIGizmoPlugin);
|
|
||||||
mdi_ed_gui = memnew(MDIEd);
|
|
||||||
mdi_ed_gui->set_plugin(this);
|
|
||||||
active_gizmos.clear();
|
|
||||||
|
|
||||||
gizmo_plugin->plugin = this;
|
|
||||||
|
|
||||||
add_control_to_container(EditorPlugin::CONTAINER_SPATIAL_EDITOR_SIDE_RIGHT, mdi_ed_gui);
|
|
||||||
mdi_ed_gui->hide();
|
|
||||||
|
|
||||||
add_spatial_gizmo_plugin(gizmo_plugin);
|
|
||||||
|
|
||||||
set_input_event_forwarding_always_enabled();
|
|
||||||
}
|
|
||||||
void MDIEdPlugin::_exit_tree() {
|
|
||||||
//print("_exit_tree")
|
|
||||||
|
|
||||||
remove_spatial_gizmo_plugin(gizmo_plugin);
|
|
||||||
//remove_control_from_container(EditorPlugin.CONTAINER_SPATIAL_EDITOR_SIDE_RIGHT, mdi_ed_gui)
|
|
||||||
mdi_ed_gui->queue_delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MDIEdPlugin::handles(Object *object) const {
|
bool MDIEdPlugin::handles(Object *object) const {
|
||||||
//print("disable_plugin")
|
|
||||||
|
|
||||||
if (object->is_class("MeshDataInstance")) {
|
if (object->is_class("MeshDataInstance")) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -82,29 +57,15 @@ void MDIEdPlugin::make_visible(bool visible) {
|
|||||||
if (visible) {
|
if (visible) {
|
||||||
mdi_ed_gui->show();
|
mdi_ed_gui->show();
|
||||||
}
|
}
|
||||||
|
//else
|
||||||
//else:
|
//mdi_ed_gui.hide()
|
||||||
// #mdi_ed_gui.hide()
|
//figure out how to hide it when something else gets selected, don't hide on unselect
|
||||||
// #figure out how to hide it when something else gets selected, don't hide on unselect
|
|
||||||
// pass
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String MDIEdPlugin::get_name() const {
|
String MDIEdPlugin::get_name() const {
|
||||||
return "MeshDataResourceEditor";
|
return "MeshDataResourceEditor";
|
||||||
}
|
}
|
||||||
|
|
||||||
void MDIEdPlugin::register_gizmo(Ref<MDIGizmo> gizmo) {
|
|
||||||
active_gizmos.push_back(gizmo);
|
|
||||||
}
|
|
||||||
void MDIEdPlugin::unregister_gizmo(Ref<MDIGizmo> gizmo) {
|
|
||||||
for (int i = 0; i < active_gizmos.size(); ++i) {
|
|
||||||
if (active_gizmos[i] == gizmo) {
|
|
||||||
active_gizmos.remove(i);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MDIEdPlugin::set_translate() {
|
void MDIEdPlugin::set_translate() {
|
||||||
if (current_mesh_data_instance) {
|
if (current_mesh_data_instance) {
|
||||||
Ref<MDIGizmo> g = current_mesh_data_instance->get_gizmo();
|
Ref<MDIGizmo> g = current_mesh_data_instance->get_gizmo();
|
||||||
@ -398,23 +359,19 @@ void MDIEdPlugin::flip_selected_faces() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MDIEdPlugin::MDIEdPlugin() {
|
MDIEdPlugin::MDIEdPlugin(EditorNode *p_node) {
|
||||||
|
editor = p_node;
|
||||||
|
|
||||||
current_mesh_data_instance = nullptr;
|
current_mesh_data_instance = nullptr;
|
||||||
/*
|
|
||||||
|
|
||||||
const MDRMeshUtils = preload("res://addons/mesh_data_resource_editor/utilities/mdred_mesh_utils.gd")
|
mdi_ed_gui = memnew(MDIEd);
|
||||||
|
mdi_ed_gui->set_plugin(this);
|
||||||
|
add_control_to_container(EditorPlugin::CONTAINER_SPATIAL_EDITOR_SIDE_RIGHT, mdi_ed_gui);
|
||||||
|
mdi_ed_gui->hide();
|
||||||
|
|
||||||
const MdiGizmoPlugin = preload("res://addons/mesh_data_resource_editor/MDIGizmoPlugin.gd")
|
gizmo_plugin.instance();
|
||||||
const MDIEdGui = preload("res://addons/mesh_data_resource_editor/MDIEd.tscn")
|
gizmo_plugin->plugin = this;
|
||||||
|
add_spatial_gizmo_plugin(gizmo_plugin);
|
||||||
var gizmo_plugin = MdiGizmoPlugin.new()
|
|
||||||
var mdi_ed_gui : Control
|
|
||||||
|
|
||||||
var active_gizmos : Array
|
|
||||||
|
|
||||||
var current_mesh_data_instance : MeshDataInstance = null
|
|
||||||
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MDIEdPlugin::~MDIEdPlugin() {
|
MDIEdPlugin::~MDIEdPlugin() {
|
||||||
|
@ -38,19 +38,15 @@ class MeshDataInstance;
|
|||||||
class MDIEd;
|
class MDIEd;
|
||||||
|
|
||||||
class MDIEdPlugin : public EditorPlugin {
|
class MDIEdPlugin : public EditorPlugin {
|
||||||
public:
|
GDCLASS(MDIEdPlugin, EditorPlugin);
|
||||||
void _enter_tree();
|
|
||||||
void _exit_tree();
|
|
||||||
|
|
||||||
|
public:
|
||||||
bool handles(Object *object) const;
|
bool handles(Object *object) const;
|
||||||
void edit(Object *object);
|
void edit(Object *object);
|
||||||
void make_visible(bool visible);
|
void make_visible(bool visible);
|
||||||
|
|
||||||
String get_name() const;
|
String get_name() const;
|
||||||
|
|
||||||
void register_gizmo(Ref<MDIGizmo> gizmo);
|
|
||||||
void unregister_gizmo(Ref<MDIGizmo> gizmo);
|
|
||||||
|
|
||||||
void set_translate();
|
void set_translate();
|
||||||
void set_scale();
|
void set_scale();
|
||||||
void set_rotate();
|
void set_rotate();
|
||||||
@ -115,16 +111,16 @@ public:
|
|||||||
|
|
||||||
void flip_selected_faces();
|
void flip_selected_faces();
|
||||||
|
|
||||||
MDIEdPlugin();
|
MDIEdPlugin(EditorNode *p_node);
|
||||||
~MDIEdPlugin();
|
~MDIEdPlugin();
|
||||||
|
|
||||||
MDIGizmoPlugin *gizmo_plugin;
|
Ref<MDIGizmoPlugin> gizmo_plugin;
|
||||||
MDIEd *mdi_ed_gui;
|
MDIEd *mdi_ed_gui;
|
||||||
|
|
||||||
Vector<Ref<MDIGizmo>> active_gizmos;
|
|
||||||
|
|
||||||
MeshDataInstance *current_mesh_data_instance;
|
MeshDataInstance *current_mesh_data_instance;
|
||||||
|
|
||||||
|
EditorNode *editor;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
};
|
};
|
||||||
|
@ -770,15 +770,6 @@ void MDIGizmo::set_selection_mode_face() {
|
|||||||
redraw();
|
redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MDIGizmo::_notification(int what) {
|
|
||||||
/*
|
|
||||||
if (what == NOTIFICATION_PREDELETE) {
|
|
||||||
if (this != nullptr && get_plugin().is_valid()) {
|
|
||||||
get_plugin()->unregister_gizmo(this);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
void MDIGizmo::recalculate_handle_points() {
|
void MDIGizmo::recalculate_handle_points() {
|
||||||
if (!_mdr.is_valid()) {
|
if (!_mdr.is_valid()) {
|
||||||
_handle_points.resize(0);
|
_handle_points.resize(0);
|
||||||
|
@ -110,9 +110,7 @@ public:
|
|||||||
void set_selection_mode_vertex();
|
void set_selection_mode_vertex();
|
||||||
void set_selection_mode_edge();
|
void set_selection_mode_edge();
|
||||||
void set_selection_mode_face();
|
void set_selection_mode_face();
|
||||||
|
|
||||||
void _notification(int what);
|
|
||||||
|
|
||||||
void recalculate_handle_points();
|
void recalculate_handle_points();
|
||||||
void on_mesh_data_resource_changed(Ref<MeshDataResource> mdr);
|
void on_mesh_data_resource_changed(Ref<MeshDataResource> mdr);
|
||||||
void on_mdr_changed();
|
void on_mdr_changed();
|
||||||
|
@ -46,7 +46,6 @@ Ref<EditorSpatialGizmo> MDIGizmoPlugin::create_gizmo(Spatial *p_spatial) {
|
|||||||
gizmo->set_editor_plugin(plugin);
|
gizmo->set_editor_plugin(plugin);
|
||||||
gizmo->set_spatial_node(p_spatial);
|
gizmo->set_spatial_node(p_spatial);
|
||||||
gizmo->setup();
|
gizmo->setup();
|
||||||
plugin->register_gizmo(gizmo);
|
|
||||||
|
|
||||||
return gizmo;
|
return gizmo;
|
||||||
} else {
|
} else {
|
||||||
|
@ -89,7 +89,7 @@ void MDREDMeshOutline::generate(bool mark_outline, bool mark_handles) {
|
|||||||
|
|
||||||
if (mark_outline) {
|
if (mark_outline) {
|
||||||
for (int i = 0; i < _indices.size(); i += 3) {
|
for (int i = 0; i < _indices.size(); i += 3) {
|
||||||
for (int j = 0; j < 4; ++j) {
|
for (int j = 0; j < 3; ++j) {
|
||||||
lines.push_back(get_vertex(_indices[i + j]));
|
lines.push_back(get_vertex(_indices[i + j]));
|
||||||
lines.push_back(get_vertex(_indices[i + ((j + 1) % 3)]));
|
lines.push_back(get_vertex(_indices[i + ((j + 1) % 3)]));
|
||||||
}
|
}
|
||||||
@ -211,5 +211,8 @@ MDREDMeshOutline::MDREDMeshOutline() {
|
|||||||
marker_size = 0.05;
|
marker_size = 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MDREDMeshOutline::~MDREDMeshOutline() {
|
||||||
|
}
|
||||||
|
|
||||||
void MDREDMeshOutline::_bind_methods() {
|
void MDREDMeshOutline::_bind_methods() {
|
||||||
}
|
}
|
@ -44,6 +44,7 @@ public:
|
|||||||
void generate_mark_faces(bool mark_outline, bool mark_handles);
|
void generate_mark_faces(bool mark_outline, bool mark_handles);
|
||||||
|
|
||||||
MDREDMeshOutline();
|
MDREDMeshOutline();
|
||||||
|
~MDREDMeshOutline();
|
||||||
|
|
||||||
float marker_size;
|
float marker_size;
|
||||||
|
|
||||||
|
@ -31,6 +31,8 @@ SOFTWARE.
|
|||||||
#include "editor/editor_plugin.h"
|
#include "editor/editor_plugin.h"
|
||||||
|
|
||||||
#include "plugin_gltf/editor_plugin_gltf_mdr.h"
|
#include "plugin_gltf/editor_plugin_gltf_mdr.h"
|
||||||
|
|
||||||
|
#include "./editor/mdi_ed_plugin.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PROPS_PRESENT
|
#if PROPS_PRESENT
|
||||||
@ -64,6 +66,7 @@ void register_mesh_data_resource_types() {
|
|||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
EditorPlugins::add_by_type<EditorPluginGLTFMdr>();
|
EditorPlugins::add_by_type<EditorPluginGLTFMdr>();
|
||||||
|
EditorPlugins::add_by_type<MDIEdPlugin>();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user