Esempio n. 1
0
        public static ICollider GetLineOfSightObstruction(this RectF from, RectF to, IEnumerable <ICollider> obstacles, CastingMode castingMode = CastingMode.Rough)
        {
            var fromBox = new ColliderBox(from);
            var toBox   = new ColliderBox(to);

            return(GetLineOfSightObstruction(fromBox, toBox, obstacles, castingMode));
        }
Esempio n. 2
0
        public static ICollider GetLineOfSightObstruction(this ICollider from, ICollider to, IEnumerable <ICollider> obstacles, CastingMode castingMode = CastingMode.Rough)
        {
            var options = new HitDetectionOptions(from, obstacles.Union(new[] { to }));

            options.Mode       = castingMode;
            options.Angle      = options.MovingObject.CalculateAngleTo(to.Bounds);
            options.Visibility = 3 * options.MovingObject.CalculateDistanceTo(to.Bounds);

            var prediction = PredictHit(options);

            if (prediction.Type == HitType.None)
            {
                return(null);
            }
            else
            {
                var obstacleHit = prediction.ColliderHit;
                return(obstacleHit == to ? null : obstacleHit);
            }
        }