diff --git a/stepmania/src/ActorFrame.cpp b/stepmania/src/ActorFrame.cpp index ada7869171..c0827b599f 100644 --- a/stepmania/src/ActorFrame.cpp +++ b/stepmania/src/ActorFrame.cpp @@ -176,7 +176,7 @@ void ActorFrame::DrawPrimitives() if( m_fFOV != -1 ) { DISPLAY->CameraPushMatrix(); - DISPLAY->LoadMenuPerspective( m_fFOV, m_fVanishX, m_fVanishY ); + DISPLAY->LoadMenuPerspective( m_fFOV, SCREEN_WIDTH, SCREEN_HEIGHT, m_fVanishX, m_fVanishY ); } if( m_bOverrideLighting ) diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 367355c0f5..569210ef2f 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -799,7 +799,7 @@ void Player::DrawPrimitives() float fCenterY = this->GetY()+(GRAY_ARROWS_Y_STANDARD+GRAY_ARROWS_Y_REVERSE)/2; - DISPLAY->LoadMenuPerspective( 45, SCALE(fSkew,0.f,1.f,this->GetX(),SCREEN_CENTER_X), fCenterY ); + DISPLAY->LoadMenuPerspective( 45, SCREEN_WIDTH, SCREEN_HEIGHT, SCALE(fSkew,0.f,1.f,this->GetX(),SCREEN_CENTER_X), fCenterY ); if( m_pNoteField ) { diff --git a/stepmania/src/RageDisplay.cpp b/stepmania/src/RageDisplay.cpp index d8740e93d8..fedca19697 100644 --- a/stepmania/src/RageDisplay.cpp +++ b/stepmania/src/RageDisplay.cpp @@ -10,7 +10,6 @@ #include "RageSurfaceUtils_Zoom.h" #include "RageSurface.h" #include "Preference.h" -#include "ScreenDimensions.h" // // Statistics stuff @@ -206,7 +205,7 @@ void RageDisplay::SetDefaultRenderStates() SetBlendMode( BLEND_NORMAL ); SetTextureFiltering( true ); SetZBias( 0 ); - LoadMenuPerspective(0, SCREEN_CENTER_X, SCREEN_CENTER_Y); // 0 FOV = ortho + LoadMenuPerspective( 0, 640, 480, 320, 240 ); // 0 FOV = ortho ChangeCentering(0,0,0,0); } @@ -459,12 +458,12 @@ void RageDisplay::TextureTranslate( float x, float y ) } -void RageDisplay::LoadMenuPerspective( float fovDegrees, float fVanishPointX, float fVanishPointY ) +void RageDisplay::LoadMenuPerspective( float fovDegrees, float fWidth, float fHeight, float fVanishPointX, float fVanishPointY ) { /* fovDegrees == 0 gives ortho projection. */ if( fovDegrees == 0 ) { - float left = 0, right = SCREEN_WIDTH, bottom = SCREEN_HEIGHT, top = 0; + float left = 0, right = fWidth, bottom = fHeight, top = 0; g_ProjectionStack.LoadMatrix( GetOrthoMatrix(left, right, bottom, top, -1000, +1000) ); g_ViewStack.LoadIdentity(); } @@ -473,29 +472,29 @@ void RageDisplay::LoadMenuPerspective( float fovDegrees, float fVanishPointX, fl CLAMP( fovDegrees, 0.1f, 179.9f ); float fovRadians = fovDegrees / 180.f * PI; float theta = fovRadians/2; - float fDistCameraFromImage = SCREEN_WIDTH/2 / tanf( theta ); + float fDistCameraFromImage = fWidth/2 / tanf( theta ); - fVanishPointX = SCALE( fVanishPointX, SCREEN_LEFT, SCREEN_RIGHT, SCREEN_RIGHT, SCREEN_LEFT ); - fVanishPointY = SCALE( fVanishPointY, SCREEN_TOP, SCREEN_BOTTOM, SCREEN_BOTTOM, SCREEN_TOP ); + fVanishPointX = SCALE( fVanishPointX, 0, fWidth, fWidth, 0 ); + fVanishPointY = SCALE( fVanishPointY, 0, fHeight, fHeight, 0 ); - fVanishPointX -= SCREEN_CENTER_X; - fVanishPointY -= SCREEN_CENTER_Y; + fVanishPointX -= fWidth/2; + fVanishPointY -= fHeight/2; /* It's the caller's responsibility to push first. */ g_ProjectionStack.LoadMatrix( GetFrustumMatrix( - (fVanishPointX-SCREEN_WIDTH/2)/fDistCameraFromImage, - (fVanishPointX+SCREEN_WIDTH/2)/fDistCameraFromImage, - (fVanishPointY+SCREEN_HEIGHT/2)/fDistCameraFromImage, - (fVanishPointY-SCREEN_HEIGHT/2)/fDistCameraFromImage, + (fVanishPointX-fWidth/2)/fDistCameraFromImage, + (fVanishPointX+fWidth/2)/fDistCameraFromImage, + (fVanishPointY+fHeight/2)/fDistCameraFromImage, + (fVanishPointY-fHeight/2)/fDistCameraFromImage, 1, fDistCameraFromImage+1000 ) ); g_ViewStack.LoadMatrix( RageLookAt( - -fVanishPointX+SCREEN_CENTER_X, -fVanishPointY+SCREEN_CENTER_Y, fDistCameraFromImage, - -fVanishPointX+SCREEN_CENTER_X, -fVanishPointY+SCREEN_CENTER_Y, 0, + -fVanishPointX+fWidth/2, -fVanishPointY+fHeight/2, fDistCameraFromImage, + -fVanishPointX+fWidth/2, -fVanishPointY+fHeight/2, 0, 0.0f, 1.0f, 0.0f) ); } } diff --git a/stepmania/src/RageDisplay.h b/stepmania/src/RageDisplay.h index fb79eb90c2..2263416c63 100644 --- a/stepmania/src/RageDisplay.h +++ b/stepmania/src/RageDisplay.h @@ -293,7 +293,7 @@ public: /* Projection and View matrix stack functions. */ void CameraPushMatrix(); void CameraPopMatrix(); - void LoadMenuPerspective( float fovDegrees, float fVanishPointX, float fVanishPointY ); + void LoadMenuPerspective( float fFOVDegrees, float fWidth, float fHeight, float fVanishPointX, float fVanishPointY ); void LoadLookAt( float fov, const RageVector3 &Eye, const RageVector3 &At, const RageVector3 &Up ); /* Centering matrix */ diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index 4ecf9f42f7..94d05ce39f 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -59,6 +59,8 @@ bool Screen::SortMessagesByDelayRemaining(const Screen::QueuedScreenMessage &m1, void Screen::Init() { + SetFOV( 0 ); + m_smSendOnPop = SM_None; ActorUtil::LoadAllCommandsFromName( *this, m_sName, "Screen" );