using System; using System.Collections.Generic; using System.Threading.Tasks; namespace ETModel { public struct ActorMessageInfo { public Session Session; public IActorMessage Message; } /// /// 挂上这个组件表示该Entity是一个Actor, 它会将Entity位置注册到Location Server, 接收的消息将会队列处理 /// public class ActorComponent: Component { public IEntityActorHandler entityActorHandler; // 队列处理消息 public Queue queue; public TaskCompletionSource tcs; public override void Dispose() { if (this.IsDisposed) { return; } base.Dispose(); var t = this.tcs; this.tcs = null; t?.SetResult(new ActorMessageInfo()); } } }