public Coroutine Run(IEnumerator enumerator, IPlugin owner, string name = null) { if (enumerator == null) { throw new NullReferenceException("Coroutine cant not be null."); } var routine = new Coroutine(enumerator, owner, name); lock (locker) { var first = Coroutines.FirstOrDefault(x => x.Name == routine.Name && x.Owner == routine.Owner); if (first != null) { CountFalseAddCoroutines++; return(first); } Coroutines.Add(routine); CoroutinePerformance.TryGetValue(routine.Name, out var t); CoroutinePerformance[routine.Name] = t; CountAddCoroutines++; return(routine); } }
public void Reset() { foreach (var coroutine in Coroutines) { coroutine.Reset(); } if (WaypointNumber == 13) { var firstCoroutine = Coroutines.FirstOrDefault(); if (firstCoroutine != null && !(firstCoroutine is MoveToPositionCoroutine)) { //<SafeMoveTo questId="312429" stepId="2" x="2401" y="4537" z="-2" pathPrecision="5" pathPointLimit="250" scene="trOut_Highlands_Roads_EW_03" statusText="" /> Coroutines.Insert(0, new MoveToPositionCoroutine(71150, new Vector3(2401, 4537, -2))); } } //if (WaypointNumber == 14) //{ // var firstCoroutine = Coroutines.FirstOrDefault(); // if (firstCoroutine != null && !(firstCoroutine is MoveToPositionCoroutine)) // { // //<SafeMoveTo questId="312429" stepId="2" x="2401" y="4537" z="-2" pathPrecision="5" pathPointLimit="250" scene="trOut_Highlands_Roads_EW_03" statusText="" /> // Coroutines.Insert(0, new MoveToPositionCoroutine(new Vector3(1472, 4027, 38))); // } //} }
public Coroutine Run(Coroutine routine) { if (routine == null) { throw new NullReferenceException("Coroutine cant not be null."); } lock (locker) { var first = Coroutines.FirstOrDefault(x => x.Name == routine.Name && x.Owner == routine.Owner); if (first != null) { CountFalseAddCoroutines++; return(first); } Coroutines.Add(routine); CoroutinePerformance.TryGetValue(routine.Name, out var t); CoroutinePerformance[routine.Name] = t; CountAddCoroutines++; return(routine); } }
public Coroutine ByFuncName(Func <string, bool> predicate) { return(Coroutines.FirstOrDefault(x => predicate(x.Name))); }
public Coroutine FindByName(string name) { return(Coroutines.FirstOrDefault(x => x.Name == name)); }