Esempio n. 1
0
        public static bool Intersects(Rect aabb, OrientedRect obb)
        {
            var all = new Vector2(aabb.xMin, aabb.yMin);
            var alr = new Vector2(aabb.xMax, aabb.yMin);
            var aul = new Vector2(aabb.xMin, aabb.yMax);
            var aur = new Vector2(aabb.xMax, aabb.yMax);

            var bll = obb.LowerLeft;
            var blr = obb.LowerRight;
            var bul = obb.UpperLeft;
            var bur = obb.UpperRight;

            if (SeparatesOnAxis(Vector2.up, aabb.yMin, aabb.yMax, bll, blr, bul, bur))
            {
                return(false);
            }
            if (SeparatesOnAxis(Vector2.right, aabb.xMin, aabb.xMax, bll, blr, bul, bur))
            {
                return(false);
            }

            if (SeparatesOnAxis(obb.Forward, obb.ForwardMin, obb.ForwardMax, all, alr, aul, aur))
            {
                return(false);
            }
            if (SeparatesOnAxis(obb.Right, obb.RightMin, obb.RightMax, all, alr, aul, aur))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 2
0
 public static bool Intersects(this OrientedRect obb, Rect aabb)
 {
     return(Intersects(aabb, obb));
 }