BattleObject.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using CommonAI.ZoneClient;
  2. using CommonLang.Geometry;
  3. using ET;
  4. using ET.Client;
  5. using ET.EventType;
  6. public class BattleObject
  7. {
  8. public ZoneObject ZoneObject;
  9. public uint Id { get { return ZoneObject.ObjectID; } }
  10. public Vector3 LastPos = Vector3.Zero;
  11. public float LastRotation = 0;
  12. public BattleObject() { }
  13. public virtual void OnAwake(ZoneObject zo)
  14. {
  15. ZoneObject = zo;
  16. EventSystem.Instance.Publish(OnNewZoneObject.Static.Clone(Id));
  17. }
  18. public virtual void OnSleep()
  19. {
  20. EventSystem.Instance.Publish(CurrentScene, new OnDestroyZoneObject() { ObjectId = Id });
  21. ObjectPool.Instance.Recycle(this);
  22. }
  23. private static Scene _CurrentSceneCache = null;
  24. public static Scene CurrentScene
  25. {
  26. get
  27. {
  28. if (_CurrentSceneCache == null)
  29. {
  30. var cs = PlayerComponent.Instance.ClientScene();
  31. _CurrentSceneCache = cs.GetComponent<CurrentScenesComponent>()?.Scene;
  32. }
  33. return _CurrentSceneCache;
  34. }
  35. }
  36. [Event(SceneType.Current)]
  37. public class AfterCreateCurrentScene_Battle : AEvent<ET.EventType.AfterCreateCurrentScene>
  38. {
  39. protected override async ETTask Run(Scene scene, ET.EventType.AfterCreateCurrentScene args)
  40. {
  41. _CurrentSceneCache = scene;
  42. await ETTask.CompletedTask;
  43. }
  44. }
  45. //TODO:监听场景退出事件
  46. }