示例#1
0
        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);
        }
示例#2
0
        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);
        }