Skip to content

Commit db3028a

Browse files
committed
Added object for visual display of wait for condition checkbox
1 parent 069a41b commit db3028a

File tree

13 files changed

+183
-4
lines changed

13 files changed

+183
-4
lines changed

Assets/AdncAnimatorVariableStates/Editor/Scripts/CustomEditors/AnimatorPlayback/AnimatorPlaybackEditor.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ public override void OnInspectorGUI () {
2929
var propWait = serializedObject.FindProperty("waitForCondition");
3030
EditorGUILayout.PropertyField(propWait);
3131

32+
if (propWait.boolValue) {
33+
var propCondition = serializedObject.FindProperty("conditions");
34+
EditorGUILayout.PropertyField(propCondition, true);
35+
}
36+
3237
serializedObject.ApplyModifiedProperties();
3338
}
3439
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!91 &9100000
4+
AnimatorController:
5+
m_ObjectHideFlags: 0
6+
m_PrefabParentObject: {fileID: 0}
7+
m_PrefabInternal: {fileID: 0}
8+
m_Name: New Animator Controller
9+
serializedVersion: 5
10+
m_AnimatorParameters: []
11+
m_AnimatorLayers: []

Assets/AdncAnimatorVariableStates/Examples/Default/New Animator Controller.controller.meta

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/AdncAnimatorVariableStates/Examples/Default/AnimatorPlayBack.asset renamed to Assets/AdncAnimatorVariableStates/Examples/Default/Playback.asset

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,22 @@ MonoBehaviour:
99
m_Enabled: 1
1010
m_EditorHideFlags: 0
1111
m_Script: {fileID: 11500000, guid: 44e34c91dd1d14d608614b6f9950223b, type: 3}
12-
m_Name: AnimatorPlayback
12+
m_Name: Playback
1313
m_EditorClassIdentifier:
1414
bools: []
1515
floats: []
1616
ints: []
1717
triggers: []
1818
waitForCondition: 0
19+
conditions:
20+
- varType: 0
21+
varBool:
22+
name:
23+
value: 0
24+
compareNumbers: 0
25+
VarFloat:
26+
name:
27+
value: 0
28+
VarInt:
29+
name:
30+
value: 0

Assets/AdncAnimatorVariableStates/Examples/Default/AnimatorPlayBack.asset.meta renamed to Assets/AdncAnimatorVariableStates/Examples/Default/Playback.asset.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/AdncAnimatorVariableStates/Scripts/AnimatorPlayback/AnimatorPlayback.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
using System;
22
using System.Collections;
33
using System.Collections.Generic;
4+
using Adnc.AnimatorVariables.Conditions;
45
using Adnc.AnimatorVariables.Variables;
6+
using Adnc.Utility;
57
using UnityEngine;
68

79
namespace Adnc.AnimatorVariables {
@@ -19,9 +21,14 @@ public class AnimatorPlayback : ScriptableObject {
1921
[HideInInspector]
2022
public List<VarTrigger> triggers = new List<VarTrigger>();
2123

22-
[Tooltip("If a condition is required to complete the animator playback")]
24+
[Tooltip("If a condition is required to complete the animator playback. When the condition is met" +
25+
" a true event will be fired")]
2326
public bool waitForCondition;
2427

28+
public List<Condition> conditions = new List<Condition> {
29+
new Condition()
30+
};
31+
2532
/// <summary>
2633
/// Set the Animator variables
2734
/// </summary>

Assets/AdncAnimatorVariableStates/Scripts/Conditions.meta

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
using System;
2+
using Adnc.AnimatorVariables.Variables;
3+
using Adnc.Utility;
4+
using UnityEngine;
5+
6+
namespace Adnc.AnimatorVariables.Conditions {
7+
[Serializable]
8+
public class Condition {
9+
const float FLOAT_POINT_COMPARE = 0.01f;
10+
private const string VAR_TOOLTIP = "The variable data to compare against";
11+
private const string COMPARE_TOOLTIP = "What is required when comparing to trigger a true event";
12+
13+
[Tooltip("The variable type to target")]
14+
public ConditionVarType variableType;
15+
16+
// ***** Bools
17+
18+
[Tooltip(VAR_TOOLTIP)]
19+
[ShowToggle("variableType", new []{0})]
20+
public VarBool variableBool = new VarBool();
21+
22+
// ***** Numbers
23+
24+
[Tooltip("How should the animator value be compared to the declared value")]
25+
[ShowToggle("variableType", new []{1,2})]
26+
public OperatorAll compareValues;
27+
28+
[Tooltip(VAR_TOOLTIP)]
29+
[ShowToggle("variableType", new []{1})]
30+
public VarFloat variableFloat = new VarFloat();
31+
32+
[Tooltip(VAR_TOOLTIP)]
33+
[ShowToggle("variableType", new []{2})]
34+
public VarInt variableInt = new VarInt();
35+
36+
public bool IsConditionMet (Animator animator) {
37+
switch (variableType) {
38+
case ConditionVarType.Bool:
39+
return animator.GetBool(variableBool.name) == variableBool.value;
40+
case ConditionVarType.Float:
41+
return AreEqual(compareValues, animator.GetFloat(variableFloat.name), variableFloat.value);
42+
case ConditionVarType.Int:
43+
return AreEqual(compareValues, animator.GetInteger(variableInt.name), variableInt.value);
44+
default:
45+
throw new ArgumentOutOfRangeException();
46+
}
47+
}
48+
49+
static bool AreEqual (OperatorAll operation, int a, int b) {
50+
switch (operation) {
51+
case OperatorAll.AreEqual:
52+
return a == b;
53+
case OperatorAll.AreNotEqual:
54+
return a != b;
55+
case OperatorAll.OriginalIsGreaterThan:
56+
return a > b;
57+
case OperatorAll.OriginalIsGreaterThanOrEqualTo:
58+
return a >= b;
59+
case OperatorAll.OriginalIsLessThan:
60+
return a < b;
61+
case OperatorAll.OriginalIsLessThanOrEqualTo:
62+
return a <= b;
63+
default:
64+
throw new ArgumentOutOfRangeException("operation", operation, null);
65+
}
66+
}
67+
68+
static bool AreEqual (OperatorAll operation, float a, float b) {
69+
switch (operation) {
70+
case OperatorAll.AreEqual:
71+
return Math.Abs(a - b) < FLOAT_POINT_COMPARE;
72+
case OperatorAll.AreNotEqual:
73+
return Math.Abs(a - b) > FLOAT_POINT_COMPARE;
74+
case OperatorAll.OriginalIsGreaterThan:
75+
return a > b;
76+
case OperatorAll.OriginalIsGreaterThanOrEqualTo:
77+
return a >= b;
78+
case OperatorAll.OriginalIsLessThan:
79+
return a < b;
80+
case OperatorAll.OriginalIsLessThanOrEqualTo:
81+
return a <= b;
82+
default:
83+
throw new ArgumentOutOfRangeException("operation", operation, null);
84+
}
85+
}
86+
}
87+
}
88+

Assets/AdncAnimatorVariableStates/Scripts/Conditions/Condition.cs.meta

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Adnc.AnimatorVariables.Conditions {
2+
public enum ConditionVarType {
3+
Bool,
4+
Float,
5+
Int
6+
}
7+
}

0 commit comments

Comments
 (0)