// // /*===============================================================================
// // Copyright (C) 2022 PhantomsXR Ltd. All Rights Reserved.
// //
// // This file is part of the UnityFusion.Runtime.CodeHook.
// //
// // The ARMOD-SDK cannot be copied, distributed, or made available to
// // third-parties for commercial purposes without written permission of PhantomsXR Ltd.
// //
// // Contact nswell@phantomsxr.com for licensing requests.
// // ===============================================================================*/
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using UnityEngine;
namespace Phantom.XRMOD.UnityFusion.Runtime.CodeHook
{
///
/// Serializable wrapper for Unity's .
///
[System.Serializable]
public class SerializableVector3
{
public float x;
public float y;
public float z;
public SerializableVector3(Vector3 vector)
{
x = vector.x;
y = vector.y;
z = vector.z;
}
public Vector3 ToVector3()
{
return new Vector3(x, y, z);
}
}
///
/// Serializable wrapper for Unity's .
///
[System.Serializable]
public class SerializableVector2
{
public float x;
public float y;
public SerializableVector2(Vector2 vector)
{
x = vector.x;
y = vector.y;
}
public Vector2 ToVector2()
{
return new Vector2(x, y);
}
}
///
/// Serializable wrapper for Unity's .
///
[System.Serializable]
public class SerializableVector4
{
public float x;
public float y;
public float z;
public float w;
public SerializableVector4(Vector4 vector)
{
x = vector.x;
y = vector.y;
z = vector.z;
w = vector.w;
}
public Vector4 ToVector4()
{
return new Vector4(x, y, z, w);
}
}
///
/// Provides static methods and extensions for serializing Unity value types.
///
public static class UnityValueTypeSerializer
{
public static string Serializer(this Vector2 _vector2)
{
return JsonUtility.ToJson(new SerializableVector2(_vector2));
}
public static string Serializer(this Vector2[] _vector2)
{
List tmp_List = new();
foreach (Vector2 tmp_Vector2 in _vector2)
{
tmp_List.Add(new SerializableVector2(tmp_Vector2));
}
return JsonUtility.ToJson(tmp_List);
}
public static string Serializer(this Vector3 _vector3)
{
return JsonUtility.ToJson(new SerializableVector3(_vector3));
}
public static string Serializer(this Vector4 _vector4)
{
return JsonUtility.ToJson(new SerializableVector4(_vector4));
}
public static string Serializer(this Quaternion _quaternion)
{
return JsonUtility.ToJson(
new SerializableVector4(new Vector4(_quaternion.x, _quaternion.y, _quaternion.z, _quaternion.w)));
}
public static string Serializer(this System.Object _object)
{
return JsonConvert.SerializeObject(_object);
}
public static object Deserializer(this string _jsonData, System.Type _type)
{
return JsonConvert.DeserializeObject(_jsonData,_type);
}
public static string Serializer(this Color _color)
{
return $"#{ColorUtility.ToHtmlStringRGBA(_color)}";
}
}
}