diff --git a/.gitignore b/.gitignore index 5230b5a..9c6f04d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,7 @@ *.d *.o *.meta +*.pyc +*.obj +*.bc diff --git a/SCsub b/SCsub index 5fdab32..257faa3 100644 --- a/SCsub +++ b/SCsub @@ -3,3 +3,6 @@ Import('env') env.add_source_files(env.modules_sources,"register_types.cpp") env.add_source_files(env.modules_sources,"touch_button.cpp") +env.add_source_files(env.modules_sources,"mesh_data_resource.cpp") +env.add_source_files(env.modules_sources,"editor_import_collada_mdr.cpp") +env.add_source_files(env.modules_sources,"editor_plugin_collada_mdr.cpp") diff --git a/editor_import_collada_mdr.cpp b/editor_import_collada_mdr.cpp new file mode 100644 index 0000000..c72fee8 --- /dev/null +++ b/editor_import_collada_mdr.cpp @@ -0,0 +1,54 @@ +#include "editor_import_collada_mdr.h" + +String EditorImportColladaMdr::get_importer_name() const { + return "collada_mdr"; +} + +String EditorImportColladaMdr::get_visible_name() const { + return "Collada MDR"; +} + +void EditorImportColladaMdr::get_recognized_extensions(List *p_extensions) const { + //p_extensions->push_back("daeas"); +} + +String EditorImportColladaMdr::get_save_extension() const { + return "cmdr"; +} + +String EditorImportColladaMdr::get_resource_type() const { + return "MeshDataResource"; +} + +float EditorImportColladaMdr::get_priority() const { + return 1.0; +} + +int EditorImportColladaMdr::get_preset_count() const { + return 0; +} + +String EditorImportColladaMdr::get_preset_name(int p_idx) const { + return ""; +} + +void EditorImportColladaMdr::get_import_options(List *r_options, int p_preset) const { + +} + +bool EditorImportColladaMdr::get_option_visibility(const String &p_option, const Map &p_options) const { + return true; +} + +Error EditorImportColladaMdr::import(const String &p_source_file, const String &p_save_path, const Map &p_options, List *r_platform_variants, List *r_gen_files, Variant *r_metadata) { + return Error::ERR_PARSE_ERROR; +} + + +EditorImportColladaMdr::EditorImportColladaMdr() { + //_importer.instance(); +} + +EditorImportColladaMdr::~EditorImportColladaMdr() { + //_importer.unref(); +} diff --git a/editor_import_collada_mdr.h b/editor_import_collada_mdr.h new file mode 100644 index 0000000..fc4027c --- /dev/null +++ b/editor_import_collada_mdr.h @@ -0,0 +1,37 @@ + +#ifndef EDITOR_IMPORT_COLLADA_MDR +#define EDITOR_IMPORT_COLLADA_MDR + +#include "core/io/resource_importer.h" +#include "core/ustring.h" + +//#include "editor/import/editor_import_collada.h" + +class EditorImportColladaMdr : public ResourceImporter { + + GDCLASS(EditorImportColladaMdr, ResourceImporter); + +public: + String get_importer_name() const override; + String get_visible_name() const override; + void get_recognized_extensions(List *p_extensions) const override; + String get_save_extension() const override; + String get_resource_type() const override; + float get_priority() const override; + + int get_preset_count() const override; + String get_preset_name(int p_idx) const override; + + void get_import_options(List *r_options, int p_preset = 0) const override; + bool get_option_visibility(const String &p_option, const Map &p_options) const override; + + Error import(const String &p_source_file, const String &p_save_path, const Map &p_options, List *r_platform_variants, List *r_gen_files = NULL, Variant *r_metadata = NULL) override; + + EditorImportColladaMdr(); + ~EditorImportColladaMdr(); + +private: + //Ref _importer; +}; + +#endif diff --git a/editor_plugin_collada_mdr.cpp b/editor_plugin_collada_mdr.cpp new file mode 100644 index 0000000..ee1c000 --- /dev/null +++ b/editor_plugin_collada_mdr.cpp @@ -0,0 +1,23 @@ +#include "editor_plugin_collada_mdr.h" + +void EditorPluginColladaMdr::_notification(int p_what) { + switch (p_what) { + case NOTIFICATION_ENTER_TREE: + if (!_importer.is_valid()) + _importer.instance(); + + add_import_plugin(_importer); + + break; + case NOTIFICATION_EXIT_TREE: + remove_import_plugin(_importer); + + _importer.unref(); + + break; + } +} + +EditorPluginColladaMdr::EditorPluginColladaMdr(EditorNode *node) { + _node = node; +} diff --git a/editor_plugin_collada_mdr.h b/editor_plugin_collada_mdr.h new file mode 100644 index 0000000..4aff12e --- /dev/null +++ b/editor_plugin_collada_mdr.h @@ -0,0 +1,25 @@ + +#ifndef EDITOR_PLUGIN_COLLADA_MDR +#define EDITOR_PLUGIN_COLLADA_MDR + +#include "editor/editor_plugin.h" +#include "core/ustring.h" + +#include "editor_import_collada_mdr.h" + +class EditorPluginColladaMdr : public EditorPlugin { + + GDCLASS(EditorPluginColladaMdr, EditorPlugin); + +public: + EditorPluginColladaMdr(EditorNode *node); + +protected: + void _notification(int p_what); + +private: + EditorNode *_node; + Ref _importer; +}; + +#endif diff --git a/mesh_data_resource.cpp b/mesh_data_resource.cpp new file mode 100644 index 0000000..81a1ea3 --- /dev/null +++ b/mesh_data_resource.cpp @@ -0,0 +1,20 @@ +#include "mesh_data_resource.h" + +Array MeshDataResource::get_array() { + return _arrays; +} +void MeshDataResource::set_array(const Array &p_arrays) { + _arrays.clear(); + + _arrays = p_arrays.duplicate(true); +} + +MeshDataResource::MeshDataResource() { + +} + +void MeshDataResource::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_array"), &MeshDataResource::get_array); + ClassDB::bind_method(D_METHOD("set_array", "array"), &MeshDataResource::set_array); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "array"), "set_array", "get_array"); +} diff --git a/mesh_data_resource.h b/mesh_data_resource.h new file mode 100644 index 0000000..cd6194b --- /dev/null +++ b/mesh_data_resource.h @@ -0,0 +1,26 @@ +#ifndef MESH_DATA_REOURCE_H +#define MESH_DATA_REOURCE_H + +#include "core/resource.h" +#include "core/array.h" +#include "scene/resources/mesh.h" + +class MeshDataResource : public Resource { + + GDCLASS(MeshDataResource, Resource); + RES_BASE_EXTENSION("mdres"); + +public: + Array get_array(); + void set_array(const Array &p_arrays); + + MeshDataResource(); + +protected: + static void _bind_methods(); + +private: + Array _arrays; +}; + +#endif diff --git a/register_types.cpp b/register_types.cpp index f87c8ce..2783883 100644 --- a/register_types.cpp +++ b/register_types.cpp @@ -1,9 +1,23 @@ #include "register_types.h" #include "touch_button.h" +#include "mesh_data_resource.h" + +#ifdef TOOLS_ENABLED +#include "editor/editor_plugin.h" + +#include "editor_plugin_collada_mdr.h" +#endif void register_ui_extensions_types() { ClassDB::register_class(); + ClassDB::register_class(); + + #ifdef TOOLS_ENABLED + //ClassDB::register_class(); + + //EditorPlugins::add_by_type(); + #endif } void unregister_ui_extensions_types() {