public CallbackObject(byte messageId, MessageCallback callback, CallbackPriority priority) { MessageId = messageId; Callback = callback; Priority = priority; assembly = callback.Method.Module.Assembly; }
public async Task WaitUntilAsync(Predicate <TEventArgs> condition, CallbackPriority priority = CallbackPriority.Normal) { TaskCompletionSource <object> tcs = new TaskCompletionSource <object> (null); var callback = new Callback(condition, tcs); subscribe(callback, priority); await tcs.Task; unsubscribe(callback, priority); }
public async Task WaitUntilAsync(Predicate <TEventArgs> condition, CallbackPriority priority = CallbackPriority.Normal) { var ev = getEvent(); if (ev == null) { return; } if (!await approachHotspot(ev)) { return; } await ev.WaitUntilAsync(condition, priority); }
public void Remove(Callback callback, CallbackPriority priority) { switch (priority) { case CallbackPriority.High: _high.Remove(callback); break; case CallbackPriority.Normal: _normal.Remove(callback); break; case CallbackPriority.Low: _low.Remove(callback); break; default: throw new NotSupportedException($"Unsupported callback priority: ${priority}"); } }
public void Add(byte id, MessageCallback callback, CallbackPriority priority) { lock (syncRoot) { if (list[id] == null) { list[id] = new CallbacksCollection(); } CallbackObject obj = new CallbackObject(id, callback, priority); if (list[id].Contains(obj)) { throw new ArgumentException("Callback is already registered for this message."); } RuntimeCore.AddAssemblyObject(obj, this); list[id].Add(obj); list[id].SortByPriority(); Debug.WriteLine(callbacksName + " callback added (0x" + id.ToString("X2") + ", " + priority.ToString() + ")", "Phoenix"); } }
public void Unsubscribe(ClaimableCallback callback, CallbackPriority priority = CallbackPriority.Normal) => unsubscribe(new Callback(callback), priority);
public static void RegisterServerMessageCallback(byte id, MessageCallback callback, CallbackPriority priority) { serverMsgCallbacks.Add(id, callback, priority); }
public static void RegisterClientMessageCallback(byte id, MessageCallback callback, CallbackPriority priority) { clientMsgCallbacks.Add(id, callback, priority); }
public void UnsubscribeToAsync(Func <Task> callback, CallbackPriority priority = CallbackPriority.Normal) => unsubscribe(new Callback(callback), priority);
public void Unsubscribe(ClaimableCallbackWithArgs <TEventArgs> callback, CallbackPriority priority = CallbackPriority.Normal) => unsubscribe(new Callback(callback), priority);
public void Subscribe(Action <TEventArgs> callback, CallbackPriority priority = CallbackPriority.Normal) => subscribe(new Callback(callback), priority);
public void Unsubscribe(Action callback, CallbackPriority priority = CallbackPriority.Normal) { _ev.Unsubscribe(callback, priority); }
public void Subscribe(Action <TEventArgs> callback, CallbackPriority priority = CallbackPriority.Normal) { _ev.Subscribe(callback, priority); }
public MessageHandlerAttributeBase(byte id) { this.id = id; priority = CallbackPriority.Normal; }
public void AddFixedUpadateCallback(PHSceneBehaviourCallback phSceneBehaviourCallback, CallbackPriority callbackPriority, int subPriority = 0) { var newItem = new PHSceneBehaviourCallbackItem(subPriority, phSceneBehaviourCallback); fixedUpdateCallbacks[callbackPriority].Add(newItem); fixedUpdateCallbacks[callbackPriority].Sort((a, b) => a.subPriority - b.subPriority); }
private void subscribe(Callback callback, CallbackPriority priority) { _invocationList.Add(callback, priority); }
private void unsubscribe(Callback callback, CallbackPriority priority) { _invocationList.Remove(callback, priority); }
public void SubscribeToAsync(Func <TEventArgs, Task> callback, CallbackPriority priority = CallbackPriority.Normal) { _ev.SubscribeToAsync(callback, priority); }
public void Unsubscribe(Action callback, CallbackPriority priority = CallbackPriority.Normal) => unsubscribe(new Callback(callback), priority);
public void UnsubscribeToAsync(Func <Task> callback, CallbackPriority priority = CallbackPriority.Normal) { _ev.UnsubscribeToAsync(callback, priority); }
public void SubscribeToAsync(Func <TEventArgs, Task> callback, CallbackPriority priority = CallbackPriority.Normal) => subscribe(new Callback(callback), priority);
public void WaitUntil(Predicate <TEventArgs> condition, CallbackPriority priority = CallbackPriority.Normal) { Task.Run(async() => await WaitUntilAsync(condition, priority)).Wait(); }
public void DeleteFixedUpadateCallback(PHSceneBehaviourCallback phSceneBehaviourCallback, CallbackPriority callbackPriority, int subPriority = 0) { var callBackItems = fixedUpdateCallbacks[callbackPriority]; PHSceneBehaviourCallbackItem deleteCallBackItem = null; foreach (var item in callBackItems) { if (item.subPriority == subPriority && item.callback == phSceneBehaviourCallback) { deleteCallBackItem = item; break; } } callBackItems.Remove(deleteCallBackItem); }