diff --git a/README.md b/README.md deleted file mode 100644 index 0b7169fdbd18f52bb80c4ef77eb700b3d212f7e5..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# unity pm test - diff --git a/Scriptable Variables.meta b/Scriptable Variables.meta new file mode 100644 index 0000000000000000000000000000000000000000..29e375402fba3856e4d9c3fded422713c319db54 --- /dev/null +++ b/Scriptable Variables.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99f3c7ece40238e41bfcfb1a3123bc9b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/AutomaticResettableResetter.cs b/Scriptable Variables/AutomaticResettableResetter.cs new file mode 100644 index 0000000000000000000000000000000000000000..df295e8a7bd4cb05d610e79c46d61760836fd18d --- /dev/null +++ b/Scriptable Variables/AutomaticResettableResetter.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Shared.ScriptableVariables { + // Automatically calls Reset() on any assigned Resettables on Start + // Useful for setting default values to ScriptableVariables on startup + public class AutomaticResettableResetter : MonoBehaviour { + [Tooltip("List of Objects that implement the Resettable interface to reset on Start")] + public List<Object> resettables = new List<Object>(); + + [Tooltip("Game Event to fire when all resettables have been reset")] + public GameEvent resetComplete; + + // --------------------------------------------------------------------------- + void OnValidate() { + // Remove any Objects in the list that don't implement the Resettable interface + for (var index = resettables.Count - 1; index >= 0; --index) { + if (!(resettables[index] is Resettable)) { + resettables.RemoveAt(index); + } + } + } + + // --------------------------------------------------------------------------- + void Start() { + for (var index = resettables.Count - 1; index >= 0; --index) { + var resettable = resettables[index] as Resettable; + resettable.Reset(); + } + if (resetComplete != null) { + resetComplete.Raise(); + } + } + } +} diff --git a/Scriptable Variables/AutomaticResettableResetter.cs.meta b/Scriptable Variables/AutomaticResettableResetter.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..6ab671a9e42f867d6a5bc0084eb16983aa4c9bff --- /dev/null +++ b/Scriptable Variables/AutomaticResettableResetter.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: cf16b22a15bd12f41a3c1a8f532b26fb +timeCreated: 1510602115 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events.meta b/Scriptable Variables/Events.meta new file mode 100644 index 0000000000000000000000000000000000000000..e664f16cb363a6f23bcff86e8a435b50526bd1d1 --- /dev/null +++ b/Scriptable Variables/Events.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 483ff9c813faac44189347241e5939e6 +folderAsset: yes +timeCreated: 1510599414 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/BooleanGameEvent.cs b/Scriptable Variables/Events/BooleanGameEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..799ab753f9567c4fc88275025df3c1676afb5499 --- /dev/null +++ b/Scriptable Variables/Events/BooleanGameEvent.cs @@ -0,0 +1,19 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // ScriptableVariable that decouples components firing and listening to game events that require a boolean parameter + [CreateAssetMenu(menuName = "Scriptable Objects/Events/Boolean Game Event")] + public class BooleanGameEvent : GameEvent<bool> { + //--------------------------------------------------------------------------- + [ContextMenu("Raise(true)")] + private void RaiseTrue() { + Raise(true); + } + + //--------------------------------------------------------------------------- + [ContextMenu("Raise(false)")] + private void RaiseFalse() { + Raise(false); + } + } +} diff --git a/Scriptable Variables/Events/BooleanGameEvent.cs.meta b/Scriptable Variables/Events/BooleanGameEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d8d2f80802943a5f8a009eab523a2f1cd4f5c8d9 --- /dev/null +++ b/Scriptable Variables/Events/BooleanGameEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ff7d54b91183cc94297ede3be460e0d0 +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor.meta b/Scriptable Variables/Events/Editor.meta new file mode 100644 index 0000000000000000000000000000000000000000..eb02ced1ebeb23755becc24e0488cb5114e92be7 --- /dev/null +++ b/Scriptable Variables/Events/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c5fb57c8c826579458e26998f190b842 +folderAsset: yes +timeCreated: 1513206428 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor/BooleanGameEventEditor.cs b/Scriptable Variables/Events/Editor/BooleanGameEventEditor.cs new file mode 100644 index 0000000000000000000000000000000000000000..86c1cac93160ccf965842038aea69fa91174ed67 --- /dev/null +++ b/Scriptable Variables/Events/Editor/BooleanGameEventEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + [CustomEditor(typeof(BooleanGameEvent))] + public class BooleanGameEventEditor : Editor { + private bool testValue = false; + + //--------------------------------------------------------------------------- + public override void OnInspectorGUI() { + base.OnInspectorGUI(); + + EditorGUILayout.BeginHorizontal(); + testValue = EditorGUILayout.Toggle("Test Value", testValue); + if (GUILayout.Button("Fire Event")) { + ((BooleanGameEvent)target).Raise(testValue); + } + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Scriptable Variables/Events/Editor/BooleanGameEventEditor.cs.meta b/Scriptable Variables/Events/Editor/BooleanGameEventEditor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..100b1990e320428d23451a2768bae2dd1d651b8b --- /dev/null +++ b/Scriptable Variables/Events/Editor/BooleanGameEventEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 4cc2f4c2b9d6848418dda0f375a7f50f +timeCreated: 1513206436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor/FloatGameEventEditor.cs b/Scriptable Variables/Events/Editor/FloatGameEventEditor.cs new file mode 100644 index 0000000000000000000000000000000000000000..864e318072955eccbbdd9d4bf729d2228b859db1 --- /dev/null +++ b/Scriptable Variables/Events/Editor/FloatGameEventEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + [CustomEditor(typeof(FloatGameEvent))] + public class FloatGameEventEditor : Editor { + private float testValue = 0.0f; + + //--------------------------------------------------------------------------- + public override void OnInspectorGUI() { + base.OnInspectorGUI(); + + EditorGUILayout.BeginHorizontal(); + testValue = EditorGUILayout.FloatField("Test Value", testValue); + if (GUILayout.Button("Fire Event")) { + ((FloatGameEvent)target).Raise(testValue); + } + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Scriptable Variables/Events/Editor/FloatGameEventEditor.cs.meta b/Scriptable Variables/Events/Editor/FloatGameEventEditor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..5fc14d7f6f70037f1dcd71f9feced1631b14b304 --- /dev/null +++ b/Scriptable Variables/Events/Editor/FloatGameEventEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 55ad0db2d28d4484c8cc2c3193e9c2d3 +timeCreated: 1513206436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor/GameEventEditor.cs b/Scriptable Variables/Events/Editor/GameEventEditor.cs new file mode 100644 index 0000000000000000000000000000000000000000..de7a6a236913edb886295dede1cb71418fcbe3c3 --- /dev/null +++ b/Scriptable Variables/Events/Editor/GameEventEditor.cs @@ -0,0 +1,17 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + [CustomEditor(typeof(GameEvent))] + public class GameEventEditor : Editor { + //--------------------------------------------------------------------------- + public override void OnInspectorGUI() { + base.OnInspectorGUI(); + + if (GUILayout.Button("Fire Event")) { + ((GameEvent)target).Raise(); + } + } + } +} diff --git a/Scriptable Variables/Events/Editor/GameEventEditor.cs.meta b/Scriptable Variables/Events/Editor/GameEventEditor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..8ab1d724348136a70496bfe3813d4969caf17f6a --- /dev/null +++ b/Scriptable Variables/Events/Editor/GameEventEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 88090feebd5266e4b8a497e0aeacb15a +timeCreated: 1513206436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor/IntGameEventEditor.cs b/Scriptable Variables/Events/Editor/IntGameEventEditor.cs new file mode 100644 index 0000000000000000000000000000000000000000..3046342e59b416665bea18e17148a9f481e2eaaf --- /dev/null +++ b/Scriptable Variables/Events/Editor/IntGameEventEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + [CustomEditor(typeof(IntGameEvent))] + public class IntGameEventEditor : Editor { + private int testValue = 0; + + //--------------------------------------------------------------------------- + public override void OnInspectorGUI() { + base.OnInspectorGUI(); + + EditorGUILayout.BeginHorizontal(); + testValue = EditorGUILayout.IntField("Test Value", testValue); + if (GUILayout.Button("Fire Event")) { + ((IntGameEvent)target).Raise(testValue); + } + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Scriptable Variables/Events/Editor/IntGameEventEditor.cs.meta b/Scriptable Variables/Events/Editor/IntGameEventEditor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a00d18b1ebbd80cc082c43bd44edd51e46805360 --- /dev/null +++ b/Scriptable Variables/Events/Editor/IntGameEventEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 091b5244678bea24ab2a62e3849cb715 +timeCreated: 1513206436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor/StringGameEventEditor.cs b/Scriptable Variables/Events/Editor/StringGameEventEditor.cs new file mode 100644 index 0000000000000000000000000000000000000000..1e94c713dd11a8264e71eb39c3247bff482373ab --- /dev/null +++ b/Scriptable Variables/Events/Editor/StringGameEventEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + [CustomEditor(typeof(StringGameEvent))] + public class StringGameEventEditor : Editor { + private string testValue; + + //--------------------------------------------------------------------------- + public override void OnInspectorGUI() { + base.OnInspectorGUI(); + + EditorGUILayout.BeginHorizontal(); + testValue = EditorGUILayout.TextField("Test Value", testValue); + if (GUILayout.Button("Fire Event")) { + ((StringGameEvent)target).Raise(testValue); + } + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Scriptable Variables/Events/Editor/StringGameEventEditor.cs.meta b/Scriptable Variables/Events/Editor/StringGameEventEditor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c64881ba35d796963e0dc70bc906325db2b016e9 --- /dev/null +++ b/Scriptable Variables/Events/Editor/StringGameEventEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 5b14325ad63c61f468af93d960da8ec0 +timeCreated: 1513206436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/FloatGameEvent.cs b/Scriptable Variables/Events/FloatGameEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..f46f495593e5bd43a5e7085b1d0f10ccf8f55650 --- /dev/null +++ b/Scriptable Variables/Events/FloatGameEvent.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // ScriptableVariable that decouples components firing and listening to game events that require a float parameter + [CreateAssetMenu(menuName = "Scriptable Objects/Events/Float Game Event")] + public class FloatGameEvent : GameEvent<float> { + } +} diff --git a/Scriptable Variables/Events/FloatGameEvent.cs.meta b/Scriptable Variables/Events/FloatGameEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b8bd36776caf17590c16bb90994b3a0bf9a915b5 --- /dev/null +++ b/Scriptable Variables/Events/FloatGameEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 548f989fcd91b734492e17b5b7a185fc +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/GameEvent.cs b/Scriptable Variables/Events/GameEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..a47dcafeb8329a2fbf4cef548d9b45390012eaff --- /dev/null +++ b/Scriptable Variables/Events/GameEvent.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // ScriptableVariable that decouples components firing and listening to game events + [CreateAssetMenu(menuName = "Scriptable Objects/Events/Game Event")] + public class GameEvent : ScriptableVariable { + public delegate void GameEventRaised(); + public event GameEventRaised OnRaised; + + //--------------------------------------------------------------------------- + [ContextMenu("Raise")] + public void Raise() { + if (OnRaised != null) { + OnRaised(); + } + } + } + + //--------------------------------------------------------------------------- + public abstract class GameEvent<T> : ScriptableVariable { + public delegate void GameEventRaised(T value); + public event GameEventRaised OnRaised; + + //--------------------------------------------------------------------------- + public void Raise(T value) { + if (OnRaised != null) { + OnRaised(value); + } + } + } +} diff --git a/Scriptable Variables/Events/GameEvent.cs.meta b/Scriptable Variables/Events/GameEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a576a241f57825eb0710d47c77c384953ba4b0ce --- /dev/null +++ b/Scriptable Variables/Events/GameEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c1960bdf0074040469b1823b9228ac1b +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/IntGameEvent.cs b/Scriptable Variables/Events/IntGameEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..fea804cdf71e0c44a3f4cd98d81ea833bb050767 --- /dev/null +++ b/Scriptable Variables/Events/IntGameEvent.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // ScriptableVariable that decouples components firing and listening to game events that require an int parameter + [CreateAssetMenu(menuName = "Scriptable Objects/Events/Int Game Event")] + public class IntGameEvent : GameEvent<int> { + } +} diff --git a/Scriptable Variables/Events/IntGameEvent.cs.meta b/Scriptable Variables/Events/IntGameEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4bcf7f34c723ac1c605a9d5c9e0e777d08b34e28 --- /dev/null +++ b/Scriptable Variables/Events/IntGameEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 898f8db1b01f0fa4987a99107325acbf +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/StringGameEvent.cs b/Scriptable Variables/Events/StringGameEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..178b5855ac880fcfd90977c2ba8b8852abccd7b7 --- /dev/null +++ b/Scriptable Variables/Events/StringGameEvent.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // ScriptableVariable that decouples components firing and listening to game events that require a string parameter + [CreateAssetMenu(menuName = "Scriptable Objects/Events/String Game Event")] + public class StringGameEvent : GameEvent<string> { + } +} diff --git a/Scriptable Variables/Events/StringGameEvent.cs.meta b/Scriptable Variables/Events/StringGameEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0adce0b253ab145b0abef02f5cf48a90c955e1f3 --- /dev/null +++ b/Scriptable Variables/Events/StringGameEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d499e67a7f1c28e41b5dc652ff881d53 +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Interfaces.meta b/Scriptable Variables/Interfaces.meta new file mode 100644 index 0000000000000000000000000000000000000000..c4c2626211e392bc17a52fa572808ee66f5e3d07 --- /dev/null +++ b/Scriptable Variables/Interfaces.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 53525e1a16c954f4aa2e57af9f48c661 +folderAsset: yes +timeCreated: 1510599567 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Interfaces/Resettable.cs b/Scriptable Variables/Interfaces/Resettable.cs new file mode 100644 index 0000000000000000000000000000000000000000..e18337e12613460c009e1b67d3d307df858f1e5d --- /dev/null +++ b/Scriptable Variables/Interfaces/Resettable.cs @@ -0,0 +1,8 @@ +namespace Shared.ScriptableVariables { + // Interface to allow a class to be able to be reset and define what that means + public interface Resettable { + //--------------------------------------------------------------------------- + // Define what it means to Reset + void Reset(); + } +} diff --git a/Scriptable Variables/Interfaces/Resettable.cs.meta b/Scriptable Variables/Interfaces/Resettable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..20f309c986994be93c2b16a93b9a33b2a164d923 --- /dev/null +++ b/Scriptable Variables/Interfaces/Resettable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b829c0fd850917d41b53b46459690a17 +timeCreated: 1510599574 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners.meta b/Scriptable Variables/Listeners.meta new file mode 100644 index 0000000000000000000000000000000000000000..1635af87e1ea1a96aa6ffe1b8bab04d08d05adf5 --- /dev/null +++ b/Scriptable Variables/Listeners.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 949b447effd31fe47834737e9344d527 +folderAsset: yes +timeCreated: 1513206410 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/BooleanGameEventListener.cs b/Scriptable Variables/Listeners/BooleanGameEventListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..36a63c5ce9ace007e181e305abcf8031a7c5cb62 --- /dev/null +++ b/Scriptable Variables/Listeners/BooleanGameEventListener.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie BooleanGameEvents to Unity's event system + public class BooleanGameEventListener : GameEventListener<bool> { + [System.Serializable] + public class BooleanUnityEvent : UnityEvent<bool> { } + + [Tooltip("The game event to listen to")] + public BooleanGameEvent eventToListenTo; + + [Tooltip("The UnityEvent to raise in response to the game event being raised")] + public BooleanUnityEvent response; + + //--------------------------------------------------------------------------- + protected override GameEvent<bool> GetGameEvent() { return eventToListenTo; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<bool> GetUnityEvent() { return response; } + } +} diff --git a/Scriptable Variables/Listeners/BooleanGameEventListener.cs.meta b/Scriptable Variables/Listeners/BooleanGameEventListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..596e2e5c789642ae8b4b43c108f11eda94a9d912 --- /dev/null +++ b/Scriptable Variables/Listeners/BooleanGameEventListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7f663866ee9d6174199e2824bb53ec3a +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/BooleanVariableListener.cs b/Scriptable Variables/Listeners/BooleanVariableListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..87dc5acfbad21e09021b590a65cfea51eef5382e --- /dev/null +++ b/Scriptable Variables/Listeners/BooleanVariableListener.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + + /// <summary> + /// Used to trigger a UnityEvent in response to changes on a BooleanVariable + /// </summary> + public class BooleanVariableListener : ScriptableVariableListener<bool> { + [Tooltip("The ScriptableVariable to listen for changes")] + public BooleanVariable variable; + + [System.Serializable] + public class ChangedUnityEvent : UnityEvent<bool> { } + + [Tooltip("The UnityEvent that gets triggered when the variable changes value")] + public ChangedUnityEvent OnValueChangedEvent; + + //--------------------------------------------------------------------------- + protected override ScriptableVariable<bool> GetScriptableVariable() { return variable; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<bool> GetUnityEvent() { return OnValueChangedEvent; } + } +} diff --git a/Scriptable Variables/Listeners/BooleanVariableListener.cs.meta b/Scriptable Variables/Listeners/BooleanVariableListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..809d0c71b7d69535d3b188416ab1b862ec35496d --- /dev/null +++ b/Scriptable Variables/Listeners/BooleanVariableListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: db17a8cbe6e4ff74ebe6f8c252162527 +timeCreated: 1513208270 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/FloatGameEventListener.cs b/Scriptable Variables/Listeners/FloatGameEventListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..c98ee592edafae892068abb13c61b239cbd84a9d --- /dev/null +++ b/Scriptable Variables/Listeners/FloatGameEventListener.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie FloatGameEvents to Unity's event system + public class FloatGameEventListener : GameEventListener<float> { + [System.Serializable] + public class FloatUnityEvent : UnityEvent<float> { } + + [Tooltip("The game event to listen to")] + public FloatGameEvent eventToListenTo; + + [Tooltip("The UnityEvent to raise in response to the game event being raised")] + public FloatUnityEvent response; + + //--------------------------------------------------------------------------- + protected override GameEvent<float> GetGameEvent() { return eventToListenTo; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<float> GetUnityEvent() { return response; } + } +} diff --git a/Scriptable Variables/Listeners/FloatGameEventListener.cs.meta b/Scriptable Variables/Listeners/FloatGameEventListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..88310ca3e0a3c754de90ceef988ac962c22a7690 --- /dev/null +++ b/Scriptable Variables/Listeners/FloatGameEventListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1cc863298f8099f4ea1cbb4e0701bf2e +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/FloatVariableListener.cs b/Scriptable Variables/Listeners/FloatVariableListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..bc8afc8dc87b2c7939980746b732bfe9291161d4 --- /dev/null +++ b/Scriptable Variables/Listeners/FloatVariableListener.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + + /// <summary> + /// Used to trigger a UnityEvent in response to changes on a FloatVariable + /// </summary> + public class FloatVariableListener : ScriptableVariableListener<float> { + [Tooltip("The ScriptableVariable to listen for changes")] + public FloatVariable variable; + + [System.Serializable] + public class ChangedUnityEvent : UnityEvent<float> { } + + [Tooltip("The UnityEvent that gets triggered when the variable changes value")] + public ChangedUnityEvent OnValueChangedEvent; + + //--------------------------------------------------------------------------- + protected override ScriptableVariable<float> GetScriptableVariable() { return variable; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<float> GetUnityEvent() { return OnValueChangedEvent; } + } +} diff --git a/Scriptable Variables/Listeners/FloatVariableListener.cs.meta b/Scriptable Variables/Listeners/FloatVariableListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..da7a8498b9dd0a1da3536a15080282c8cfced811 --- /dev/null +++ b/Scriptable Variables/Listeners/FloatVariableListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a8394c2c1178b484db494d974b6096fc +timeCreated: 1513208270 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/GameEventListener.cs b/Scriptable Variables/Listeners/GameEventListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..1c3e7e83447868789a878967c99663a5a26798d0 --- /dev/null +++ b/Scriptable Variables/Listeners/GameEventListener.cs @@ -0,0 +1,57 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie GameEvents to Unity's event system + public class GameEventListener : MonoBehaviour { + [Tooltip("The game event to listen to")] + public GameEvent eventToListenTo; + + [Tooltip("The UnityEvent to raise in response to the game event being raised")] + public UnityEvent response; + + //--------------------------------------------------------------------------- + void OnEnable() { + eventToListenTo.OnRaised += OnEventRaised; + } + + //--------------------------------------------------------------------------- + void OnDisable() { + eventToListenTo.OnRaised -= OnEventRaised; + } + + //--------------------------------------------------------------------------- + public virtual void OnEventRaised() { + if (response != null) { + response.Invoke(); + } + } + } + + //--------------------------------------------------------------------------- + public abstract class GameEventListener<T> : MonoBehaviour { + //--------------------------------------------------------------------------- + protected abstract GameEvent<T> GetGameEvent(); + + //--------------------------------------------------------------------------- + protected abstract UnityEvent<T> GetUnityEvent(); + + //--------------------------------------------------------------------------- + void OnEnable() { + GetGameEvent().OnRaised += OnEventRaised; + } + + //--------------------------------------------------------------------------- + void OnDisable() { + GetGameEvent().OnRaised -= OnEventRaised; + } + + //--------------------------------------------------------------------------- + public virtual void OnEventRaised(T value) { + var unityEvent = GetUnityEvent(); + if (unityEvent != null) { + unityEvent.Invoke(value); + } + } + } +} diff --git a/Scriptable Variables/Listeners/GameEventListener.cs.meta b/Scriptable Variables/Listeners/GameEventListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..46d0888a8904119959f918efa0f41eecd7d3b52c --- /dev/null +++ b/Scriptable Variables/Listeners/GameEventListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 991b72107ef95af46937ebdd06290da8 +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/IntGameEventListener.cs b/Scriptable Variables/Listeners/IntGameEventListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..c6da58d7bd820bca1dea44f8805a1e79d8bc8c38 --- /dev/null +++ b/Scriptable Variables/Listeners/IntGameEventListener.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie IntGameEvents to Unity's event system + public class IntGameEventListener : GameEventListener<int> { + [System.Serializable] + public class IntUnityEvent : UnityEvent<int> { } + + [Tooltip("The game event to listen to")] + public IntGameEvent eventToListenTo; + + [Tooltip("The UnityEvent to raise in response to the game event being raised")] + public IntUnityEvent response; + + //--------------------------------------------------------------------------- + protected override GameEvent<int> GetGameEvent() { return eventToListenTo; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<int> GetUnityEvent() { return response; } + } +} diff --git a/Scriptable Variables/Listeners/IntGameEventListener.cs.meta b/Scriptable Variables/Listeners/IntGameEventListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..9936bda44b1193410c8f22be17aee7561812af03 --- /dev/null +++ b/Scriptable Variables/Listeners/IntGameEventListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 75a82ff72a4ae704e9821e1403841b7c +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/IntVariableListener.cs b/Scriptable Variables/Listeners/IntVariableListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..dcaf6227f85a8dd1de3ab85c8719fd73f34ebe02 --- /dev/null +++ b/Scriptable Variables/Listeners/IntVariableListener.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + + /// <summary> + /// Used to trigger a UnityEvent in response to changes on a IntVariable + /// </summary> + public class IntVariableListener : ScriptableVariableListener<int> { + [Tooltip("The ScriptableVariable to listen for changes")] + public IntVariable variable; + + [System.Serializable] + public class ChangedUnityEvent : UnityEvent<int> { } + + [Tooltip("The UnityEvent that gets triggered when the variable changes value")] + public ChangedUnityEvent OnValueChangedEvent; + + //--------------------------------------------------------------------------- + protected override ScriptableVariable<int> GetScriptableVariable() { return variable; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<int> GetUnityEvent() { return OnValueChangedEvent; } + } +} diff --git a/Scriptable Variables/Listeners/IntVariableListener.cs.meta b/Scriptable Variables/Listeners/IntVariableListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d2a2682c276e04106d50aecfc320b8b4fb6e30a8 --- /dev/null +++ b/Scriptable Variables/Listeners/IntVariableListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ab4732b165c21ea45ae84bebc9d81f4a +timeCreated: 1513208270 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/ScriptableVariableListener.cs b/Scriptable Variables/Listeners/ScriptableVariableListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..d977e3b734e369034312270abf8617d872a26c97 --- /dev/null +++ b/Scriptable Variables/Listeners/ScriptableVariableListener.cs @@ -0,0 +1,36 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + /// <summary> + /// Used to trigger a UnityEvent in response to changes on a ScriptableVariable. + /// </summary> + //--------------------------------------------------------------------------- + public abstract class ScriptableVariableListener<T> : MonoBehaviour { + + //--------------------------------------------------------------------------- + protected abstract ScriptableVariable<T> GetScriptableVariable(); + + //--------------------------------------------------------------------------- + protected abstract UnityEvent<T> GetUnityEvent(); + + //--------------------------------------------------------------------------- + void OnEnable() { + GetScriptableVariable().OnValueChanged += OnValueChanged; + } + + //--------------------------------------------------------------------------- + void OnDisable() { + GetScriptableVariable().OnValueChanged -= OnValueChanged; + } + + //--------------------------------------------------------------------------- + private void OnValueChanged() { + var unityEvent = GetUnityEvent(); + var scriptableVariable = GetScriptableVariable(); + if (unityEvent != null) { + unityEvent.Invoke(scriptableVariable.Value); + } + } + } +} diff --git a/Scriptable Variables/Listeners/ScriptableVariableListener.cs.meta b/Scriptable Variables/Listeners/ScriptableVariableListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..845702b477a21a20fb19d9326477acd901a6b09c --- /dev/null +++ b/Scriptable Variables/Listeners/ScriptableVariableListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ded5f8a11a2a71441b9961190e69544f +timeCreated: 1513208270 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/StringGameEventListener.cs b/Scriptable Variables/Listeners/StringGameEventListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..9a86b2d68277340b2ffadd4a13d78a60851fa72f --- /dev/null +++ b/Scriptable Variables/Listeners/StringGameEventListener.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie StringGameEvents to Unity's event system + public class StringGameEventListener : GameEventListener<string> { + [System.Serializable] + public class StringUnityEvent : UnityEvent<string> { } + + [Tooltip("The game event to listen to")] + public StringGameEvent eventToListenTo; + + [Tooltip("The UnityEvent to raise in response to the game event being raised")] + public StringUnityEvent response; + + //--------------------------------------------------------------------------- + protected override GameEvent<string> GetGameEvent() { return eventToListenTo; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<string> GetUnityEvent() { return response; } + } +} diff --git a/Scriptable Variables/Listeners/StringGameEventListener.cs.meta b/Scriptable Variables/Listeners/StringGameEventListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f2e324a0990fb6ab8ff966f1f1ce134696b0cf75 --- /dev/null +++ b/Scriptable Variables/Listeners/StringGameEventListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ace966faabda0734887c2cb816d27c30 +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/StringVariableListener.cs b/Scriptable Variables/Listeners/StringVariableListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..416b67f9a6f3faef75f67351b56980df680bb414 --- /dev/null +++ b/Scriptable Variables/Listeners/StringVariableListener.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + + /// <summary> + /// Used to trigger a UnityEvent in response to changes on a StringVariable + /// </summary> + public class StringVariableListener : ScriptableVariableListener<string> { + [Tooltip("The ScriptableVariable to listen for changes")] + public StringVariable variable; + + [System.Serializable] + public class ChangedUnityEvent : UnityEvent<string> { } + + [Tooltip("The UnityEvent that gets triggered when the variable changes value")] + public ChangedUnityEvent OnValueChangedEvent; + + //--------------------------------------------------------------------------- + protected override ScriptableVariable<string> GetScriptableVariable() { return variable; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<string> GetUnityEvent() { return OnValueChangedEvent; } + } +} diff --git a/Scriptable Variables/Listeners/StringVariableListener.cs.meta b/Scriptable Variables/Listeners/StringVariableListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..24a12ab5a3180f48673bf4538972708e7db1819a --- /dev/null +++ b/Scriptable Variables/Listeners/StringVariableListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e6c4b70e919c94147b49f020dd8baa4f +timeCreated: 1513208270 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables.meta b/Scriptable Variables/Variables.meta new file mode 100644 index 0000000000000000000000000000000000000000..1064394aa1a3c04a3dd0f1c75b2d58e499305a29 --- /dev/null +++ b/Scriptable Variables/Variables.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 199e8033ab0036d4094976417900bbd0 +folderAsset: yes +timeCreated: 1510599420 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Base Types.meta b/Scriptable Variables/Variables/Base Types.meta new file mode 100644 index 0000000000000000000000000000000000000000..d5cf984a44b80ac5f61c92343c18250f083d90a2 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3aa26c94f73caf643b84e8e086b5be8a +folderAsset: yes +timeCreated: 1510599712 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Base Types/BooleanVariable.cs b/Scriptable Variables/Variables/Base Types/BooleanVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..ebb3a8dcbf1ed6108c2e1ab521a3b923f2b9098b --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/BooleanVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A boolean value to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Boolean")] + public class BooleanVariable : ScriptableVariable<bool> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(BooleanVariable))] + [UnityEditor.CanEditMultipleObjects] + public class BooleanScriptableVariableEditor : BooleanVariable.BaseScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/BooleanVariable.cs.meta b/Scriptable Variables/Variables/Base Types/BooleanVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..9da389ddb6fa33aa9ccd8cb8d7da990c54d691e8 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/BooleanVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6174914c1d2a75f44afcf16722f7ddbb +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Base Types/FloatVariable.cs b/Scriptable Variables/Variables/Base Types/FloatVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..5defc9fd0b5555d9f27b99c40aefc0e1401fa2d1 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/FloatVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A float value to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Float")] + public class FloatVariable : ScriptableVariable<float> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(FloatVariable))] + [UnityEditor.CanEditMultipleObjects] + public class FloatScriptableVariableEditor : FloatVariable.BaseScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/FloatVariable.cs.meta b/Scriptable Variables/Variables/Base Types/FloatVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..26581990c341e2573ea2f1a4288dcdd987f5cdf0 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/FloatVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7d7e88b3e41ece54596c648435a09398 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Base Types/IntVariable.cs b/Scriptable Variables/Variables/Base Types/IntVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..cf13273491a5c86b8d3d01ae14dc2b86dd8cbd78 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/IntVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // An int value to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Int")] + public class IntVariable : ScriptableVariable<int> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(IntVariable))] + [UnityEditor.CanEditMultipleObjects] + public class IntScriptableVariableEditor : IntVariable.BaseScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/IntVariable.cs.meta b/Scriptable Variables/Variables/Base Types/IntVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..2d7d6a5bdbf7be215ffdf2cdfbdc2c2dca89a63a --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/IntVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 77b835ad455148249a89aef1915debf4 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Base Types/ScriptableVariable.cs b/Scriptable Variables/Variables/Base Types/ScriptableVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..59162d2b27577bc032fbc8f94398b623ecb3da68 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/ScriptableVariable.cs @@ -0,0 +1,60 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + // Base class for Scriptable Objects to share across components, scenes, and prefabs + public abstract class ScriptableVariable : ScriptableObject { + [TextArea] + public string description; + } + + //--------------------------------------------------------------------------- + // Base class for Scriptable Objects that represent a single variable to share across components, scenes, and prefabs + public abstract class ScriptableVariable<T> : ScriptableVariable, Resettable { + [Tooltip("The value of the variable")] + [SerializeField] + private T value; + + [Tooltip("The default value of the variable to go back to on Reset")] + public T defaultValue; + + public delegate void ValueChangeHandler(); + public event ValueChangeHandler OnValueChanged; + + //--------------------------------------------------------------------------- + public T Value { + get { return value; } + set { + if ((value == null && this.value != null) || (value != null && !value.Equals(this.value))) { + this.value = value; + if (OnValueChanged != null) { + OnValueChanged.Invoke(); + } + } + } + } + + //--------------------------------------------------------------------------- + public void Reset() { + Value = defaultValue; + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + //Base class for custom editors which expose the Property of ScriptableVariables + public class BaseScriptableVariableEditor : UnityEditor.Editor { + public override void OnInspectorGUI() { + UnityEditor.EditorGUI.BeginChangeCheck(); + base.OnInspectorGUI(); + if (UnityEditor.EditorGUI.EndChangeCheck()) { + var scriptableVariable = target as ScriptableVariable<T>; + if (scriptableVariable.OnValueChanged != null) { + scriptableVariable.OnValueChanged.Invoke(); + } + } + } + } +#endif + + } +} diff --git a/Scriptable Variables/Variables/Base Types/ScriptableVariable.cs.meta b/Scriptable Variables/Variables/Base Types/ScriptableVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..88004725869f86eac58293d928aed72702c22622 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/ScriptableVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 046df9445da2fda48b3d1f8d84047b14 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Base Types/StringVariable.cs b/Scriptable Variables/Variables/Base Types/StringVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..3d959db32683a05f2e56d04686355668b94bd08f --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/StringVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A string value to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/String")] + public class StringVariable : ScriptableVariable<string> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(StringVariable))] + [UnityEditor.CanEditMultipleObjects] + public class StringScriptableVariableEditor : StringVariable.BaseScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/StringVariable.cs.meta b/Scriptable Variables/Variables/Base Types/StringVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..17e4c6cb5db9a00b5f92f704f75f0a01de746708 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/StringVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d0b3993ca7cbd0e459f217e13ea06b66 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types.meta b/Scriptable Variables/Variables/Reference Types.meta new file mode 100644 index 0000000000000000000000000000000000000000..068fe2841dfc58f767d623a7e86cfcd2972a8fd9 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ddca758e9621a174280f922c14a157f7 +folderAsset: yes +timeCreated: 1510599733 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/Editor.meta b/Scriptable Variables/Variables/Reference Types/Editor.meta new file mode 100644 index 0000000000000000000000000000000000000000..a0dc2b47950ae399db0cee229c0c572042767f4a --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: fff3d06e72902f446817e50679685a41 +folderAsset: yes +timeCreated: 1510600555 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceBooleanVariableInspector.cs b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceBooleanVariableInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..60dbfd67f0106b94ce25a24a1860341716c22b3e --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceBooleanVariableInspector.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace Shared.ScriptableVariables { + // A custom Inspector Editor for ReferenceBooleanVariables + [CustomEditor(typeof(ReferenceBooleanVariable))] + [CanEditMultipleObjects] + public class ReferenceBooleanVariableInspector : ReferenceScriptableVariableInspector { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceBooleanVariableInspector.cs.meta b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceBooleanVariableInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..726f8b4536fa1d91dfaee835a46c5ed25f8cd9df --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceBooleanVariableInspector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 46ec3998332a3a84682c6040a4185138 +timeCreated: 1510601506 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceFloatVariableInspector.cs b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceFloatVariableInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..0264c9a3aef5e7d52a6de1e469c8cd3ecb77a2b8 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceFloatVariableInspector.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace Shared.ScriptableVariables { + // A custom Inspector Editor for ReferenceFloatVariables + [CustomEditor(typeof(ReferenceFloatVariable))] + [CanEditMultipleObjects] + public class ReferenceFloatVariableInspector : ReferenceScriptableVariableInspector { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceFloatVariableInspector.cs.meta b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceFloatVariableInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..966aff812e74d467c35a880f7244a42f75fd5b81 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceFloatVariableInspector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: fe01a7488e400f7439f0a7c65d6b1726 +timeCreated: 1510601506 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceIntVariableInspector.cs b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceIntVariableInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..d9f9e9e10b5e98f47381c8a797b49eae7d4270a0 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceIntVariableInspector.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace Shared.ScriptableVariables { + // A custom Inspector Editor for ReferenceIntVariables + [CustomEditor(typeof(ReferenceIntVariable))] + [CanEditMultipleObjects] + public class ReferenceIntVariableInspector : ReferenceScriptableVariableInspector { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceIntVariableInspector.cs.meta b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceIntVariableInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..49bb5661372d1e7e1a5a855a04cafaf4b3248cf2 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceIntVariableInspector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: cc52a5deb1a87ce41a657ab42cd21cca +timeCreated: 1510601506 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceScriptableVariableInspector.cs b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceScriptableVariableInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..94c531aaee2ee602b6561d6b29f2df5507194c96 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceScriptableVariableInspector.cs @@ -0,0 +1,58 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A custom Inspector Editor for ReferenceStringVariables + public class ReferenceScriptableVariableInspector : Editor { + SerializedProperty useConstant; + SerializedProperty constantValue; + SerializedProperty referenceValue; + + // --------------------------------------------------------------------------- + void OnEnable() { + useConstant = serializedObject.FindProperty("useConstant"); + constantValue = serializedObject.FindProperty("constantValue"); + referenceValue = serializedObject.FindProperty("referenceValue"); + } + + // --------------------------------------------------------------------------- + public override void OnInspectorGUI() { + serializedObject.Update(); + + // Show the currently active value type (constant or reference) + if (useConstant.boolValue) { + EditorGUILayout.PropertyField(constantValue); + } + else { + EditorGUILayout.PropertyField(referenceValue); + } + + // Setup right click to switch between the active value type + var labelRect = GUILayoutUtility.GetLastRect(); + if (GUI.Button(labelRect, GUIContent.none, GUIStyle.none) && Event.current.button == 1) { + var menu = new GenericMenu(); + if (useConstant.boolValue) { + menu.AddItem(new GUIContent("Use Reference Value"), false, UseReferenceValue); + } + else { + menu.AddItem(new GUIContent("Use Constant Value"), false, UseConstantValue); + } + menu.ShowAsContext(); + } + + serializedObject.ApplyModifiedProperties(); + } + + //--------------------------------------------------------------------------- + private void UseReferenceValue() { + useConstant.boolValue = false; + serializedObject.ApplyModifiedProperties(); + } + + //--------------------------------------------------------------------------- + private void UseConstantValue() { + useConstant.boolValue = true; + serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceScriptableVariableInspector.cs.meta b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceScriptableVariableInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0da9b0c260725d2ecd5a50984fb6a755c89b181a --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceScriptableVariableInspector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8a0379305c24f1f4fba92dd1faee66af +timeCreated: 1510601506 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceStringVariableInspector.cs b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceStringVariableInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..03ff0230124ac46f23016633158eeb0636fd3145 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceStringVariableInspector.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace Shared.ScriptableVariables { + // A custom Inspector Editor for ReferenceStringVariables + [CustomEditor(typeof(ReferenceStringVariable))] + [CanEditMultipleObjects] + public class ReferenceStringVariableInspector : ReferenceScriptableVariableInspector { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceStringVariableInspector.cs.meta b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceStringVariableInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0f083e6341b76b2a4f2348d9645c25a7fe646d69 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceStringVariableInspector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b640fb82fd6813e40b5d8ed19aa1e9f6 +timeCreated: 1510601506 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceBooleanVariable.cs b/Scriptable Variables/Variables/Reference Types/ReferenceBooleanVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..e0151fbac26607d0d40c04d3ed04bb9d6d6484cd --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceBooleanVariable.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A reference to a boolean value to share across components, scenes, and prefabs that can be overridden to a constant different value + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Reference/Boolean")] + public class ReferenceBooleanVariable : ReferenceScriptableVariable<BooleanVariable, bool> { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceBooleanVariable.cs.meta b/Scriptable Variables/Variables/Reference Types/ReferenceBooleanVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..13f24f480e7ccd1deabcaa8f5eaf5cbd022d59e3 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceBooleanVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: dc11cb8fa12bce349a901887a47e3cd1 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceFloatVariable.cs b/Scriptable Variables/Variables/Reference Types/ReferenceFloatVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..67076e665eff51fe69dfe1f490602dbb3d57b76b --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceFloatVariable.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A reference to a float value to share across components, scenes, and prefabs that can be overridden to a constant different value + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Reference/Float")] + public class ReferenceFloatVariable : ReferenceScriptableVariable<FloatVariable, float> { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceFloatVariable.cs.meta b/Scriptable Variables/Variables/Reference Types/ReferenceFloatVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a77b408da39fa4a696393d6e1122b258f9fa6a41 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceFloatVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0684b8ae3b58fd446b31ca3f0369dd7c +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceIntVariable.cs b/Scriptable Variables/Variables/Reference Types/ReferenceIntVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..7d91d8d1a8ffb59b1362a42d9f8502d66b25209c --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceIntVariable.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A reference to an int value to share across components, scenes, and prefabs that can be overridden to a constant different value + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Reference/Int")] + public class ReferenceIntVariable : ReferenceScriptableVariable<IntVariable, int> { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceIntVariable.cs.meta b/Scriptable Variables/Variables/Reference Types/ReferenceIntVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..8ba334433bb884b4e79e84cd3b90ae5f5ae04c59 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceIntVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 62673a73de96a294cb4c8729f0a38d22 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceScriptableVariable.cs b/Scriptable Variables/Variables/Reference Types/ReferenceScriptableVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..a8761b0a4ef790df5016a20f7830f47d0ad8d9bc --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceScriptableVariable.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A reference to a boolean value to share across components, scenes, and prefabs that can be overridden to a constant different value + public class ReferenceScriptableVariable<TScriptableVariable, TValueType> : ScriptableVariable where TScriptableVariable : ScriptableVariable<TValueType> { + [Tooltip("Whether to use the referenced value or a constant value")] + public bool useConstant; + + [Tooltip("An override constant value to use instead of the reference value")] + public TValueType constantValue; + + [Tooltip("The variable this component is referencing")] + public TScriptableVariable referenceValue; + + public TValueType Value { get { return useConstant ? constantValue : referenceValue.Value; } set { referenceValue.Value = value; } } + } +} diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceScriptableVariable.cs.meta b/Scriptable Variables/Variables/Reference Types/ReferenceScriptableVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f14f4ec4ac0ff0a8ba8a17a113493017d448f81e --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceScriptableVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 036ed80159a9c6340a57b5ab8830d4b6 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceStringVariable.cs b/Scriptable Variables/Variables/Reference Types/ReferenceStringVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..6d53f415bea24dbccde2e1d57a71fbb697746ae1 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceStringVariable.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A reference to a string value to share across components, scenes, and prefabs that can be overridden to a constant different value + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Reference/String")] + public class ReferenceStringVariable : ReferenceScriptableVariable<StringVariable, string> { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceStringVariable.cs.meta b/Scriptable Variables/Variables/Reference Types/ReferenceStringVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..74ffa669b8a811f78b07448efd07b0b043667eca --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceStringVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 37c1a078c5908a54d9b514dcd4c35db1 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: