Tweak mini: instead of zooming out the whole field, zoom out each individual
arrow, and push the columns together a bit. It looks the same, except that it doesn't cause arrows to be closer together, like increasing the scroll speed to match. This keeps mini from causing many more notes to be drawn. In general, effects should try to avoid needing to increase fDrawScale.
This commit is contained in:
@@ -146,16 +146,8 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float
|
|||||||
|
|
||||||
void ArrowGetReverseShiftAndScale( const PlayerState* pPlayerState, int iCol, float fYReverseOffsetPixels, float &fShiftOut, float &fScaleOut )
|
void ArrowGetReverseShiftAndScale( const PlayerState* pPlayerState, int iCol, float fYReverseOffsetPixels, float &fShiftOut, float &fScaleOut )
|
||||||
{
|
{
|
||||||
/* XXX: Hack: we need to scale the reverse shift by the zoom. */
|
|
||||||
float fMiniPercent = pPlayerState->m_CurrentPlayerOptions.m_fEffects[PlayerOptions::EFFECT_MINI];
|
|
||||||
float fZoom = 1 - fMiniPercent*0.5f;
|
|
||||||
|
|
||||||
// don't divide by 0
|
|
||||||
if( fabsf(fZoom) < 0.01 )
|
|
||||||
fZoom = 0.01f;
|
|
||||||
|
|
||||||
float fPercentReverse = pPlayerState->m_CurrentPlayerOptions.GetReversePercentForColumn(iCol);
|
float fPercentReverse = pPlayerState->m_CurrentPlayerOptions.GetReversePercentForColumn(iCol);
|
||||||
fShiftOut = SCALE( fPercentReverse, 0.f, 1.f, -fYReverseOffsetPixels/fZoom/2, fYReverseOffsetPixels/fZoom/2 );
|
fShiftOut = SCALE( fPercentReverse, 0.f, 1.f, -fYReverseOffsetPixels/2, fYReverseOffsetPixels/2 );
|
||||||
float fPercentCentered = pPlayerState->m_CurrentPlayerOptions.m_fScrolls[PlayerOptions::SCROLL_CENTERED];
|
float fPercentCentered = pPlayerState->m_CurrentPlayerOptions.m_fScrolls[PlayerOptions::SCROLL_CENTERED];
|
||||||
fShiftOut = SCALE( fPercentCentered, 0.f, 1.f, fShiftOut, 0.5f );
|
fShiftOut = SCALE( fPercentCentered, 0.f, 1.f, fShiftOut, 0.5f );
|
||||||
|
|
||||||
@@ -367,11 +359,7 @@ float ArrowEffects::GetRotation( const PlayerState* pPlayerState, float fNoteBea
|
|||||||
|
|
||||||
static float GetCenterLine( const PlayerState* pPlayerState )
|
static float GetCenterLine( const PlayerState* pPlayerState )
|
||||||
{
|
{
|
||||||
/* Another mini hack: if EFFECT_MINI is on, then our center line is at eg. 320,
|
return CENTER_LINE_Y;
|
||||||
* not 160. */
|
|
||||||
const float fMiniPercent = pPlayerState->m_CurrentPlayerOptions.m_fEffects[PlayerOptions::EFFECT_MINI];
|
|
||||||
const float fZoom = 1 - fMiniPercent*0.5f;
|
|
||||||
return CENTER_LINE_Y / fZoom;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static float GetHiddenSudden( const PlayerState* pPlayerState )
|
static float GetHiddenSudden( const PlayerState* pPlayerState )
|
||||||
@@ -524,11 +512,16 @@ bool ArrowEffects::NeedZBuffer( const PlayerState* pPlayerState )
|
|||||||
|
|
||||||
float ArrowEffects::GetZoom( const PlayerState* pPlayerState )
|
float ArrowEffects::GetZoom( const PlayerState* pPlayerState )
|
||||||
{
|
{
|
||||||
|
float fZoom = 1.0f;
|
||||||
// FIXME: Move the zoom values into Style
|
// FIXME: Move the zoom values into Style
|
||||||
if( GAMESTATE->m_pCurStyle->m_bNeedsZoomOutWith2Players &&
|
if( GAMESTATE->m_pCurStyle->m_bNeedsZoomOutWith2Players &&
|
||||||
(GAMESTATE->GetNumSidesJoined()==2 || GAMESTATE->AnyPlayersAreCpu()) )
|
(GAMESTATE->GetNumSidesJoined()==2 || GAMESTATE->AnyPlayersAreCpu()) )
|
||||||
return 0.6f;
|
fZoom *= 0.6f;
|
||||||
return 1.0f;
|
|
||||||
|
float fMiniPercent = pPlayerState->m_CurrentPlayerOptions.m_fEffects[PlayerOptions::EFFECT_MINI];
|
||||||
|
fZoom *= SCALE( fMiniPercent, 0, 1, 1, 0.5f );
|
||||||
|
|
||||||
|
return fZoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -479,7 +479,6 @@ void NoteField::DrawPrimitives()
|
|||||||
|
|
||||||
float fDrawScale = 1;
|
float fDrawScale = 1;
|
||||||
fDrawScale *= 1 + 0.5f * fabsf( current_po.m_fPerspectiveTilt );
|
fDrawScale *= 1 + 0.5f * fabsf( current_po.m_fPerspectiveTilt );
|
||||||
fDrawScale *= 1 + fabsf( current_po.m_fEffects[PlayerOptions::EFFECT_MINI] );
|
|
||||||
|
|
||||||
iFirstPixelToDraw = (int)(iFirstPixelToDraw * fDrawScale);
|
iFirstPixelToDraw = (int)(iFirstPixelToDraw * fDrawScale);
|
||||||
iLastPixelToDraw = (int)(iLastPixelToDraw * fDrawScale);
|
iLastPixelToDraw = (int)(iLastPixelToDraw * fDrawScale);
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ void NoteFieldMode::BeginDrawTrack( const PlayerState* pPlayerState, int iTrack
|
|||||||
const Style *s = GAMESTATE->GetCurrentStyle();
|
const Style *s = GAMESTATE->GetCurrentStyle();
|
||||||
// TODO: Remove indexing by PlayerNumber.
|
// TODO: Remove indexing by PlayerNumber.
|
||||||
float fPixelXOffsetFromCenter = s->m_ColumnInfo[pPlayerState->m_PlayerNumber][iTrack].fXOffset;
|
float fPixelXOffsetFromCenter = s->m_ColumnInfo[pPlayerState->m_PlayerNumber][iTrack].fXOffset;
|
||||||
|
|
||||||
|
const float* fEffects = pPlayerState->m_CurrentPlayerOptions.m_fEffects;
|
||||||
|
fPixelXOffsetFromCenter *= SCALE( fEffects[PlayerOptions::EFFECT_MINI], 0, 1, 1, 0.5f );
|
||||||
|
|
||||||
DISPLAY->Translate( fPixelXOffsetFromCenter, 0, 0 );
|
DISPLAY->Translate( fPixelXOffsetFromCenter, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -496,10 +496,7 @@ void Player::Update( float fDeltaTime )
|
|||||||
|
|
||||||
|
|
||||||
float fMiniPercent = m_pPlayerState->m_CurrentPlayerOptions.m_fEffects[PlayerOptions::EFFECT_MINI];
|
float fMiniPercent = m_pPlayerState->m_CurrentPlayerOptions.m_fEffects[PlayerOptions::EFFECT_MINI];
|
||||||
float fNoteFieldZoom = 1 - fMiniPercent*0.5f;
|
|
||||||
float fJudgmentZoom = 1 - fMiniPercent*0.25f;
|
float fJudgmentZoom = 1 - fMiniPercent*0.25f;
|
||||||
if( m_pNoteField )
|
|
||||||
m_pNoteField->SetZoom( fNoteFieldZoom );
|
|
||||||
if( m_pJudgment )
|
if( m_pJudgment )
|
||||||
m_pJudgment->SetZoom( m_pJudgment->GetZoom() * fJudgmentZoom );
|
m_pJudgment->SetZoom( m_pJudgment->GetZoom() * fJudgmentZoom );
|
||||||
if( m_sprJudgmentFrame.IsLoaded() )
|
if( m_sprJudgmentFrame.IsLoaded() )
|
||||||
@@ -809,13 +806,6 @@ void Player::DrawPrimitives()
|
|||||||
|
|
||||||
float fTiltDegrees = SCALE(fTilt,-1.f,+1.f,+30,-30) * (bReverse?-1:1);
|
float fTiltDegrees = SCALE(fTilt,-1.f,+1.f,+30,-30) * (bReverse?-1:1);
|
||||||
|
|
||||||
|
|
||||||
float fZoom = SCALE( m_pPlayerState->m_CurrentPlayerOptions.m_fEffects[PlayerOptions::EFFECT_MINI], 0.f, 1.f, 1.f, 0.5f );
|
|
||||||
if( fTilt > 0 )
|
|
||||||
fZoom *= SCALE( fTilt, 0.f, 1.f, 1.f, 0.9f );
|
|
||||||
else
|
|
||||||
fZoom *= SCALE( fTilt, 0.f, -1.f, 1.f, 0.9f );
|
|
||||||
|
|
||||||
float fYOffset;
|
float fYOffset;
|
||||||
if( fTilt > 0 )
|
if( fTilt > 0 )
|
||||||
fYOffset = SCALE( fTilt, 0.f, 1.f, 0.f, -45.f ) * (bReverse?-1:1);
|
fYOffset = SCALE( fTilt, 0.f, 1.f, 0.f, -45.f ) * (bReverse?-1:1);
|
||||||
@@ -823,7 +813,6 @@ void Player::DrawPrimitives()
|
|||||||
fYOffset = SCALE( fTilt, 0.f, -1.f, 0.f, -20.f ) * (bReverse?-1:1);
|
fYOffset = SCALE( fTilt, 0.f, -1.f, 0.f, -20.f ) * (bReverse?-1:1);
|
||||||
|
|
||||||
m_pNoteField->SetY( fOriginalY + fYOffset );
|
m_pNoteField->SetY( fOriginalY + fYOffset );
|
||||||
m_pNoteField->SetZoom( fZoom );
|
|
||||||
m_pNoteField->SetRotationX( fTiltDegrees );
|
m_pNoteField->SetRotationX( fTiltDegrees );
|
||||||
m_pNoteField->Draw();
|
m_pNoteField->Draw();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user