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.
|
/// The binary assets factory base class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="IAssetFactory" />
|
/// <seealso cref="IAssetFactory" />
|
||||||
class BinaryAssetFactoryBase : public IAssetFactory
|
class FLAXENGINE_API BinaryAssetFactoryBase : public IAssetFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class IAssetUpgrader;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The asset objects factory.
|
/// The asset objects factory.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class IAssetFactory
|
class FLAXENGINE_API IAssetFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
/// The Json assets factory base class.
|
/// The Json assets factory base class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="IAssetFactory" />
|
/// <seealso cref="IAssetFactory" />
|
||||||
class JsonAssetFactoryBase : public IAssetFactory
|
class FLAXENGINE_API JsonAssetFactoryBase : public IAssetFactory
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@@ -23,7 +23,6 @@ public:
|
|||||||
{
|
{
|
||||||
return Create(info);
|
return Create(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
Asset* NewVirtual(const AssetInfo& info) override
|
Asset* NewVirtual(const AssetInfo& info) override
|
||||||
{
|
{
|
||||||
return Create(info);
|
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); \
|
const String type::TypeName = TEXT(typeName); \
|
||||||
class CONCAT_MACROS(Factory, type) : public JsonAssetFactory<type> \
|
class CONCAT_MACROS(Factory, type) : public JsonAssetFactory<type> \
|
||||||
{ \
|
{ \
|
||||||
public: \
|
public: \
|
||||||
CONCAT_MACROS(Factory, type)() { IAssetFactory::Get().Add(type::TypeName, this); } \
|
CONCAT_MACROS(Factory, type)() { IAssetFactory::Get().Add(type::TypeName, this); } \
|
||||||
~CONCAT_MACROS(Factory, type)() { IAssetFactory::Get().Remove(type::TypeName); } \
|
~CONCAT_MACROS(Factory, type)() { IAssetFactory::Get().Remove(type::TypeName); } \
|
||||||
|
bool SupportsVirtualAssets() const override { return supportsVirtualAssets; } \
|
||||||
}; \
|
}; \
|
||||||
static CONCAT_MACROS(Factory, type) CONCAT_MACROS(CFactory, type)
|
static CONCAT_MACROS(Factory, type) CONCAT_MACROS(CFactory, type)
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ void JsonAssetBase::onRename(const StringView& newPath)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
REGISTER_JSON_ASSET(JsonAsset, "FlaxEngine.JsonAsset");
|
REGISTER_JSON_ASSET(JsonAsset, "FlaxEngine.JsonAsset", true);
|
||||||
|
|
||||||
JsonAsset::JsonAsset(const SpawnParams& params, const AssetInfo* info)
|
JsonAsset::JsonAsset(const SpawnParams& params, const AssetInfo* info)
|
||||||
: JsonAssetBase(params, info)
|
: JsonAssetBase(params, info)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Binary asset upgrading context structure.
|
/// Binary asset upgrading context structure.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
struct AssetMigrationContext
|
struct FLAXENGINE_API AssetMigrationContext
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The input data.
|
/// The input data.
|
||||||
@@ -63,7 +63,7 @@ typedef bool (*UpgradeHandler)(AssetMigrationContext& context);
|
|||||||
/// Binary Assets Upgrader base class
|
/// Binary Assets Upgrader base class
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="IAssetUpgrader" />
|
/// <seealso cref="IAssetUpgrader" />
|
||||||
class BinaryAssetUpgrader : public IAssetUpgrader
|
class FLAXENGINE_API BinaryAssetUpgrader : public IAssetUpgrader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The assets upgrading objects interface.
|
/// The assets upgrading objects interface.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class IAssetUpgrader
|
class FLAXENGINE_API IAssetUpgrader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
#include "Engine/Scripting/Scripting.h"
|
#include "Engine/Scripting/Scripting.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
REGISTER_JSON_ASSET(Prefab, "FlaxEngine.Prefab");
|
REGISTER_JSON_ASSET(Prefab, "FlaxEngine.Prefab", false);
|
||||||
|
|
||||||
Prefab::Prefab(const SpawnParams& params, const AssetInfo* info)
|
Prefab::Prefab(const SpawnParams& params, const AssetInfo* info)
|
||||||
: JsonAssetBase(params, info)
|
: JsonAssetBase(params, info)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
#include "Engine/Profiler/ProfilerCPU.h"
|
#include "Engine/Profiler/ProfilerCPU.h"
|
||||||
#include "Engine/Serialization/Serialization.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)
|
SceneAsset::SceneAsset(const SpawnParams& params, const AssetInfo* info)
|
||||||
: JsonAsset(params, info)
|
: JsonAsset(params, info)
|
||||||
|
|||||||
Reference in New Issue
Block a user