You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.7 KiB
64 lines
1.7 KiB
using System;
|
|
namespace Gamestrap
|
|
{
|
|
/// <summary>
|
|
/// Source:
|
|
/// Druss Blog
|
|
/// http://druss.co/2016/04/unity3d-serialize-and-deserialize-system-guid-using-jsonutility/
|
|
/// </summary>
|
|
[Serializable]
|
|
public struct SerializableGuid : IComparable, IComparable<SerializableGuid>, IEquatable<SerializableGuid>
|
|
{
|
|
public string Value;
|
|
|
|
private SerializableGuid(string value)
|
|
{
|
|
Value = value;
|
|
}
|
|
|
|
public static implicit operator SerializableGuid(Guid guid)
|
|
{
|
|
return new SerializableGuid(guid.ToString());
|
|
}
|
|
|
|
public static implicit operator Guid(SerializableGuid serializableGuid)
|
|
{
|
|
return new Guid(serializableGuid.Value);
|
|
}
|
|
|
|
public int CompareTo(object value)
|
|
{
|
|
if (value == null)
|
|
return 1;
|
|
if (!(value is SerializableGuid))
|
|
throw new ArgumentException("Must be SerializableGuid");
|
|
SerializableGuid guid = (SerializableGuid)value;
|
|
return guid.Value == Value ? 0 : 1;
|
|
}
|
|
|
|
public int CompareTo(SerializableGuid other)
|
|
{
|
|
return other.Value == Value ? 0 : 1;
|
|
}
|
|
|
|
public bool Equals(SerializableGuid other)
|
|
{
|
|
return Value == other.Value;
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
return base.Equals(obj);
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return (Value != null ? Value.GetHashCode() : 0);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return (Value != null ? new Guid(Value).ToString() : string.Empty);
|
|
}
|
|
}
|
|
}
|