blob: 939031fc7522c449914726d933fcf83b921913c3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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;
}
}
}
|