Added nITG's various column specific & other misc modifiers (#1468)
* Added stealth control, ZBuffer & DizzyHolds mod Modifiers added: StealthPastReceptors DizzyHolds StealthType ZBuffer * Removed theme metrics that are now mods. Removed metrics: DrawHiddenNotesAfterReceptor DizzyHoldHeads * Implemented nITG's Shrink modifiers Modifiers Added: ShrinkLinear ShrinkMult * Implemented nITG's Attenuate mods. Modifiers added: AttenuateX AttenuateY AttenuateZ * Implemented nITG's pulse modifiers Modifiers added: PulseInner PulseOuter PulsePeriod PulseOffset * Implemented nITG's DrawSize and Bounce modifiers. Modifiers Added: Bounce BouncePeriod BounceOffset BounceZ BounceZPeriod BounceZOffset DrawSize DrawSizeBack * Added nITG's column specific Dark & Stealth mods Modifiers added: Stealth<1-n> Dark<1-n> * Finish adding nITG's column specific mods Modifiers added: ConfusionXOffset<1-n> ConfusionYOffset<1-n> ConfusionzOffset<1-n> Reverse<1-n> Tiny<1-n> Bumpy<1-n> * Documented new modififers * Changelog housekeeping Fixed a typo and added this branch's PR into the changelog. * Last bit of clean up. (#3) * Fixed up one line of the changelog * Add MrThatKid to credits.
This commit is contained in:
+38
-31
@@ -365,15 +365,15 @@ void NoteColumnRenderArgs::spae_pos_for_beat(const PlayerState* player_state,
|
||||
}
|
||||
}
|
||||
void NoteColumnRenderArgs::spae_zoom_for_beat(const PlayerState* state, float beat,
|
||||
RageVector3& sp_zoom, RageVector3& ae_zoom) const
|
||||
RageVector3& sp_zoom, RageVector3& ae_zoom, int col_num, float y_offset) const
|
||||
{
|
||||
switch(zoom_handler->m_spline_mode)
|
||||
{
|
||||
case NCSM_Disabled:
|
||||
ae_zoom.x= ae_zoom.y= ae_zoom.z= ArrowEffects::GetZoom(state);
|
||||
ae_zoom.x= ae_zoom.y= ae_zoom.z= ArrowEffects::GetZoom(state, y_offset, col_num);
|
||||
break;
|
||||
case NCSM_Offset:
|
||||
ae_zoom.x= ae_zoom.y= ae_zoom.z= ArrowEffects::GetZoom(state);
|
||||
ae_zoom.x= ae_zoom.y= ae_zoom.z= ArrowEffects::GetZoom(state, y_offset, col_num);
|
||||
zoom_handler->EvalForBeat(song_beat, beat, sp_zoom);
|
||||
break;
|
||||
case NCSM_Position:
|
||||
@@ -697,9 +697,9 @@ Sprite *NoteDisplay::GetHoldSprite( NoteColorSprite ncs[NUM_HoldType][NUM_Active
|
||||
static float ArrowGetAlphaOrGlow( bool bGlow, const PlayerState* pPlayerState, int iCol, float fYOffset, float fPercentFadeToFail, float fYReverseOffsetPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar )
|
||||
{
|
||||
if( bGlow )
|
||||
return ArrowEffects::GetGlow(iCol, fYOffset, fPercentFadeToFail, fYReverseOffsetPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar);
|
||||
return ArrowEffects::GetGlow(pPlayerState, iCol, fYOffset, fPercentFadeToFail, fYReverseOffsetPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar);
|
||||
else
|
||||
return ArrowEffects::GetAlpha(iCol, fYOffset, fPercentFadeToFail, fYReverseOffsetPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar);
|
||||
return ArrowEffects::GetAlpha(pPlayerState, iCol, fYOffset, fPercentFadeToFail, fYReverseOffsetPixels, fDrawDistanceBeforeTargetsPixels, fFadeInPercentOfDrawFar);
|
||||
}
|
||||
|
||||
struct StripBuffer
|
||||
@@ -743,7 +743,7 @@ void NoteDisplay::DrawHoldPart(vector<Sprite*> &vpSpr,
|
||||
{
|
||||
ASSERT(!vpSpr.empty());
|
||||
|
||||
float ae_zoom= ArrowEffects::GetZoom(m_pPlayerState);
|
||||
float ae_zoom= ArrowEffects::GetZoom(m_pPlayerState, 0, column_args.column);
|
||||
Sprite *pSprite = vpSpr.front();
|
||||
|
||||
// draw manually in small segments
|
||||
@@ -838,6 +838,8 @@ void NoteDisplay::DrawHoldPart(vector<Sprite*> &vpSpr,
|
||||
|
||||
const float fYOffset= ArrowEffects::GetYOffsetFromYPos(column_args.column, fY, m_fYReverseOffsetPixels);
|
||||
|
||||
ae_zoom = ArrowEffects::GetZoom(m_pPlayerState, fYOffset, column_args.column);
|
||||
|
||||
float cur_beat= part_args.top_beat;
|
||||
if(part_args.top_beat != part_args.bottom_beat)
|
||||
{
|
||||
@@ -937,10 +939,10 @@ void NoteDisplay::DrawHoldPart(vector<Sprite*> &vpSpr,
|
||||
{
|
||||
case NCSM_Disabled:
|
||||
// XXX: Actor rotations use degrees, Math uses radians. Convert here.
|
||||
ae_rot.y= ArrowEffects::GetRotationY(m_pPlayerState, fYOffset) * PI_180;
|
||||
ae_rot.y= ArrowEffects::GetRotationY(m_pPlayerState, fYOffset, column_args.column) * PI_180;
|
||||
break;
|
||||
case NCSM_Offset:
|
||||
ae_rot.y= ArrowEffects::GetRotationY(m_pPlayerState, fYOffset) * PI_180;
|
||||
ae_rot.y= ArrowEffects::GetRotationY(m_pPlayerState, fYOffset, column_args.column) * PI_180;
|
||||
column_args.rot_handler->EvalForBeat(column_args.song_beat, cur_beat, sp_rot);
|
||||
break;
|
||||
case NCSM_Position:
|
||||
@@ -984,8 +986,13 @@ void NoteDisplay::DrawHoldPart(vector<Sprite*> &vpSpr,
|
||||
const RageVector3 right_vert(center_vert.x - render_left.x,
|
||||
center_vert.y - render_left.y, center_vert.z - render_left.z);
|
||||
|
||||
// Hack: because some mods mess with the zoom, we need to compensate accordingly,
|
||||
// or else hold ends don't look right.
|
||||
const float fPulseInnerAdj = ArrowEffects::GetPulseInner();
|
||||
const float fVariableZoom = ArrowEffects::GetZoomVariable(fYOffset, column_args.column, 1) / fPulseInnerAdj;
|
||||
|
||||
const float fDistFromTop = (fY - y_start_pos) / ae_zoom;
|
||||
float fTexCoordTop = SCALE(fDistFromTop, 0, unzoomed_frame_height, rect.top, rect.bottom);
|
||||
float fTexCoordTop = SCALE(fDistFromTop, 0, unzoomed_frame_height, rect.top, rect.bottom * fVariableZoom);
|
||||
fTexCoordTop += add_to_tex_coord;
|
||||
|
||||
const float fAlpha = ArrowGetAlphaOrGlow(glow, m_pPlayerState, column_args.column, fYOffset, part_args.percent_fade_to_fail, m_fYReverseOffsetPixels, field_args.draw_pixels_before_targets, field_args.fade_before_targets);
|
||||
@@ -1116,13 +1123,13 @@ void NoteDisplay::DrawHoldBody(const TapNote& tn,
|
||||
y_tail += cache->m_iStopDrawingHoldBodyOffsetFromTail;
|
||||
}
|
||||
|
||||
float ae_zoom= ArrowEffects::GetZoom(m_pPlayerState);
|
||||
float ae_zoom= ArrowEffects::GetZoom(m_pPlayerState, 0, column_args.column);
|
||||
const float frame_height_top= pSpriteTop->GetUnzoomedHeight() * ae_zoom;
|
||||
const float frame_height_bottom= pSpriteBottom->GetUnzoomedHeight() * ae_zoom;
|
||||
|
||||
part_args.y_start_pos= ArrowEffects::GetYPos(column_args.column,
|
||||
part_args.y_start_pos= ArrowEffects::GetYPos(m_pPlayerState, column_args.column,
|
||||
field_args.draw_pixels_after_targets, m_fYReverseOffsetPixels);
|
||||
part_args.y_end_pos= ArrowEffects::GetYPos(column_args.column,
|
||||
part_args.y_end_pos= ArrowEffects::GetYPos(m_pPlayerState, column_args.column,
|
||||
field_args.draw_pixels_before_targets, m_fYReverseOffsetPixels);
|
||||
if(reverse)
|
||||
{
|
||||
@@ -1190,8 +1197,8 @@ void NoteDisplay::DrawHold(const TapNote& tn,
|
||||
if( bReverse )
|
||||
swap( fStartYOffset, fEndYOffset );
|
||||
|
||||
const float fYHead= ArrowEffects::GetYPos(column_args.column, fStartYOffset, m_fYReverseOffsetPixels);
|
||||
const float fYTail= ArrowEffects::GetYPos(column_args.column, fEndYOffset, m_fYReverseOffsetPixels);
|
||||
const float fYHead= ArrowEffects::GetYPos(m_pPlayerState, column_args.column, fStartYOffset, m_fYReverseOffsetPixels);
|
||||
const float fYTail= ArrowEffects::GetYPos(m_pPlayerState, column_args.column, fEndYOffset, m_fYReverseOffsetPixels);
|
||||
|
||||
const float fColorScale = SCALE( tn.HoldResult.fLife, 0.0f, 1.0f, cache->m_fHoldLetGoGrayPercent, 1.0f );
|
||||
|
||||
@@ -1247,8 +1254,8 @@ void NoteDisplay::DrawActor(const TapNote& tn, Actor* pActor, NotePart part,
|
||||
float spline_beat= fBeat;
|
||||
if(is_being_held) { spline_beat= column_args.song_beat; }
|
||||
|
||||
const float fAlpha= ArrowEffects::GetAlpha(column_args.column, fYOffset, fPercentFadeToFail, m_fYReverseOffsetPixels, field_args.draw_pixels_before_targets, field_args.fade_before_targets);
|
||||
const float fGlow= ArrowEffects::GetGlow(column_args.column, fYOffset, fPercentFadeToFail, m_fYReverseOffsetPixels, field_args.draw_pixels_before_targets, field_args.fade_before_targets);
|
||||
const float fAlpha= ArrowEffects::GetAlpha(m_pPlayerState, column_args.column, fYOffset, fPercentFadeToFail, m_fYReverseOffsetPixels, field_args.draw_pixels_before_targets, field_args.fade_before_targets);
|
||||
const float fGlow= ArrowEffects::GetGlow(m_pPlayerState, column_args.column, fYOffset, fPercentFadeToFail, m_fYReverseOffsetPixels, field_args.draw_pixels_before_targets, field_args.fade_before_targets);
|
||||
const RageColor diffuse = RageColor(
|
||||
column_args.diffuse.r * fColorScale,
|
||||
column_args.diffuse.g * fColorScale,
|
||||
@@ -1291,14 +1298,14 @@ void NoteDisplay::DrawActor(const TapNote& tn, Actor* pActor, NotePart part,
|
||||
switch(column_args.rot_handler->m_spline_mode)
|
||||
{
|
||||
case NCSM_Disabled:
|
||||
ae_rot.x= ArrowEffects::GetRotationX(m_pPlayerState, fYOffset, bIsHoldCap);
|
||||
ae_rot.y= ArrowEffects::GetRotationY(m_pPlayerState, fYOffset);
|
||||
ae_rot.z= ArrowEffects::GetRotationZ(m_pPlayerState, fBeat, bIsHoldHead);
|
||||
ae_rot.x= ArrowEffects::GetRotationX(m_pPlayerState, fYOffset, bIsHoldCap, column_args.column);
|
||||
ae_rot.y= ArrowEffects::GetRotationY(m_pPlayerState, fYOffset, column_args.column);
|
||||
ae_rot.z= ArrowEffects::GetRotationZ(m_pPlayerState, fBeat, bIsHoldHead, column_args.column);
|
||||
break;
|
||||
case NCSM_Offset:
|
||||
ae_rot.x= ArrowEffects::GetRotationX(m_pPlayerState, fYOffset, bIsHoldCap);
|
||||
ae_rot.y= ArrowEffects::GetRotationY(m_pPlayerState, fYOffset);
|
||||
ae_rot.z= ArrowEffects::GetRotationZ(m_pPlayerState, fBeat, bIsHoldHead);
|
||||
ae_rot.x= ArrowEffects::GetRotationX(m_pPlayerState, fYOffset, bIsHoldCap, column_args.column);
|
||||
ae_rot.y= ArrowEffects::GetRotationY(m_pPlayerState, fYOffset, column_args.column);
|
||||
ae_rot.z= ArrowEffects::GetRotationZ(m_pPlayerState, fBeat, bIsHoldHead, column_args.column);
|
||||
column_args.rot_handler->EvalForBeat(column_args.song_beat, spline_beat, sp_rot);
|
||||
break;
|
||||
case NCSM_Position:
|
||||
@@ -1307,7 +1314,7 @@ void NoteDisplay::DrawActor(const TapNote& tn, Actor* pActor, NotePart part,
|
||||
default:
|
||||
break;
|
||||
}
|
||||
column_args.spae_zoom_for_beat(m_pPlayerState, spline_beat, sp_zoom, ae_zoom);
|
||||
column_args.spae_zoom_for_beat(m_pPlayerState, spline_beat, sp_zoom, ae_zoom, column_args.column, fYOffset);
|
||||
column_args.SetPRZForActor(pActor, sp_pos, ae_pos, sp_rot, ae_rot, sp_zoom, ae_zoom);
|
||||
// [AJ] this two lines (and how they're handled) piss off many people:
|
||||
pActor->SetDiffuse( diffuse );
|
||||
@@ -1459,14 +1466,14 @@ void NoteColumnRenderer::UpdateReceptorGhostStuff(Actor* receptor) const
|
||||
switch(NCR_current.m_rot_handler.m_spline_mode)
|
||||
{
|
||||
case NCSM_Disabled:
|
||||
ae_rot.z= ArrowEffects::ReceptorGetRotationZ(player_state);
|
||||
ae_rot.x= ArrowEffects::ReceptorGetRotationX(player_state);
|
||||
ae_rot.y= ArrowEffects::ReceptorGetRotationY(player_state);
|
||||
ae_rot.z= ArrowEffects::ReceptorGetRotationZ(player_state, m_column);
|
||||
ae_rot.x= ArrowEffects::ReceptorGetRotationX(player_state, m_column);
|
||||
ae_rot.y= ArrowEffects::ReceptorGetRotationY(player_state, m_column);
|
||||
break;
|
||||
case NCSM_Offset:
|
||||
ae_rot.z= ArrowEffects::ReceptorGetRotationZ(player_state);
|
||||
ae_rot.x= ArrowEffects::ReceptorGetRotationX(player_state);
|
||||
ae_rot.y= ArrowEffects::ReceptorGetRotationY(player_state);
|
||||
ae_rot.z= ArrowEffects::ReceptorGetRotationZ(player_state, m_column);
|
||||
ae_rot.x= ArrowEffects::ReceptorGetRotationX(player_state, m_column);
|
||||
ae_rot.y= ArrowEffects::ReceptorGetRotationY(player_state, m_column);
|
||||
NCR_current.m_rot_handler.EvalForReceptor(song_beat, sp_rot);
|
||||
break;
|
||||
case NCSM_Position:
|
||||
@@ -1478,10 +1485,10 @@ void NoteColumnRenderer::UpdateReceptorGhostStuff(Actor* receptor) const
|
||||
switch(NCR_current.m_zoom_handler.m_spline_mode)
|
||||
{
|
||||
case NCSM_Disabled:
|
||||
ae_zoom.x= ae_zoom.y= ae_zoom.z= ArrowEffects::GetZoom(player_state);
|
||||
ae_zoom.x= ae_zoom.y= ae_zoom.z= ArrowEffects::GetZoom(player_state, 0, m_column);
|
||||
break;
|
||||
case NCSM_Offset:
|
||||
ae_zoom.x= ae_zoom.y= ae_zoom.z= ArrowEffects::GetZoom(player_state);
|
||||
ae_zoom.x= ae_zoom.y= ae_zoom.z= ArrowEffects::GetZoom(player_state, 0, m_column);
|
||||
NCR_current.m_zoom_handler.EvalForReceptor(song_beat, sp_zoom);
|
||||
break;
|
||||
case NCSM_Position:
|
||||
|
||||
Reference in New Issue
Block a user