BattleObject.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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.Clone(Id));
  17. }
  18. public virtual void OnSleep()
  19. {
  20. EventSystem.Instance.Publish( OnDestroyZoneObject.Clone(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]
  37. public class AfterCreateCurrentScene_Battle : BEvent<AfterCreateCurrentScene>
  38. {
  39. protected override async ETTask OnEvent(AfterCreateCurrentScene a)
  40. {
  41. _CurrentSceneCache = a.scene;
  42. await ETTask.CompletedTask;
  43. }
  44. }
  45. //TODO:监听场景退出事件
  46. }