Here is a simple example of using MEC coroutines:
using UnityEngine;
using System.Collections.Generic;
using MovementEffects;
public class Testing : MonoBehaviour
{
void Start ()
{
CoroutineHandle handle = Timing.RunCoroutine(_RunFor10Seconds());
handle = Timing.RunCoroutine(_RunFor1Second(handle));
Timing.RunCoroutine(_RunFor5Seconds(handle));
}
private IEnumerator _RunFor10Seconds()
{
Debug.Log("Starting 10 second run.");
yield return Timing.WaitForSeconds(10f);
Debug.Log("Finished 10 second run.");
}
private IEnumerator _RunFor1Second(CoroutineHandle waitHandle)
{
Debug.Log("Yielding 1s..");
yield return Timing.WaitUntilDone(waitHandle);
Debug.Log("Starting 1 second run.");
yield return Timing.WaitForSeconds(1f);
Debug.Log("Finished 1 second run.");
}
private IEnumerator _RunFor5Seconds(CoroutineHandle waitHandle)
{
Debug.Log("Yielding 5s..");
yield return Timing.WaitUntilDone(waitHandle);
Debug.Log("Starting 5 second run.");
yield return Timing.WaitForSeconds(5f);
Debug.Log("Finished 5 second run.");
}
}
This is the output:
Starting 10 second run. Yielding 1s.. Yielding 5s.. Finished 10 second run. Starting 1 second run. Finished 1 second run. Starting 5 second run. Finished 5 second run.
Here’s an example of how to use MEC from UnityScript:
import System.Collections.Generic;
import MovementEffects;
function Start() {
Timing.RunCoroutine(_TestCoroutine());
}
function _TestCoroutine() : IEnumerator. {
Debug.Log("TestCoroutine: Starting...");
var handle : CoroutineHandle = Timing.RunCoroutine(_TestWait());
yield Timing.WaitUntilDone(handle);
Debug.Log("TestCoroutine: Finished!");
}
function _TestWait() : IEnumerator. {
for (var i : int = 0; i < 5; i++) {
Debug.Log("TestCoroutine: " + i);
yield;
}
}
Output:
TestCoroutine: Starting... TestCoroutine: 0 TestCoroutine: 1 TestCoroutine: 2 TestCoroutine: 3 TestCoroutine: 4 TestCoroutine: Finished!
