A game about forced loneliness, made by TACStudios
at master 106 lines 2.8 kB view raw
1using System; 2using UnityEngine; 3 4namespace UnityEditor.U2D.Animation 5{ 6#if CODE_COVERAGE 7 internal class BaseObject 8 { 9 public static T CreateInstance<T>() 10 { 11 return Activator.CreateInstance<T>(); 12 } 13 14 public static void DestroyImmediate(object o) 15 { 16 if (o is BaseObject) 17 { 18 var obj = o as BaseObject; 19 obj.OnDestroy(); 20 s_Objects.Remove(obj.GetInstanceID()); 21 } 22 else if (o is UnityEngine.Object) 23 { 24 var obj = o as UnityEngine.Object; 25 Undo.ClearUndo(obj); 26 UnityEngine.Object.DestroyImmediate(obj); 27 } 28 } 29 30 public static BaseObject InstanceIDToObject(int instanceID) 31 { 32 var obj = default(BaseObject); 33 s_Objects.TryGetValue(instanceID, out obj); 34 return obj; 35 } 36 37 private static Dictionary<int, BaseObject> s_Objects = new Dictionary<int, BaseObject>(); 38 private static int s_InstanceID = 0; 39 private int m_InstanceID; 40 41 public string name { get; set; } 42 public HideFlags hideFlags = HideFlags.None; 43 44 public BaseObject() 45 { 46 m_InstanceID = ++s_InstanceID; 47 s_Objects.Add(m_InstanceID, this); 48 } 49 50 internal virtual void OnEnable() { } 51 internal virtual void OnDestroy() { } 52 53 public int GetInstanceID() 54 { 55 return m_InstanceID; 56 } 57 58 public override bool Equals(object other) 59 { 60 if ((other == null)) 61 return false; 62 63 return object.ReferenceEquals(this, other); 64 } 65 66 public override int GetHashCode() 67 { 68 return m_InstanceID.GetHashCode(); 69 } 70 71 public static bool operator ==(BaseObject t1, BaseObject t2) 72 { 73 if (object.ReferenceEquals(t1, null)) 74 return object.ReferenceEquals(t2, null); 75 76 return object.ReferenceEquals(t1, t2); 77 } 78 79 public static bool operator !=(BaseObject t1, BaseObject t2) 80 { 81 return !(t1 == t2); 82 } 83 } 84#else 85 internal class BaseObject : ScriptableObject 86 { 87 public static void DestroyImmediate(object o) 88 { 89 if (o is UnityEngine.Object) 90 { 91 var obj = o as UnityEngine.Object; 92 Undo.ClearUndo(obj); 93 UnityEngine.Object.DestroyImmediate(obj); 94 } 95 } 96 97 public static BaseObject InstanceIDToObject(int instanceID) 98 { 99 return EditorUtility.InstanceIDToObject(instanceID) as BaseObject; 100 } 101 102 internal virtual void OnEnable() { } 103 internal virtual void OnDestroy() { } 104 } 105#endif 106}