diff --git a/src/ArrowEffects.cpp b/src/ArrowEffects.cpp index a0566826d1..e6f3831849 100644 --- a/src/ArrowEffects.cpp +++ b/src/ArrowEffects.cpp @@ -85,7 +85,8 @@ void ArrowEffects::Update() FOREACH_PlayerNumber( pn ) { const Style::ColumnInfo* pCols = pStyle->m_ColumnInfo[pn]; - const SongPosition &position = GAMESTATE->m_bIsEditorStepTiming ? GAMESTATE->m_pPlayerState[pn]->m_Position : GAMESTATE->m_Position; + const SongPosition &position = (!GAMESTATE->m_bInStepEditor || GAMESTATE->m_bIsEditorStepTiming) + ? GAMESTATE->m_pPlayerState[pn]->m_Position : GAMESTATE->m_Position; PerPlayerData &data = g_EffectData[pn]; @@ -219,7 +220,8 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float bIsPastPeakOut = true; float fYOffset = 0; - const SongPosition &position = GAMESTATE->m_bIsEditorStepTiming ? pPlayerState->m_Position : GAMESTATE->m_Position; + const SongPosition &position = (!GAMESTATE->m_bInStepEditor || GAMESTATE->m_bIsEditorStepTiming) + ? pPlayerState->m_Position : GAMESTATE->m_Position; /* Usually, fTimeSpacing is 0 or 1, in which case we use entirely beat spacing or * entirely time spacing (respectively). Occasionally, we tween between them. */ diff --git a/src/GameState.h b/src/GameState.h index 592b613dfe..0a6efc0e25 100644 --- a/src/GameState.h +++ b/src/GameState.h @@ -337,6 +337,11 @@ public: * * Different options are available depending on this setting. */ bool m_bIsEditorStepTiming; + /** + * @brief Are we presently in the Step Editor, where some rules apply differently? + * + * TODO: Find a better way to implement this. */ + bool m_bInStepEditor; BroadcastOnChange m_stEdit; BroadcastOnChange m_cdEdit; BroadcastOnChangePtr m_pEditSourceSteps; diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index cc2a677b3c..2ff3b112dc 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -698,6 +698,7 @@ void ScreenEdit::Init() m_pSoundMusic = NULL; GAMESTATE->m_bIsEditorStepTiming = true; + GAMESTATE->m_bInStepEditor = true; SubscribeToMessage( "Judgment" ); @@ -858,6 +859,8 @@ ScreenEdit::~ScreenEdit() // Reset the GameState variable in case it's needed elsewhere. GAMESTATE->m_bIsEditorStepTiming = false; + // DEFINITELY reset the InStepEditor variable. + GAMESTATE->m_bInStepEditor = false; } void ScreenEdit::BeginScreen()