diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 68e1a9e85b..d7c1219f44 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -12,6 +12,7 @@ StepMania 5.0 alpha 2 | 201203?? 2012/03/20 ---------- * [Background] Fix 3D noteskins and dancing characters from clashing with each other. [shakesoda, AJ] +* [NoteField] Fix 3D noteskins overlapping. [shakesoda, AJ] 2012/03/15 ---------- diff --git a/src/NoteField.cpp b/src/NoteField.cpp index d90440d05a..779d937173 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -19,6 +19,7 @@ #include "BackgroundUtil.h" #include "Course.h" #include "NoteData.h" +#include "RageDisplay.h" float FindFirstDisplayedBeat( const PlayerState* pPlayerState, int iDrawDistanceAfterTargetsPixels ); float FindLastDisplayedBeat( const PlayerState* pPlayerState, int iDrawDistanceBeforeTargetsPixels ); @@ -1294,7 +1295,6 @@ void NoteField::DrawPrimitives() if( tn.result.bHidden ) continue; - // TRICKY: If boomerang is on, then all notes in the range // [iFirstRowToDraw,iLastRowToDraw] aren't necessarily visible. // Test every note to make sure it's on screen before drawing. @@ -1302,7 +1302,7 @@ void NoteField::DrawPrimitives() continue; // skip ASSERT_M( NoteRowToBeat(q) > -2000, ssprintf("%i %i %i, %f %f", q, iLastRowToDraw, - iFirstRowToDraw, m_pPlayerState->GetDisplayedPosition().m_fSongBeat, m_pPlayerState->GetDisplayedPosition().m_fMusicSeconds) ); + iFirstRowToDraw, m_pPlayerState->GetDisplayedPosition().m_fSongBeat, m_pPlayerState->GetDisplayedPosition().m_fMusicSeconds) ); // See if there is a hold step that begins on this index. // Only do this if the noteskin cares. @@ -1320,7 +1320,7 @@ void NoteField::DrawPrimitives() } } } - + // do the same for a roll. bool bRollNoteBeginsOnThisBeat = false; if (m_pCurDisplay->display[c].DrawRollHeadForTapsOnSameRow() ) @@ -1353,6 +1353,8 @@ void NoteField::DrawPrimitives() bool bNoteIsUpcoming = NoteRowToBeat(q) > m_pPlayerState->GetDisplayedPosition().m_fSongBeat; bAnyUpcomingInThisCol |= bNoteIsUpcoming; + + DISPLAY->ClearZBuffer(); } cur->m_ReceptorArrowRow.SetNoteUpcoming( c, bAnyUpcomingInThisCol );