[Serialization] Add support for more types

This commit is contained in:
SweetId
2024-03-10 16:39:16 -04:00
parent a147ef411a
commit 8c3e8956ca
10 changed files with 131 additions and 0 deletions

View File

@@ -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", &params->forceMono);
return true;
}
bool SoundStreamParams::IsValid() const
{
return true;

View File

@@ -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", &params->loadFormat);
Unserialize(context, "levelCount", &params->levelCount);
return true;
}
Image::Image() :
m_sharedImage(&emptyImage)

View File

@@ -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", &params->indexBufferFlags);
Unserialize(context, "vertexBufferFlags", &params->vertexBufferFlags);
Unserialize(context, "vertexOffset", &params->vertexOffset);
Nz::EulerAnglesf rot;
if (Unserialize(context, "vertexRotation", &rot))
params->vertexRotation = rot;
Unserialize(context, "vertexScale", &params->vertexScale);
Unserialize(context, "texCoordOffset", &params->texCoordOffset);
Unserialize(context, "texCoordScale", &params->texCoordScale);
Unserialize(context, "animated", &params->animated);
Unserialize(context, "center", &params->center);
Unserialize(context, "optimizeIndexBuffers", &params->optimizeIndexBuffers);
VertexLayout layout;
if (Unserialize(context, "vertexDeclaration", &layout))
params->vertexDeclaration = VertexDeclaration::Get(layout);
return params->IsValid();
}
void Mesh::AddSubMesh(std::shared_ptr<SubMesh> subMesh)
{

View File

@@ -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;
}
}

View File

@@ -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", &params->buildMipmaps);
return true;
}
Texture::~Texture() = default;
bool TextureParams::IsValid() const