コード例 #1
0
ファイル: Cluster.cs プロジェクト: cctv85782/TwCnSDK2.0
        /// <summary>
        ///     Returns the possible targets of a prediction input source.
        /// </summary>
        /// <param name="input">
        ///     <see cref="PredictionInput" /> input
        /// </param>
        /// <returns><see cref="PossibleTarget" /> list.</returns>
        internal static List <PossibleTarget> GetPossibleTargets(PredictionInput input)
        {
            var result = new List <PossibleTarget>();

            foreach (var enemy in
                     GameObjects.EnemyHeroes.Where(
                         h =>
                         !h.Compare(input.Unit) &&
                         h.IsValidTarget(input.Range + 200 + input.RealRadius, true, input.RangeCheckFrom)))
            {
                var inputs = input.Clone() as PredictionInput;

                if (inputs == null)
                {
                    continue;
                }

                inputs.Unit = enemy;
                var prediction = Movement.GetPrediction(inputs, false, true);

                if (prediction.Hitchance >= HitChance.High)
                {
                    result.Add(new PossibleTarget {
                        Position = prediction.UnitPosition.ToVector2(), Unit = enemy
                    });
                }
            }

            return(result);
        }
コード例 #2
0
ファイル: Cluster.cs プロジェクト: CONANLXF/Berb.Common
        /// <summary>
        ///     Returns the possible targets of a prediction input source.
        /// </summary>
        /// <param name="input">
        ///     <see cref="PredictionInput" /> input
        /// </param>
        /// <returns><see cref="PossibleTarget" /> list.</returns>
        internal static List<PossibleTarget> GetPossibleTargets(PredictionInput input)
        {
            var result = new List<PossibleTarget>();

            foreach (var enemy in
                GameObjects.EnemyHeroes.Where(
                    h =>
                    !h.Compare(input.Unit)
                    && h.LSIsValidTarget(input.Range + 200 + input.RealRadius, true, input.RangeCheckFrom)))
            {
                var inputs = input.Clone() as PredictionInput;

                if (inputs == null)
                {
                    continue;
                }

                inputs.Unit = enemy;
                var prediction = Movement.GetPrediction(inputs, false, true);

                if (prediction.Hitchance >= HitChance.High)
                {
                    result.Add(new PossibleTarget { Position = prediction.UnitPosition.ToVector2(), Unit = enemy });
                }
            }

            return result;
        }
コード例 #3
0
        private static bool IsHitCollision(Obj_AI_Base collision, PredictionInput input, Vector3 pos, float extraRadius)
        {
            var inputSub = input.Clone() as PredictionInput;

            if (inputSub == null)
            {
                return(false);
            }

            inputSub.Unit = collision;
            var predPos = Movement.GetPrediction(inputSub, false, false).UnitPosition.ToVector2();

            return(predPos.Distance(input.From) < input.Radius + input.Unit.BoundingRadius / 2 ||
                   predPos.Distance(pos) < input.Radius + input.Unit.BoundingRadius / 2 ||
                   predPos.DistanceSquared(input.From.ToVector2(), pos.ToVector2(), true)
                   <= Math.Pow(input.Radius + input.Unit.BoundingRadius + extraRadius, 2));
        }