//----------------------------------------------------------------------------------------------------------------------------------- void ScreenManager::Draw() { // Draw the background m_spriteBatch->Begin(SpriteSortMode_Immediate, m_states->NonPremultiplied()); m_activeScreens.back()->DrawBackground(m_spriteBatch.get(), m_spriteFont.get()); m_spriteBatch->End(); // Draw the camera dependent game objects m_spriteBatch->Begin(SpriteSortMode_Immediate, m_states->NonPremultiplied(), nullptr, nullptr, nullptr, nullptr, m_camera.GetViewMatrix()); for (BaseScreen* screen : m_activeScreens) { screen->DrawInGameObjects(m_spriteBatch.get(), m_spriteFont.get()); } m_spriteBatch->End(); // Draw the screen (camera independent) objects m_spriteBatch->Begin(SpriteSortMode_Immediate, m_states->NonPremultiplied()); for (BaseScreen* screen : m_activeScreens) { screen->DrawScreenObjects(m_spriteBatch.get(), m_spriteFont.get()); } // Draw the game mouse - camera independent m_gameMouse.Draw(m_spriteBatch.get(), m_spriteFont.get()); m_spriteBatch->End(); }