summaryrefslogtreecommitdiff
path: root/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/YieldedNodeBase.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/YieldedNodeBase.cs
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/YieldedNodeBase.cs')
-rw-r--r--Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/YieldedNodeBase.cs54
1 files changed, 54 insertions, 0 deletions
diff --git a/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/YieldedNodeBase.cs b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/YieldedNodeBase.cs
new file mode 100644
index 0000000..2086d95
--- /dev/null
+++ b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/YieldedNodeBase.cs
@@ -0,0 +1,54 @@
+using System.Collections;
+using UnityEngine;
+
+namespace UnityEngine.Graphs.LogicGraph
+{
+ public abstract class YieldedNodeBase
+ {
+ protected float m_Time;
+ protected float m_Percentage;
+
+ public Action done;
+ public Action update;
+
+ public virtual float totalTime { set { m_Time = value; } }
+ public virtual float percentage { get { return m_Percentage; } }
+
+ protected YieldedNodeBase () {}
+
+ protected YieldedNodeBase (float time)
+ {
+ m_Time = time;
+ }
+
+ public IEnumerator Start ()
+ {
+ OnStart ();
+
+ if (m_Time > 0.0f)
+ {
+ float doneTime = Time.time + m_Time;
+ float t = 0;
+ do
+ {
+ t += Time.deltaTime;
+ m_Percentage = t / m_Time;
+
+ OnUpdate();
+ if (update != null)
+ update();
+
+ yield return 0;
+ } while (Time.time < doneTime);
+ }
+
+ OnDone();
+ if (done != null)
+ done();
+ }
+
+ protected abstract void OnStart ();
+ protected abstract void OnUpdate ();
+ protected abstract void OnDone ();
+ }
+}