ActorComponent.cs 767 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. namespace ETModel
  4. {
  5. public struct ActorMessageInfo
  6. {
  7. public Session Session;
  8. public IActorMessage Message;
  9. }
  10. /// <summary>
  11. /// 挂上这个组件表示该Entity是一个Actor, 它会将Entity位置注册到Location Server, 接收的消息将会队列处理
  12. /// </summary>
  13. public class ActorComponent: Component
  14. {
  15. public string ActorType;
  16. // 队列处理消息
  17. public Queue<ActorMessageInfo> Queue = new Queue<ActorMessageInfo>();
  18. public TaskCompletionSource<ActorMessageInfo> Tcs;
  19. public override void Dispose()
  20. {
  21. if (this.IsDisposed)
  22. {
  23. return;
  24. }
  25. base.Dispose();
  26. var t = this.Tcs;
  27. this.Tcs = null;
  28. t?.SetResult(new ActorMessageInfo());
  29. }
  30. }
  31. }