summaryrefslogtreecommitdiff
path: root/Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs')
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs76
1 files changed, 76 insertions, 0 deletions
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs
new file mode 100644
index 00000000..939031fc
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/Debug/LogFormat.cs
@@ -0,0 +1,76 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityDebug
+{
+ [TaskDescription("LogFormat is analgous to Debug.LogFormat().\n" +
+ "It takes format string, substitutes arguments supplied a '{0-4}' and returns success.\n" +
+ "Any fields or arguments not supplied are ignored." +
+ "It can be used for debugging.")]
+ [TaskIcon("{SkinColor}LogIcon.png")]
+ public class LogFormat : Action
+ {
+ [Tooltip("Text format with {0}, {1}, etc")]
+ public SharedString textFormat;
+
+ [Tooltip("Is this text an error?")]
+ public SharedBool logError;
+
+ public SharedVariable arg0;
+ public SharedVariable arg1;
+ public SharedVariable arg2;
+ public SharedVariable arg3;
+
+ public override TaskStatus OnUpdate()
+ {
+ var paramsArray = buildParamsArray();
+ // Log the text and return success
+ if (logError.Value) {
+ Debug.LogErrorFormat(textFormat.Value, paramsArray);
+ } else {
+ Debug.LogFormat(textFormat.Value, paramsArray);
+ }
+ return TaskStatus.Success;
+ }
+
+ private object[] buildParamsArray() {
+ object[] paramsArray;
+ if (isValid(arg3)) {
+ paramsArray = new object[4];
+ paramsArray[3] = arg3.GetValue();
+ paramsArray[2] = arg2.GetValue();
+ paramsArray[1] = arg1.GetValue();
+ paramsArray[0] = arg0.GetValue();
+ } else if (isValid(arg2)) {
+ paramsArray = new object[3];
+ paramsArray[2] = arg2.GetValue();
+ paramsArray[1] = arg1.GetValue();
+ paramsArray[0] = arg0.GetValue();
+ } else if (isValid(arg1)) {
+ paramsArray = new object[2];
+ paramsArray[1] = arg1.GetValue();
+ paramsArray[0] = arg0.GetValue();
+ } else if (isValid(arg0)) {
+ paramsArray = new object[1];
+ paramsArray[0] = arg0.GetValue();
+ } else {
+ return null;
+ }
+ return paramsArray;
+ }
+
+ private bool isValid(SharedVariable sv) {
+ return null != sv && !sv.IsNone;
+ }
+
+ public override void OnReset()
+ {
+ // Reset the properties back to their original values
+ textFormat = string.Empty;
+ logError = false;
+ arg0 = null;
+ arg1 = null;
+ arg2 = null;
+ arg3 = null;
+ }
+ }
+} \ No newline at end of file