Пример #1
0
        private static bool Intersects(RectangleCollider rectangle, PolygonCollider polygon)
        {
            for (int i = 0; rectangle.axes.Count > i; i++)
            {
                float2 axis = rectangle.axes[i];

                if (LineOverlap(Project(rectangle, axis), Project(polygon, axis)) == 0)
                {
                    return(false);
                }
            }

            for (int i = 0; polygon.points.Count > i; i++)
            {
                float2 axis = polygon.edges[i].perpendicular();

                if (LineOverlap(Project(rectangle, axis), Project(polygon, axis)) == 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #2
0
        private static bool Intersects(PolygonCollider polygonA, PolygonCollider polygonB)
        {
            for (int i = 0; polygonA.points.Count > i; i++)
            {
                float2 axis = polygonA.edges[i].perpendicular();

                if (LineOverlap(Project(polygonA, axis), Project(polygonB, axis)) == 0)
                {
                    return(false);
                }
            }

            for (int i = 0; polygonB.points.Count > i; i++)
            {
                float2 axis = polygonB.edges[i].perpendicular();

                if (LineOverlap(Project(polygonA, axis), Project(polygonB, axis)) == 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #3
0
 public PolygonCollider(PolygonCollider polygonCollider) : this(polygonCollider.cachedPoints)
 {
 }
Пример #4
0
 private static bool Intersects(PolygonCollider polygon, RectangleCollider rectangle) => Intersects(rectangle, polygon);