From fb6eceabfb8a35e20b1434611577c89ce5019134 Mon Sep 17 00:00:00 2001 From: erheine <erheine@nps.edu> Date: Fri, 6 Mar 2020 15:23:40 -0800 Subject: [PATCH] Added UI, variables, events, and listeners for Vector2, 3, and 4 values. --- .../Vector2VariableInput.cs | 82 +++++++++++++ .../Vector2VariableInput.cs.meta | 13 ++ .../Vector2VariableLabel.cs | 21 ++++ .../Vector2VariableLabel.cs.meta | 13 ++ .../Vector3VariableInput.cs | 97 +++++++++++++++ .../Vector3VariableInput.cs.meta | 13 ++ .../Vector3VariableLabel.cs | 21 ++++ .../Vector3VariableLabel.cs.meta | 13 ++ .../Vector4VariableInput.cs | 112 ++++++++++++++++++ .../Vector4VariableInput.cs.meta | 13 ++ .../Vector4VariableLabel.cs | 21 ++++ .../Vector4VariableLabel.cs.meta | 13 ++ .../Conditionals/Vector2VariableComparison.cs | 48 ++++++++ .../Vector2VariableComparison.cs.meta | 11 ++ .../Conditionals/Vector3VariableComparison.cs | 48 ++++++++ .../Vector3VariableComparison.cs.meta | 11 ++ .../Conditionals/Vector4VariableComparison.cs | 48 ++++++++ .../Vector4VariableComparison.cs.meta | 11 ++ .../Events/Editor/Vector2GameEventEditor.cs | 22 ++++ .../Editor/Vector2GameEventEditor.cs.meta | 13 ++ .../Events/Editor/Vector3GameEventEditor.cs | 22 ++++ .../Editor/Vector3GameEventEditor.cs.meta | 13 ++ .../Events/Editor/Vector4GameEventEditor.cs | 22 ++++ .../Editor/Vector4GameEventEditor.cs.meta | 13 ++ .../Events/Vector2GameEvent.cs | 8 ++ .../Events/Vector2GameEvent.cs.meta | 13 ++ .../Events/Vector2UnityEvent.cs | 7 ++ .../Events/Vector2UnityEvent.cs.meta | 13 ++ .../Events/Vector3GameEvent.cs | 8 ++ .../Events/Vector3GameEvent.cs.meta | 13 ++ .../Events/Vector3UnityEvent.cs | 7 ++ .../Events/Vector3UnityEvent.cs.meta | 13 ++ .../Events/Vector4GameEvent.cs | 8 ++ .../Events/Vector4GameEvent.cs.meta | 13 ++ .../Events/Vector4UnityEvent.cs | 7 ++ .../Events/Vector4UnityEvent.cs.meta | 13 ++ .../Listeners/Vector2GameEventListener.cs | 19 +++ .../Vector2GameEventListener.cs.meta | 13 ++ .../Listeners/Vector2VariableListener.cs | 21 ++++ .../Listeners/Vector2VariableListener.cs.meta | 13 ++ .../Listeners/Vector3GameEventListener.cs | 19 +++ .../Vector3GameEventListener.cs.meta | 13 ++ .../Listeners/Vector3VariableListener.cs | 21 ++++ .../Listeners/Vector3VariableListener.cs.meta | 13 ++ .../Listeners/Vector4GameEventListener.cs | 19 +++ .../Vector4GameEventListener.cs.meta | 13 ++ .../Listeners/Vector4VariableListener.cs | 21 ++++ .../Listeners/Vector4VariableListener.cs.meta | 13 ++ .../Variables/Base Types/Vector2Variable.cs | 21 ++++ .../Base Types/Vector2Variable.cs.meta | 13 ++ .../Variables/Base Types/Vector3Variable.cs | 21 ++++ .../Base Types/Vector3Variable.cs.meta | 13 ++ .../Variables/Base Types/Vector4Variable.cs | 21 ++++ .../Base Types/Vector4Variable.cs.meta | 13 ++ .../ReferenceVector2VariableInspector.cs | 9 ++ .../ReferenceVector2VariableInspector.cs.meta | 13 ++ .../ReferenceVector3VariableInspector.cs | 9 ++ .../ReferenceVector3VariableInspector.cs.meta | 13 ++ .../ReferenceVector4VariableInspector.cs | 9 ++ .../ReferenceVector4VariableInspector.cs.meta | 13 ++ .../ReferenceVector2Variable.cs | 8 ++ .../ReferenceVector2Variable.cs.meta | 13 ++ .../ReferenceVector3Variable.cs | 8 ++ .../ReferenceVector3Variable.cs.meta | 13 ++ .../ReferenceVector4Variable.cs | 8 ++ .../ReferenceVector4Variable.cs.meta | 13 ++ 66 files changed, 1266 insertions(+) create mode 100644 Sane Eric's UI/Scriptable Variables/Vector2VariableInput.cs create mode 100644 Sane Eric's UI/Scriptable Variables/Vector2VariableInput.cs.meta create mode 100644 Sane Eric's UI/Scriptable Variables/Vector2VariableLabel.cs create mode 100644 Sane Eric's UI/Scriptable Variables/Vector2VariableLabel.cs.meta create mode 100644 Sane Eric's UI/Scriptable Variables/Vector3VariableInput.cs create mode 100644 Sane Eric's UI/Scriptable Variables/Vector3VariableInput.cs.meta create mode 100644 Sane Eric's UI/Scriptable Variables/Vector3VariableLabel.cs create mode 100644 Sane Eric's UI/Scriptable Variables/Vector3VariableLabel.cs.meta create mode 100644 Sane Eric's UI/Scriptable Variables/Vector4VariableInput.cs create mode 100644 Sane Eric's UI/Scriptable Variables/Vector4VariableInput.cs.meta create mode 100644 Sane Eric's UI/Scriptable Variables/Vector4VariableLabel.cs create mode 100644 Sane Eric's UI/Scriptable Variables/Vector4VariableLabel.cs.meta create mode 100644 Scriptable Variables/Conditionals/Vector2VariableComparison.cs create mode 100644 Scriptable Variables/Conditionals/Vector2VariableComparison.cs.meta create mode 100644 Scriptable Variables/Conditionals/Vector3VariableComparison.cs create mode 100644 Scriptable Variables/Conditionals/Vector3VariableComparison.cs.meta create mode 100644 Scriptable Variables/Conditionals/Vector4VariableComparison.cs create mode 100644 Scriptable Variables/Conditionals/Vector4VariableComparison.cs.meta create mode 100644 Scriptable Variables/Events/Editor/Vector2GameEventEditor.cs create mode 100644 Scriptable Variables/Events/Editor/Vector2GameEventEditor.cs.meta create mode 100644 Scriptable Variables/Events/Editor/Vector3GameEventEditor.cs create mode 100644 Scriptable Variables/Events/Editor/Vector3GameEventEditor.cs.meta create mode 100644 Scriptable Variables/Events/Editor/Vector4GameEventEditor.cs create mode 100644 Scriptable Variables/Events/Editor/Vector4GameEventEditor.cs.meta create mode 100644 Scriptable Variables/Events/Vector2GameEvent.cs create mode 100644 Scriptable Variables/Events/Vector2GameEvent.cs.meta create mode 100644 Scriptable Variables/Events/Vector2UnityEvent.cs create mode 100644 Scriptable Variables/Events/Vector2UnityEvent.cs.meta create mode 100644 Scriptable Variables/Events/Vector3GameEvent.cs create mode 100644 Scriptable Variables/Events/Vector3GameEvent.cs.meta create mode 100644 Scriptable Variables/Events/Vector3UnityEvent.cs create mode 100644 Scriptable Variables/Events/Vector3UnityEvent.cs.meta create mode 100644 Scriptable Variables/Events/Vector4GameEvent.cs create mode 100644 Scriptable Variables/Events/Vector4GameEvent.cs.meta create mode 100644 Scriptable Variables/Events/Vector4UnityEvent.cs create mode 100644 Scriptable Variables/Events/Vector4UnityEvent.cs.meta create mode 100644 Scriptable Variables/Listeners/Vector2GameEventListener.cs create mode 100644 Scriptable Variables/Listeners/Vector2GameEventListener.cs.meta create mode 100644 Scriptable Variables/Listeners/Vector2VariableListener.cs create mode 100644 Scriptable Variables/Listeners/Vector2VariableListener.cs.meta create mode 100644 Scriptable Variables/Listeners/Vector3GameEventListener.cs create mode 100644 Scriptable Variables/Listeners/Vector3GameEventListener.cs.meta create mode 100644 Scriptable Variables/Listeners/Vector3VariableListener.cs create mode 100644 Scriptable Variables/Listeners/Vector3VariableListener.cs.meta create mode 100644 Scriptable Variables/Listeners/Vector4GameEventListener.cs create mode 100644 Scriptable Variables/Listeners/Vector4GameEventListener.cs.meta create mode 100644 Scriptable Variables/Listeners/Vector4VariableListener.cs create mode 100644 Scriptable Variables/Listeners/Vector4VariableListener.cs.meta create mode 100644 Scriptable Variables/Variables/Base Types/Vector2Variable.cs create mode 100644 Scriptable Variables/Variables/Base Types/Vector2Variable.cs.meta create mode 100644 Scriptable Variables/Variables/Base Types/Vector3Variable.cs create mode 100644 Scriptable Variables/Variables/Base Types/Vector3Variable.cs.meta create mode 100644 Scriptable Variables/Variables/Base Types/Vector4Variable.cs create mode 100644 Scriptable Variables/Variables/Base Types/Vector4Variable.cs.meta create mode 100644 Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector2VariableInspector.cs create mode 100644 Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector2VariableInspector.cs.meta create mode 100644 Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector3VariableInspector.cs create mode 100644 Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector3VariableInspector.cs.meta create mode 100644 Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector4VariableInspector.cs create mode 100644 Scriptable Variables/Variables/Reference Types/Editor/ReferenceVector4VariableInspector.cs.meta create mode 100644 Scriptable Variables/Variables/Reference Types/ReferenceVector2Variable.cs create mode 100644 Scriptable Variables/Variables/Reference Types/ReferenceVector2Variable.cs.meta create mode 100644 Scriptable Variables/Variables/Reference Types/ReferenceVector3Variable.cs create mode 100644 Scriptable Variables/Variables/Reference Types/ReferenceVector3Variable.cs.meta create mode 100644 Scriptable Variables/Variables/Reference Types/ReferenceVector4Variable.cs create mode 100644 Scriptable Variables/Variables/Reference Types/ReferenceVector4Variable.cs.meta 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 0000000..a3b3df4 --- /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 0000000..99a989e --- /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 0000000..14ba647 --- /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 0000000..0a8abb9 --- /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 0000000..44fc3bc --- /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 0000000..1c919a7 --- /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 0000000..24cabbd --- /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 0000000..829bd1e --- /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 0000000..9a96d37 --- /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 0000000..04fb898 --- /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 0000000..c17bed6 --- /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 0000000..4873c49 --- /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 0000000..c292d68 --- /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 0000000..6c35658 --- /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 0000000..dc81fcf --- /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 0000000..3390f62 --- /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 0000000..ab3965a --- /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 0000000..70705d2 --- /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 0000000..d7df31d --- /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 0000000..620ce9c --- /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 0000000..09d6998 --- /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 0000000..4e373f8 --- /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 0000000..5beb0f2 --- /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 0000000..3b30ac4 --- /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 0000000..6814b96 --- /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 0000000..c81fdcc --- /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 0000000..9a92b41 --- /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 0000000..8f53e3b --- /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 0000000..c6cfbc7 --- /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 0000000..b4a220c --- /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 0000000..03da8a3 --- /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 0000000..ab04115 --- /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 0000000..4b24de3 --- /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 0000000..15ecedb --- /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 0000000..482637e --- /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 0000000..0e2112d --- /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 0000000..6642f1b --- /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 0000000..26e3fe7 --- /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 0000000..03b83ba --- /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 0000000..f7cff42 --- /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 0000000..32fd777 --- /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 0000000..135551a --- /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 0000000..4036010 --- /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 0000000..db51de4 --- /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 0000000..3b4d60b --- /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 0000000..0e7e340 --- /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 0000000..5c2814e --- /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 0000000..6c94184 --- /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 0000000..604f328 --- /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 0000000..b86a8be --- /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 0000000..03a653b --- /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 0000000..2dea28b --- /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 0000000..446a8e0 --- /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 0000000..daeaa87 --- /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 0000000..8b259de --- /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 0000000..ae679c0 --- /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 0000000..f4c957a --- /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 0000000..995458f --- /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 0000000..1f04a6c --- /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 0000000..a6e9251 --- /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 0000000..af87d13 --- /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 0000000..0e65002 --- /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 0000000..6c846ef --- /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 0000000..12a34d7 --- /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 0000000..6d20dbd --- /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 0000000..530a45d --- /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: -- GitLab