So after some research into Matrices with the head tutor of IT I understand how to rotate each of the points, its a bit buggy still but it will rotate on the spot in time with the sprite as well as move with it in straight lines.
Heres some XNA relevant pseudo code that explains it
Matrix move = Matrix.CreateTranslation(new Vector3((currentPosition - previousPosition), 0));
Matrix rotate = Matrix.CreateRotationZ(currentAngleInRadiens - previousAngleInRadiens);
forEachPoint
{
if (pointHasMoved)
{
//Move the point to a center position(this is for rotating the point around a relevant position)
//Move the point back to its original position
point = Vector2.Transform(point - centerPoint, rotate) + centerPoint;
// Translate the point
point = Vector2.Transform(point, move);
}
}
rotation
field on the game object. You can then derive the new box corners with trigonometry. Collision detection on an oriented bounding-box is a trickier than with axis-aligned bounding-boxes, but it's solveable with Separating Axis Theorem. \$\endgroup\$