public override void Execute(SceneObject sender, SceneObject reciever, object data) { var r = FixedMath.Create(Radius) / 100; var q = FixedQuaternion.LookRotation(sender.Forward, Vector3d.up); Utility.List.Clear(); var _battleScene = LogicCore.SP.SceneManager.CurrentScene as BattleScene; _battleScene.FixedQuadTree.Query(sender as IFixedAgent, r, Utility.List); for (int i = 0; i < Utility.List.Count; i++) { if (IsTarget(Utility.List[i])) { if (Utility.PositionIsInFan(sender.Position, FixedMath.Create(Radius) / 100, Angle, q, Utility.List[i].Position)) { EventManager.TriggerEvent(EventId, new RuntimeData(sender, Utility.List[i] as SceneObject, null)); } } } ; base.Execute(sender, reciever, data); }
public override void Execute(SceneObject sender, SceneObject reciever, object data) { var _battleScene = LogicCore.SP.SceneManager.CurrentScene as BattleScene; long fw = FixedMath.Create(Width) / 100; long fh = FixedMath.Create(Height) / 100; long fr = FixedMath.Sqrt((fw / 2).Mul(fw / 2) + fh.Mul(fh)); var center = new Vector2d(0, fh / 2); var q = FixedQuaternion.LookRotation(sender.Forward, Vector3d.up); Utility.FixedRect rect = new Utility.FixedRect(center, fw, fh); Utility.List.Clear(); _battleScene.FixedQuadTree.Query(sender as IFixedAgent, fr, Utility.List); for (int i = 0; i < Utility.List.Count; i++) { if (IsTarget(Utility.List[i])) { if (Utility.PositionIsInRect(rect, sender.Position, q, Utility.List[i].Position)) { EventManager.TriggerEvent(EventId, new RuntimeData(sender, Utility.List[i] as SceneObject, null)); } } } base.Execute(sender, reciever, data); }