示例#1
0
 internal void ChangeTarget(TargetInfo targetInfo)
 {
     TargetChanged?.Invoke(this, new TargetChangedArgs()
     {
         TargetInfo = targetInfo
     });
 }
示例#2
0
 internal void ChangeTarget(Target target)
 {
     TargetChanged?.Invoke(this, new TargetChangedArgs
     {
         Target = target
     });
 }
示例#3
0
        internal void ChangeTarget(Target target)
        {
            var args = new TargetChangedArgs {
                Target = target
            };

            TargetChanged?.Invoke(this, args);
            target.BrowserContext.OnTargetChanged(this, args);
        }
        private void OnTargetInfoChanged(TargetTargetInfoChangedFirefoxEvent payload)
        {
            string targetId = payload.TargetId;

            TargetsMap[targetId].Url = payload.Url;
            var target = TargetsMap[targetId];

            TargetChanged?.Invoke(this, new TargetChangedArgs {
                Target = target
            });
        }
示例#5
0
    /// <summary>
    /// Checks if the target is changed and invokes <see cref="TargetChanged"/>.
    /// </summary>
    private void CheckTargetChanged()
    {
        //Still the same.
        if (_target == _targetCache)
        {
            return;
        }

        //Update cache, invoke event.
        _targetCache = Target;
        TargetChanged?.Invoke(_target);
    }
示例#6
0
        public override void Evaluate()
        {
            var obstacles = Options.Source.GetObstacles();

            var candidates = Options.TargetsEval();
            var target     = candidates
                             .Where(z =>
            {
                var sb    = Options.SourceBounds;
                var angle = sb.Center().CalculateAngleTo(z.Center());
                var delta = Options.Source.Angle.DiffAngle(angle);
                if (delta >= AngularVisibility)
                {
                    return(false);
                }

                var prediction = HitDetection.PredictHit(new HitDetectionOptions()
                {
                    Angle        = angle,
                    MovingObject = sb,
                    Obstacles    = obstacles.Where(o => o is WeaponElement == false),
                    Visibility   = 3 * SpaceTime.CurrentSpaceTime.Bounds.Hypotenous(),
                    Precision    = .5f,
                });

                var elementHit = prediction.ObstacleHit as SpacialElement;

                if (elementHit == z)
                {
                    return(true);
                }
                else if (elementHit != null && z is IHaveMassBounds && (z as IHaveMassBounds).IsPartOfMass(elementHit))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            })
                             .OrderBy(z => Geometry.CalculateNormalizedDistanceTo(Options.Source.Element, z))
                             .FirstOrDefault();

            if (target != lastTarget)
            {
                TargetChanged.Fire(target);
                lastTarget = target;
            }
        }
        private void TargetInfoChanged(TargetTargetInfoChangedChromiumEvent e)
        {
            if (!TargetsMap.TryGetValue(e.TargetInfo.TargetId, out var target))
            {
                throw new PlaywrightSharpException("Target should exists before ChangeTargetInfo");
            }

            string previousUrl    = target.Url;
            bool   wasInitialized = target.IsInitialized;

            target.TargetInfoChanged(e.TargetInfo);

            if (wasInitialized && previousUrl != target.Url)
            {
                TargetChanged?.Invoke(this, new TargetChangedArgs {
                    Target = target
                });
            }
        }
 internal void OnTargetChanged(Browser browser, TargetChangedArgs args) => TargetChanged?.Invoke(browser, args);
示例#9
0
 private void OnTargetChanged(TargetChanged e)
 {
     Text.text = e.Target != null ? e.Target.Tooltip : string.Empty;
 }
示例#10
0
 protected virtual void OnTargetChanged()
 {
     TargetChanged.Invoke(this, EventArgs.Empty);
 }
示例#11
0
 public void ApplyNewTarget(Vector3 targetPosition, Enemy targetEnemy = null)
 {
     TargetChanged?.Invoke(targetPosition, targetEnemy);
 }
示例#12
0
        private void Evaluate()
        {
            var obstacles = Options.Source.GetObstacles().Where(o => o is SpacialElement && o is WeaponElement == false).ToArray();

            SpacialElement target = null;
            float          winningCandidateProximity = float.MaxValue;

            targets.Clear();
            foreach (var element in SpaceTime.CurrentSpaceTime.Elements)
            {
                if (element.ZIndex != Options.Source.Element.ZIndex)
                {
                    continue;
                }
                if (element.HasSimpleTag(Options.TargetTag) == false)
                {
                    continue;
                }

                if (element is Character && (element as Character).IsVisible == false)
                {
                    continue;
                }

                var sb    = Options.SourceBounds;
                var angle = sb.Center().CalculateAngleTo(element.Center());
                var delta = Options.Source.Angle.DiffAngle(angle);
                if (delta >= Options.AngularVisibility)
                {
                    continue;
                }

                var prediction = HitDetection.PredictHit(new HitDetectionOptions()
                {
                    Angle        = angle,
                    MovingObject = sb,
                    Obstacles    = obstacles,
                    Visibility   = 3 * SpaceTime.CurrentSpaceTime.Bounds.Hypotenous(),
                    Mode         = CastingMode.Rough,
                });

                var elementHit = prediction.ObstacleHit as SpacialElement;

                if (elementHit == element)
                {
                    targets.Add(elementHit);
                    var d = Geometry.CalculateNormalizedDistanceTo(Options.Source.Element, element);
                    if (d < winningCandidateProximity)
                    {
                        target = elementHit;
                        winningCandidateProximity = d;
                    }
                }
                else if (elementHit != null && element is IHaveMassBounds && (element as IHaveMassBounds).IsPartOfMass(elementHit))
                {
                    targets.Add(elementHit);
                    var d = Geometry.CalculateNormalizedDistanceTo(Options.Source.Element, element);
                    if (d < winningCandidateProximity)
                    {
                        target = elementHit;
                        winningCandidateProximity = d;
                    }
                }
            }

            if (Options.Source.Element is Character && (Options.Source.Element as Character).IsVisible == false)
            {
                target = null;
            }

            if (target != lastTarget)
            {
                TargetChanged.Fire(target);
                lastTarget = target;
            }
        }
示例#13
0
 private void OnTargetChanged()
 {
     TargetChanged?.Invoke(this, new RenderTargetEventArgs(target));
 }