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)