//public override bool IsInEffectiveRange(Destructible target)
        //{
        //    var dist = target.HitDistance(MediatorOffsetedPosition);
        //    if (dist - target.HitRadius > 0.7f) return false;
        //    return true;
        //}
        protected override void StartEffectivePerform()
        {
            base.StartEffectivePerform();
            //Effects.LightEffect1 c = new Client.Game.Map.Effects.LightEffect1
            //{
            //    Translation = Mediator.Position,
            //    Rotation = Quaternion.RotationMatrix(Matrix.RotationZ(-(float)Math.PI / 2f) * Matrix.RotationX(-(float)Math.PI / 2f) * Matrix.RotationQuaternion(Mediator.Rotation))
            //};
            Effects.GhostBulletPulse ghostBulletPulse = new Effects.GhostBulletPulse
            {
                Translation = Mediator.Position
            };
            Game.Instance.Scene.Add(ghostBulletPulse);

            Effects.GhostBulletHitGroundEffect ghostBulletHitGroundEffect = new Client.Game.Map.Effects.GhostBulletHitGroundEffect(0.5f)
            {
                Translation = Mediator.Position
            };
            Game.Instance.Scene.Add(ghostBulletHitGroundEffect);

            Effects.MuzzleFlashEffect2 e = new Client.Game.Map.Effects.MuzzleFlashEffect2
            {
                Translation = Mediator.Translation
            };
            Game.Instance.Scene.Add(e);

            foreach (var v in Game.Instance.Mechanics.InRange.GetInRange(MediatorOffsetedPosition,
                (EffectiveRange + 1) * 2))
                if (v.Entity.CanBeDestroyed &&
                    IsValidTarget(v.Entity) && v.Entity is NPC)
                    ((NPC)v.Entity).MakeAwareOfUnit(Performer);
        }
        protected override void StartEffectivePerform()
        {
            base.StartEffectivePerform();
            //Effects.LightEffect1 c = new Client.Game.Map.Effects.LightEffect1
            //{
            //    Translation = Mediator.Position,
            //    Rotation = Mediator.Rotation
            //};
            //Game.Instance.Scene.Add(c);

            var sm = Program.Instance.SoundManager;
            sm.GetSFX(Client.Sound.SFX.BlasterFireHitGround1).Play(new Sound.PlayArgs
            {
                Position = Mediator.Translation,
                Velocity = Vector3.Zero
            });

            Effects.MuzzleFlashEffect2 e1 = new Client.Game.Map.Effects.MuzzleFlashEffect2
            {
                Translation = Mediator.Translation
            };
            Game.Instance.Scene.Add(e1);

            Vector3 position = Mediator.Translation;
            if (TargetEntity != null)
                position = TargetEntity.Position;

            Effects.BlasterExplosionWave e2 = new Client.Game.Map.Effects.BlasterExplosionWave(2)
            {
                Translation = position
            };
            Game.Instance.Scene.Add(e2);

            Effects.BlasterExplosion e3 = new Client.Game.Map.Effects.BlasterExplosion
            {
                Translation = position
            };
            Game.Instance.Scene.Add(e3);
        }