public override void OnEnter() { base.OnEnter(); Component mComponent = ((GameObject)gameObject.Value).GetComponent(component); if (mComponent is MonoBehaviour) { MonoBehaviour behaviour = mComponent as MonoBehaviour; if (repeatRate.Value == 0) { behaviour.Invoke(methodName, delay.Value); } else { behaviour.InvokeRepeating(methodName, delay.Value, repeatRate.Value); } } else { GameObject instance = new GameObject("RoutineHandler"); CoroutineInstance routineHandler = instance.AddComponent <CoroutineInstance>(); if (repeatRate.Value == 0) { routineHandler.ProcessWork(InvokeMethod(mComponent)); } else { routineHandler.StartCoroutine(InvokeRepeatingMethod(mComponent)); } } Finish(); }
/// <summary> /// Initialize. /// </summary> private static void _Initialize() { if (mCoroutineObject == null) { string objName = typeof(MyCoroutiner).Name; mCoroutineObject = MyUtilities.FindObjectInRoot(objName); if (mCoroutineObject == null) { mCoroutineObject = new GameObject(objName); } GameObject.DontDestroyOnLoad(mCoroutineObject); mDictionaryRoutine = new Dictionary <string, IEnumerator>(); } if (mCoroutineInstance == null) { mCoroutineInstance = mCoroutineObject.GetComponent <CoroutineInstance>(); if (mCoroutineInstance == null) { mCoroutineInstance = mCoroutineObject.AddComponent(typeof(CoroutineInstance)) as CoroutineInstance; } } }
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (Trigger == TriggerTime.Enter) { CoroutineInstance.Run(null, WaitToDisable(animator)); } }
private void Awake() { if (coroutineInstance == null) { coroutineInstance = this; } DontDestroyOnLoad(gameObject); }
void OnCoroutineFinshed(CoroutineInstance ci) { activeRoutines.Remove ( ci ); activeRoutines = activeRoutines.FindAll (x => { var alive = x.coroutine.IsAlive; if ( !alive ) x.ClearListeners(); return alive; }); }
private void HandleCoroutines(Queue <CoroutineInstance> removeIds) { ICoroutineThread newCoroutineThread; CoroutineQueueContent newCoroutineContent; while (_coroutinesQueue.TryDequeue(out newCoroutineContent)) { newCoroutineThread = newCoroutineContent.Coroutine; MessageBus.Register(newCoroutineThread); var instance = new CoroutineInstance(newCoroutineThread, newCoroutineContent.OnError); _running.Add(instance); } for (int index = 0; index < _running.Count; index++) { if (Status.Is(RunningStatus.Paused)) { return; } var instance = _running[index]; try { if (!instance.IsInitialized) { instance.Initialize(Log); } var enumerator = instance.Enumerators; if (!enumerator.MoveNext()) { removeIds.Enqueue(instance); } else { var current = enumerator.Current as FluentResultBuilder; if (current != null && !current.Type.HasFlag(FluentResultType.Waiting)) { StartCoroutine(current.AsCoroutine()); } } } catch (Exception ex) { OnError(ex, removeIds, index); } if (Status.Is(RunningStatus.Paused)) { break; } } }
public override void OnEnter () { string serverAddress = PlayerPrefs.GetString ("ServerAddress"); if (string.IsNullOrEmpty (serverAddress)) { Debug.Log ("Please initialize the database to save values. Use MySQL.Initialize"); } else { GameObject instance = new GameObject (); CoroutineInstance routineHandler = instance.AddComponent<CoroutineInstance> (); routineHandler.StartCoroutine (DeleteEntry(serverAddress, key.Value)); instance.hideFlags = HideFlags.HideInHierarchy; } Finish (); }
private void OnCoroutineFinshed(CoroutineInstance ci) { activeRoutines.Remove(ci); activeRoutines = activeRoutines.FindAll(x => { var alive = x.coroutine.IsAlive; if (!alive) { x.ClearListeners(); } return(alive); }); }
public Coroutine RunCoroutine(IEnumerator routine, MonoBehaviour mb = null) { mb = mb ?? coroutineBehaviour; var ci = new CoroutineInstance(); ci.mb = mb; var cor = mb.StartCoroutine(ci.ContainerCoroutine(routine)); ci.coroutine = new GenericWeakReference<Coroutine>(cor); if (ci.coroutine != null) { ci.OnRoutineFinished += OnCoroutineFinshed; ci.OnRoutineStopped += OnCoroutineFinshed; activeRoutines.Add(ci); } return cor; }
public Coroutine RunCoroutine(IEnumerator routine, MonoBehaviour mb = null) { if (mb == null) { mb = this; } var ci = new CoroutineInstance(); ci.mb = mb; var cor = mb.StartCoroutine(ci.ContainerCoroutine(routine)); ci.coroutine = new WeakReference(cor); if (ci.coroutine != null) { ci.OnRoutineFinished += OnCoroutineFinshed; ci.OnRoutineStopped += OnCoroutineFinshed; activeRoutines.Add(ci); } return(cor); }
void Start() { CoroutineInstance.instance = this; }