void Sprite::Transform(const Mat3 &rhs) { Vector3 topLeft(0 - m_anchor.x, 1 - m_anchor.y); Vector3 topRight(1 - m_anchor.x, 1 - m_anchor.y); Vector3 bottomLeft(0 - m_anchor.x, 0 - m_anchor.y); Vector3 bottomRight(1 - m_anchor.x, 0 - m_anchor.y); Mat3 scale = (scale.CreateScale( Vector3( (float)m_width, (float)m_height))); topLeft = rhs * (scale * topLeft); topRight = rhs * (scale * topRight); bottomLeft = rhs * (scale * bottomLeft); bottomRight = rhs * (scale * bottomRight); topLeft.x = ((2.0f / m_game->GetScreenWidth()) * topLeft.x) - 1.0f; topLeft.y = ((2.0f / m_game->GetScreenHeight()) * topLeft.y) - 1.0f; topRight.x = ((2.0f / m_game->GetScreenWidth()) * topRight.x) - 1.0f; topRight.y = ((2.0f / m_game->GetScreenHeight()) * topRight.y) - 1.0f; bottomLeft.x = ((2.0f / m_game->GetScreenWidth()) * bottomLeft.x) - 1.0f; bottomLeft.y = ((2.0f / m_game->GetScreenHeight()) * bottomLeft.y) - 1.0f; bottomRight.x = ((2.0f / m_game->GetScreenWidth()) * bottomRight.x) - 1.0f; bottomRight.y = ((2.0f / m_game->GetScreenHeight()) * bottomRight.y) - 1.0f; m_vertices[0].Positions[0] = topLeft.x; m_vertices[0].Positions[1] = topLeft.y; m_vertices[1].Positions[0] = topRight.x; m_vertices[1].Positions[1] = topRight.y; m_vertices[2].Positions[0] = bottomLeft.x; m_vertices[2].Positions[1] = bottomLeft.y; m_vertices[3].Positions[0] = bottomRight.x; m_vertices[3].Positions[1] = bottomRight.y; }