Skip to content

Commit 333cb5b

Browse files
committed
Migrated StateMachineBehaviour scripts from master ADNC repo to here
1 parent 3a603e9 commit 333cb5b

25 files changed

+277
-0
lines changed

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors.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: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using Adnc.Utility;
4+
using UnityEngine;
5+
6+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
7+
/// <summary>
8+
/// Basic underlying logic for triggering an action
9+
/// </summary>
10+
public abstract class AnimatorActionBase : StateMachineBehaviour {
11+
// Amount of time passed since starting
12+
private float _timePassed;
13+
14+
// If update has been trigger with our logic 1x
15+
private bool _complete;
16+
17+
// Randomized delay
18+
private float _delay;
19+
20+
protected virtual StateMachineBehaviorEvent TriggerEvent {
21+
get { return StateMachineBehaviorEvent.Enter; }
22+
}
23+
24+
protected virtual MinMaxFloat StartDelay {
25+
get { return new MinMaxFloat(); }
26+
}
27+
28+
protected abstract void UpdateLogic (Animator animator, AnimatorStateInfo stateInfo, int layerIndex);
29+
30+
public override void OnStateEnter (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
31+
_timePassed = 0;
32+
_complete = false;
33+
_delay = StartDelay.GetRandom();
34+
35+
if (TriggerEvent == StateMachineBehaviorEvent.Enter && _delay <= 0.01f) {
36+
UpdateLogic(animator, stateInfo, layerIndex);
37+
_complete = true;
38+
}
39+
}
40+
41+
public override void OnStateUpdate (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
42+
if (_complete || TriggerEvent != StateMachineBehaviorEvent.Enter) {
43+
return;
44+
}
45+
46+
if (_timePassed >= _delay) {
47+
UpdateLogic(animator, stateInfo, layerIndex);
48+
_complete = true;
49+
}
50+
51+
_timePassed += Time.deltaTime;
52+
}
53+
54+
public override void OnStateExit (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
55+
if (TriggerEvent == StateMachineBehaviorEvent.Exit) {
56+
UpdateLogic(animator, stateInfo, layerIndex);
57+
_complete = true;
58+
}
59+
}
60+
}
61+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/AnimatorActionBase.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: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using Adnc.Utility;
2+
using UnityEngine;
3+
4+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
5+
public class RandomSpeed : StateMachineBehaviour {
6+
private float startSpeed;
7+
8+
[InfoBox("Randomize the current playback speed of the animator")]
9+
10+
[Tooltip("Randomize speed range")]
11+
[MinMaxFloat(0, 10)]
12+
[SerializeField]
13+
private MinMaxFloat playbackSpeed = new MinMaxFloat {min = 1, max = 1};
14+
15+
[Tooltip("On exiting state repair the speed")]
16+
[SerializeField]
17+
private bool restoreSpeedOnExit = true;
18+
19+
// OnStateEnter is called before OnStateEnter is called on any state inside this state machine
20+
public override void OnStateEnter(Animator anim, AnimatorStateInfo stateInfo, int layerIndex) {
21+
startSpeed = anim.speed;
22+
anim.speed = playbackSpeed.GetRandom();
23+
}
24+
25+
public override void OnStateExit (Animator anim, AnimatorStateInfo stateInfo, int layerIndex) {
26+
if (restoreSpeedOnExit) {
27+
anim.speed = startSpeed;
28+
}
29+
}
30+
}
31+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/RandomSpeed.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using Adnc.Utility;
2+
using UnityEngine;
3+
4+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
5+
/// <summary>
6+
/// Randomize the current playback position of this state's animation
7+
/// </summary>
8+
public class RandomStartTime : StateMachineBehaviour {
9+
public override void OnStateEnter (Animator anim, AnimatorStateInfo stateInfo, int layerIndex) {
10+
// Hijack the animation's playback and force it to play at an unknown time
11+
if (stateInfo.normalizedTime < 0.01f) {
12+
anim.Play(stateInfo.fullPathHash, layerIndex, Random.Range(0.01f, 1f));
13+
}
14+
}
15+
}
16+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/RandomStartTime.cs.meta

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

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar.meta

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

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar/Random.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using Adnc.Utility;
2+
using UnityEngine;
3+
4+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
5+
public class SetVarRandomBool : SetVarBase {
6+
protected override void UpdateLogic (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
7+
animator.SetBool(_name, Random.value > 0.5f);
8+
}
9+
}
10+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar/Random/SetVarRandomBool.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Adnc.Utility;
2+
using UnityEngine;
3+
4+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
5+
public class SetVarRandomFloat : SetVarBase {
6+
[Tooltip("Random value generated each time this state triggers")]
7+
[SerializeField]
8+
[MinMaxFloat(0, 10)]
9+
private MinMaxFloat _value = new MinMaxFloat();
10+
11+
protected override void UpdateLogic (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
12+
animator.SetFloat(_name, _value.GetRandom());
13+
}
14+
}
15+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar/Random/SetVarRandomFloat.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Adnc.Utility;
2+
using UnityEngine;
3+
4+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
5+
public class SetVarRandomInt : SetVarBase {
6+
[Tooltip("Random value generated each time this state triggers")]
7+
[SerializeField]
8+
[MinMaxInt(0, 10)]
9+
private MinMaxInt _value = new MinMaxInt();
10+
11+
protected override void UpdateLogic (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
12+
animator.SetInteger(_name, _value.GetRandom());
13+
}
14+
}
15+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar/Random/SetVarRandomInt.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using Adnc.Utility;
2+
using UnityEngine;
3+
4+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
5+
public abstract class SetVarBase : AnimatorActionBase {
6+
[Tooltip("When to trigger the event during the state's cycle")]
7+
[SerializeField]
8+
private StateMachineBehaviorEvent _event = StateMachineBehaviorEvent.Enter;
9+
10+
protected override StateMachineBehaviorEvent TriggerEvent {
11+
get { return _event; }
12+
}
13+
14+
[Tooltip("Delay before firing. Only triggered if the event type is Enter")]
15+
[SerializeField]
16+
[MinMaxFloat(0, 5)] private MinMaxFloat _startDelay = new MinMaxFloat { min = 0, max = 0 };
17+
18+
protected override MinMaxFloat StartDelay {
19+
get { return _startDelay; }
20+
}
21+
22+
[Header("Variable")]
23+
24+
[Tooltip("Name of the variable")]
25+
[SerializeField]
26+
protected string _name;
27+
}
28+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar/SetVarBase.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using UnityEngine;
2+
3+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
4+
public class SetVarBool : SetVarBase {
5+
[SerializeField]
6+
private bool _value;
7+
8+
protected override void UpdateLogic (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
9+
animator.SetBool(_name, _value);
10+
}
11+
}
12+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar/SetVarBool.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using UnityEngine;
2+
3+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
4+
public class SetVarFloat : SetVarBase {
5+
[SerializeField]
6+
private float _value;
7+
8+
protected override void UpdateLogic (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
9+
animator.SetFloat(_name, _value);
10+
}
11+
}
12+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar/SetVarFloat.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using UnityEngine;
2+
3+
namespace Adnc.AnimatorVariables.AnimatorBehaviors {
4+
public class SetVarInt : SetVarBase {
5+
[SerializeField]
6+
private int _value;
7+
8+
protected override void UpdateLogic (Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
9+
animator.SetInteger(_name, _value);
10+
}
11+
}
12+
}

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/SetVar/SetVarInt.cs.meta

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

Assets/AdncAnimatorVariableStates/Scripts/AnimatorBehaviors/StateMachineBehaviorEvent.cs.meta

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

0 commit comments

Comments
 (0)