74 lines
1.7 KiB
C#
74 lines
1.7 KiB
C#
#if UNITY_EDITOR
|
|
using UnityEngine;
|
|
using System;
|
|
|
|
namespace GSpawn
|
|
{
|
|
[Serializable]
|
|
public struct PluginGuid : ISerializationCallbackReceiver
|
|
{
|
|
[SerializeField]
|
|
private string _guidString;
|
|
private Guid _guid;
|
|
|
|
public Guid guid { get { return _guid; } }
|
|
|
|
public PluginGuid(Guid guid)
|
|
{
|
|
_guid = guid;
|
|
_guidString = _guid.ToString();
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return guid.GetHashCode();
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (!(obj is PluginGuid)) return false;
|
|
|
|
PluginGuid other = (PluginGuid)obj;
|
|
return guid.Equals(other.guid);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return guid.ToString();
|
|
}
|
|
|
|
public static bool operator ==(PluginGuid guid0, PluginGuid guid1)
|
|
{
|
|
return guid0.guid == guid1.guid;
|
|
}
|
|
|
|
public static bool operator !=(PluginGuid guid0, PluginGuid guid1)
|
|
{
|
|
return guid0.guid != guid1.guid;
|
|
}
|
|
|
|
public void OnAfterDeserialize()
|
|
{
|
|
_guid = Guid.Parse(_guidString);
|
|
}
|
|
|
|
public void OnBeforeSerialize()
|
|
{
|
|
_guidString = guid.ToString();
|
|
}
|
|
|
|
private void generateGuid()
|
|
{
|
|
if (!string.IsNullOrEmpty(_guidString))
|
|
{
|
|
_guid = new Guid(_guidString);
|
|
}
|
|
else
|
|
{
|
|
_guid = Guid.NewGuid();
|
|
_guidString = _guid.ToString();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif |