+ * Produce a 2D AABB in transformed space
+ * See below for caveats.
+ *
+ * @param[in] transformMatrix The matrix for converting to a different space
+ * @param[in] position The center position of the render item
+ * @param[in] size The size of the render item
+ */
+ static ClippingBox CalculateTransformSpaceAABB(const Matrix& transformMatrix, const Vector3& position, const Vector3& size);
+
+ /**
+ * @brief This method is an optimized calculation of a viewport-space AABB (Axis-Aligned-Bounding-Box).
+ *
+ * We use the model-view-matrix, but we do not use projection. Therefore we assume Z = 0.
+ * As the box is Axis-Aligned (in viewport space) rotations on Z axis are correctly delt with by expanding the box as necessary.
+ * Rotations on X & Y axis will resize the AABB, but it will not handle the projection error due to the new coordinates having non-zero Z values.
+ *
+ * Note: We pass in the viewport dimensions rather than allow the caller to modify the raw AABB in order to optimally generate the final result.
+ *
+ * Note: ASSUMES THAT THE VIEWPORT COVERS THE SCREEN AND THAT THE CANVAS SIZE AND VIEWPORT SIZE ARE THE SAME!!!!! (Not the case for magnifier)
+ *
+ * @param[in] modelViewMatrix The model view matrix
+ * @param[in] position The center position of the render item
+ * @param[in] size The size of the render item
+ * @param[in] viewportWidth The width of the viewport to calculate for
+ * @param[in] viewportHeight The height of the viewport to calculate for
+ * @return The AABB coordinates in viewport-space (x, y, width, height)
+ */
+ static ClippingBox CalculateViewportSpaceAABB(const Matrix& modelViewMatrix, const Vector3& position, const Vector3& size, const int viewportWidth, const int viewportHeight);
+
+ /**