[Serialization] Add support for more types
This commit is contained in:
parent
a147ef411a
commit
8c3e8956ca
|
|
@ -25,6 +25,9 @@ namespace Nz
|
|||
bool IsValid() const;
|
||||
};
|
||||
|
||||
NAZARA_CORE_API bool Serialize(SerializationContext& context, SoundStreamParams& params, TypeTag<SoundStreamParams>);
|
||||
NAZARA_CORE_API bool Unserialize(SerializationContext& context, SoundStreamParams* params, TypeTag<SoundStreamParams>);
|
||||
|
||||
class Mutex;
|
||||
class SoundStream;
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include <Nazara/Core/ResourceManager.hpp>
|
||||
#include <Nazara/Core/ResourceParameters.hpp>
|
||||
#include <Nazara/Core/ResourceSaver.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <NazaraUtils/MovablePtr.hpp>
|
||||
#include <NazaraUtils/Signal.hpp>
|
||||
#include <atomic>
|
||||
|
|
@ -37,6 +38,9 @@ namespace Nz
|
|||
void Merge(const ImageParams& params);
|
||||
};
|
||||
|
||||
NAZARA_CORE_API bool Serialize(SerializationContext& context, ImageParams& params, TypeTag<ImageParams>);
|
||||
NAZARA_CORE_API bool Unserialize(SerializationContext& context, ImageParams* params, TypeTag<ImageParams>);
|
||||
|
||||
class Image;
|
||||
|
||||
using ImageLibrary = ObjectLibrary<Image>;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@
|
|||
|
||||
namespace Nz
|
||||
{
|
||||
struct SerializationContext;
|
||||
|
||||
struct NAZARA_CORE_API MeshParams : ResourceParameters
|
||||
{
|
||||
// How buffer will be allocated (by default in RAM)
|
||||
|
|
@ -74,6 +76,9 @@ namespace Nz
|
|||
bool IsValid() const;
|
||||
};
|
||||
|
||||
NAZARA_CORE_API bool Serialize(SerializationContext& context, const MeshParams& params, TypeTag<MeshParams>);
|
||||
NAZARA_CORE_API bool Unserialize(SerializationContext& context, MeshParams* params, TypeTag<MeshParams>);
|
||||
|
||||
class Mesh;
|
||||
struct Primitive;
|
||||
class PrimitiveList;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#define NAZARA_CORE_RESOURCEPARAMETERS_HPP
|
||||
|
||||
#include <Nazara/Core/ParameterList.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
|
|
@ -17,6 +18,9 @@ namespace Nz
|
|||
|
||||
ParameterList custom;
|
||||
};
|
||||
|
||||
NAZARA_CORE_API bool Serialize(SerializationContext& context, ResourceParameters& params, TypeTag<ResourceParameters>);
|
||||
NAZARA_CORE_API bool Unserialize(SerializationContext& context, ResourceParameters* params, TypeTag<ResourceParameters>);
|
||||
}
|
||||
|
||||
#endif // NAZARA_CORE_RESOURCEPARAMETERS_HPP
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
#include <Nazara/Core/Resource.hpp>
|
||||
#include <Nazara/Core/ResourceLoader.hpp>
|
||||
#include <Nazara/Core/ResourceManager.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <Nazara/Math/Vector3.hpp>
|
||||
#include <Nazara/Renderer/Enums.hpp>
|
||||
#include <Nazara/Renderer/Export.hpp>
|
||||
|
|
@ -53,6 +54,9 @@ namespace Nz
|
|||
void Merge(const TextureParams& params);
|
||||
};
|
||||
|
||||
NAZARA_RENDERER_API bool Serialize(SerializationContext& context, TextureParams& params, TypeTag<TextureParams>);
|
||||
NAZARA_RENDERER_API bool Unserialize(SerializationContext& context, TextureParams* params, TypeTag<TextureParams>);
|
||||
|
||||
class Texture;
|
||||
|
||||
using TextureLibrary = ObjectLibrary<Texture>;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,20 @@
|
|||
|
||||
namespace Nz
|
||||
{
|
||||
bool Serialize(SerializationContext& context, SoundStreamParams& params, TypeTag<SoundStreamParams>)
|
||||
{
|
||||
Serialize(context, params, TypeTag<ResourceParameters>());
|
||||
Serialize(context, "forceMono", params.forceMono);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unserialize(SerializationContext& context, SoundStreamParams* params, TypeTag<SoundStreamParams>)
|
||||
{
|
||||
Unserialize(context, params, TypeTag<ResourceParameters>());
|
||||
Unserialize(context, "forceMono", ¶ms->forceMono);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SoundStreamParams::IsValid() const
|
||||
{
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -45,6 +45,22 @@ namespace Nz
|
|||
loadFormat = params.loadFormat;
|
||||
}
|
||||
|
||||
bool Serialize(SerializationContext& context, ImageParams& params, TypeTag<ImageParams>)
|
||||
{
|
||||
Serialize(context, params, TypeTag<ResourceParameters>());
|
||||
|
||||
Serialize(context, "loadFormat", params.loadFormat);
|
||||
Serialize(context, "levelCount", params.levelCount);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unserialize(SerializationContext& context, ImageParams* params, TypeTag<ImageParams>)
|
||||
{
|
||||
Unserialize(context, params, TypeTag<ResourceParameters>());
|
||||
Unserialize(context, "loadFormat", ¶ms->loadFormat);
|
||||
Unserialize(context, "levelCount", ¶ms->levelCount);
|
||||
return true;
|
||||
}
|
||||
|
||||
Image::Image() :
|
||||
m_sharedImage(&emptyImage)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
#include <Nazara/Core/StringExt.hpp>
|
||||
#include <Nazara/Core/SubMesh.hpp>
|
||||
#include <Nazara/Core/VertexMapper.hpp>
|
||||
#include <Nazara/Core/Serialization.hpp>
|
||||
#include <limits>
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
|
|
@ -39,6 +40,50 @@ namespace Nz
|
|||
return true;
|
||||
}
|
||||
|
||||
bool Serialize(SerializationContext& context, const MeshParams& params, TypeTag<MeshParams>)
|
||||
{
|
||||
Serialize(context, "indexBufferFlags", params.indexBufferFlags);
|
||||
Serialize(context, "vertexBufferFlags", params.vertexBufferFlags);
|
||||
Serialize(context, "vertexOffset", params.vertexOffset);
|
||||
|
||||
Nz::EulerAnglesf rot = params.vertexRotation;
|
||||
Serialize(context, "vertexRotation", rot);
|
||||
|
||||
Serialize(context, "vertexScale", params.vertexScale);
|
||||
Serialize(context, "texCoordOffset", params.texCoordOffset);
|
||||
Serialize(context, "texCoordScale", params.texCoordScale);
|
||||
Serialize(context, "animated", params.animated);
|
||||
Serialize(context, "center", params.center);
|
||||
Serialize(context, "optimizeIndexBuffers", params.optimizeIndexBuffers);
|
||||
|
||||
Serialize(context, "vertexDeclaration", VertexDeclaration::Find(params.vertexDeclaration));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unserialize(SerializationContext& context, MeshParams* params, TypeTag<MeshParams>)
|
||||
{
|
||||
Unserialize(context, "indexBufferFlags", ¶ms->indexBufferFlags);
|
||||
Unserialize(context, "vertexBufferFlags", ¶ms->vertexBufferFlags);
|
||||
Unserialize(context, "vertexOffset", ¶ms->vertexOffset);
|
||||
|
||||
Nz::EulerAnglesf rot;
|
||||
if (Unserialize(context, "vertexRotation", &rot))
|
||||
params->vertexRotation = rot;
|
||||
|
||||
Unserialize(context, "vertexScale", ¶ms->vertexScale);
|
||||
Unserialize(context, "texCoordOffset", ¶ms->texCoordOffset);
|
||||
Unserialize(context, "texCoordScale", ¶ms->texCoordScale);
|
||||
Unserialize(context, "animated", ¶ms->animated);
|
||||
Unserialize(context, "center", ¶ms->center);
|
||||
Unserialize(context, "optimizeIndexBuffers", ¶ms->optimizeIndexBuffers);
|
||||
|
||||
VertexLayout layout;
|
||||
if (Unserialize(context, "vertexDeclaration", &layout))
|
||||
params->vertexDeclaration = VertexDeclaration::Get(layout);
|
||||
|
||||
return params->IsValid();
|
||||
}
|
||||
|
||||
|
||||
void Mesh::AddSubMesh(std::shared_ptr<SubMesh> subMesh)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,4 +7,18 @@
|
|||
namespace Nz
|
||||
{
|
||||
ResourceParameters::~ResourceParameters() = default;
|
||||
|
||||
bool Serialize(SerializationContext& context, ResourceParameters& params, TypeTag<ResourceParameters>)
|
||||
{
|
||||
NazaraUnused(context);
|
||||
NazaraUnused(params);
|
||||
return true;// Serialize(context, "custom", descriptor.custom);
|
||||
}
|
||||
|
||||
bool Unserialize(SerializationContext& context, ResourceParameters* params, TypeTag<ResourceParameters>)
|
||||
{
|
||||
NazaraUnused(context);
|
||||
NazaraUnused(params);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,28 @@
|
|||
|
||||
namespace Nz
|
||||
{
|
||||
bool Serialize(SerializationContext& context, TextureParams& params, TypeTag<TextureParams>)
|
||||
{
|
||||
Serialize(context, params, TypeTag<ImageParams>());
|
||||
|
||||
int v = int(params.usageFlags);
|
||||
Serialize(context, "usageFlags", v);
|
||||
Serialize(context, "buildMipmaps", params.buildMipmaps);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unserialize(SerializationContext& context, TextureParams* params, TypeTag<TextureParams>)
|
||||
{
|
||||
Unserialize(context, params, TypeTag<ImageParams>());
|
||||
|
||||
int usageFlags = 0;
|
||||
if (Unserialize(context, "usageFlags", &usageFlags))
|
||||
params->usageFlags = usageFlags;
|
||||
|
||||
Unserialize(context, "buildMipmaps", ¶ms->buildMipmaps);
|
||||
return true;
|
||||
}
|
||||
|
||||
Texture::~Texture() = default;
|
||||
|
||||
bool TextureParams::IsValid() const
|
||||
|
|
|
|||
Loading…
Reference in New Issue