diff --git a/engine/includes/editor/assetconverter.h b/engine/includes/editor/assetconverter.h index ad31a80de..42cfb9ea1 100644 --- a/engine/includes/editor/assetconverter.h +++ b/engine/includes/editor/assetconverter.h @@ -46,9 +46,9 @@ class ENGINE_EXPORT AssetConverterSettings : public Object { struct SubItem { TString uuid; - QImage icon; + TString type; - int32_t typeId; + QImage icon; bool dirty = true; }; @@ -79,6 +79,8 @@ class ENGINE_EXPORT AssetConverterSettings : public Object { virtual TString absoluteDestination() const; virtual void setAbsoluteDestination(const TString &destination); + virtual TString propertyAllias(const TString &name) const; + void resetIcon(const TString &uuid); QImage icon(const TString &uuid); @@ -98,11 +100,11 @@ class ENGINE_EXPORT AssetConverterSettings : public Object { void setSubItemsDirty(); - void setSubItem(const TString &name, const TString &uuid, int32_t type); + void setSubItem(const TString &name, const TString &uuid, const TString &type); virtual void setSubItemData(const TString &name, const Variant &data); AssetConverter::ReturnCode saveBinary(const Variant &data); - TString saveSubData(const Variant &data, const TString &path, int32_t type); + TString saveSubData(const Variant &data, const TString &path, const TString &type); bool loadSettings(); void saveSettings(); @@ -120,8 +122,6 @@ class ENGINE_EXPORT AssetConverterSettings : public Object { protected: virtual TString defaultIconPath(const TString &type) const; - void setType(uint32_t type); - void setVersion(uint32_t version); QImage renderDocumentIcon(const TString &path, const TString &color = TString("#0277bd")); diff --git a/engine/includes/editor/converters/animconverter.h b/engine/includes/editor/converters/animconverter.h index 3fe52984b..0415611b0 100644 --- a/engine/includes/editor/converters/animconverter.h +++ b/engine/includes/editor/converters/animconverter.h @@ -9,6 +9,8 @@ class AnimImportSettings : public AssetConverterSettings { AnimImportSettings(); private: + StringList typeNames() const override; + bool isReadOnly() const override; TString defaultIconPath(const TString &) const override; diff --git a/engine/includes/editor/converters/controlschemeconverter.h b/engine/includes/editor/converters/controlschemeconverter.h index 4b5e972e0..b04a3df50 100644 --- a/engine/includes/editor/converters/controlschemeconverter.h +++ b/engine/includes/editor/converters/controlschemeconverter.h @@ -7,6 +7,8 @@ class ControlScehemeConverterSettings : public AssetConverterSettings { public: ControlScehemeConverterSettings(); + + StringList typeNames() const override; }; class ControlSchemeConverter : public AssetConverter { diff --git a/engine/includes/editor/converters/fontconverter.h b/engine/includes/editor/converters/fontconverter.h index 43098f82a..6d0c6b983 100644 --- a/engine/includes/editor/converters/fontconverter.h +++ b/engine/includes/editor/converters/fontconverter.h @@ -9,6 +9,8 @@ class FontImportSettings : public AssetConverterSettings { FontImportSettings(); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; }; diff --git a/engine/includes/editor/converters/textconverter.h b/engine/includes/editor/converters/textconverter.h index 457a094b0..0e9f2b3de 100644 --- a/engine/includes/editor/converters/textconverter.h +++ b/engine/includes/editor/converters/textconverter.h @@ -10,6 +10,8 @@ class TextConverterSettings : public AssetConverterSettings { private: TString defaultIconPath(const TString &) const override; + StringList typeNames() const override; + }; class TextConverter : public AssetConverter { diff --git a/engine/includes/editor/converters/translatorconverter.h b/engine/includes/editor/converters/translatorconverter.h index 2f2d38de0..1018952d2 100644 --- a/engine/includes/editor/converters/translatorconverter.h +++ b/engine/includes/editor/converters/translatorconverter.h @@ -11,6 +11,9 @@ class TranslatorConverterSettings : public AssetConverterSettings { private: TString defaultIconPath(const TString &) const override; + + StringList typeNames() const override; + }; class TranslatorConverter : public AssetConverter { diff --git a/engine/src/editor/assetconverter.cpp b/engine/src/editor/assetconverter.cpp index 644be5891..3e2cb6d52 100644 --- a/engine/src/editor/assetconverter.cpp +++ b/engine/src/editor/assetconverter.cpp @@ -52,13 +52,7 @@ AssetConverterSettings::~AssetConverterSettings() { Returns the asset type for conversion for more details see MetaType. */ uint32_t AssetConverterSettings::type() const { - return m_type; -} -/*! - Sets the asset type for conversion for more details see MetaType. -*/ -void AssetConverterSettings::setType(uint32_t type) { - m_type = type; + return MetaType::type(typeName().data()); } /*! Returns true if asset cannot be cahnged using any embedded editor; returns true by the default. @@ -145,7 +139,7 @@ QImage AssetConverterSettings::icon(const TString &uuid) { for(auto &it : m_subItems) { if(it.second.uuid == uuid) { if(it.second.icon.isNull() && !it.second.icon.load(path.data())) { - it.second.icon = documentIcon(MetaType::name(it.second.typeId)); + it.second.icon = documentIcon(it.second.type); } return it.second.icon; } @@ -288,6 +282,12 @@ TString AssetConverterSettings::absoluteDestination() const { void AssetConverterSettings::setAbsoluteDestination(const TString &destination) { m_absoluteDestination = destination; } +/*! + \internal +*/ +TString AssetConverterSettings::propertyAllias(const TString &name) const { + return name; +} /*! Returns list of all sub-item keys. */ @@ -329,7 +329,7 @@ TString AssetConverterSettings::subTypeName(const TString &key) const { int32_t AssetConverterSettings::subType(const TString &key) const { auto it = m_subItems.find(key); if(it != m_subItems.end()) { - return it->second.typeId; + return MetaType::type(it->second.type.data()); } return 0; } @@ -344,9 +344,9 @@ void AssetConverterSettings::setSubItemsDirty() { /*! Sets a sub-item with \a name, \a uuid, and \a type. */ -void AssetConverterSettings::setSubItem(const TString &name, const TString &uuid, int32_t type) { +void AssetConverterSettings::setSubItem(const TString &name, const TString &uuid, const TString &type) { if(!name.isEmpty() && !uuid.isEmpty()) { - m_subItems[name] = {uuid, QImage(), type, false}; + m_subItems[name] = {uuid, type, QImage(), false}; } } /*! @@ -380,8 +380,8 @@ AssetConverter::ReturnCode AssetConverterSettings::saveBinary(const Variant &dat This method generated UUID id needed and registers a new sub-item. \sa AssetConverterSettings::setSubItem() */ -TString AssetConverterSettings::saveSubData(const Variant &data, const TString &path, int32_t type) { - TString uuid = subItem(path); +TString AssetConverterSettings::saveSubData(const Variant &data, const TString &path, const TString &type) { + TString uuid(subItem(path)); if(uuid.isEmpty()) { uuid = QUuid::createUuid().toString().toStdString(); } @@ -416,6 +416,11 @@ bool AssetConverterSettings::loadSettings() { auto it = map.find(property.name()); if(it != map.end()) { v = it->second; + } else { + it = map.find(propertyAllias(property.name())); + if(it != map.end()) { + v = it->second; + } } v.convert(MetaType::type(property.type().name())); property.write(this, v); @@ -444,7 +449,12 @@ bool AssetConverterSettings::loadSettings() { auto item = array.begin(); TString uuid = item->toString(); item++; - int type = item->toInt(); + TString type; + if(item->type() == MetaType::INTEGER) { + type = MetaType::name(item->toInt()); + } else { + type = item->toString(); + } setSubItem(subIt.first, uuid, type); item++; if(item != array.end()) { @@ -481,7 +491,6 @@ void AssetConverterSettings::saveSettings() { obj[gMd5] = hash(); obj[gGUID] = destination(); obj[gSettings] = set; - obj[gType] = type(); VariantMap sub; for(auto it : m_subItems) { @@ -490,15 +499,13 @@ void AssetConverterSettings::saveSettings() { if(!item.dirty) { VariantList array; array.push_back(item.uuid); - array.push_back(item.typeId); + array.push_back(item.type); Variant data = subItemData(it.first); if(data.isValid()) { array.push_back(data); } - array.push_back(subTypeName(it.first)); - sub[it.first] = array; } } diff --git a/engine/src/editor/codebuilder.cpp b/engine/src/editor/codebuilder.cpp index 75961469f..b8bbecd5d 100644 --- a/engine/src/editor/codebuilder.cpp +++ b/engine/src/editor/codebuilder.cpp @@ -27,11 +27,11 @@ namespace { BuilderSettings::BuilderSettings(CodeBuilder *builder) : m_builder(builder) { - setType(MetaType::type()); + } StringList BuilderSettings::typeNames() const { - return { "Code" }; + return { "Text" }; } TString BuilderSettings::defaultIconPath(const TString &) const { diff --git a/engine/src/editor/converters/animconverter.cpp b/engine/src/editor/converters/animconverter.cpp index 6f07ec90d..4152d582d 100644 --- a/engine/src/editor/converters/animconverter.cpp +++ b/engine/src/editor/converters/animconverter.cpp @@ -10,10 +10,13 @@ namespace { } AnimImportSettings::AnimImportSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList AnimImportSettings::typeNames() const { + return { "AnimationClip" }; +} + bool AnimImportSettings::isReadOnly() const { return false; } diff --git a/engine/src/editor/converters/assimpconverter.cpp b/engine/src/editor/converters/assimpconverter.cpp index 4955b5153..aa2b63b6e 100644 --- a/engine/src/editor/converters/assimpconverter.cpp +++ b/engine/src/editor/converters/assimpconverter.cpp @@ -75,7 +75,6 @@ AssimpImportSettings::AssimpImportSettings() : m_rotationError(0.5f), m_scaleError(0.5f) { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } @@ -510,7 +509,7 @@ Mesh *AssimpConverter::importMesh(const aiScene *scene, const aiNode *element, A total_i += indexCount; } - TString uuid = fbxSettings->saveSubData(Engine::toVariant(mesh), actor->name(), MetaType::type()); + TString uuid = fbxSettings->saveSubData(Engine::toVariant(mesh), actor->name(), MetaType::name()); Mesh *resource = Engine::loadResource(uuid); if(resource == nullptr) { @@ -732,7 +731,7 @@ void AssimpConverter::importAnimation(const aiScene *scene, AssimpImportSettings clip.m_tracks.sort(compare); - fbxSettings->saveSubData(Engine::toVariant(&clip), animation->mName.C_Str(), MetaType::type()); + fbxSettings->saveSubData(Engine::toVariant(&clip), animation->mName.C_Str(), MetaType::name()); } } @@ -756,7 +755,7 @@ void AssimpConverter::importPose(AssimpImportSettings *fbxSettings) { pose->addBone(&b); } - TString uuid = fbxSettings->saveSubData(Engine::toVariant(pose), "Pose", MetaType::type()); + TString uuid = fbxSettings->saveSubData(Engine::toVariant(pose), "Pose", MetaType::name()); Pose *resource = Engine::loadResource(uuid); if(resource == nullptr) { diff --git a/engine/src/editor/converters/controlschemeconverter.cpp b/engine/src/editor/converters/controlschemeconverter.cpp index 8257afcf0..6e2b60937 100644 --- a/engine/src/editor/converters/controlschemeconverter.cpp +++ b/engine/src/editor/converters/controlschemeconverter.cpp @@ -7,8 +7,14 @@ namespace { const char *gData("Data"); } +#define FORMAT_VERSION 1 + ControlScehemeConverterSettings::ControlScehemeConverterSettings() { - setType(MetaType::type()); + setVersion(FORMAT_VERSION); +} + +StringList ControlScehemeConverterSettings::typeNames() const { + return { "ControlScheme" }; } AssetConverter::ReturnCode ControlSchemeConverter::convertFile(AssetConverterSettings *settings) { diff --git a/engine/src/editor/converters/fontconverter.cpp b/engine/src/editor/converters/fontconverter.cpp index 2631ad059..0f2c1f1b8 100644 --- a/engine/src/editor/converters/fontconverter.cpp +++ b/engine/src/editor/converters/fontconverter.cpp @@ -9,10 +9,13 @@ namespace { #define FORMAT_VERSION 1 FontImportSettings::FontImportSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList FontImportSettings::typeNames() const { + return { "Font" }; +} + TString FontImportSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/font.svg"; } diff --git a/engine/src/editor/converters/mapconverter.cpp b/engine/src/editor/converters/mapconverter.cpp index da15079a3..fd8b7e273 100644 --- a/engine/src/editor/converters/mapconverter.cpp +++ b/engine/src/editor/converters/mapconverter.cpp @@ -5,7 +5,6 @@ #define FORMAT_VERSION 5 MapConverterSettings::MapConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } diff --git a/engine/src/editor/converters/prefabconverter.cpp b/engine/src/editor/converters/prefabconverter.cpp index 9b7846c1a..ff51d02a0 100644 --- a/engine/src/editor/converters/prefabconverter.cpp +++ b/engine/src/editor/converters/prefabconverter.cpp @@ -2,8 +2,6 @@ #include "components/actor.h" -#include - #include #include @@ -13,7 +11,6 @@ #define FORMAT_VERSION 5 PrefabConverterSettings::PrefabConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } @@ -38,9 +35,9 @@ TString PrefabConverter::templatePath() const { } void PrefabConverter::createFromTemplate(const TString &destination) { - QFile src(templatePath().data()); - if(src.open(QFile::ReadOnly)) { - TString data = src.readAll().toStdString(); + File src(templatePath().data()); + if(src.open(File::ReadOnly)) { + TString data = src.readAll(); src.close(); Variant variant = Json::load(data); diff --git a/engine/src/editor/converters/textconverter.cpp b/engine/src/editor/converters/textconverter.cpp index 9d0672030..ac43f3ef5 100644 --- a/engine/src/editor/converters/textconverter.cpp +++ b/engine/src/editor/converters/textconverter.cpp @@ -7,7 +7,6 @@ #define FORMAT_VERSION 1 TextConverterSettings::TextConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } @@ -15,6 +14,10 @@ TString TextConverterSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/text.svg"; } +StringList TextConverterSettings::typeNames() const { + return { "Text" }; +} + AssetConverter::ReturnCode TextConverter::convertFile(AssetConverterSettings *settings) { File src(settings->source()); if(src.open(File::ReadOnly)) { diff --git a/engine/src/editor/converters/translatorconverter.cpp b/engine/src/editor/converters/translatorconverter.cpp index 7c90a000f..bcdf2a63f 100644 --- a/engine/src/editor/converters/translatorconverter.cpp +++ b/engine/src/editor/converters/translatorconverter.cpp @@ -5,7 +5,6 @@ #define FORMAT_VERSION 1 TranslatorConverterSettings::TranslatorConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } @@ -13,6 +12,10 @@ TString TranslatorConverterSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/l10n.svg"; } +StringList TranslatorConverterSettings::typeNames() const { + return { "Translator" }; +} + AssetConverter::ReturnCode TranslatorConverter::convertFile(AssetConverterSettings *settings) { QFile src(settings->source().data()); if(src.open(QIODevice::ReadOnly)) { diff --git a/modules/editor/motiontools/converter/animationbuilder.cpp b/modules/editor/motiontools/converter/animationbuilder.cpp index 3ab612eac..967abcc79 100644 --- a/modules/editor/motiontools/converter/animationbuilder.cpp +++ b/modules/editor/motiontools/converter/animationbuilder.cpp @@ -5,10 +5,13 @@ #define FORMAT_VERSION 12 AnimationBuilderSettings::AnimationBuilderSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList AnimationBuilderSettings::typeNames() const { + return { "AnimationStateMachine" }; +} + TString AnimationBuilderSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/machine.svg"; } diff --git a/modules/editor/motiontools/converter/animationbuilder.h b/modules/editor/motiontools/converter/animationbuilder.h index 096dcfdac..b4e3d3461 100644 --- a/modules/editor/motiontools/converter/animationbuilder.h +++ b/modules/editor/motiontools/converter/animationbuilder.h @@ -9,6 +9,8 @@ class AnimationBuilderSettings : public AssetConverterSettings { public: AnimationBuilderSettings(); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; }; diff --git a/modules/editor/particletools/converter/effectbuilder.cpp b/modules/editor/particletools/converter/effectbuilder.cpp index 8cb7edeaf..60a62ffd6 100644 --- a/modules/editor/particletools/converter/effectbuilder.cpp +++ b/modules/editor/particletools/converter/effectbuilder.cpp @@ -42,10 +42,13 @@ namespace { EffectBuilderSettings::EffectBuilderSettings() : m_thumbnailWarmup(1.0f) { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList EffectBuilderSettings::typeNames() const { + return { "VisualEffect" }; +} + TString EffectBuilderSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/effect.svg"; } diff --git a/modules/editor/particletools/converter/effectbuilder.h b/modules/editor/particletools/converter/effectbuilder.h index a61c400e7..ff0b259de 100644 --- a/modules/editor/particletools/converter/effectbuilder.h +++ b/modules/editor/particletools/converter/effectbuilder.h @@ -19,6 +19,8 @@ class EffectBuilderSettings : public AssetConverterSettings { void setThumbnailWarmup(float value); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; private: diff --git a/modules/editor/particletools/converter/effectgraph.cpp b/modules/editor/particletools/converter/effectgraph.cpp index 2311eac54..361c34783 100644 --- a/modules/editor/particletools/converter/effectgraph.cpp +++ b/modules/editor/particletools/converter/effectgraph.cpp @@ -32,6 +32,7 @@ EffectGraph::EffectGraph() : EffectModule::registerClassFactory(Engine::resourceSystem()); EmitterState::registerClassFactory(Engine::resourceSystem()); SpriteParticle::registerClassFactory(Engine::resourceSystem()); + RenderableModule::registerClassFactory(Engine::resourceSystem()); MeshParticle::registerClassFactory(Engine::resourceSystem()); CustomModule::registerClassFactory(Engine::resourceSystem()); diff --git a/modules/editor/particletools/converter/modules/effectmodule.cpp b/modules/editor/particletools/converter/modules/effectmodule.cpp index 149081695..81a3c26ad 100644 --- a/modules/editor/particletools/converter/modules/effectmodule.cpp +++ b/modules/editor/particletools/converter/modules/effectmodule.cpp @@ -44,11 +44,11 @@ Widget *EffectModule::widget(Object *parent) { checkBoxRect->setAnchors(Vector2(0.0f, 0.5f), Vector2(1.0f, 0.5f)); checkBoxRect->setSize(Vector2(200.0f, 20.0f)); - Object::connect(m_checkBoxWidget, _SIGNAL(toggled(bool)), this, _SLOT(setEnabled(bool))); - m_checkBoxWidget->setChecked(m_enabled); m_checkBoxWidget->setText(moduleName); m_checkBoxWidget->setMirrored(true); + + Object::connect(m_checkBoxWidget, _SIGNAL(toggled(bool)), this, _SLOT(setEnabled(bool))); } return m_checkBoxWidget; diff --git a/modules/editor/particletools/converter/modules/meshmodule.h b/modules/editor/particletools/converter/modules/meshmodule.h index a1664c6e3..bf268c019 100644 --- a/modules/editor/particletools/converter/modules/meshmodule.h +++ b/modules/editor/particletools/converter/modules/meshmodule.h @@ -10,6 +10,8 @@ class MeshParticle : public RenderableModule { A_PROPERTIES( A_PROPERTYEX(Mesh *, mesh, MeshParticle::mesh, MeshParticle::setMesh, "editor=Asset") ) + A_NOMETHODS() + A_NOENUMS() public: MeshParticle(); diff --git a/modules/editor/particletools/converter/modules/renderablemodule.h b/modules/editor/particletools/converter/modules/renderablemodule.h index cb5f047aa..02d15075e 100644 --- a/modules/editor/particletools/converter/modules/renderablemodule.h +++ b/modules/editor/particletools/converter/modules/renderablemodule.h @@ -10,6 +10,8 @@ class RenderableModule : public EffectModule { A_PROPERTIES( A_PROPERTYEX(Material *, material, RenderableModule::material, RenderableModule::setMaterial, "editor=Asset") ) + A_NOMETHODS() + A_NOENUMS() public: RenderableModule(); diff --git a/modules/editor/particletools/converter/modules/spritemodule.h b/modules/editor/particletools/converter/modules/spritemodule.h index d009e694c..09547f3a2 100644 --- a/modules/editor/particletools/converter/modules/spritemodule.h +++ b/modules/editor/particletools/converter/modules/spritemodule.h @@ -10,6 +10,8 @@ class SpriteParticle : public RenderableModule { A_PROPERTIES( A_PROPERTY(Vector2, subUvSize, SpriteParticle::uvSize, SpriteParticle::setUvSize) ) + A_NOMETHODS() + A_NOENUMS() public: SpriteParticle(); diff --git a/modules/editor/pipelinetools/converter/pipelineconverter.cpp b/modules/editor/pipelinetools/converter/pipelineconverter.cpp index 569711717..1b6067a00 100644 --- a/modules/editor/pipelinetools/converter/pipelineconverter.cpp +++ b/modules/editor/pipelinetools/converter/pipelineconverter.cpp @@ -7,10 +7,13 @@ #define FORMAT_VERSION 11 PipelineConverterSettings::PipelineConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList PipelineConverterSettings::typeNames() const { + return { "Pipeline" }; +} + TString PipelineConverterSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/pipeline.svg"; } diff --git a/modules/editor/pipelinetools/converter/pipelineconverter.h b/modules/editor/pipelinetools/converter/pipelineconverter.h index 8e790ba70..e804396a4 100644 --- a/modules/editor/pipelinetools/converter/pipelineconverter.h +++ b/modules/editor/pipelinetools/converter/pipelineconverter.h @@ -10,6 +10,8 @@ class PipelineConverterSettings : public AssetConverterSettings { static int version(); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; }; diff --git a/modules/editor/shadertools/converter/shaderbuilder.cpp b/modules/editor/shadertools/converter/shaderbuilder.cpp index 4ed64e678..e4e45cdc2 100644 --- a/modules/editor/shadertools/converter/shaderbuilder.cpp +++ b/modules/editor/shadertools/converter/shaderbuilder.cpp @@ -80,7 +80,6 @@ namespace { }; ShaderBuilderSettings::ShaderBuilderSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); setRhi(Rhi::OpenGL); } @@ -94,6 +93,10 @@ void ShaderBuilderSettings::setRhi(int rhi) { setModified(); } +StringList ShaderBuilderSettings::typeNames() const { + return { "Material" }; +} + TString ShaderBuilderSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/material.svg"; } diff --git a/modules/editor/shadertools/converter/shaderbuilder.h b/modules/editor/shadertools/converter/shaderbuilder.h index 3e797bd7f..04cf1f74b 100644 --- a/modules/editor/shadertools/converter/shaderbuilder.h +++ b/modules/editor/shadertools/converter/shaderbuilder.h @@ -55,6 +55,8 @@ class ShaderBuilderSettings : public AssetConverterSettings { void setRhi(int rhi); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; bool isOutdated() const override; diff --git a/modules/editor/spineimporter/converter/animationimporter.cpp b/modules/editor/spineimporter/converter/animationimporter.cpp index 57033a8b3..606731f0e 100644 --- a/modules/editor/spineimporter/converter/animationimporter.cpp +++ b/modules/editor/spineimporter/converter/animationimporter.cpp @@ -281,7 +281,7 @@ void SpineConverter::importAnimations(const VariantMap &animations, SpineConvert } } - TString uuid = settings->saveSubData(Engine::toVariant(clip), clip->name(), MetaType::type()); + TString uuid = settings->saveSubData(Engine::toVariant(clip), clip->name(), MetaType::name()); Engine::setResource(clip, uuid); } } diff --git a/modules/editor/spineimporter/converter/spineconverter.cpp b/modules/editor/spineimporter/converter/spineconverter.cpp index 6c95dea39..392466639 100644 --- a/modules/editor/spineimporter/converter/spineconverter.cpp +++ b/modules/editor/spineimporter/converter/spineconverter.cpp @@ -42,10 +42,13 @@ std::map gTypeMap = { SpineConverterSettings::SpineConverterSettings() : m_root(nullptr), m_scale(1.0f) { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList SpineConverterSettings::typeNames() const { + return { "Prefab" }; +} + TString SpineConverterSettings::defaultIconPath(const TString &) const { return ":/Style/images/spine.svg"; } @@ -261,7 +264,7 @@ void SpineConverter::importSkins(const VariantList &list, SpineConverterSettings mesh->setColors(Vector4Vector(mesh->vertices().size(), Vector4(1.0f))); mesh->recalcBounds(); - TString uuid = settings->saveSubData(Engine::toVariant(mesh), mesh->name(), MetaType::type()); + TString uuid = settings->saveSubData(Engine::toVariant(mesh), mesh->name(), MetaType::name()); Engine::setResource(mesh, uuid); sprite->setShape(Mathf::hashString(attachmentName), mesh); @@ -281,7 +284,7 @@ void SpineConverter::importSkins(const VariantList &list, SpineConverterSettings } } - TString uuid = settings->saveSubData(Engine::toVariant(sprite), sprite->name(), MetaType::type()); + TString uuid = settings->saveSubData(Engine::toVariant(sprite), sprite->name(), MetaType::name()); Engine::setResource(sprite, uuid); } } diff --git a/modules/editor/spineimporter/converter/spineconverter.h b/modules/editor/spineimporter/converter/spineconverter.h index 4134af532..296cf7cb1 100644 --- a/modules/editor/spineimporter/converter/spineconverter.h +++ b/modules/editor/spineimporter/converter/spineconverter.h @@ -67,6 +67,8 @@ class SpineConverterSettings : public AssetConverterSettings { void setCustomScale(float value); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; public: diff --git a/modules/editor/texturetools/converter/textureconverter.cpp b/modules/editor/texturetools/converter/textureconverter.cpp index 898b6df47..717a6a03c 100644 --- a/modules/editor/texturetools/converter/textureconverter.cpp +++ b/modules/editor/texturetools/converter/textureconverter.cpp @@ -1,9 +1,7 @@ #include "textureconverter.h" #include -#include #include -#include #include #include @@ -44,16 +42,15 @@ TextureImportSettings::TextureImportSettings() : m_lod(false) { setVersion(FORMAT_VERSION); - setType(MetaType::type()); } int TextureImportSettings::assetType() const { return m_assetType; } + void TextureImportSettings::setAssetType(int type) { if(m_assetType != type) { m_assetType = type; - setType(TextureConverter::toMeta(m_assetType)); setModified(); } @@ -89,11 +86,11 @@ void TextureImportSettings::setLod(bool lod) { } } -uint32_t TextureImportSettings::pixels() const { +int TextureImportSettings::pixels() const { return m_pixels; } -void TextureImportSettings::setPixels(uint32_t pixels) { +void TextureImportSettings::setPixels(int pixels) { if(m_pixels != pixels) { m_pixels = pixels; setModified(); @@ -129,7 +126,7 @@ TString TextureImportSettings::setElement(const Element &element, const TString uuid = QUuid::createUuid().toString().toStdString(); } m_elements[path] = element; - setSubItem(path, uuid, MetaType::type()); + setSubItem(path, uuid, MetaType::name()); setModified(); return path; @@ -143,6 +140,22 @@ void TextureImportSettings::removeElement(const TString &key) { setModified(); } +TString TextureImportSettings::propertyAllias(const TString &name) const { + static const std::map map { + {"type", "Type"}, + {"wrap", "Wrap"}, + {"mipMaping", "MIP_Maping"}, + {"filtering", "Filtering"} + }; + + auto it = map.find(name); + if(it != map.end()) { + return it->second; + } + + return name; +} + StringList TextureImportSettings::typeNames() const { return { "Texture", "Sprite" }; } @@ -165,8 +178,6 @@ Variant TextureImportSettings::subItemData(const TString &key) const { if(it != m_elements.end()) { TextureImportSettings::Element element = it->second; - result["type"] = 0; - VariantMap data; data["x"] = (int)element.m_min.x; @@ -377,7 +388,7 @@ void TextureConverter::convertSprite(Sprite *sprite, TextureImportSettings *sett convertTexture(texture, settings); - TString uuid = settings->saveSubData(Engine::toVariant(texture), texture->name(), MetaType::type()); + TString uuid = settings->saveSubData(Engine::toVariant(texture), texture->name(), MetaType::name()); Engine::setResource(texture, uuid); float width = texture->width(); @@ -393,13 +404,13 @@ void TextureConverter::convertSprite(Sprite *sprite, TextureImportSettings *sett Vector2 p = value.m_pivot; - float w = (float)(value.m_max.x - value.m_min.x) / pixelsPerUnit; - float h = (float)(value.m_max.y - value.m_min.y) / pixelsPerUnit; + float w = (value.m_max.x - value.m_min.x) / pixelsPerUnit; + float h = (value.m_max.y - value.m_min.y) / pixelsPerUnit; - float l = (float)value.m_borderMin.x / pixelsPerUnit; - float r = (float)value.m_borderMax.x / pixelsPerUnit; - float t = (float)value.m_borderMax.y / pixelsPerUnit; - float b = (float)value.m_borderMin.y / pixelsPerUnit; + float l = value.m_borderMin.x / pixelsPerUnit; + float r = value.m_borderMax.x / pixelsPerUnit; + float t = value.m_borderMax.y / pixelsPerUnit; + float b = value.m_borderMin.y / pixelsPerUnit; mesh->setIndices({0, 1, 5, 0, 5, 4, 1, 2, 6, 1, 6, 5, 2, 3, 7, 2, 7, 6, 4, 5, 9, 4, 9, 8, 5, 6,10, 5,10, 9, 6, 7,11, 6,11,10, @@ -425,15 +436,15 @@ void TextureConverter::convertSprite(Sprite *sprite, TextureImportSettings *sett }); } { - float x0 = (float)value.m_min.x / width; - float x1 = (float)(value.m_min.x + value.m_borderMin.x) / width; - float x2 = (float)(value.m_max.x - value.m_borderMax.x) / width; - float x3 = (float)value.m_max.x / width; + float x0 = value.m_min.x / width; + float x1 = (value.m_min.x + value.m_borderMin.x) / width; + float x2 = (value.m_max.x - value.m_borderMax.x) / width; + float x3 = value.m_max.x / width; - float y0 = (float)value.m_min.y / height; - float y1 = (float)(value.m_min.y + value.m_borderMin.y) / height; - float y2 = (float)(value.m_max.y - value.m_borderMax.y) / height; - float y3 = (float)value.m_max.y / height; + float y0 = value.m_min.y / height; + float y1 = (value.m_min.y + value.m_borderMin.y) / height; + float y2 = (value.m_max.y - value.m_borderMax.y) / height; + float y3 = value.m_max.y / height; mesh->setUv0({ Vector2(x0, y0), Vector2(x1, y0), Vector2(x2, y0), Vector2(x3, y0), @@ -447,7 +458,7 @@ void TextureConverter::convertSprite(Sprite *sprite, TextureImportSettings *sett mesh->setColors(Vector4Vector(mesh->vertices().size(), Vector4(1.0f))); } - TString uuid = settings->saveSubData(Engine::toVariant(mesh), mesh->name(), MetaType::type()); + TString uuid = settings->saveSubData(Engine::toVariant(mesh), mesh->name(), MetaType::name()); Engine::setResource(mesh, uuid); sprite->setShape(Mathf::hashString(it.first), mesh); diff --git a/modules/editor/texturetools/converter/textureconverter.h b/modules/editor/texturetools/converter/textureconverter.h index b27b810d4..2ca3a66b5 100644 --- a/modules/editor/texturetools/converter/textureconverter.h +++ b/modules/editor/texturetools/converter/textureconverter.h @@ -10,10 +10,11 @@ class TextureImportSettings : public AssetConverterSettings { A_OBJECT(TextureImportSettings, AssetConverterSettings, Editor) A_PROPERTIES( - A_PROPERTYEX(AssetType, Type, TextureImportSettings::assetType, TextureImportSettings::setAssetType, "enum=AssetType"), - A_PROPERTYEX(WrapType, Wrap, TextureImportSettings::wrap, TextureImportSettings::setWrap, "enum=WrapType"), - A_PROPERTY(bool, MIP_maping, TextureImportSettings::lod, TextureImportSettings::setLod), - A_PROPERTYEX(FilteringType, Filtering, TextureImportSettings::filtering, TextureImportSettings::setFiltering, "enum=AssetType") + A_PROPERTYEX(AssetType, type, TextureImportSettings::assetType, TextureImportSettings::setAssetType, "enum=AssetType"), + A_PROPERTYEX(WrapType, wrap, TextureImportSettings::wrap, TextureImportSettings::setWrap, "enum=WrapType"), + A_PROPERTY(bool, mipMaping, TextureImportSettings::lod, TextureImportSettings::setLod), + A_PROPERTYEX(FilteringType, filtering, TextureImportSettings::filtering, TextureImportSettings::setFiltering, "enum=AssetType"), + A_PROPERTY(int, pixelsPerUnit, TextureImportSettings::pixels, TextureImportSettings::setPixels) ) A_ENUMS( A_ENUM(AssetType, @@ -85,13 +86,15 @@ class TextureImportSettings : public AssetConverterSettings { bool lod() const; void setLod(bool lod); - uint32_t pixels() const; - void setPixels(uint32_t pixels); + int pixels() const; + void setPixels(int pixels); ElementMap &elements(); TString setElement(const Element &element, const TString &key = TString()); void removeElement(const TString &key); + TString propertyAllias(const TString &name) const override; + private: Variant subItemData(const TString &key) const override; void setSubItemData(const TString &name, const Variant &data) override; @@ -112,7 +115,7 @@ class TextureImportSettings : public AssetConverterSettings { ElementMap m_elements; - uint32_t m_pixels; + int m_pixels; bool m_lod; diff --git a/modules/editor/tiledimporter/converter/tiledmapconverter.cpp b/modules/editor/tiledimporter/converter/tiledmapconverter.cpp index b9fb08672..e7b728684 100644 --- a/modules/editor/tiledimporter/converter/tiledmapconverter.cpp +++ b/modules/editor/tiledimporter/converter/tiledmapconverter.cpp @@ -21,10 +21,13 @@ const char *gTileMapRender("TileMapRender"); TiledMapConverterSettings::TiledMapConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList TiledMapConverterSettings::typeNames() const { + return { "Prefab" }; +} + TString TiledMapConverterSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/tilemap.svg"; } @@ -68,7 +71,7 @@ AssetConverter::ReturnCode TiledMapConverter::convertFile(AssetConverterSettings parseTileset(element, info.path(), *tileSet); TString uuid = settings->saveSubData(Engine::toVariant(tileSet), element.attribute("name").as_string(), - MetaType::type()); + MetaType::name()); TileSet *set = Engine::loadResource(uuid); if(set == nullptr) { @@ -110,7 +113,7 @@ AssetConverter::ReturnCode TiledMapConverter::convertFile(AssetConverterSettings tileMap->setCellHeight(tileHeight); TString uuid = settings->saveSubData(Engine::toVariant(tileMap), element.attribute("name").as_string(), - MetaType::type()); + MetaType::name()); TileMap *map = Engine::loadResource(uuid); if(map == nullptr) { diff --git a/modules/editor/tiledimporter/converter/tiledmapconverter.h b/modules/editor/tiledimporter/converter/tiledmapconverter.h index e543166c3..8e974fa8a 100644 --- a/modules/editor/tiledimporter/converter/tiledmapconverter.h +++ b/modules/editor/tiledimporter/converter/tiledmapconverter.h @@ -13,6 +13,8 @@ class TiledMapConverterSettings : public AssetConverterSettings { TiledMapConverterSettings(); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; }; diff --git a/modules/editor/tiledimporter/converter/tiledsetconverter.cpp b/modules/editor/tiledimporter/converter/tiledsetconverter.cpp index 91c1dd8ef..b687fc540 100644 --- a/modules/editor/tiledimporter/converter/tiledsetconverter.cpp +++ b/modules/editor/tiledimporter/converter/tiledsetconverter.cpp @@ -17,10 +17,13 @@ #define FORMAT_VERSION 1 TiledSetConverterSettings::TiledSetConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList TiledSetConverterSettings::typeNames() const { + return { "TileSet" }; +} + TString TiledSetConverterSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/tileset.svg"; } diff --git a/modules/editor/tiledimporter/converter/tiledsetconverter.h b/modules/editor/tiledimporter/converter/tiledsetconverter.h index 0c37c9fed..8df769703 100644 --- a/modules/editor/tiledimporter/converter/tiledsetconverter.h +++ b/modules/editor/tiledimporter/converter/tiledsetconverter.h @@ -8,6 +8,8 @@ class TiledSetConverterSettings : public AssetConverterSettings { TiledSetConverterSettings(); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; }; diff --git a/modules/media/includes/converters/audioconverter.h b/modules/media/includes/converters/audioconverter.h index bef6aa874..174a93e72 100644 --- a/modules/media/includes/converters/audioconverter.h +++ b/modules/media/includes/converters/audioconverter.h @@ -35,6 +35,8 @@ class AudioImportSettings : public AssetConverterSettings { void setQuality(float quality); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; protected: diff --git a/modules/media/src/converters/audioconverter.cpp b/modules/media/src/converters/audioconverter.cpp index 0576cd903..d735a839a 100644 --- a/modules/media/src/converters/audioconverter.cpp +++ b/modules/media/src/converters/audioconverter.cpp @@ -24,18 +24,21 @@ AudioImportSettings::AudioImportSettings() : m_stream(false), m_mono(false) { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } -bool AudioImportSettings::stream() const { - return m_stream; +StringList AudioImportSettings::typeNames() const { + return { "AudioClip" }; } TString AudioImportSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/audio.svg"; } +bool AudioImportSettings::stream() const { + return m_stream; +} + void AudioImportSettings::setStream(bool stream) { m_stream = stream; } diff --git a/modules/physics/bullet/includes/converters/physicmaterialconverter.h b/modules/physics/bullet/includes/converters/physicmaterialconverter.h index 90903dc5d..443008d4f 100644 --- a/modules/physics/bullet/includes/converters/physicmaterialconverter.h +++ b/modules/physics/bullet/includes/converters/physicmaterialconverter.h @@ -10,6 +10,8 @@ class PhysicMaterialImportSettings : public AssetConverterSettings { PhysicMaterialImportSettings(); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; }; diff --git a/modules/physics/bullet/src/converters/physicmaterialconverter.cpp b/modules/physics/bullet/src/converters/physicmaterialconverter.cpp index 651504a38..0e3e3688b 100644 --- a/modules/physics/bullet/src/converters/physicmaterialconverter.cpp +++ b/modules/physics/bullet/src/converters/physicmaterialconverter.cpp @@ -5,10 +5,13 @@ #define FORMAT_VERSION 1 PhysicMaterialImportSettings::PhysicMaterialImportSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList PhysicMaterialImportSettings::typeNames() const { + return { "PhysicMaterial" }; +} + TString PhysicMaterialImportSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/fixture.svg"; } diff --git a/modules/uikit/includes/converters/stylesheetconverter.h b/modules/uikit/includes/converters/stylesheetconverter.h index 82a654da3..d76f5abd1 100644 --- a/modules/uikit/includes/converters/stylesheetconverter.h +++ b/modules/uikit/includes/converters/stylesheetconverter.h @@ -8,6 +8,8 @@ class StyleSheetConverterSettings : public AssetConverterSettings { StyleSheetConverterSettings(); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; }; diff --git a/modules/uikit/includes/converters/uiconverter.h b/modules/uikit/includes/converters/uiconverter.h index e35cd5f38..ac28868d7 100644 --- a/modules/uikit/includes/converters/uiconverter.h +++ b/modules/uikit/includes/converters/uiconverter.h @@ -8,6 +8,8 @@ class UiConverterSettings : public AssetConverterSettings { UiConverterSettings(); private: + StringList typeNames() const override; + TString defaultIconPath(const TString &) const override; }; diff --git a/modules/uikit/src/converters/stylesheetconverter.cpp b/modules/uikit/src/converters/stylesheetconverter.cpp index 59d135751..e67c364ef 100644 --- a/modules/uikit/src/converters/stylesheetconverter.cpp +++ b/modules/uikit/src/converters/stylesheetconverter.cpp @@ -5,10 +5,13 @@ #define FORMAT_VERSION 1 StyleSheetConverterSettings::StyleSheetConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList StyleSheetConverterSettings::typeNames() const { + return { "StyleSheet" }; +} + TString StyleSheetConverterSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/css.svg"; } diff --git a/modules/uikit/src/converters/uiconverter.cpp b/modules/uikit/src/converters/uiconverter.cpp index ef4f3b9ae..94ef7b14c 100644 --- a/modules/uikit/src/converters/uiconverter.cpp +++ b/modules/uikit/src/converters/uiconverter.cpp @@ -5,10 +5,13 @@ #define FORMAT_VERSION 1 UiConverterSettings::UiConverterSettings() { - setType(MetaType::type()); setVersion(FORMAT_VERSION); } +StringList UiConverterSettings::typeNames() const { + return { "UiDocument" }; +} + TString UiConverterSettings::defaultIconPath(const TString &) const { return ":/Style/styles/dark/images/ui.svg"; } diff --git a/modules/vms/angel/includes/converters/angelbuilder.h b/modules/vms/angel/includes/converters/angelbuilder.h index 7c12dbe72..5934d85d9 100644 --- a/modules/vms/angel/includes/converters/angelbuilder.h +++ b/modules/vms/angel/includes/converters/angelbuilder.h @@ -68,6 +68,9 @@ class AngelClassMapModel : public QAbstractItemModel { class AngelScriptImportSettings : public BuilderSettings { public: explicit AngelScriptImportSettings(CodeBuilder *builder); + + StringList typeNames() const override; + }; class AngelBuilder : public CodeBuilder { diff --git a/modules/vms/angel/src/converters/angelbuilder.cpp b/modules/vms/angel/src/converters/angelbuilder.cpp index 758a3e977..ff767ca99 100644 --- a/modules/vms/angel/src/converters/angelbuilder.cpp +++ b/modules/vms/angel/src/converters/angelbuilder.cpp @@ -62,11 +62,16 @@ class CBytecodeStream : public asIBinaryStream { } protected: ByteArray &array; + }; AngelScriptImportSettings::AngelScriptImportSettings(CodeBuilder *builder) : BuilderSettings(builder) { - setType(MetaType::type()); + +} + +StringList AngelScriptImportSettings::typeNames() const { + return { "AngelScript" }; } AngelBuilder::AngelBuilder(AngelSystem *system) :