A game about forced loneliness, made by TACStudios
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}