using CommonAI.ZoneClient; using CommonLang.Geometry; using ET; using ET.Client; using ET.EventType; public class BattleObject { public ZoneObject ZoneObject; public uint Id { get { return ZoneObject.ObjectID; } } public Vector3 LastPos = Vector3.Zero; public float LastRotation = 0; public BattleObject() { } public virtual void OnAwake(ZoneObject zo) { ZoneObject = zo; EventSystem.Instance.Publish(OnNewZoneObject.Clone(Id)); } public virtual void OnSleep() { EventSystem.Instance.Publish( OnDestroyZoneObject.Clone(Id)); ObjectPool.Instance.Recycle(this); } private static Scene _CurrentSceneCache = null; public static Scene CurrentScene { get { if (_CurrentSceneCache == null) { var cs = PlayerComponent.Instance.ClientScene(); _CurrentSceneCache = cs.GetComponent()?.Scene; } return _CurrentSceneCache; } } [Event] public class AfterCreateCurrentScene_Battle : BEvent { protected override async ETTask OnEvent(AfterCreateCurrentScene a) { _CurrentSceneCache = a.scene; await ETTask.CompletedTask; } } //TODO:监听场景退出事件 }