diff --git a/Sane Eric's UI/Scriptable Variables/Vector2VariableInput.cs b/Sane Eric's UI/Scriptable Variables/Vector2VariableInput.cs new file mode 100644 index 0000000000000000000000000000000000000000..a3b3df477afffd6343cd1087a1c11e00ec0fd18f --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector2VariableInput.cs @@ -0,0 +1,82 @@ +using System; +using UnityEngine; +using UnityEngine.Events; +using TMPro; +using Shared.ScriptableVariables; + +namespace Shared.SEUI { + // UI Editor for a Vector2Variable + // Depends on ScriptableVariable package + public class Vector2VariableInput : ScriptableVariableInput<Vector2> { + [Tooltip("The variable we are editing")] + public Vector2Variable variable; + + [Tooltip("The input UI to edit the variable's x value with")] + public TMP_InputField xInput; + + [Tooltip("The input UI to edit the variable's y value with")] + public TMP_InputField yInput; + + // Temporary callbackx to bridge value changes in the UI and the variable + private UnityAction<string> xValueConverter; + private UnityAction<string> yValueConverter; + + //--------------------------------------------------------------------------- + void Start() { + // Make sure the input handles the right content type + xInput.contentType = TMP_InputField.ContentType.DecimalNumber; + yInput.contentType = TMP_InputField.ContentType.DecimalNumber; + } + + //--------------------------------------------------------------------------- + protected override void AddUIListener(UnityAction<Vector2> callback) { + // Define the value converting bridge callback to add to the UI listener + xValueConverter = delegate(string value) { + callback(new Vector2(StringToFloat(value), variable.Value.y)); + }; + yValueConverter = delegate(string value) { + callback(new Vector2(variable.Value.x, StringToFloat(value))); + }; + + xInput.onValueChanged.AddListener(xValueConverter); + yInput.onValueChanged.AddListener(yValueConverter); + } + + //--------------------------------------------------------------------------- + protected override void RemoveUIListener(UnityAction<Vector2> callback) { + if (xValueConverter != null) { + xInput.onValueChanged.RemoveListener(xValueConverter); + xValueConverter = null; + } + if (yValueConverter != null) { + yInput.onValueChanged.RemoveListener(yValueConverter); + yValueConverter = null; + } + } + + //--------------------------------------------------------------------------- + protected override bool DoValuesMatch() { + return !String.IsNullOrEmpty(xInput.text) && Convert.ToSingle(xInput.text) == variable.Value.x && + !String.IsNullOrEmpty(yInput.text) && Convert.ToSingle(yInput.text) == variable.Value.y; + } + + //--------------------------------------------------------------------------- + protected override void UpdateUIValue() { + xInput.SetTextWithoutNotify(variable.Value.x.ToString()); + yInput.SetTextWithoutNotify(variable.Value.y.ToString()); + } + + //--------------------------------------------------------------------------- + protected override void UpdateVariableValue(Vector2 value) { + variable.Value = value; + } + + //--------------------------------------------------------------------------- + private float StringToFloat(string value) { + if (!String.IsNullOrEmpty(xInput.text)) { + return Convert.ToSingle(value); + } + return 0.0f; + } + } +} diff --git a/Sane Eric's UI/Scriptable Variables/Vector2VariableInput.cs.meta b/Sane Eric's UI/Scriptable Variables/Vector2VariableInput.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..99a989e5ab9112eadc582700e35303033decf1a8 --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector2VariableInput.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 62a6de5a919aefe42bd6f5ac8c5eb4bd +timeCreated: 1510784910 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Sane Eric's UI/Scriptable Variables/Vector2VariableLabel.cs b/Sane Eric's UI/Scriptable Variables/Vector2VariableLabel.cs new file mode 100644 index 0000000000000000000000000000000000000000..14ba647b2d5f98705c1dd02f53ae1f1bc397d3a6 --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector2VariableLabel.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using Shared.ScriptableVariables; + +namespace Shared.SEUI { + // Read only UI for a Vector2Variable + // Depends on ScriptableVariable package + public class Vector2VariableLabel : ScriptableVariableLabel<Vector2> { + [Tooltip("The variable whose value we are displaying")] + public Vector2Variable value; + + //--------------------------------------------------------------------------- + protected override string GetName() { + return value.name; + } + + //--------------------------------------------------------------------------- + protected override Vector2 GetValue() { + return value.Value; + } + } +} diff --git a/Sane Eric's UI/Scriptable Variables/Vector2VariableLabel.cs.meta b/Sane Eric's UI/Scriptable Variables/Vector2VariableLabel.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0a8abb9a30900a7ff2bf916411f3b45b44208863 --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector2VariableLabel.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 19ff1aa3c5bfbae4189e9d7e9cdb8fbe +timeCreated: 1510784910 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Sane Eric's UI/Scriptable Variables/Vector3VariableInput.cs b/Sane Eric's UI/Scriptable Variables/Vector3VariableInput.cs new file mode 100644 index 0000000000000000000000000000000000000000..44fc3bc6a1fb794f42fa9bb63db5bb468a95b9c8 --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector3VariableInput.cs @@ -0,0 +1,97 @@ +using System; +using UnityEngine; +using UnityEngine.Events; +using TMPro; +using Shared.ScriptableVariables; + +namespace Shared.SEUI { + // UI Editor for a Vector3Variable + // Depends on ScriptableVariable package + public class Vector3VariableInput : ScriptableVariableInput<Vector3> { + [Tooltip("The variable we are editing")] + public Vector3Variable variable; + + [Tooltip("The input UI to edit the variable's x value with")] + public TMP_InputField xInput; + + [Tooltip("The input UI to edit the variable's y value with")] + public TMP_InputField yInput; + + [Tooltip("The input UI to edit the variable's z value with")] + public TMP_InputField zInput; + + // Temporary callbackx to bridge value changes in the UI and the variable + private UnityAction<string> xValueConverter; + private UnityAction<string> yValueConverter; + private UnityAction<string> zValueConverter; + + //--------------------------------------------------------------------------- + void Start() { + // Make sure the input handles the right content type + xInput.contentType = TMP_InputField.ContentType.DecimalNumber; + yInput.contentType = TMP_InputField.ContentType.DecimalNumber; + zInput.contentType = TMP_InputField.ContentType.DecimalNumber; + } + + //--------------------------------------------------------------------------- + protected override void AddUIListener(UnityAction<Vector3> callback) { + // Define the value converting bridge callback to add to the UI listener + xValueConverter = delegate(string value) { + callback(new Vector3(StringToFloat(value), variable.Value.y, variable.Value.z)); + }; + yValueConverter = delegate(string value) { + callback(new Vector3(variable.Value.x, StringToFloat(value), variable.Value.z)); + }; + zValueConverter = delegate(string value) { + callback(new Vector3(variable.Value.x, variable.Value.y, StringToFloat(value))); + }; + + xInput.onValueChanged.AddListener(xValueConverter); + yInput.onValueChanged.AddListener(yValueConverter); + zInput.onValueChanged.AddListener(zValueConverter); + } + + //--------------------------------------------------------------------------- + protected override void RemoveUIListener(UnityAction<Vector3> callback) { + if (xValueConverter != null) { + xInput.onValueChanged.RemoveListener(xValueConverter); + xValueConverter = null; + } + if (yValueConverter != null) { + yInput.onValueChanged.RemoveListener(yValueConverter); + yValueConverter = null; + } + if (zValueConverter != null) { + zInput.onValueChanged.RemoveListener(zValueConverter); + zValueConverter = null; + } + } + + //--------------------------------------------------------------------------- + protected override bool DoValuesMatch() { + return !String.IsNullOrEmpty(xInput.text) && Convert.ToSingle(xInput.text) == variable.Value.x && + !String.IsNullOrEmpty(yInput.text) && Convert.ToSingle(yInput.text) == variable.Value.y && + !String.IsNullOrEmpty(zInput.text) && Convert.ToSingle(zInput.text) == variable.Value.z; + } + + //--------------------------------------------------------------------------- + protected override void UpdateUIValue() { + xInput.SetTextWithoutNotify(variable.Value.x.ToString()); + yInput.SetTextWithoutNotify(variable.Value.y.ToString()); + zInput.SetTextWithoutNotify(variable.Value.z.ToString()); + } + + //--------------------------------------------------------------------------- + protected override void UpdateVariableValue(Vector3 value) { + variable.Value = value; + } + + //--------------------------------------------------------------------------- + private float StringToFloat(string value) { + if (!String.IsNullOrEmpty(xInput.text)) { + return Convert.ToSingle(value); + } + return 0.0f; + } + } +} diff --git a/Sane Eric's UI/Scriptable Variables/Vector3VariableInput.cs.meta b/Sane Eric's UI/Scriptable Variables/Vector3VariableInput.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..1c919a7f6a4a0fba6d552ff125d833c8803b5148 --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector3VariableInput.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c051b053eaff99d4a94087f69d61e3ed +timeCreated: 1510784910 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Sane Eric's UI/Scriptable Variables/Vector3VariableLabel.cs b/Sane Eric's UI/Scriptable Variables/Vector3VariableLabel.cs new file mode 100644 index 0000000000000000000000000000000000000000..24cabbd44d719eb1a93121cfd54998419419842f --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector3VariableLabel.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using Shared.ScriptableVariables; + +namespace Shared.SEUI { + // Read only UI for a Vector3Variable + // Depends on ScriptableVariable package + public class Vector3VariableLabel : ScriptableVariableLabel<Vector3> { + [Tooltip("The variable whose value we are displaying")] + public Vector3Variable value; + + //--------------------------------------------------------------------------- + protected override string GetName() { + return value.name; + } + + //--------------------------------------------------------------------------- + protected override Vector3 GetValue() { + return value.Value; + } + } +} diff --git a/Sane Eric's UI/Scriptable Variables/Vector3VariableLabel.cs.meta b/Sane Eric's UI/Scriptable Variables/Vector3VariableLabel.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..829bd1ee611967ec40e126b4a146a56aec1a0368 --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector3VariableLabel.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6b90857e4d335c248877cef27d2847a0 +timeCreated: 1510784910 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Sane Eric's UI/Scriptable Variables/Vector4VariableInput.cs b/Sane Eric's UI/Scriptable Variables/Vector4VariableInput.cs new file mode 100644 index 0000000000000000000000000000000000000000..9a96d37f9d7c60a43ef4a1a4d270db8f310b0fb7 --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector4VariableInput.cs @@ -0,0 +1,112 @@ +using System; +using UnityEngine; +using UnityEngine.Events; +using TMPro; +using Shared.ScriptableVariables; + +namespace Shared.SEUI { + // UI Editor for a Vector4Variable + // Depends on ScriptableVariable package + public class Vector4VariableInput : ScriptableVariableInput<Vector4> { + [Tooltip("The variable we are editing")] + public Vector4Variable variable; + + [Tooltip("The input UI to edit the variable's x value with")] + public TMP_InputField xInput; + + [Tooltip("The input UI to edit the variable's y value with")] + public TMP_InputField yInput; + + [Tooltip("The input UI to edit the variable's z value with")] + public TMP_InputField zInput; + + [Tooltip("The input UI to edit the variable's w value with")] + public TMP_InputField wInput; + + // Temporary callbackx to bridge value changes in the UI and the variable + private UnityAction<string> xValueConverter; + private UnityAction<string> yValueConverter; + private UnityAction<string> zValueConverter; + private UnityAction<string> wValueConverter; + + //--------------------------------------------------------------------------- + void Start() { + // Make sure the input handles the right content type + xInput.contentType = TMP_InputField.ContentType.DecimalNumber; + yInput.contentType = TMP_InputField.ContentType.DecimalNumber; + zInput.contentType = TMP_InputField.ContentType.DecimalNumber; + wInput.contentType = TMP_InputField.ContentType.DecimalNumber; + } + + //--------------------------------------------------------------------------- + protected override void AddUIListener(UnityAction<Vector4> callback) { + // Define the value converting bridge callback to add to the UI listener + xValueConverter = delegate(string value) { + callback(new Vector4(StringToFloat(value), variable.Value.y, variable.Value.z, variable.Value.w)); + }; + yValueConverter = delegate(string value) { + callback(new Vector4(variable.Value.x, StringToFloat(value), variable.Value.z, variable.Value.w)); + }; + zValueConverter = delegate(string value) { + callback(new Vector4(variable.Value.x, variable.Value.y, StringToFloat(value), variable.Value.w)); + }; + wValueConverter = delegate(string value) { + callback(new Vector4(variable.Value.x, variable.Value.y, variable.Value.z, StringToFloat(value))); + }; + + xInput.onValueChanged.AddListener(xValueConverter); + yInput.onValueChanged.AddListener(yValueConverter); + yInput.onValueChanged.AddListener(zValueConverter); + yInput.onValueChanged.AddListener(wValueConverter); + } + + //--------------------------------------------------------------------------- + protected override void RemoveUIListener(UnityAction<Vector4> callback) { + if (xValueConverter != null) { + xInput.onValueChanged.RemoveListener(xValueConverter); + xValueConverter = null; + } + if (yValueConverter != null) { + yInput.onValueChanged.RemoveListener(yValueConverter); + yValueConverter = null; + } + if (zValueConverter != null) { + zInput.onValueChanged.RemoveListener(zValueConverter); + zValueConverter = null; + } + if (wValueConverter != null) { + wInput.onValueChanged.RemoveListener(wValueConverter); + wValueConverter = null; + } + } + + //--------------------------------------------------------------------------- + protected override bool DoValuesMatch() { + return !String.IsNullOrEmpty(xInput.text) && Convert.ToSingle(xInput.text) == variable.Value.x && + !String.IsNullOrEmpty(yInput.text) && Convert.ToSingle(yInput.text) == variable.Value.y && + !String.IsNullOrEmpty(zInput.text) && Convert.ToSingle(zInput.text) == variable.Value.z && + !String.IsNullOrEmpty(wInput.text) && Convert.ToSingle(wInput.text) == variable.Value.w; + } + + //--------------------------------------------------------------------------- + protected override void UpdateUIValue() { + xInput.SetTextWithoutNotify(variable.Value.x.ToString()); + yInput.SetTextWithoutNotify(variable.Value.y.ToString()); + zInput.SetTextWithoutNotify(variable.Value.z.ToString()); + wInput.SetTextWithoutNotify(variable.Value.w.ToString()); + } + + //--------------------------------------------------------------------------- + protected override void UpdateVariableValue(Vector4 value) { + variable.Value = value; + } + + //--------------------------------------------------------------------------- + private float StringToFloat(string value) { + if (!String.IsNullOrEmpty(xInput.text)) { + return Convert.ToSingle(value); + } + return 0.0f; + } + } +} diff --git a/Sane Eric's UI/Scriptable Variables/Vector4VariableInput.cs.meta b/Sane Eric's UI/Scriptable Variables/Vector4VariableInput.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..04fb89898c97226fd78b3929836f56781b77fffc --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector4VariableInput.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 5cfc33bad7311744585edb4617313baf +timeCreated: 1510784910 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Sane Eric's UI/Scriptable Variables/Vector4VariableLabel.cs b/Sane Eric's UI/Scriptable Variables/Vector4VariableLabel.cs new file mode 100644 index 0000000000000000000000000000000000000000..c17bed68a1670140837c9c110b67c8202c7d2299 --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector4VariableLabel.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using Shared.ScriptableVariables; + +namespace Shared.SEUI { + // Read only UI for a Vector4Variable + // Depends on ScriptableVariable package + public class Vector4VariableLabel : ScriptableVariableLabel<Vector4> { + [Tooltip("The variable whose value we are displaying")] + public Vector4Variable value; + + //--------------------------------------------------------------------------- + protected override string GetName() { + return value.name; + } + + //--------------------------------------------------------------------------- + protected override Vector4 GetValue() { + return value.Value; + } + } +} diff --git a/Sane Eric's UI/Scriptable Variables/Vector4VariableLabel.cs.meta b/Sane Eric's UI/Scriptable Variables/Vector4VariableLabel.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4873c49365d952c6c79b9135ae76983c8f5dfc2f --- /dev/null +++ b/Sane Eric's UI/Scriptable Variables/Vector4VariableLabel.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 35dd2766ae2da1d48aeaf81da26d347a +timeCreated: 1510784910 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Conditionals/Vector2VariableComparison.cs b/Scriptable Variables/Conditionals/Vector2VariableComparison.cs new file mode 100644 index 0000000000000000000000000000000000000000..c292d68424bddcde64a51fb67fc38ba8f8f6100f --- /dev/null +++ b/Scriptable Variables/Conditionals/Vector2VariableComparison.cs @@ -0,0 +1,48 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie Unity's event system to variable values based on conditions + public class Vector2VariableComparison : MonoBehaviour { + [Tooltip("The variable we are watching value changes to compare against something else")] + public Vector2Variable variable; + + [Tooltip("Scriptable Variable to compare, if null then comparison value will be used to compare")] + public Vector2Variable comparisonVariable; + + [Tooltip("Hardcoded value to compare against variable if comparisonVariable isn't set")] + public Vector2 comparisonValue; + + [Tooltip("Fires if variable changes and its value is equal to the comparison amount")] + public UnityEvent onEqual; + + [Tooltip("Fires if variable changes and its value is not equal to the comparison amount")] + public UnityEvent onNotEqual; + + [Tooltip("Fires true or false if the values are equal whenever variable's value changes")] + public BooleanUnityEvent onValueChanged; + + // -------------------------------------------------------------------------- + void OnEnable() { + variable.OnValueChanged += OnValueChanged; + OnValueChanged(); + } + + // -------------------------------------------------------------------------- + void OnDisable() { + variable.OnValueChanged -= OnValueChanged; + } + + // -------------------------------------------------------------------------- + private void OnValueChanged() { + var equal = variable.Value == (comparisonVariable != null ? comparisonVariable.Value : comparisonValue); + if (equal) { + onEqual?.Invoke(); + } + else { + onNotEqual?.Invoke(); + } + onValueChanged?.Invoke(equal); + } + } +} diff --git a/Scriptable Variables/Conditionals/Vector2VariableComparison.cs.meta b/Scriptable Variables/Conditionals/Vector2VariableComparison.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..6c356588b3e83294263731e01db5ce89173c0b23 --- /dev/null +++ b/Scriptable Variables/Conditionals/Vector2VariableComparison.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8b8faad62b642b2428528c3a916c6328 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Conditionals/Vector3VariableComparison.cs b/Scriptable Variables/Conditionals/Vector3VariableComparison.cs new file mode 100644 index 0000000000000000000000000000000000000000..dc81fcffd11a74368845b3355f0bb23e33f388ae --- /dev/null +++ b/Scriptable Variables/Conditionals/Vector3VariableComparison.cs @@ -0,0 +1,48 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie Unity's event system to variable values based on conditions + public class Vector3VariableComparison : MonoBehaviour { + [Tooltip("The variable we are watching value changes to compare against something else")] + public Vector3Variable variable; + + [Tooltip("Scriptable Variable to compare, if null then comparison value will be used to compare")] + public Vector3Variable comparisonVariable; + + [Tooltip("Hardcoded value to compare against variable if comparisonVariable isn't set")] + public Vector3 comparisonValue; + + [Tooltip("Fires if variable changes and its value is equal to the comparison amount")] + public UnityEvent onEqual; + + [Tooltip("Fires if variable changes and its value is not equal to the comparison amount")] + public UnityEvent onNotEqual; + + [Tooltip("Fires true or false if the values are equal whenever variable's value changes")] + public BooleanUnityEvent onValueChanged; + + // -------------------------------------------------------------------------- + void OnEnable() { + variable.OnValueChanged += OnValueChanged; + OnValueChanged(); + } + + // -------------------------------------------------------------------------- + void OnDisable() { + variable.OnValueChanged -= OnValueChanged; + } + + // -------------------------------------------------------------------------- + private void OnValueChanged() { + var equal = variable.Value == (comparisonVariable != null ? comparisonVariable.Value : comparisonValue); + if (equal) { + onEqual?.Invoke(); + } + else { + onNotEqual?.Invoke(); + } + onValueChanged?.Invoke(equal); + } + } +} diff --git a/Scriptable Variables/Conditionals/Vector3VariableComparison.cs.meta b/Scriptable Variables/Conditionals/Vector3VariableComparison.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..3390f6280e1dc6ccaa3f3a945f9560299c19b33a --- /dev/null +++ b/Scriptable Variables/Conditionals/Vector3VariableComparison.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c44be721b807a4e438f7bf132387bb5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Conditionals/Vector4VariableComparison.cs b/Scriptable Variables/Conditionals/Vector4VariableComparison.cs new file mode 100644 index 0000000000000000000000000000000000000000..ab3965a96acbc897bbaf6e6aae0641a6f43d003a --- /dev/null +++ b/Scriptable Variables/Conditionals/Vector4VariableComparison.cs @@ -0,0 +1,48 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie Unity's event system to variable values based on conditions + public class Vector4VariableComparison : MonoBehaviour { + [Tooltip("The variable we are watching value changes to compare against something else")] + public Vector4Variable variable; + + [Tooltip("Scriptable Variable to compare, if null then comparison value will be used to compare")] + public Vector4Variable comparisonVariable; + + [Tooltip("Hardcoded value to compare against variable if comparisonVariable isn't set")] + public Vector4 comparisonValue; + + [Tooltip("Fires if variable changes and its value is equal to the comparison amount")] + public UnityEvent onEqual; + + [Tooltip("Fires if variable changes and its value is not equal to the comparison amount")] + public UnityEvent onNotEqual; + + [Tooltip("Fires true or false if the values are equal whenever variable's value changes")] + public BooleanUnityEvent onValueChanged; + + // -------------------------------------------------------------------------- + void OnEnable() { + variable.OnValueChanged += OnValueChanged; + OnValueChanged(); + } + + // -------------------------------------------------------------------------- + void OnDisable() { + variable.OnValueChanged -= OnValueChanged; + } + + // -------------------------------------------------------------------------- + private void OnValueChanged() { + var equal = variable.Value == (comparisonVariable != null ? comparisonVariable.Value : comparisonValue); + if (equal) { + onEqual?.Invoke(); + } + else { + onNotEqual?.Invoke(); + } + onValueChanged?.Invoke(equal); + } + } +} diff --git a/Scriptable Variables/Conditionals/Vector4VariableComparison.cs.meta b/Scriptable Variables/Conditionals/Vector4VariableComparison.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..70705d2f9fcdd9fb753eed4deac0824541dd2ce5 --- /dev/null +++ b/Scriptable Variables/Conditionals/Vector4VariableComparison.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69f20c2bd66f017499dc99f0948e14e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor/Vector2GameEventEditor.cs b/Scriptable Variables/Events/Editor/Vector2GameEventEditor.cs new file mode 100644 index 0000000000000000000000000000000000000000..d7df31d3c23ef5f32f639b8ae4b5178a16cbc154 --- /dev/null +++ b/Scriptable Variables/Events/Editor/Vector2GameEventEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + [CustomEditor(typeof(Vector2GameEvent))] + public class Vector2GameEventEditor : Editor { + private Vector2 testValue; + + //--------------------------------------------------------------------------- + public override void OnInspectorGUI() { + base.OnInspectorGUI(); + + EditorGUILayout.BeginHorizontal(); + testValue = EditorGUILayout.Vector2Field("Test Value", testValue); + if (GUILayout.Button("Fire Event")) { + ((Vector2GameEvent)target).Raise(testValue); + } + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Scriptable Variables/Events/Editor/Vector2GameEventEditor.cs.meta b/Scriptable Variables/Events/Editor/Vector2GameEventEditor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..620ce9cd359bc803970619110b51c2f23aed6958 --- /dev/null +++ b/Scriptable Variables/Events/Editor/Vector2GameEventEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 31c51078b2c87fc46ae2939707c50efc +timeCreated: 1513206436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor/Vector3GameEventEditor.cs b/Scriptable Variables/Events/Editor/Vector3GameEventEditor.cs new file mode 100644 index 0000000000000000000000000000000000000000..09d699863afdbea51d2375d26282822a5d242e3e --- /dev/null +++ b/Scriptable Variables/Events/Editor/Vector3GameEventEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + [CustomEditor(typeof(Vector3GameEvent))] + public class Vector3GameEventEditor : Editor { + private Vector3 testValue; + + //--------------------------------------------------------------------------- + public override void OnInspectorGUI() { + base.OnInspectorGUI(); + + EditorGUILayout.BeginHorizontal(); + testValue = EditorGUILayout.Vector3Field("Test Value", testValue); + if (GUILayout.Button("Fire Event")) { + ((Vector3GameEvent)target).Raise(testValue); + } + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Scriptable Variables/Events/Editor/Vector3GameEventEditor.cs.meta b/Scriptable Variables/Events/Editor/Vector3GameEventEditor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4e373f8b4371a2dc90aef896f5e054486fd0333d --- /dev/null +++ b/Scriptable Variables/Events/Editor/Vector3GameEventEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9c45777e68a6d034c8f46124e39775c8 +timeCreated: 1513206436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Editor/Vector4GameEventEditor.cs b/Scriptable Variables/Events/Editor/Vector4GameEventEditor.cs new file mode 100644 index 0000000000000000000000000000000000000000..5beb0f229a7ef302d745a0d7f6d6fc3a958d2b38 --- /dev/null +++ b/Scriptable Variables/Events/Editor/Vector4GameEventEditor.cs @@ -0,0 +1,22 @@ +using UnityEditor; +using UnityEngine; + +namespace Shared.ScriptableVariables { + //--------------------------------------------------------------------------- + [CustomEditor(typeof(Vector4GameEvent))] + public class Vector4GameEventEditor : Editor { + private Vector4 testValue; + + //--------------------------------------------------------------------------- + public override void OnInspectorGUI() { + base.OnInspectorGUI(); + + EditorGUILayout.BeginHorizontal(); + testValue = EditorGUILayout.Vector4Field("Test Value", testValue); + if (GUILayout.Button("Fire Event")) { + ((Vector4GameEvent)target).Raise(testValue); + } + EditorGUILayout.EndHorizontal(); + } + } +} diff --git a/Scriptable Variables/Events/Editor/Vector4GameEventEditor.cs.meta b/Scriptable Variables/Events/Editor/Vector4GameEventEditor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..3b30ac45df4ac1bc02ffc0534b2710e9a52df311 --- /dev/null +++ b/Scriptable Variables/Events/Editor/Vector4GameEventEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 83588b537590a804fa9a02cb32f1aa1c +timeCreated: 1513206436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Vector2GameEvent.cs b/Scriptable Variables/Events/Vector2GameEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..6814b96c3cf8b89ce12a4f7321b36d2d4c6432e7 --- /dev/null +++ b/Scriptable Variables/Events/Vector2GameEvent.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // ScriptableVariable that decouples components firing and listening to game events that require a Vector2 parameter + [CreateAssetMenu(menuName = "Scriptable Objects/Events/Vector2 Game Event")] + public class Vector2GameEvent : GameEvent<Vector2> { + } +} diff --git a/Scriptable Variables/Events/Vector2GameEvent.cs.meta b/Scriptable Variables/Events/Vector2GameEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c81fdccc5c6658d548f84916e7dc47c30b274116 --- /dev/null +++ b/Scriptable Variables/Events/Vector2GameEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 199a9e36449139548be39a6aba952bdd +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Vector2UnityEvent.cs b/Scriptable Variables/Events/Vector2UnityEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..9a92b412f29849c6e15889d42bfc61367bf09895 --- /dev/null +++ b/Scriptable Variables/Events/Vector2UnityEvent.cs @@ -0,0 +1,7 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + [System.Serializable] + public class Vector2UnityEvent : UnityEvent<Vector2> {} +} diff --git a/Scriptable Variables/Events/Vector2UnityEvent.cs.meta b/Scriptable Variables/Events/Vector2UnityEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..8f53e3b6dcbbe36c314793ee173ee05ca2ccd4fc --- /dev/null +++ b/Scriptable Variables/Events/Vector2UnityEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8631c5c574b586744a72bb3cb2e6d895 +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Vector3GameEvent.cs b/Scriptable Variables/Events/Vector3GameEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..c6cfbc7a3cec659e2b9e060a49776e967937d3fd --- /dev/null +++ b/Scriptable Variables/Events/Vector3GameEvent.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // ScriptableVariable that decouples components firing and listening to game events that require a Vector3 parameter + [CreateAssetMenu(menuName = "Scriptable Objects/Events/Vector3 Game Event")] + public class Vector3GameEvent : GameEvent<Vector3> { + } +} diff --git a/Scriptable Variables/Events/Vector3GameEvent.cs.meta b/Scriptable Variables/Events/Vector3GameEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b4a220c2e3f1c86565d6549d4557223664d66ab6 --- /dev/null +++ b/Scriptable Variables/Events/Vector3GameEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 702e747f33d46c44ca802bcbd47d8a67 +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Vector3UnityEvent.cs b/Scriptable Variables/Events/Vector3UnityEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..03da8a3e0546177fe7700ecca3e25df4ca6d1b07 --- /dev/null +++ b/Scriptable Variables/Events/Vector3UnityEvent.cs @@ -0,0 +1,7 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + [System.Serializable] + public class Vector3UnityEvent : UnityEvent<Vector3> {} +} diff --git a/Scriptable Variables/Events/Vector3UnityEvent.cs.meta b/Scriptable Variables/Events/Vector3UnityEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..ab041153d1b103ee7d3725ffd6d6a32097167bf3 --- /dev/null +++ b/Scriptable Variables/Events/Vector3UnityEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: f2031184b1866fd44b65ba7847d09f9e +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Vector4GameEvent.cs b/Scriptable Variables/Events/Vector4GameEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..4b24de380c9011c9f05fb0c527efcc9f47610142 --- /dev/null +++ b/Scriptable Variables/Events/Vector4GameEvent.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // ScriptableVariable that decouples components firing and listening to game events that require a Vector4 parameter + [CreateAssetMenu(menuName = "Scriptable Objects/Events/Vector4 Game Event")] + public class Vector4GameEvent : GameEvent<Vector4> { + } +} diff --git a/Scriptable Variables/Events/Vector4GameEvent.cs.meta b/Scriptable Variables/Events/Vector4GameEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..15ecedb0b0e8ded95ce4b045258c1f3f88d4a1ec --- /dev/null +++ b/Scriptable Variables/Events/Vector4GameEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b56a05dc9ce107549b23670cd0cac21c +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Events/Vector4UnityEvent.cs b/Scriptable Variables/Events/Vector4UnityEvent.cs new file mode 100644 index 0000000000000000000000000000000000000000..482637e789546a21c5397f3b484c69807164ad5c --- /dev/null +++ b/Scriptable Variables/Events/Vector4UnityEvent.cs @@ -0,0 +1,7 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + [System.Serializable] + public class Vector4UnityEvent : UnityEvent<Vector4> {} +} diff --git a/Scriptable Variables/Events/Vector4UnityEvent.cs.meta b/Scriptable Variables/Events/Vector4UnityEvent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0e2112dc07254cb8d5695d959e88fed74c40ccb3 --- /dev/null +++ b/Scriptable Variables/Events/Vector4UnityEvent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8e67a65cc275e80429b9f42d8315e26d +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/Vector2GameEventListener.cs b/Scriptable Variables/Listeners/Vector2GameEventListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..6642f1bdac6fc8928c318e377f2c877f9dbf4b13 --- /dev/null +++ b/Scriptable Variables/Listeners/Vector2GameEventListener.cs @@ -0,0 +1,19 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie Vector2GameEvents to Unity's event system + public class Vector2GameEventListener : GameEventListener<Vector2> { + [Tooltip("The game event to listen to")] + public Vector2GameEvent eventToListenTo; + + [Tooltip("The UnityEvent to raise in response to the game event being raised")] + public Vector2UnityEvent response; + + //--------------------------------------------------------------------------- + protected override GameEvent<Vector2> GetGameEvent() { return eventToListenTo; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<Vector2> GetUnityEvent() { return response; } + } +} diff --git a/Scriptable Variables/Listeners/Vector2GameEventListener.cs.meta b/Scriptable Variables/Listeners/Vector2GameEventListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..26e3fe70ba4f6ac2c4cefdfe022288b29fafe2ff --- /dev/null +++ b/Scriptable Variables/Listeners/Vector2GameEventListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: bdf1be86524e4644eb3deda08e7e2f6b +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/Vector2VariableListener.cs b/Scriptable Variables/Listeners/Vector2VariableListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..03b83ba09706d1980e6f64bddb1f107e0c7ad6f4 --- /dev/null +++ b/Scriptable Variables/Listeners/Vector2VariableListener.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + /// <summary> + /// Used to trigger a UnityEvent in response to changes on a Vector2Variable + /// </summary> + public class Vector2VariableListener : ScriptableVariableListener<Vector2> { + [Tooltip("The ScriptableVariable to listen for changes")] + public Vector2Variable variable; + + [Tooltip("The UnityEvent that gets triggered when the variable changes value")] + public Vector2UnityEvent OnValueChangedEvent; + + //--------------------------------------------------------------------------- + protected override ScriptableVariable<Vector2> GetScriptableVariable() { return variable; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<Vector2> GetUnityEvent() { return OnValueChangedEvent; } + } +} diff --git a/Scriptable Variables/Listeners/Vector2VariableListener.cs.meta b/Scriptable Variables/Listeners/Vector2VariableListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f7cff427fdb2310ece2e89df8b69a267e382bfa2 --- /dev/null +++ b/Scriptable Variables/Listeners/Vector2VariableListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c23eebf64ae491247b42c9e8681ae7e3 +timeCreated: 1513208270 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/Vector3GameEventListener.cs b/Scriptable Variables/Listeners/Vector3GameEventListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..32fd7779884f7607a102a55435c8900e6cc7ac1f --- /dev/null +++ b/Scriptable Variables/Listeners/Vector3GameEventListener.cs @@ -0,0 +1,19 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie Vector3GameEvents to Unity's event system + public class Vector3GameEventListener : GameEventListener<Vector3> { + [Tooltip("The game event to listen to")] + public Vector3GameEvent eventToListenTo; + + [Tooltip("The UnityEvent to raise in response to the game event being raised")] + public Vector3UnityEvent response; + + //--------------------------------------------------------------------------- + protected override GameEvent<Vector3> GetGameEvent() { return eventToListenTo; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<Vector3> GetUnityEvent() { return response; } + } +} diff --git a/Scriptable Variables/Listeners/Vector3GameEventListener.cs.meta b/Scriptable Variables/Listeners/Vector3GameEventListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..135551ae556f98cd7116a0bd7be3da0ef7d26c7d --- /dev/null +++ b/Scriptable Variables/Listeners/Vector3GameEventListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 5ec009a88dcb5144697ce093c13e3d83 +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/Vector3VariableListener.cs b/Scriptable Variables/Listeners/Vector3VariableListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..403601047c7934a084e620b7411675924e98953a --- /dev/null +++ b/Scriptable Variables/Listeners/Vector3VariableListener.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + /// <summary> + /// Used to trigger a UnityEvent in response to changes on a Vector3Variable + /// </summary> + public class Vector3VariableListener : ScriptableVariableListener<Vector3> { + [Tooltip("The ScriptableVariable to listen for changes")] + public Vector3Variable variable; + + [Tooltip("The UnityEvent that gets triggered when the variable changes value")] + public Vector3UnityEvent OnValueChangedEvent; + + //--------------------------------------------------------------------------- + protected override ScriptableVariable<Vector3> GetScriptableVariable() { return variable; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<Vector3> GetUnityEvent() { return OnValueChangedEvent; } + } +} diff --git a/Scriptable Variables/Listeners/Vector3VariableListener.cs.meta b/Scriptable Variables/Listeners/Vector3VariableListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..db51de4543b36b36cd4a731821e32884542bcb60 --- /dev/null +++ b/Scriptable Variables/Listeners/Vector3VariableListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d5af93d9ba9b41e4ab55b5abe12edb2c +timeCreated: 1513208270 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/Vector4GameEventListener.cs b/Scriptable Variables/Listeners/Vector4GameEventListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..3b4d60b771f03652ef362e49a7a0903456bdc671 --- /dev/null +++ b/Scriptable Variables/Listeners/Vector4GameEventListener.cs @@ -0,0 +1,19 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + // Component to tie Vector4GameEvents to Unity's event system + public class Vector4GameEventListener : GameEventListener<Vector4> { + [Tooltip("The game event to listen to")] + public Vector4GameEvent eventToListenTo; + + [Tooltip("The UnityEvent to raise in response to the game event being raised")] + public Vector4UnityEvent response; + + //--------------------------------------------------------------------------- + protected override GameEvent<Vector4> GetGameEvent() { return eventToListenTo; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<Vector4> GetUnityEvent() { return response; } + } +} diff --git a/Scriptable Variables/Listeners/Vector4GameEventListener.cs.meta b/Scriptable Variables/Listeners/Vector4GameEventListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0e7e3401d492da6abe7b6d2870f46c3369e55fed --- /dev/null +++ b/Scriptable Variables/Listeners/Vector4GameEventListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8ca17874c6c50a147986d2d5ab155d5d +timeCreated: 1510599448 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Listeners/Vector4VariableListener.cs b/Scriptable Variables/Listeners/Vector4VariableListener.cs new file mode 100644 index 0000000000000000000000000000000000000000..5c2814e12b37847e39b85c2125c47a1d4ff99748 --- /dev/null +++ b/Scriptable Variables/Listeners/Vector4VariableListener.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using UnityEngine.Events; + +namespace Shared.ScriptableVariables { + /// <summary> + /// Used to trigger a UnityEvent in response to changes on a Vector4Variable + /// </summary> + public class Vector4VariableListener : ScriptableVariableListener<Vector4> { + [Tooltip("The ScriptableVariable to listen for changes")] + public Vector4Variable variable; + + [Tooltip("The UnityEvent that gets triggered when the variable changes value")] + public Vector4UnityEvent OnValueChangedEvent; + + //--------------------------------------------------------------------------- + protected override ScriptableVariable<Vector4> GetScriptableVariable() { return variable; } + + //--------------------------------------------------------------------------- + protected override UnityEvent<Vector4> GetUnityEvent() { return OnValueChangedEvent; } + } +} diff --git a/Scriptable Variables/Listeners/Vector4VariableListener.cs.meta b/Scriptable Variables/Listeners/Vector4VariableListener.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..6c94184340e2fe43fde254c4419971d504e6d5de --- /dev/null +++ b/Scriptable Variables/Listeners/Vector4VariableListener.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c4d5d5145e1deb945bb5b29e2b332e48 +timeCreated: 1513208270 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scriptable Variables/Variables/Base Types/Vector2Variable.cs b/Scriptable Variables/Variables/Base Types/Vector2Variable.cs new file mode 100644 index 0000000000000000000000000000000000000000..604f328344909ed45f37ef8e2a6a4b1931496f4f --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector2Variable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A Vector2 value to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Vector2")] + public class Vector2Variable : ScriptableVariable<Vector2> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(Vector2Variable))] + [UnityEditor.CanEditMultipleObjects] + public class Vector2ScriptableVariableEditor : Vector2Variable.BaseScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/Vector2Variable.cs.meta b/Scriptable Variables/Variables/Base Types/Vector2Variable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b86a8be1d27aa96f33c517309b5e391da2b6320e --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector2Variable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: ae328bc50f421254396a03e58e8b0638 +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/Vector3Variable.cs b/Scriptable Variables/Variables/Base Types/Vector3Variable.cs new file mode 100644 index 0000000000000000000000000000000000000000..03a653b4219457c0ff73bbf12579ec755c29fb48 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector3Variable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A Vector3 value to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Vector3")] + public class Vector3Variable : ScriptableVariable<Vector3> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(Vector3Variable))] + [UnityEditor.CanEditMultipleObjects] + public class Vector3ScriptableVariableEditor : Vector3Variable.BaseScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/Vector3Variable.cs.meta b/Scriptable Variables/Variables/Base Types/Vector3Variable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..2dea28b4fb121e2ddfffb10673b60f957d04806c --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector3Variable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e9c61337ff4dbe8469dc49c3886561ec +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/Vector4Variable.cs b/Scriptable Variables/Variables/Base Types/Vector4Variable.cs new file mode 100644 index 0000000000000000000000000000000000000000..446a8e0db75c34fdf7603fa9ee9513ec5b8f8f8b --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector4Variable.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A Vector4 value to share across components, scenes, and prefabs + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Vector4")] + public class Vector4Variable : ScriptableVariable<Vector4> { + //--------------------------------------------------------------------------- + [ContextMenu("Reset To Default Value")] + public void ContextMenuReset() { + Reset(); + } + } + +#if UNITY_EDITOR + //----------------------------------------------------------------------------- + [UnityEditor.CustomEditor(typeof(Vector4Variable))] + [UnityEditor.CanEditMultipleObjects] + public class Vector4ScriptableVariableEditor : Vector4Variable.BaseScriptableVariableEditor { + } +#endif +} diff --git a/Scriptable Variables/Variables/Base Types/Vector4Variable.cs.meta b/Scriptable Variables/Variables/Base Types/Vector4Variable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..daeaa87a5a8af24d07e59345629af5a3f871c670 --- /dev/null +++ b/Scriptable Variables/Variables/Base Types/Vector4Variable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1fe0e4fa8a8022442a1d26ad60b9a2bb +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/Editor/ReferenceVector2VariableInspector.cs b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector2VariableInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..8b259decddb7f28a2991ebd4c6837ff0bd59c160 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector2VariableInspector.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace Shared.ScriptableVariables { + // A custom Inspector Editor for ReferenceVector2Variables + [CustomEditor(typeof(ReferenceVector2Variable))] + [CanEditMultipleObjects] + public class ReferenceVector2VariableInspector : ReferenceScriptableVariableInspector { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector2VariableInspector.cs.meta b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector2VariableInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..ae679c060d279d51eac185050dd56172e801c457 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector2VariableInspector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 200dc1216ca52e948b1697340f3744e6 +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/ReferenceVector3VariableInspector.cs b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector3VariableInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..f4c957a4feca45a6d9cb560b5090019670f70e40 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector3VariableInspector.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace Shared.ScriptableVariables { + // A custom Inspector Editor for ReferenceVector3Variables + [CustomEditor(typeof(ReferenceVector3Variable))] + [CanEditMultipleObjects] + public class ReferenceVector3VariableInspector : ReferenceScriptableVariableInspector { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector3VariableInspector.cs.meta b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector3VariableInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..995458f409c06337e66cfb0b7ebe4b9adbdc8ad3 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector3VariableInspector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 199e2653d66c1164185b434bc83f2818 +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/ReferenceVector4VariableInspector.cs b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector4VariableInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..1f04a6c4a6682b9329bd5a1f6ebbb09f0e75f0b8 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector4VariableInspector.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace Shared.ScriptableVariables { + // A custom Inspector Editor for ReferenceVector4Variables + [CustomEditor(typeof(ReferenceVector4Variable))] + [CanEditMultipleObjects] + public class ReferenceVector4VariableInspector : ReferenceScriptableVariableInspector { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector4VariableInspector.cs.meta b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector4VariableInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a6e9251717d9d0c8673dc796cf884b441d66cf0e --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector4VariableInspector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d99bdf84ff7e0c24e89e982049f18891 +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/ReferenceVector2Variable.cs b/Scriptable Variables/Variables/Reference Types/ReferenceVector2Variable.cs new file mode 100644 index 0000000000000000000000000000000000000000..af87d13ddbdf5991ea5050ed2354a02301e43b5c --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceVector2Variable.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A reference to a Vector2 value to share across components, scenes, and prefabs that can be overridden to a constant different value + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Reference/Vector2")] + public class ReferenceVector2Variable : ReferenceScriptableVariable<Vector2Variable, Vector2> { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceVector2Variable.cs.meta b/Scriptable Variables/Variables/Reference Types/ReferenceVector2Variable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0e6500248148996a1ed51e8bd764e58e303a4d24 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceVector2Variable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6023d86a1b7c7e249abe7940152bd48b +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/ReferenceVector3Variable.cs b/Scriptable Variables/Variables/Reference Types/ReferenceVector3Variable.cs new file mode 100644 index 0000000000000000000000000000000000000000..6c846ef580fb58dceedcafec7119cdb3c2b61a6f --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceVector3Variable.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A reference to a Vector3 value to share across components, scenes, and prefabs that can be overridden to a constant different value + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Reference/Vector3")] + public class ReferenceVector3Variable : ReferenceScriptableVariable<Vector3Variable, Vector3> { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceVector3Variable.cs.meta b/Scriptable Variables/Variables/Reference Types/ReferenceVector3Variable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..12a34d7d18a06cef6174b1237b124b1eb6f230a1 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceVector3Variable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 2dc931012aa15ab47b6e1512d0e4bbca +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/ReferenceVector4Variable.cs b/Scriptable Variables/Variables/Reference Types/ReferenceVector4Variable.cs new file mode 100644 index 0000000000000000000000000000000000000000..6d20dbd6de31f661f37649acb5293521522d8b33 --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceVector4Variable.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Shared.ScriptableVariables { + // A reference to a Vector4 value to share across components, scenes, and prefabs that can be overridden to a constant different value + [CreateAssetMenu(menuName = "Scriptable Objects/Variables/Reference/Vector4")] + public class ReferenceVector4Variable : ReferenceScriptableVariable<Vector4Variable, Vector4> { + } +} diff --git a/Scriptable Variables/Variables/Reference Types/ReferenceVector4Variable.cs.meta b/Scriptable Variables/Variables/Reference Types/ReferenceVector4Variable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..530a45d763f2cc198496434fc79ce308fc4e679a --- /dev/null +++ b/Scriptable Variables/Variables/Reference Types/ReferenceVector4Variable.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a8be70176b441a647b33d4a57fcfe471 +timeCreated: 1510599427 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: