mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
58 lines
1.2 KiB
Beef
58 lines
1.2 KiB
Beef
using Bon;
|
|
using System;
|
|
using Bon.Integrated;
|
|
using System.Collections;
|
|
|
|
namespace GlitchyEngine.Core
|
|
{
|
|
[BonTarget]
|
|
struct UUID : IHashable
|
|
{
|
|
[BonInclude]
|
|
private uint64 _uuid;
|
|
|
|
private static Random s_Random = new .() ~ delete _;
|
|
|
|
static this()
|
|
{
|
|
gBonEnv.typeHandlers.Add(typeof(UUID),
|
|
((.)new => Serialize, (.)new => Deserialize));
|
|
}
|
|
|
|
/// Creates a new UUID with the given value.
|
|
public this(uint64 uuid)
|
|
{
|
|
_uuid = uuid;
|
|
}
|
|
|
|
/// Creates a new random UUID.
|
|
public static UUID Create()
|
|
{
|
|
return UUID(s_Random.NextU64());
|
|
}
|
|
|
|
public int GetHashCode()
|
|
{
|
|
return (int)_uuid;
|
|
}
|
|
|
|
public override void ToString(String strBuffer)
|
|
{
|
|
_uuid.ToString(strBuffer);
|
|
}
|
|
|
|
static void Serialize(BonWriter writer, ValueView val, BonEnvironment env, SerializeValueState state)
|
|
{
|
|
UUID uuid = *(UUID*)val.dataPtr;
|
|
|
|
Bon.Integrated.Serialize.[Friend]Integer(typeof(uint64), writer, ValueView(typeof(uint64), &uuid._uuid));
|
|
}
|
|
|
|
public static Result<void> Deserialize(BonReader reader, ValueView val, BonEnvironment env, DeserializeValueState state)
|
|
{
|
|
Bon.Integrated.Deserialize.[Friend]Integer!(typeof(uint64), reader, val);
|
|
|
|
return .Ok;
|
|
}
|
|
}
|
|
} |