diff --git a/modules/paint/SCsub b/modules/paint/SCsub index 429df20cd..feab29afd 100644 --- a/modules/paint/SCsub +++ b/modules/paint/SCsub @@ -55,3 +55,4 @@ module_env.add_source_files(env.modules_sources,"deprecated/paint_settings.cpp") if 'TOOLS_ENABLED' in env["CPPDEFINES"]: module_env.add_source_files(env.modules_sources,"paint_editor_plugin.cpp") module_env.add_source_files(env.modules_sources,"paint_editor_plugin_old.cpp") + module_env.add_source_files(env.modules_sources,"editor/paint_inspector_plugin.cpp") diff --git a/modules/paint/editor/paint_inspector_plugin.cpp b/modules/paint/editor/paint_inspector_plugin.cpp new file mode 100644 index 000000000..dc127f3fd --- /dev/null +++ b/modules/paint/editor/paint_inspector_plugin.cpp @@ -0,0 +1,61 @@ +/* +Copyright (c) 2019-2022 Péter Magyar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "paint_inspector_plugin.h" + +#include "../ui/property_inspectors/paint_project_property_inspector.h" +#include "../ui/property_inspectors/paint_project_tools_property_inspector.h" +#include "../ui/property_inspectors/paint_tools_property_inspector.h" + +#include "../nodes/paint_node.h" + +bool PaintInspectorPlugin::can_handle(Object *p_object) { + return p_object->is_class("PaintNode"); +} +void PaintInspectorPlugin::parse_begin(Object *p_object) { + PaintNode *paint_node = Object::cast_to(p_object); + + PaintProjectPropertyInspector *pc = memnew(PaintProjectPropertyInspector); + pc->on_paint_node_selected(paint_node); + add_custom_control(pc); + + if (p_object->is_class("PaintCanvas")) { + PaintToolsPropertyInspector *ptool = memnew(PaintToolsPropertyInspector); + ptool->on_paint_node_selected(paint_node); + add_custom_control(ptool); + } + + if (p_object->is_class("PaintProject")) { + PaintProjectToolsPropertyInspector *pct = memnew(PaintProjectToolsPropertyInspector); + pct->on_paint_node_selected(paint_node); + add_custom_control(pct); + } +} + +PaintInspectorPlugin::PaintInspectorPlugin() { +} + +PaintInspectorPlugin::~PaintInspectorPlugin() { +} + +void PaintInspectorPlugin::_bind_methods() { +} diff --git a/modules/paint/editor/paint_inspector_plugin.h b/modules/paint/editor/paint_inspector_plugin.h new file mode 100644 index 000000000..fd8317059 --- /dev/null +++ b/modules/paint/editor/paint_inspector_plugin.h @@ -0,0 +1,43 @@ +#ifndef PAINT_INSPECTOR_PLUGIN_H +#define PAINT_INSPECTOR_PLUGIN_H + +/* +Copyright (c) 2019-2022 Péter Magyar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "core/object/reference.h" +#include "editor/editor_inspector.h" + +class PaintInspectorPlugin : public EditorInspectorPlugin { + GDCLASS(PaintInspectorPlugin, EditorInspectorPlugin); + +public: + bool can_handle(Object *p_object); + void parse_begin(Object *p_object); + + PaintInspectorPlugin(); + ~PaintInspectorPlugin(); + +protected: + static void _bind_methods(); +}; + +#endif diff --git a/modules/paint/paint_editor_plugin.cpp b/modules/paint/paint_editor_plugin.cpp index af167741e..311b61845 100644 --- a/modules/paint/paint_editor_plugin.cpp +++ b/modules/paint/paint_editor_plugin.cpp @@ -27,6 +27,7 @@ SOFTWARE. #include "editor/plugins/canvas_item_editor_plugin.h" #include "ui/property_inspectors/paint_color_grid.h" +#include "./editor/paint_inspector_plugin.h" #include "nodes/paint_node.h" @@ -71,6 +72,9 @@ PaintEditorPlugin::PaintEditorPlugin(EditorNode *p_node) { _active_node = NULL; editor = p_node; + + _inspector_plugin = memnew(PaintInspectorPlugin); + add_inspector_plugin(_inspector_plugin); } PaintEditorPlugin::~PaintEditorPlugin() { diff --git a/modules/paint/paint_editor_plugin.h b/modules/paint/paint_editor_plugin.h index 9048e9cbe..083c35a65 100644 --- a/modules/paint/paint_editor_plugin.h +++ b/modules/paint/paint_editor_plugin.h @@ -29,6 +29,7 @@ SOFTWARE. class PaintWindow; class Texture; class PaintNode; +class PaintInspectorPlugin; class PaintEditorPlugin : public EditorPlugin { GDCLASS(PaintEditorPlugin, EditorPlugin); @@ -57,6 +58,7 @@ protected: static void _bind_methods(); PaintNode *_active_node; + PaintInspectorPlugin *_inspector_plugin; }; #endif