Exemple #1
0
        public static void Visualize(RaycastHit2D hit, Vector2 rayOrigin, RaycastHitColorAssigner rayColorAssigner = null, RaycastHitColorAssigner normalColorAssigner = null, float?visibilityDuration = null, params LineOptions[] options)
        {
            Vector2 p1 = rayOrigin;
            Vector2 p2;
            Color   rayColor;
            Color   normalColor = normalColorAssigner != null?normalColorAssigner(hit) : Color.yellow;

            float duration = visibilityDuration != null ? visibilityDuration.Value : 0f;

            if (hit.collider != null)
            {
                p2       = hit.point;
                rayColor = rayColorAssigner != null?rayColorAssigner(hit) : Color.red;

                Debug.DrawLine(hit.point, hit.point + hit.normal, normalColor, duration);
            }
            else
            {
                p2       = rayOrigin + hit.distance * hit.point;
                rayColor = rayColorAssigner != null?rayColorAssigner(hit) : Color.green;
            }

            if (ArrayOps.Contains(options, LineOptions.Dashed))
            {
                DrawDashedLine(p1, p2, .1f, rayColor, duration);
            }
            else
            {
                DrawLine(p1, p2, rayColor, duration);
            }
        }
Exemple #2
0
        public static RaycastHit2D?NearestRaycastHit2D(Vector2 referencePoint, Ray2D ray, params Predicate <RaycastHit2D>[] conditions)
        {
            RaycastHit2D[] hits;

            hits = Physics2D.RaycastAll(ray.origin, ray.direction);
            hits = ArrayOps.KeepMatches(hits, conditions);

            return(Nearest(referencePoint, hits));
        }
Exemple #3
0
 static void HandleDrawLine(Vector3 start, Vector3 end, Color?color = null, float?duration = null, params LineOptions[] options)
 {
     if (ArrayOps.Contains(options, LineOptions.Dashed))
     {
         DrawDashedLine(start, end, .1f, color, duration);
     }
     else
     {
         DrawLine(start, end, color, duration);
     }
 }
Exemple #4
0
 public static T RandomKey <T, U>(Dictionary <T, U> dictionary)
 {
     return(ArrayOps.RandomElement(new List <T>(dictionary.Keys).ToArray()));
 }