diff --git a/Scriptable Variables/Variables/Base Types/BooleanListVariable.cs b/Scriptable Variables/Variables/Base Types/BooleanListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..3eddd56224d8ba11a633e68e6f3583ebc40c3a07 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/BooleanListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list of bool values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Boolean List")] + public class BooleanListVariable : ListScriptableVariable<bool> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(BooleanListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class BooleanListScriptableVariableEditor : BooleanListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/BooleanListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/BooleanListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..daea140032d308c96982f8722aa3c9cce714b30b --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/BooleanListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 15f3837928781de49893cf8afbf3cf74 +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/FloatListVariable.cs b/Scriptable Variables/Variables/Base Types/FloatListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..a11c7b25d46edfb24df02d45af3112b54854d187 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/FloatListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list of float values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Float List")] + public class FloatListVariable : ListScriptableVariable<float> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(FloatListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class FloatListScriptableVariableEditor : FloatListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/FloatListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/FloatListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..406e1ac54efab92980397f1570c7feb29d37e1b5 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/FloatListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b5347f0cb64d988408fcfe1328b71147 +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/GameObjectListVariable.cs b/Scriptable Variables/Variables/Base Types/GameObjectListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..0b06da35566242161b9eba435d140fa26e14a6d1 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/GameObjectListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list GameObject values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/GameObject List")] + public class GameObjectListVariable : ListScriptableVariable<GameObject> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(GameObjectListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class GameObjectListScriptableVariableEditor : GameObjectListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/GameObjectListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/GameObjectListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..eb8f0de5dc003ea5bb3455b0fffdaf34728fef0f --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/GameObjectListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a5d3621783bd7b44586a6798709e9fb6 +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/IntListVariable.cs b/Scriptable Variables/Variables/Base Types/IntListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..294865636afa8b7623a7f3bddf8c48c0d1af767e --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/IntListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list of int values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Int List")] + public class IntListVariable : ListScriptableVariable<int> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(IntListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class IntListScriptableVariableEditor : IntListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/IntListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/IntListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..9bb9eb3ca007c52dae1071489bb0e050e0d8a154 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/IntListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 95da63b0a149f85498e00f302dced403 +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/ListScriptableVariable.cs b/Scriptable Variables/Variables/Base Types/ListScriptableVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..cacbd071797d5a08b5618b23fc66fdd600b59986 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/ListScriptableVariable.cs @@ -0,0 +1,325 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + // Base class for Scriptable Objects to share across components, scenes, and prefabs + public abstract class ListScriptableVariable<T> : ScriptableVariable, Resettable { + [Tooltip("The value of the variable")] + [SerializeField] + private List<T> list = new List<T>(); + + [Tooltip("The default value of the variable to go back to on Reset")] + public List<T> defaultList = new List<T>(); + + public delegate void ListChangeHandler(); + public event ListChangeHandler OnListChanged; + + public delegate void ListItemChangeHandler(int index, T item); + public event ListItemChangeHandler OnListItemChanged; + + //////////////////////////////// LIST MODIFIERS ///////////////////////////// + public T this[int index] { + get { return list[index]; } + set { + list[index] = value; + ListItemChanged(index, value); + } + } + + //--------------------------------------------------------------------------- + public void Reset() { + list = new List<T>(defaultList); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Set(List<T> other) { + list.Clear(); + list.AddRange(other); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Clear() { + list.Clear(); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Add(T value) { + list.Add(value); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void AddRange(List<T> otherList) { + list.AddRange(otherList); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Insert(int index, T item) { + list.Insert(index, item); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void InsertRange(int index, IEnumerable<T> collection) { + list.InsertRange(index, collection); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Remove(T value) { + list.Remove(value); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public int RemoveAll(Predicate<T> match) { + var removedCount = list.RemoveAll(match); + ListChanged(); + return removedCount; + } + + //--------------------------------------------------------------------------- + public void RemoveAt(int index) { + list.RemoveAt(index); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void RemoveRange(int index, int count) { + list.RemoveRange(index, count); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Reverse(int index, int count) { + list.Reverse(index, count); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Reverse() { + list.Reverse(); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Sort(Comparison<T> comparison) { + list.Sort(comparison); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Sort(int index, int count, IComparer<T> comparer) { + list.Sort(index, count, comparer); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Sort() { + list.Sort(); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void Sort(IComparer<T> comparer) { + list.Sort(comparer); + ListChanged(); + } + + //--------------------------------------------------------------------------- + public void TrimExcess() { + list.TrimExcess(); + ListChanged(); + } + + //////////////////////////////// LIST ACCESSORS ///////////////////////////// + //--------------------------------------------------------------------------- + public ReadOnlyCollection<T> Value { + get { return list.AsReadOnly(); } + } + + //--------------------------------------------------------------------------- + public int Count { get { return list.Count; } } + + //--------------------------------------------------------------------------- + public int BinarySearch(T item) { + return list.BinarySearch(item); + } + + //--------------------------------------------------------------------------- + public int BinarySearch(T item, IComparer<T> comparer) { + return list.BinarySearch(item, comparer); + } + + //--------------------------------------------------------------------------- + public int BinarySearch(int index, int count, T item, IComparer<T> comparer) { + return list.BinarySearch(index, count, item, comparer); + } + + //--------------------------------------------------------------------------- + public bool Contains(T item) { + return list.Contains(item); + } + + //--------------------------------------------------------------------------- + public List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> converter) { + return list.ConvertAll(converter); + } + + //--------------------------------------------------------------------------- + public void CopyTo(int index, T[] array, int arrayIndex, int count) { + list.CopyTo(index, array, arrayIndex, count); + } + + //--------------------------------------------------------------------------- + public void CopyTo(T[] array, int arrayIndex) { + list.CopyTo(array, arrayIndex); + } + + //--------------------------------------------------------------------------- + public void CopyTo(T[] array) { + list.CopyTo(array); + } + + //--------------------------------------------------------------------------- + public bool Exists(Predicate<T> match) { + return list.Exists(match); + } + + //--------------------------------------------------------------------------- + public T Find(Predicate<T> match) { + return list.Find(match); + } + + //--------------------------------------------------------------------------- + public List<T> FindAll(Predicate<T> match) { + return list.FindAll(match); + } + + //--------------------------------------------------------------------------- + public int FindIndex(int startIndex, int count, Predicate<T> match) { + return list.FindIndex(startIndex, count, match); + } + + //--------------------------------------------------------------------------- + public int FindIndex(int startIndex, Predicate<T> match) { + return list.FindIndex(startIndex, match); + } + + //--------------------------------------------------------------------------- + public int FindIndex(Predicate<T> match) { + return list.FindIndex(match); + } + + //--------------------------------------------------------------------------- + public T FindLast(Predicate<T> match) { + return list.FindLast(match); + } + + //--------------------------------------------------------------------------- + public int FindLastIndex(int startIndex, int count, Predicate<T> match) { + return list.FindLastIndex(startIndex, count, match); + } + + //--------------------------------------------------------------------------- + public int FindLastIndex(int startIndex, Predicate<T> match) { + return list.FindLastIndex(startIndex, match); + } + + //--------------------------------------------------------------------------- + public int FindLastIndex(Predicate<T> match) { + return list.FindLastIndex(match); + } + + //--------------------------------------------------------------------------- + public void ForEach(Action<T> action) { + list.ForEach(action); + } + + //--------------------------------------------------------------------------- + public int IndexOf(T item, int index, int count) { + return list.IndexOf(item, index, count); + } + + //--------------------------------------------------------------------------- + public int IndexOf(T item, int index) { + return list.IndexOf(item, index); + } + + //--------------------------------------------------------------------------- + public int IndexOf(T item) { + return list.IndexOf(item); + } + + //--------------------------------------------------------------------------- + public int LastIndexOf(T item) { + return list.LastIndexOf(item); + } + + //--------------------------------------------------------------------------- + public int LastIndexOf(T item, int index) { + return list.LastIndexOf(item, index); + } + + //--------------------------------------------------------------------------- + public int LastIndexOf(T item, int index, int count) { + return list.LastIndexOf(item, index, count); + } + + //--------------------------------------------------------------------------- + public bool TrueForAll(Predicate<T> match) { + return list.TrueForAll(match); + } + + //--------------------------------------------------------------------------- + // This function is public so that users can fire it in the specific cases + // where the ListScriptableVariable has no idea that aspects of an item in the + // list has changed + // + // For example, if the item type is a reference type, then when a field/property + // of an item changes, the list can't know. + // + // list[index].field = value; + // + // So the user of the ListScriptableVariable needs to call this function so + // the anyone who cares can be notified: + // + // list[index].field = value; + // list.ListItemChanged(index, list[index]); + // + // If a user sets the item directly with the index, this function automatically + // gets called + // + // list[index] = value; + public void ListItemChanged(int index, T item) { + OnListItemChanged?.Invoke(index, item); + } + + //--------------------------------------------------------------------------- + protected void ListChanged() { + OnListChanged?.Invoke(); + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + //Base class for custom editors which expose the Property of ScriptableVariables + public class BaseListScriptableVariableEditor : UnityEditor.Editor { + public override void OnInspectorGUI() { + UnityEditor.EditorGUI.BeginChangeCheck(); + base.OnInspectorGUI(); + if (UnityEditor.EditorGUI.EndChangeCheck()) { + var scriptableVariable = target as ListScriptableVariable<T>; + scriptableVariable.ListChanged(); + } + } + } +#endif + } +} diff --git a/Scriptable Variables/Variables/Base Types/ListScriptableVariable.cs.meta b/Scriptable Variables/Variables/Base Types/ListScriptableVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..2f5fc0c7013949801ec3e47358c4685a8e103476 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/ListScriptableVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 2c46b23b3dbebc24b87594a6e5512b91 +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/StringListVariable.cs b/Scriptable Variables/Variables/Base Types/StringListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..c606390389b778199775e6d808e560d1ec2b6ceb --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/StringListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list of string values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/String List")] + public class StringListVariable : ListScriptableVariable<string> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(StringListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class StringListScriptableVariableEditor : StringListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/StringListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/StringListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..212de3c207b7859717d4486eaf96e0d221aa66e5 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/StringListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ac8c63c807dbd474ab89665284db53a2 +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/TransformListVariable.cs b/Scriptable Variables/Variables/Base Types/TransformListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..f519f101daccde6678c8ebb8dd3b522bb91e025f --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/TransformListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list of Transform values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Transform List")] + public class TransformListVariable : ListScriptableVariable<Transform> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(TransformListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class TransformListScriptableVariableEditor : TransformListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/TransformListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/TransformListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f2b613f0631726e3f96bc7ee2da3fedf0ff0161b --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/TransformListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: cb949882da42d66418ff2ad4b175bf68 +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/Vector2ListVariable.cs b/Scriptable Variables/Variables/Base Types/Vector2ListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..220b5a73326a181a2e6941fe1ae25165fa0459f4 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector2ListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list of Vector2 values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Vector2 List")] + public class Vector2ListVariable : ListScriptableVariable<Vector2> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(Vector2ListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class Vector2ListScriptableVariableEditor : Vector2ListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/Vector2ListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/Vector2ListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..22b859e09bf1d92dabfcc04f06a5d7aa54822e4f --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector2ListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 48bb1201e64b01348a9c2430cdb2e2b0 +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/Vector3ListVariable.cs b/Scriptable Variables/Variables/Base Types/Vector3ListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..541a77f7e264aeab91c4f09916134b5b96fa92d0 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector3ListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list of Vector3 values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Vector3 List")] + public class Vector3ListVariable : ListScriptableVariable<Vector3> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(Vector3ListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class Vector3ListScriptableVariableEditor : Vector3ListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/Vector3ListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/Vector3ListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c4c590522e6ed447af20ad69bce94b57aa50f001 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector3ListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c1dc4fd277987534faa8414e8bc6637f +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/Vector4ListVariable.cs b/Scriptable Variables/Variables/Base Types/Vector4ListVariable.cs new file mode 100644 index 0000000000000000000000000000000000000000..d7fd61f24db8adb781a4f78d3951d983c5963113 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector4ListVariable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A list of Vector4 values to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Vector4 List")] + public class Vector4ListVariable : ListScriptableVariable<Vector4> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(Vector4ListVariable))] + [UnityEditor.CanEditMultipleObjects] + public class Vector4ListScriptableVariableEditor : Vector4ListVariable.BaseListScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/Vector4ListVariable.cs.meta b/Scriptable Variables/Variables/Base Types/Vector4ListVariable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..496434d480cc483b6d8f7bf6c6ed9cdefaa15eee --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector4ListVariable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c163b272645f15349ab7c12571922835 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: