From a9ec4566e7b5b67110a827849bfab1c1fb773ae2 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 15 Apr 2021 16:55:03 +0200 Subject: [PATCH] Add support for custom asset type factory in game code --- Source/Engine/Content/Factories/BinaryAssetFactory.h | 2 +- Source/Engine/Content/Factories/IAssetFactory.h | 2 +- Source/Engine/Content/Factories/JsonAssetFactory.h | 6 +++--- Source/Engine/Content/JsonAsset.cpp | 2 +- Source/Engine/Content/Upgraders/BinaryAssetUpgrader.h | 4 ++-- Source/Engine/Content/Upgraders/IAssetUpgrader.h | 2 +- Source/Engine/Level/Prefabs/Prefab.cpp | 2 +- Source/Engine/Level/Scene/Scene.cpp | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Source/Engine/Content/Factories/BinaryAssetFactory.h b/Source/Engine/Content/Factories/BinaryAssetFactory.h index 25dd38aeb..d2af137b6 100644 --- a/Source/Engine/Content/Factories/BinaryAssetFactory.h +++ b/Source/Engine/Content/Factories/BinaryAssetFactory.h @@ -14,7 +14,7 @@ class FlaxStorage; /// The binary assets factory base class. /// /// -class BinaryAssetFactoryBase : public IAssetFactory +class FLAXENGINE_API BinaryAssetFactoryBase : public IAssetFactory { public: diff --git a/Source/Engine/Content/Factories/IAssetFactory.h b/Source/Engine/Content/Factories/IAssetFactory.h index dbc7b1e90..b72f8e8e2 100644 --- a/Source/Engine/Content/Factories/IAssetFactory.h +++ b/Source/Engine/Content/Factories/IAssetFactory.h @@ -15,7 +15,7 @@ class IAssetUpgrader; /// /// The asset objects factory. /// -class IAssetFactory +class FLAXENGINE_API IAssetFactory { public: diff --git a/Source/Engine/Content/Factories/JsonAssetFactory.h b/Source/Engine/Content/Factories/JsonAssetFactory.h index 0269ec596..988776186 100644 --- a/Source/Engine/Content/Factories/JsonAssetFactory.h +++ b/Source/Engine/Content/Factories/JsonAssetFactory.h @@ -10,7 +10,7 @@ /// The Json assets factory base class. /// /// -class JsonAssetFactoryBase : public IAssetFactory +class FLAXENGINE_API JsonAssetFactoryBase : public IAssetFactory { protected: @@ -23,7 +23,6 @@ public: { return Create(info); } - Asset* NewVirtual(const AssetInfo& info) override { return Create(info); @@ -47,12 +46,13 @@ protected: } }; -#define REGISTER_JSON_ASSET(type, typeName) \ +#define REGISTER_JSON_ASSET(type, typeName, supportsVirtualAssets) \ const String type::TypeName = TEXT(typeName); \ class CONCAT_MACROS(Factory, type) : public JsonAssetFactory \ { \ public: \ CONCAT_MACROS(Factory, type)() { IAssetFactory::Get().Add(type::TypeName, this); } \ ~CONCAT_MACROS(Factory, type)() { IAssetFactory::Get().Remove(type::TypeName); } \ + bool SupportsVirtualAssets() const override { return supportsVirtualAssets; } \ }; \ static CONCAT_MACROS(Factory, type) CONCAT_MACROS(CFactory, type) diff --git a/Source/Engine/Content/JsonAsset.cpp b/Source/Engine/Content/JsonAsset.cpp index 821c43f87..f84ba9f88 100644 --- a/Source/Engine/Content/JsonAsset.cpp +++ b/Source/Engine/Content/JsonAsset.cpp @@ -176,7 +176,7 @@ void JsonAssetBase::onRename(const StringView& newPath) #endif -REGISTER_JSON_ASSET(JsonAsset, "FlaxEngine.JsonAsset"); +REGISTER_JSON_ASSET(JsonAsset, "FlaxEngine.JsonAsset", true); JsonAsset::JsonAsset(const SpawnParams& params, const AssetInfo* info) : JsonAssetBase(params, info) diff --git a/Source/Engine/Content/Upgraders/BinaryAssetUpgrader.h b/Source/Engine/Content/Upgraders/BinaryAssetUpgrader.h index 2c2d0f03e..c97d9d53c 100644 --- a/Source/Engine/Content/Upgraders/BinaryAssetUpgrader.h +++ b/Source/Engine/Content/Upgraders/BinaryAssetUpgrader.h @@ -9,7 +9,7 @@ /// /// Binary asset upgrading context structure. /// -struct AssetMigrationContext +struct FLAXENGINE_API AssetMigrationContext { /// /// The input data. @@ -63,7 +63,7 @@ typedef bool (*UpgradeHandler)(AssetMigrationContext& context); /// Binary Assets Upgrader base class /// /// -class BinaryAssetUpgrader : public IAssetUpgrader +class FLAXENGINE_API BinaryAssetUpgrader : public IAssetUpgrader { public: diff --git a/Source/Engine/Content/Upgraders/IAssetUpgrader.h b/Source/Engine/Content/Upgraders/IAssetUpgrader.h index f54616a45..bc174859d 100644 --- a/Source/Engine/Content/Upgraders/IAssetUpgrader.h +++ b/Source/Engine/Content/Upgraders/IAssetUpgrader.h @@ -7,7 +7,7 @@ /// /// The assets upgrading objects interface. /// -class IAssetUpgrader +class FLAXENGINE_API IAssetUpgrader { public: diff --git a/Source/Engine/Level/Prefabs/Prefab.cpp b/Source/Engine/Level/Prefabs/Prefab.cpp index ed4ed2a2b..53bbb9d14 100644 --- a/Source/Engine/Level/Prefabs/Prefab.cpp +++ b/Source/Engine/Level/Prefabs/Prefab.cpp @@ -11,7 +11,7 @@ #include "Engine/Scripting/Scripting.h" #endif -REGISTER_JSON_ASSET(Prefab, "FlaxEngine.Prefab"); +REGISTER_JSON_ASSET(Prefab, "FlaxEngine.Prefab", false); Prefab::Prefab(const SpawnParams& params, const AssetInfo* info) : JsonAssetBase(params, info) diff --git a/Source/Engine/Level/Scene/Scene.cpp b/Source/Engine/Level/Scene/Scene.cpp index 94de9d713..968c6d0aa 100644 --- a/Source/Engine/Level/Scene/Scene.cpp +++ b/Source/Engine/Level/Scene/Scene.cpp @@ -14,7 +14,7 @@ #include "Engine/Profiler/ProfilerCPU.h" #include "Engine/Serialization/Serialization.h" -REGISTER_JSON_ASSET(SceneAsset, "FlaxEngine.SceneAsset"); +REGISTER_JSON_ASSET(SceneAsset, "FlaxEngine.SceneAsset", false); SceneAsset::SceneAsset(const SpawnParams& params, const AssetInfo* info) : JsonAsset(params, info)