summaryrefslogtreecommitdiff
path: root/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation')
-rw-r--r--Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation/AnimationNodes.cs76
-rw-r--r--Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation/SimpleAnimationPlayer.cs78
2 files changed, 154 insertions, 0 deletions
diff --git a/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation/AnimationNodes.cs b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation/AnimationNodes.cs
new file mode 100644
index 0000000..28d0efd
--- /dev/null
+++ b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation/AnimationNodes.cs
@@ -0,0 +1,76 @@
+using UnityEngine;
+
+namespace UnityEngine.Graphs.LogicGraph
+{
+ public partial class AnimationNodes
+ {
+ [Logic(typeof(Animation))]
+ [return: Title("Animation State")]
+ public static AnimationState GetAnimationState (Animation self, [Setting] string animationStateName)
+ {
+ return self[animationStateName];
+ }
+
+ [Logic(typeof(Animation))]
+ [return: Title("Animation State")]
+ public static AnimationState PlayAnimation (Animation self, [Setting] string animationName, [Setting] bool crossfade, [Setting] float fadeLength, [Setting] PlayMode playMode)
+ {
+ AnimationState animationState = self[animationName == "" ? self.clip.name : animationName];
+
+ if (crossfade)
+ self.CrossFade (animationState.name, fadeLength, playMode);
+ else
+ self.Play (animationState.name, playMode);
+
+ return animationState;
+ }
+
+ [Logic(typeof(Animation))]
+ [return: Title("Animation State")]
+ public static AnimationState PlayQueuedAnimation (Animation self, [Setting] string animationName, [Setting] bool crossfade, [Setting] float fadeLength, [Setting] QueueMode queueMode, [Setting] PlayMode playMode)
+ {
+ if (animationName == "")
+ animationName = self.clip.name;
+
+ var animationState = crossfade ?
+ self.CrossFadeQueued (animationName, fadeLength, queueMode, playMode) :
+ self.PlayQueued (animationName, queueMode, playMode);
+
+ return animationState;
+ }
+
+ [Logic(typeof(Animation))]
+ public static void StopAnimation (Animation self, [Setting] string animationName)
+ {
+ if (animationName == "")
+ self.Stop();
+ else
+ self.Stop(animationName);
+ }
+
+ [Logic (typeof (Animation))]
+ public static void SampleAnimation (Animation self)
+ {
+ self.Sample ();
+ }
+
+ [Logic(typeof(Animation))]
+ public static void StopAnimationState (Animation self, AnimationState animationState)
+ {
+ self.Stop(animationState.name);
+ }
+
+ [Logic(typeof(Animation))]
+ public static void BlendAnimationState (Animation self, AnimationState animationState, float targetWeight, [Setting] float fadeLength)
+ {
+ self.Blend (animationState.name, targetWeight, fadeLength);
+ }
+
+ [Logic(typeof(Animation))]
+ public static void SyncAnimationLayer (Animation self, int layer)
+ {
+ self.SyncLayer (layer);
+ }
+ }
+}
+
diff --git a/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation/SimpleAnimationPlayer.cs b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation/SimpleAnimationPlayer.cs
new file mode 100644
index 0000000..9b1ee07
--- /dev/null
+++ b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Animation/SimpleAnimationPlayer.cs
@@ -0,0 +1,78 @@
+using UnityEngine;
+
+namespace UnityEngine.Graphs.LogicGraph
+{
+ public partial class AnimationNodes
+ {
+ [Logic(typeof(Animation))]
+ public sealed class SimpleAnimationPlayer
+ {
+ // Logic Target
+ public Animation self;
+
+ // Settings
+ private AnimationState m_AnimationState;
+ [Setting]
+ public string animationName
+ {
+ set
+ {
+ m_AnimationState = self[value != "" ? value : self.clip.name];
+ }
+ }
+ private bool m_Crossfade;
+ [Setting]
+ public bool crossfade { set { m_Crossfade = value; } }
+ private float m_FadeLength;
+ [Setting]
+ public float fadeLength { set { m_FadeLength = value; } }
+
+ private bool m_IsPaused;
+ private float m_ResumeSpeed;
+
+ public SimpleAnimationPlayer () { }
+
+ public SimpleAnimationPlayer (Animation self, string animationName, bool crossfade, float fadeLength)
+ {
+ this.self = self;
+ this.animationName = animationName;
+ m_Crossfade = crossfade;
+ m_FadeLength = fadeLength;
+ }
+
+ public void Play ()
+ {
+ if (m_Crossfade)
+ self.CrossFade (m_AnimationState.name, m_FadeLength);
+ else
+ self.Play (m_AnimationState.name);
+ }
+
+ public void Stop ()
+ {
+ StopAnimationState (m_AnimationState);
+ }
+
+ [Title("Pause/Resume")]
+ public void PauseResume ()
+ {
+ float tmpSpeed = m_AnimationState.speed;
+ m_AnimationState.speed = m_IsPaused ? m_ResumeSpeed : 0.0f;
+
+ m_ResumeSpeed = tmpSpeed;
+ m_IsPaused = !m_IsPaused;
+ }
+
+ public void Rewind ()
+ {
+ m_AnimationState.time = 0.0f;
+ }
+
+ private static void StopAnimationState (AnimationState animationState)
+ {
+ animationState.enabled = false;
+ animationState.time = 0.0f;
+ }
+ }
+ }
+}