public static bool BoundingBoxTest(SFML.Graphics.Sprite Object1, SFML.Graphics.Shape Object2)
        {
            OrientedBoundingBox OBB1 = new OrientedBoundingBox(Object1);
            OrientedBoundingBox OBB2 = new OrientedBoundingBox(Object2);

            return(BoundingBoxTest(OBB1, OBB2));
        }
        public static bool CircleTest(SFML.Graphics.Sprite Object1, SFML.Graphics.Shape Object2)
        {
            SFML.Window.Vector2f Obj1Size = GetSpriteSize(Object1);
            SFML.Window.Vector2f Obj2Size = GetSpriteSize(Object2);
            float Radius1 = (Obj1Size.X + Obj1Size.Y) / 4.0f;
            float Radius2 = (Obj2Size.X + Obj2Size.Y) / 4.0f;

            SFML.Window.Vector2f Distance = GetSpriteCenter(Object1) - GetSpriteCenter(Object2);

            return(Distance.X * Distance.X + Distance.Y * Distance.Y <= (Radius1 + Radius2) * (Radius1 + Radius2));
        }
        public OrientedBoundingBox(SFML.Graphics.Shape Object) // Calculate the four points of the OBB from a transformed (scaled, rotated...) sprite
        {
            Points = new SFML.Window.Vector2f[4];
            SFML.Graphics.Transform trans = Object.Transform;



            Points[0] = trans.TransformPoint(0.0f, 0.0f);
            Points[1] = trans.TransformPoint(Object.GetLocalBounds().Width, 0.0f);
            Points[2] = trans.TransformPoint(Object.GetLocalBounds().Width, Object.GetLocalBounds().Height);
            Points[3] = trans.TransformPoint(0.0f, Object.GetLocalBounds().Height);
        }
 private static SFML.Window.Vector2f GetSpriteSize(SFML.Graphics.Shape Object)
 {
     SFML.Graphics.IntRect OriginalSize = Object.TextureRect;
     SFML.Window.Vector2f  Scale        = Object.Scale;
     return(new SFML.Window.Vector2f(OriginalSize.Width * Scale.X, OriginalSize.Height * Scale.Y));
 }
 private static SFML.Window.Vector2f GetSpriteCenter(SFML.Graphics.Shape Object)
 {
     SFML.Graphics.FloatRect AABB = Object.GetGlobalBounds();
     return(new SFML.Window.Vector2f(AABB.Left + AABB.Width / 2.0f, AABB.Top + AABB.Height / 2.0f));
 }