Rework Serialization functions

add name and handle more types
This commit is contained in:
SweetId
2024-03-05 17:26:07 -05:00
parent 055634e77c
commit a0f2b128d7
28 changed files with 645 additions and 336 deletions

View File

@@ -767,7 +767,7 @@ namespace Nz
template<AngleUnit Unit, typename T>
bool Serialize(SerializationContext& context, Angle<Unit, T> angle, TypeTag<Angle<Unit, T>>)
{
if (!Serialize(context, angle.value))
if (!Serialize(context, "value", angle.value))
return false;
return true;
@@ -783,7 +783,7 @@ namespace Nz
template<AngleUnit Unit, typename T>
bool Unserialize(SerializationContext& context, Angle<Unit, T>* angle, TypeTag<Angle<Unit, T>>)
{
if (!Unserialize(context, &angle->value))
if (!Unserialize(context, "value", &angle->value))
return false;
return true;

View File

@@ -421,13 +421,13 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const BoundingVolume<T>& boundingVolume, TypeTag<BoundingVolume<T>>)
{
if (!Serialize(context, static_cast<UInt8>(boundingVolume.extent)))
if (!Serialize(context, "extent", static_cast<UInt8>(boundingVolume.extent)))
return false;
if (!Serialize(context, boundingVolume.aabb))
if (!Serialize(context, "aabb", boundingVolume.aabb))
return false;
if (!Serialize(context, boundingVolume.obb))
if (!Serialize(context, "obb", boundingVolume.obb))
return false;
return true;
@@ -446,7 +446,7 @@ namespace Nz
bool Unserialize(SerializationContext& context, BoundingVolume<T>* boundingVolume, TypeTag<BoundingVolume<T>>)
{
UInt8 extend;
if (!Unserialize(context, &extend))
if (!Unserialize(context, "extent", &extend))
return false;
if (extend > UnderlyingCast(Extent::Max))
@@ -454,10 +454,10 @@ namespace Nz
boundingVolume->extent = static_cast<Extent>(extend);
if (!Unserialize(context, &boundingVolume->aabb))
if (!Unserialize(context, "aabb", &boundingVolume->aabb))
return false;
if (!Unserialize(context, &boundingVolume->obb))
if (!Unserialize(context, "obb", &boundingVolume->obb))
return false;
return true;

View File

@@ -754,22 +754,22 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Box<T>& box, TypeTag<Box<T>>)
{
if (!Serialize(context, box.x))
if (!Serialize(context, "x", box.x))
return false;
if (!Serialize(context, box.y))
if (!Serialize(context, "y", box.y))
return false;
if (!Serialize(context, box.z))
if (!Serialize(context, "z", box.z))
return false;
if (!Serialize(context, box.width))
if (!Serialize(context, "width", box.width))
return false;
if (!Serialize(context, box.height))
if (!Serialize(context, "height", box.height))
return false;
if (!Serialize(context, box.depth))
if (!Serialize(context, "depth", box.depth))
return false;
return true;
@@ -785,22 +785,22 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Box<T>* box, TypeTag<Box<T>>)
{
if (!Unserialize(context, &box->x))
if (!Unserialize(context, "x", &box->x))
return false;
if (!Unserialize(context, &box->y))
if (!Unserialize(context, "y", &box->y))
return false;
if (!Unserialize(context, &box->z))
if (!Unserialize(context, "z", &box->z))
return false;
if (!Unserialize(context, &box->width))
if (!Unserialize(context, "width", &box->width))
return false;
if (!Unserialize(context, &box->height))
if (!Unserialize(context, "height", &box->height))
return false;
if (!Unserialize(context, &box->depth))
if (!Unserialize(context, "depth", &box->depth))
return false;
return true;

View File

@@ -294,13 +294,13 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const EulerAngles<T>& angles, TypeTag<EulerAngles<T>>)
{
if (!Serialize(context, angles.pitch))
if (!Serialize(context, "pitch", angles.pitch))
return false;
if (!Serialize(context, angles.yaw))
if (!Serialize(context, "yaw", angles.yaw))
return false;
if (!Serialize(context, angles.roll))
if (!Serialize(context, "roll", angles.roll))
return false;
return true;
@@ -316,13 +316,13 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, EulerAngles<T>* angles, TypeTag<EulerAngles<T>>)
{
if (!Unserialize(context, &angles->pitch))
if (!Unserialize(context, "pitch", &angles->pitch))
return false;
if (!Unserialize(context, &angles->yaw))
if (!Unserialize(context, "yaw", &angles->yaw))
return false;
if (!Unserialize(context, &angles->roll))
if (!Unserialize(context, "roll", &angles->roll))
return false;
return true;

View File

@@ -608,13 +608,7 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Frustum<T>& frustum, TypeTag<Frustum<T>>)
{
for (const auto& plane : frustum.m_planes)
{
if (!Serialize(context, plane))
return false;
}
return true;
return Serialize(context, "planes", frustum.m_planes);
}
/*!
@@ -627,13 +621,7 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Frustum<T>* frustum, TypeTag<Frustum<T>>)
{
for (auto& plane : frustum->m_planes)
{
if (!Unserialize(context, &plane))
return false;
}
return true;
return Unserialize(context, "planes", &frustum->m_planes);
}
/*!

View File

@@ -1368,7 +1368,7 @@ namespace Nz
{
for (unsigned int i = 0; i < 16; ++i)
{
if (!Serialize(context, matrix[i]))
if (!Serialize(context, "", matrix[i]))
return false;
}
@@ -1388,7 +1388,7 @@ namespace Nz
T* head = &matrix->m11;
for (unsigned int i = 0; i < 16; ++i)
{
if (!Unserialize(context, head + i))
if (!Unserialize(context, "", head + i))
return false;
}

View File

@@ -217,16 +217,10 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const OrientedBox<T>& obb, TypeTag<OrientedBox<T>>)
{
if (!Serialize(context, obb.localBox))
if (!Serialize(context, "localBox", obb.localBox))
return false;
for (auto&& corner : obb.m_corners)
{
if (!Serialize(context, corner))
return false;
}
return true;
return Serialize(context, "corners", obb.m_corners);
}
/*!
@@ -239,16 +233,10 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, OrientedBox<T>* obb, TypeTag<OrientedBox<T>>)
{
if (!Unserialize(context, &obb->localBox))
if (!Unserialize(context, "localBox", &obb->localBox))
return false;
for (auto&& corner : obb->m_corners)
{
if (!Unserialize(context, &corner))
return false;
}
return true;
return Unserialize(context, "corners", &obb->m_corners);
}
/*!

View File

@@ -282,10 +282,10 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Plane<T>& plane, TypeTag<Plane<T>>)
{
if (!Serialize(context, plane.normal))
if (!Serialize(context, "normal", plane.normal))
return false;
if (!Serialize(context, plane.distance))
if (!Serialize(context, "distance", plane.distance))
return false;
return true;
@@ -301,10 +301,10 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Plane<T>* plane, TypeTag<Plane<T>>)
{
if (!Unserialize(context, &plane->normal))
if (!Unserialize(context, "normal", &plane->normal))
return false;
if (!Unserialize(context, &plane->distance))
if (!Unserialize(context, "distance", &plane->distance))
return false;
return true;

View File

@@ -788,16 +788,16 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Quaternion<T>& quat, TypeTag<Quaternion<T>>)
{
if (!Serialize(context, quat.x))
if (!Serialize(context, "x", quat.x))
return false;
if (!Serialize(context, quat.y))
if (!Serialize(context, "y", quat.y))
return false;
if (!Serialize(context, quat.z))
if (!Serialize(context, "z", quat.z))
return false;
if (!Serialize(context, quat.w))
if (!Serialize(context, "w", quat.w))
return false;
return true;
@@ -813,16 +813,16 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Quaternion<T>* quat, TypeTag<Quaternion<T>>)
{
if (!Unserialize(context, &quat->x))
if (!Unserialize(context, "x", &quat->x))
return false;
if (!Unserialize(context, &quat->y))
if (!Unserialize(context, "y", &quat->y))
return false;
if (!Unserialize(context, &quat->z))
if (!Unserialize(context, "z", &quat->z))
return false;
if (!Unserialize(context, &quat->w))
if (!Unserialize(context, "w", &quat->w))
return false;
return true;

View File

@@ -575,10 +575,10 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Ray<T>& ray, TypeTag<Ray<T>>)
{
if (!Serialize(context, ray.origin))
if (!Serialize(context, "origin", ray.origin))
return false;
if (!Serialize(context, ray.direction))
if (!Serialize(context, "direction", ray.direction))
return false;
return true;
@@ -594,10 +594,10 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Ray<T>* ray, TypeTag<Ray<T>>)
{
if (!Unserialize(context, &ray->origin))
if (!Unserialize(context, "origin", &ray->origin))
return false;
if (!Unserialize(context, &ray->direction))
if (!Unserialize(context, "direction", &ray->direction))
return false;
return true;

View File

@@ -625,16 +625,16 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Rect<T>& rect, TypeTag<Rect<T>>)
{
if (!Serialize(context, rect.x))
if (!Serialize(context, "x", rect.x))
return false;
if (!Serialize(context, rect.y))
if (!Serialize(context, "y", rect.y))
return false;
if (!Serialize(context, rect.width))
if (!Serialize(context, "width", rect.width))
return false;
if (!Serialize(context, rect.height))
if (!Serialize(context, "height", rect.height))
return false;
return true;
@@ -650,16 +650,16 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Rect<T>* rect, TypeTag<Rect<T>>)
{
if (!Unserialize(context, &rect->x))
if (!Unserialize(context, "x", &rect->x))
return false;
if (!Unserialize(context, &rect->y))
if (!Unserialize(context, "y", &rect->y))
return false;
if (!Unserialize(context, &rect->width))
if (!Unserialize(context, "width", &rect->width))
return false;
if (!Unserialize(context, &rect->height))
if (!Unserialize(context, "height", &rect->height))
return false;
return true;

View File

@@ -507,16 +507,16 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Sphere<T>& sphere, TypeTag<Sphere<T>>)
{
if (!Serialize(context, sphere.x))
if (!Serialize(context, "x", sphere.x))
return false;
if (!Serialize(context, sphere.y))
if (!Serialize(context, "y", sphere.y))
return false;
if (!Serialize(context, sphere.z))
if (!Serialize(context, "z", sphere.z))
return false;
if (!Serialize(context, sphere.radius))
if (!Serialize(context, "radius", sphere.radius))
return false;
return true;
@@ -532,16 +532,16 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Sphere<T>* sphere, TypeTag<Sphere<T>>)
{
if (!Unserialize(context, &sphere->x))
if (!Unserialize(context, "x", &sphere->x))
return false;
if (!Unserialize(context, &sphere->y))
if (!Unserialize(context, "y", &sphere->y))
return false;
if (!Unserialize(context, &sphere->z))
if (!Unserialize(context, "z", &sphere->z))
return false;
if (!Unserialize(context, &sphere->radius))
if (!Unserialize(context, "radius", &sphere->radius))
return false;
return true;

View File

@@ -775,10 +775,10 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Vector2<T>& vector, TypeTag<Vector2<T>>)
{
if (!Serialize(context, vector.x))
if (!Serialize(context, "x", vector.x))
return false;
if (!Serialize(context, vector.y))
if (!Serialize(context, "y", vector.y))
return false;
return true;
@@ -794,10 +794,10 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Vector2<T>* vector, TypeTag<Vector2<T>>)
{
if (!Unserialize(context, &vector->x))
if (!Unserialize(context, "x", &vector->x))
return false;
if (!Unserialize(context, &vector->y))
if (!Unserialize(context, "y", &vector->y))
return false;
return true;

View File

@@ -956,13 +956,13 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Vector3<T>& vector, TypeTag<Vector3<T>>)
{
if (!Serialize(context, vector.x))
if (!Serialize(context, "x", vector.x))
return false;
if (!Serialize(context, vector.y))
if (!Serialize(context, "y", vector.y))
return false;
if (!Serialize(context, vector.z))
if (!Serialize(context, "z", vector.z))
return false;
return true;
@@ -978,13 +978,13 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Vector3<T>* vector, TypeTag<Vector3<T>>)
{
if (!Unserialize(context, &vector->x))
if (!Unserialize(context, "x", &vector->x))
return false;
if (!Unserialize(context, &vector->y))
if (!Unserialize(context, "y", &vector->y))
return false;
if (!Unserialize(context, &vector->z))
if (!Unserialize(context, "z", &vector->z))
return false;
return true;

View File

@@ -758,16 +758,16 @@ namespace Nz
template<typename T>
bool Serialize(SerializationContext& context, const Vector4<T>& vector, TypeTag<Vector4<T>>)
{
if (!Serialize(context, vector.x))
if (!Serialize(context, "x", vector.x))
return false;
if (!Serialize(context, vector.y))
if (!Serialize(context, "y", vector.y))
return false;
if (!Serialize(context, vector.z))
if (!Serialize(context, "z", vector.z))
return false;
if (!Serialize(context, vector.w))
if (!Serialize(context, "w", vector.w))
return false;
return true;
@@ -783,16 +783,16 @@ namespace Nz
template<typename T>
bool Unserialize(SerializationContext& context, Vector4<T>* vector, TypeTag<Vector4<T>>)
{
if (!Unserialize(context, &vector->x))
if (!Unserialize(context, "x", &vector->x))
return false;
if (!Unserialize(context, &vector->y))
if (!Unserialize(context, "y", &vector->y))
return false;
if (!Unserialize(context, &vector->z))
if (!Unserialize(context, "z", &vector->z))
return false;
if (!Unserialize(context, &vector->w))
if (!Unserialize(context, "w", &vector->w))
return false;
return true;