Add support for custom asset type factory in game code
This commit is contained in:
@@ -14,7 +14,7 @@ class FlaxStorage;
|
||||
/// The binary assets factory base class.
|
||||
/// </summary>
|
||||
/// <seealso cref="IAssetFactory" />
|
||||
class BinaryAssetFactoryBase : public IAssetFactory
|
||||
class FLAXENGINE_API BinaryAssetFactoryBase : public IAssetFactory
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class IAssetUpgrader;
|
||||
/// <summary>
|
||||
/// The asset objects factory.
|
||||
/// </summary>
|
||||
class IAssetFactory
|
||||
class FLAXENGINE_API IAssetFactory
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/// The Json assets factory base class.
|
||||
/// </summary>
|
||||
/// <seealso cref="IAssetFactory" />
|
||||
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<type> \
|
||||
{ \
|
||||
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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/// <summary>
|
||||
/// Binary asset upgrading context structure.
|
||||
/// </summary>
|
||||
struct AssetMigrationContext
|
||||
struct FLAXENGINE_API AssetMigrationContext
|
||||
{
|
||||
/// <summary>
|
||||
/// The input data.
|
||||
@@ -63,7 +63,7 @@ typedef bool (*UpgradeHandler)(AssetMigrationContext& context);
|
||||
/// Binary Assets Upgrader base class
|
||||
/// </summary>
|
||||
/// <seealso cref="IAssetUpgrader" />
|
||||
class BinaryAssetUpgrader : public IAssetUpgrader
|
||||
class FLAXENGINE_API BinaryAssetUpgrader : public IAssetUpgrader
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/// <summary>
|
||||
/// The assets upgrading objects interface.
|
||||
/// </summary>
|
||||
class IAssetUpgrader
|
||||
class FLAXENGINE_API IAssetUpgrader
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user