public static void Notify(this CoroutineLockComponent self, CoroutineLockType coroutineLockType, long key, int count) { CoroutineLockQueueType coroutineLockQueueType = self.list[(int)coroutineLockType]; if (!coroutineLockQueueType.TryGetValue(key, out CoroutineLockQueue queue)) { return; } if (queue.Count == 0) { coroutineLockQueueType.Remove(key); return; } #if NOT_UNITY const int frameCoroutineCount = 5; #else const int frameCoroutineCount = 10; #endif if (count > frameCoroutineCount) { self.NextFrameRun(coroutineLockType, key); return; } CoroutineLockInfo coroutineLockInfo = queue.Dequeue(); coroutineLockInfo.Tcs.SetResult(self.CreateCoroutineLock(coroutineLockType, key, coroutineLockInfo.Time, count)); }
public static void Notify(this CoroutineLockComponent self, int coroutineLockType, long key, int level) { CoroutineLockQueueType coroutineLockQueueType = self.list[coroutineLockType]; if (!coroutineLockQueueType.TryGetValue(key, out CoroutineLockQueue queue)) { return; } if (queue.Count == 0) { coroutineLockQueueType.Remove(key); return; } CoroutineLockInfo coroutineLockInfo = queue.Dequeue(); coroutineLockInfo.Tcs.SetResult(self.CreateCoroutineLock(coroutineLockType, key, coroutineLockInfo.Time, level)); }
public void Notify(CoroutineLockType coroutineLockType, long key) { CoroutineLockQueueType coroutineLockQueueType = this.list[(int)coroutineLockType]; if (!coroutineLockQueueType.TryGetValue(key, out CoroutineLockQueue queue)) { throw new Exception($"first work notify not find queue"); } if (queue.Count == 0) { coroutineLockQueueType.Remove(key); queue.Dispose(); return; } ETTaskCompletionSource <CoroutineLock> tcs = queue.Dequeue(); tcs.SetResult(EntityFactory.CreateWithParent <CoroutineLock, CoroutineLockType, long>(this, coroutineLockType, key)); }