Added nITG's Tangent Modifiers (#1495)
* Implemented nITG's TanDrunk modifiers. RageMath functions added: RageFastTan RageFastCsc Modifers added: GlitchyTan TanDrunk TanDrunkSpeed TanDrunkOffset TanDrunkPeriod TanDrunkZ TanDrunkZSpeed TanDrunkZOffset TanDrunkZPeriod * Implemented nITG's TanTipsy and TanTornado mods Also, the Drunk code and Tipsy update code was deduplicated. Modifiers Added: TanTipsy TanTipsySpeed TanTipsyOffset TanTornado TanTornadoPeriod TanTornadoOffset TanTornadoZ TanTornadoZPeriod TanTornadoZOffset * Implemented nITG's remaining tan mods. Modifiers added: TanExpand TanExpandPeriod TanBumpy TanBumpyPeriod TanBumpyOffset TanBumpyX TanBumpyXPeriod TanBumpyXOffset TanDigital TanDigitalPeriod TanDigitalSteps TanDigitalOffset TanDigitalZ TanDigitalZPeriod TanDigitalZSteps TanDigitalZOffset * Updated luadocs to reference new modifiers * Rename GlitchyTan to Cosecant (#4) * Rename GlitchyTan to Cosecant * Update luadocs to reflect change
This commit is contained in:
@@ -1176,6 +1176,7 @@
|
|||||||
<Function name='ConfusionY'/>
|
<Function name='ConfusionY'/>
|
||||||
<Function name='ConfusionYOffset'/>
|
<Function name='ConfusionYOffset'/>
|
||||||
<Function name='ConfusionYOffsetn'/>
|
<Function name='ConfusionYOffsetn'/>
|
||||||
|
<Function name='Cosecant'/>
|
||||||
<Function name='Cover'/>
|
<Function name='Cover'/>
|
||||||
<Function name='Cross'/>
|
<Function name='Cross'/>
|
||||||
<Function name='Dark'/>
|
<Function name='Dark'/>
|
||||||
|
|||||||
@@ -3514,15 +3514,27 @@ save yourself some time, copy this for undocumented things:
|
|||||||
<Function name='BounceZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='BounceZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='BounceZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='BounceZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='Brake' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Brake' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='Bumpy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Bumpy' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
<Function name='Bumpyn' return= 'float, float' arguments='float value, float approach_speed'>
|
<Function name='Bumpyn' return= 'float, float' arguments='float value, float approach_speed'>
|
||||||
Use 1-16 in place of 'n' to apply Bumpy on a specific column.
|
Use 1-16 in place of 'n' to apply Bumpy on a specific column.
|
||||||
</Function>
|
</Function>
|
||||||
<Function name='BumpyOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='BumpyOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='BumpyPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
<Function name='BumpyX' return='float, float' arguments='float value, float approach_speed'> </Function>
|
</Function>
|
||||||
<Function name='BumpyXOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='BumpyPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='BumpyXPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='BumpyX' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='BumpyXOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='BumpyXPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
<Function name='Centered' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Centered' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='CMod' return='float, float' arguments='float value, float approach_speed'>
|
<Function name='CMod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
If the player has a CMod set, returns the value of that CMod and its associated approach speed. Returns nil otherwise.<br />
|
If the player has a CMod set, returns the value of that CMod and its associated approach speed. Returns nil otherwise.<br />
|
||||||
@@ -3544,20 +3556,37 @@ save yourself some time, copy this for undocumented things:
|
|||||||
<Function name='ConfusionYOffsetn' return= 'float, float' arguments='float value, float approach_speed'>
|
<Function name='ConfusionYOffsetn' return= 'float, float' arguments='float value, float approach_speed'>
|
||||||
Use 1-16 in place of 'n' to apply ConfusionYOffset on a specific column.
|
Use 1-16 in place of 'n' to apply ConfusionYOffset on a specific column.
|
||||||
</Function>
|
</Function>
|
||||||
|
<Function name='Cosecant' return='bool' arguments='bool value'> </Function>
|
||||||
<Function name='Cover' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Cover' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='Cross' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Cross' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='Dark' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Dark' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='Darkn' return= 'float, float' arguments='float value, float approach_speed'>
|
<Function name='Darkn' return= 'float, float' arguments='float value, float approach_speed'>
|
||||||
Use 1-16 in place of 'n' to apply Dark on a specific column.
|
Use 1-16 in place of 'n' to apply Dark on a specific column.
|
||||||
</Function>
|
</Function>
|
||||||
<Function name='Digital' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Digital' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='DigitalOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
<Function name='DigitalPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
</Function>
|
||||||
<Function name='DigitalSteps' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='DigitalOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='DigitalZ' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
<Function name='DigitalZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
</Function>
|
||||||
<Function name='DigitalZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='DigitalPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='DigitalZSteps' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DigitalSteps' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DigitalZ' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DigitalZOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DigitalZPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DigitalZSteps' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
<Function name='Dizzy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Dizzy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='DizzyHolds' return='bool' arguments='bool value'> </Function>
|
<Function name='DizzyHolds' return='bool' arguments='bool value'> </Function>
|
||||||
<Function name='Distant' return='float, float' arguments='float value, float approach_speed'>
|
<Function name='Distant' return='float, float' arguments='float value, float approach_speed'>
|
||||||
@@ -3569,17 +3598,37 @@ save yourself some time, copy this for undocumented things:
|
|||||||
<Function name='DrainSetting' return= 'DrainType' arguments='DrainType type'> </Function>
|
<Function name='DrainSetting' return= 'DrainType' arguments='DrainType type'> </Function>
|
||||||
<Function name='DrawSize' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='DrawSize' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='DrawSizeBack' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='DrawSizeBack' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='Drunk' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Drunk' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='DrunkOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
<Function name='DrunkPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
</Function>
|
||||||
<Function name='DrunkSpeed' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='DrunkOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='DrunkZ' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
<Function name='DrunkZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
</Function>
|
||||||
<Function name='DrunkZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='DrunkPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='DrunkZSpeed' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DrunkSpeed' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DrunkZ' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DrunkZOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DrunkZPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='DrunkZSpeed' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
<Function name='Echo' return='bool' arguments='bool value'> </Function>
|
<Function name='Echo' return='bool' arguments='bool value'> </Function>
|
||||||
<Function name='Expand' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Expand' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='ExpandPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='ExpandPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
<Function name='FailSetting' return='FailType' arguments='FailType'>
|
<Function name='FailSetting' return='FailType' arguments='FailType'>
|
||||||
Sets the <Link class='ENUM' function='FailType' /> for the player, if the optional argument is provided. Returns the <Link class='ENUM' function='FailType' /> that was previously set.
|
Sets the <Link class='ENUM' function='FailType' /> for the player, if the optional argument is provided. Returns the <Link class='ENUM' function='FailType' /> that was previously set.
|
||||||
</Function>
|
</Function>
|
||||||
@@ -3750,15 +3799,33 @@ save yourself some time, copy this for undocumented things:
|
|||||||
<Function name='Tinyn' return= 'float, float' arguments='float value, float approach_speed'>
|
<Function name='Tinyn' return= 'float, float' arguments='float value, float approach_speed'>
|
||||||
Use 1-16 in place of 'n' to apply Tiny on a specific column.
|
Use 1-16 in place of 'n' to apply Tiny on a specific column.
|
||||||
</Function>
|
</Function>
|
||||||
<Function name='Tipsy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Tipsy' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='TipsyOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
<Function name='TipsySpeed' return='float, float' arguments='float value, float approach_speed'> </Function>
|
</Function>
|
||||||
<Function name='Tornado' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='TipsyOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='TornadoOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
<Function name='TornadoPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
</Function>
|
||||||
<Function name='TornadoZ' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='TipsySpeed' return='float, float' arguments='float value, float approach_speed'>
|
||||||
<Function name='TornadoZOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
<Function name='TornadoZPeriod' return='float, float' arguments='float value, float approach_speed'> </Function>
|
</Function>
|
||||||
|
<Function name='Tornado' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='TornadoOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='TornadoPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='TornadoZ' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='TornadoZOffset' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
|
<Function name='TornadoZPeriod' return='float, float' arguments='float value, float approach_speed'>
|
||||||
|
Has a tangent variant that can be accessed by prepending 'Tan' to the function name.
|
||||||
|
</Function>
|
||||||
<Function name='TurnNone' return='bool' arguments='bool value'> </Function>
|
<Function name='TurnNone' return='bool' arguments='bool value'> </Function>
|
||||||
<Function name='Twirl' return='float, float' arguments='float value, float approach_speed'> </Function>
|
<Function name='Twirl' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||||
<Function name='Twister' return='bool' arguments='bool value'> </Function>
|
<Function name='Twister' return='bool' arguments='bool value'> </Function>
|
||||||
|
|||||||
+189
-34
@@ -115,8 +115,11 @@ namespace
|
|||||||
float m_fInvertDistance[MAX_COLS_PER_PLAYER];
|
float m_fInvertDistance[MAX_COLS_PER_PLAYER];
|
||||||
float m_tipsy_result[MAX_COLS_PER_PLAYER];
|
float m_tipsy_result[MAX_COLS_PER_PLAYER];
|
||||||
float m_tipsy_offset_result[MAX_COLS_PER_PLAYER];
|
float m_tipsy_offset_result[MAX_COLS_PER_PLAYER];
|
||||||
|
float m_tan_tipsy_result[MAX_COLS_PER_PLAYER];
|
||||||
|
float m_tan_tipsy_offset_result[MAX_COLS_PER_PLAYER];
|
||||||
float m_fBeatFactor[3];
|
float m_fBeatFactor[3];
|
||||||
float m_fExpandSeconds;
|
float m_fExpandSeconds;
|
||||||
|
float m_fTanExpandSeconds;
|
||||||
|
|
||||||
// m_prev_style is for checking whether ArrowEffects::Init needs to be
|
// m_prev_style is for checking whether ArrowEffects::Init needs to be
|
||||||
// called. Finding all the placed ArrowEffects is used and making sure
|
// called. Finding all the placed ArrowEffects is used and making sure
|
||||||
@@ -136,10 +139,18 @@ namespace
|
|||||||
float tornado_offset_scale_from_high[3];
|
float tornado_offset_scale_from_high[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static float SelectTanType(float angle, bool is_cosec)
|
||||||
|
{
|
||||||
|
if (is_cosec)
|
||||||
|
return RageFastCsc(angle);
|
||||||
|
else
|
||||||
|
return RageFastTan(angle);
|
||||||
|
}
|
||||||
|
|
||||||
static float CalculateTornadoOffsetFromMagnitude(int dimension, int col_id,
|
static float CalculateTornadoOffsetFromMagnitude(int dimension, int col_id,
|
||||||
float magnitude, float effect_offset, float period,
|
float magnitude, float effect_offset, float period,
|
||||||
const Style::ColumnInfo* pCols, float field_zoom,
|
const Style::ColumnInfo* pCols, float field_zoom,
|
||||||
PerPlayerData& data, float y_offset)
|
PerPlayerData& data, float y_offset, bool is_tan)
|
||||||
{
|
{
|
||||||
float const real_pixel_offset= pCols[col_id].fXOffset * field_zoom;
|
float const real_pixel_offset= pCols[col_id].fXOffset * field_zoom;
|
||||||
float const position_between= SCALE(real_pixel_offset,
|
float const position_between= SCALE(real_pixel_offset,
|
||||||
@@ -150,7 +161,9 @@ static float CalculateTornadoOffsetFromMagnitude(int dimension, int col_id,
|
|||||||
float rads= acosf(position_between);
|
float rads= acosf(position_between);
|
||||||
float frequency= tornado_offset_frequency[dimension];
|
float frequency= tornado_offset_frequency[dimension];
|
||||||
rads+= (y_offset + effect_offset) * ((period * frequency) + frequency) / SCREEN_HEIGHT;
|
rads+= (y_offset + effect_offset) * ((period * frequency) + frequency) / SCREEN_HEIGHT;
|
||||||
float const adjusted_pixel_offset= SCALE(RageFastCos(rads),
|
float processed_rads = is_tan ? SelectTanType(rads, curr_options->m_bCosecant) : RageFastCos(rads);
|
||||||
|
|
||||||
|
float const adjusted_pixel_offset= SCALE(processed_rads,
|
||||||
tornado_offset_scale_from_low[dimension],
|
tornado_offset_scale_from_low[dimension],
|
||||||
tornado_offset_scale_from_high[dimension],
|
tornado_offset_scale_from_high[dimension],
|
||||||
data.m_MinTornado[dimension][col_id] * field_zoom,
|
data.m_MinTornado[dimension][col_id] * field_zoom,
|
||||||
@@ -158,6 +171,24 @@ static float CalculateTornadoOffsetFromMagnitude(int dimension, int col_id,
|
|||||||
return (adjusted_pixel_offset - real_pixel_offset) * magnitude;
|
return (adjusted_pixel_offset - real_pixel_offset) * magnitude;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static float CalculateDrunkAngle(float speed, int col, float offset,
|
||||||
|
float col_frequency, float y_offset, float period, float offset_frequency)
|
||||||
|
{
|
||||||
|
float time = ArrowEffects::GetTime();
|
||||||
|
return time * (1+speed) + col*( (offset*col_frequency) + col_frequency)
|
||||||
|
+ y_offset * ( (period*offset_frequency) + offset_frequency) / SCREEN_HEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
static float CalculateBumpyAngle(float y_offset, float offset, float period)
|
||||||
|
{
|
||||||
|
return (y_offset+(100.0f*offset))/((period*16.0f)+16.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
static float CalculateDigitalAngle(float y_offset, float offset, float period)
|
||||||
|
{
|
||||||
|
return PI * (y_offset + (1.0f * offset ) ) / (ARROW_SIZE + (period * ARROW_SIZE) );
|
||||||
|
}
|
||||||
|
|
||||||
static void UpdateBeat(int dimension, PerPlayerData &data, const SongPosition &position, float beat_offset, float beat_mult)
|
static void UpdateBeat(int dimension, PerPlayerData &data, const SongPosition &position, float beat_offset, float beat_mult)
|
||||||
{
|
{
|
||||||
float fAccelTime = 0.2f, fTotalTime = 0.5f;
|
float fAccelTime = 0.2f, fTotalTime = 0.5f;
|
||||||
@@ -191,6 +222,36 @@ static void UpdateBeat(int dimension, PerPlayerData &data, const SongPosition &p
|
|||||||
data.m_fBeatFactor[dimension] *= 20.0f;
|
data.m_fBeatFactor[dimension] *= 20.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void UpdateTipsy(float * tipsy_result, float * tipsy_offset_result, float offset, float speed, bool is_tan)
|
||||||
|
{
|
||||||
|
const float time= ArrowEffects::GetTime();
|
||||||
|
const float time_times_timer= time * ((speed * TIPSY_TIMER_FREQUENCY) + TIPSY_TIMER_FREQUENCY);
|
||||||
|
const float arrow_times_mag= ARROW_SIZE * TIPSY_ARROW_MAGNITUDE;
|
||||||
|
const float time_times_offset_timer= time *
|
||||||
|
TIPSY_OFFSET_TIMER_FREQUENCY;
|
||||||
|
const float arrow_times_offset_mag= ARROW_SIZE *
|
||||||
|
TIPSY_OFFSET_ARROW_MAGNITUDE;
|
||||||
|
for(int col= 0; col < MAX_COLS_PER_PLAYER; ++col)
|
||||||
|
{
|
||||||
|
if (is_tan)
|
||||||
|
{
|
||||||
|
tipsy_result[col]= SelectTanType(time_times_timer + (col * ((offset *
|
||||||
|
TIPSY_COLUMN_FREQUENCY) + TIPSY_COLUMN_FREQUENCY)), curr_options->m_bCosecant)
|
||||||
|
* arrow_times_mag;
|
||||||
|
tipsy_offset_result[col]= SelectTanType(time_times_offset_timer + (col *
|
||||||
|
TIPSY_OFFSET_COLUMN_FREQUENCY), curr_options->m_bCosecant)
|
||||||
|
* arrow_times_offset_mag;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tipsy_result[col]= RageFastCos(time_times_timer + (col * ((offset *
|
||||||
|
TIPSY_COLUMN_FREQUENCY) + TIPSY_COLUMN_FREQUENCY))) * arrow_times_mag;
|
||||||
|
tipsy_offset_result[col]= RageFastCos(time_times_offset_timer + (col *
|
||||||
|
TIPSY_OFFSET_COLUMN_FREQUENCY)) * arrow_times_offset_mag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ArrowEffects::Init(PlayerNumber pn)
|
void ArrowEffects::Init(PlayerNumber pn)
|
||||||
{
|
{
|
||||||
@@ -274,6 +335,8 @@ void ArrowEffects::Update()
|
|||||||
{
|
{
|
||||||
data.m_fExpandSeconds += fTime - fLastTime;
|
data.m_fExpandSeconds += fTime - fLastTime;
|
||||||
data.m_fExpandSeconds = fmodf( data.m_fExpandSeconds, (PI*2)/(accels[PlayerOptions::ACCEL_EXPAND_PERIOD]+1) );
|
data.m_fExpandSeconds = fmodf( data.m_fExpandSeconds, (PI*2)/(accels[PlayerOptions::ACCEL_EXPAND_PERIOD]+1) );
|
||||||
|
data.m_fTanExpandSeconds += fTime - fLastTime;
|
||||||
|
data.m_fTanExpandSeconds = fmodf( data.m_fTanExpandSeconds, (PI*2)/(accels[PlayerOptions::ACCEL_TAN_EXPAND_PERIOD]+1) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Invert
|
// Update Invert
|
||||||
@@ -323,22 +386,9 @@ void ArrowEffects::Update()
|
|||||||
// Update Tipsy
|
// Update Tipsy
|
||||||
if(effects[PlayerOptions::EFFECT_TIPSY] != 0)
|
if(effects[PlayerOptions::EFFECT_TIPSY] != 0)
|
||||||
{
|
{
|
||||||
const float time= ArrowEffects::GetTime();
|
UpdateTipsy(data.m_tipsy_result, data.m_tipsy_offset_result,
|
||||||
const float time_times_timer= time * ((effects[PlayerOptions::EFFECT_TIPSY_SPEED] * TIPSY_TIMER_FREQUENCY) + TIPSY_TIMER_FREQUENCY);
|
effects[PlayerOptions::EFFECT_TIPSY_OFFSET],
|
||||||
const float arrow_times_mag= ARROW_SIZE * TIPSY_ARROW_MAGNITUDE;
|
effects[PlayerOptions::EFFECT_TIPSY_SPEED], false);
|
||||||
const float time_times_offset_timer= time *
|
|
||||||
TIPSY_OFFSET_TIMER_FREQUENCY;
|
|
||||||
const float arrow_times_offset_mag= ARROW_SIZE *
|
|
||||||
TIPSY_OFFSET_ARROW_MAGNITUDE;
|
|
||||||
for(int col= 0; col < MAX_COLS_PER_PLAYER; ++col)
|
|
||||||
{
|
|
||||||
data.m_tipsy_result[col]= RageFastCos(
|
|
||||||
time_times_timer + (col * ((effects[PlayerOptions::EFFECT_TIPSY_OFFSET] * TIPSY_COLUMN_FREQUENCY) + TIPSY_COLUMN_FREQUENCY))) *
|
|
||||||
arrow_times_mag;
|
|
||||||
data.m_tipsy_offset_result[col]= RageFastCos(
|
|
||||||
time_times_offset_timer + (col * TIPSY_OFFSET_COLUMN_FREQUENCY)) *
|
|
||||||
arrow_times_offset_mag;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -348,6 +398,21 @@ void ArrowEffects::Update()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update TanTipsy
|
||||||
|
if(effects[PlayerOptions::EFFECT_TAN_TIPSY] != 0)
|
||||||
|
{
|
||||||
|
UpdateTipsy(data.m_tan_tipsy_result, data.m_tan_tipsy_offset_result,
|
||||||
|
effects[PlayerOptions::EFFECT_TAN_TIPSY_OFFSET],
|
||||||
|
effects[PlayerOptions::EFFECT_TAN_TIPSY_SPEED], true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for(int col= 0; col < MAX_COLS_PER_PLAYER; ++col)
|
||||||
|
{
|
||||||
|
data.m_tan_tipsy_result[col]= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Update Beat
|
// Update Beat
|
||||||
UpdateBeat(dim_x, data, position, effects[PlayerOptions::EFFECT_BEAT_OFFSET], effects[PlayerOptions::EFFECT_BEAT_MULT]);
|
UpdateBeat(dim_x, data, position, effects[PlayerOptions::EFFECT_BEAT_OFFSET], effects[PlayerOptions::EFFECT_BEAT_MULT]);
|
||||||
|
|
||||||
@@ -453,6 +518,9 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float
|
|||||||
const float* fAccels = curr_options->m_fAccels;
|
const float* fAccels = curr_options->m_fAccels;
|
||||||
const float* fEffects = curr_options->m_fEffects;
|
const float* fEffects = curr_options->m_fEffects;
|
||||||
|
|
||||||
|
// TODO: Don't index by PlayerNumber.
|
||||||
|
PerPlayerData &data = g_EffectData[pPlayerState->m_PlayerNumber];
|
||||||
|
|
||||||
float fYAdjust = 0; // fill this in depending on PlayerOptions
|
float fYAdjust = 0; // fill this in depending on PlayerOptions
|
||||||
|
|
||||||
if( fAccels[PlayerOptions::ACCEL_BOOST] != 0 )
|
if( fAccels[PlayerOptions::ACCEL_BOOST] != 0 )
|
||||||
@@ -511,9 +579,6 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float
|
|||||||
|
|
||||||
if( fAccels[PlayerOptions::ACCEL_EXPAND] != 0 )
|
if( fAccels[PlayerOptions::ACCEL_EXPAND] != 0 )
|
||||||
{
|
{
|
||||||
// TODO: Don't index by PlayerNumber.
|
|
||||||
PerPlayerData &data = g_EffectData[pPlayerState->m_PlayerNumber];
|
|
||||||
|
|
||||||
float fExpandMultiplier = SCALE( RageFastCos(data.m_fExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY*(fAccels[PlayerOptions::ACCEL_EXPAND_PERIOD]+1)),
|
float fExpandMultiplier = SCALE( RageFastCos(data.m_fExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY*(fAccels[PlayerOptions::ACCEL_EXPAND_PERIOD]+1)),
|
||||||
EXPAND_MULTIPLIER_SCALE_FROM_LOW, EXPAND_MULTIPLIER_SCALE_FROM_HIGH,
|
EXPAND_MULTIPLIER_SCALE_FROM_LOW, EXPAND_MULTIPLIER_SCALE_FROM_HIGH,
|
||||||
EXPAND_MULTIPLIER_SCALE_TO_LOW, EXPAND_MULTIPLIER_SCALE_TO_HIGH );
|
EXPAND_MULTIPLIER_SCALE_TO_LOW, EXPAND_MULTIPLIER_SCALE_TO_HIGH );
|
||||||
@@ -522,6 +587,16 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float
|
|||||||
EXPAND_SPEED_SCALE_TO_LOW, fExpandMultiplier );
|
EXPAND_SPEED_SCALE_TO_LOW, fExpandMultiplier );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( fAccels[PlayerOptions::ACCEL_TAN_EXPAND] != 0 )
|
||||||
|
{
|
||||||
|
float fTanExpandMultiplier = SCALE( SelectTanType(data.m_fTanExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY*(fAccels[PlayerOptions::ACCEL_TAN_EXPAND_PERIOD]+1), curr_options->m_bCosecant),
|
||||||
|
EXPAND_MULTIPLIER_SCALE_FROM_LOW, EXPAND_MULTIPLIER_SCALE_FROM_HIGH,
|
||||||
|
EXPAND_MULTIPLIER_SCALE_TO_LOW, EXPAND_MULTIPLIER_SCALE_TO_HIGH );
|
||||||
|
fScrollSpeed *= SCALE( fAccels[PlayerOptions::ACCEL_TAN_EXPAND],
|
||||||
|
EXPAND_SPEED_SCALE_FROM_LOW, EXPAND_SPEED_SCALE_FROM_HIGH,
|
||||||
|
EXPAND_SPEED_SCALE_TO_LOW, fTanExpandMultiplier );
|
||||||
|
}
|
||||||
|
|
||||||
fYOffset *= fScrollSpeed;
|
fYOffset *= fScrollSpeed;
|
||||||
fPeakYOffsetOut *= fScrollSpeed;
|
fPeakYOffsetOut *= fScrollSpeed;
|
||||||
|
|
||||||
@@ -569,6 +644,7 @@ float ArrowEffects::GetYPos( const PlayerState* pPlayerState, int iCol, float fY
|
|||||||
// TODO: Don't index by PlayerNumber.
|
// TODO: Don't index by PlayerNumber.
|
||||||
PerPlayerData& data= g_EffectData[curr_options->m_pn];
|
PerPlayerData& data= g_EffectData[curr_options->m_pn];
|
||||||
f+= fEffects[PlayerOptions::EFFECT_TIPSY] * data.m_tipsy_result[iCol];
|
f+= fEffects[PlayerOptions::EFFECT_TIPSY] * data.m_tipsy_result[iCol];
|
||||||
|
f+= fEffects[PlayerOptions::EFFECT_TAN_TIPSY] * data.m_tan_tipsy_result[iCol];
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_ATTENUATE_Y] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_ATTENUATE_Y] != 0 )
|
||||||
{
|
{
|
||||||
@@ -600,6 +676,7 @@ float ArrowEffects::GetYOffsetFromYPos(int iCol, float YPos, float fYReverseOffs
|
|||||||
// TODO: Don't index by PlayerNumber.
|
// TODO: Don't index by PlayerNumber.
|
||||||
PerPlayerData& data= g_EffectData[curr_options->m_pn];
|
PerPlayerData& data= g_EffectData[curr_options->m_pn];
|
||||||
f+= fEffects[PlayerOptions::EFFECT_TIPSY] * data.m_tipsy_offset_result[iCol];
|
f+= fEffects[PlayerOptions::EFFECT_TIPSY] * data.m_tipsy_offset_result[iCol];
|
||||||
|
f+= fEffects[PlayerOptions::EFFECT_TAN_TIPSY] * data.m_tan_tipsy_offset_result[iCol];
|
||||||
|
|
||||||
f+= fEffects[PlayerOptions::EFFECT_PARABOLA_Y] * (YPos/ARROW_SIZE) * (YPos/ARROW_SIZE);
|
f+= fEffects[PlayerOptions::EFFECT_PARABOLA_Y] * (YPos/ARROW_SIZE) * (YPos/ARROW_SIZE);
|
||||||
|
|
||||||
@@ -630,16 +707,44 @@ float ArrowEffects::GetXPos( const PlayerState* pPlayerState, int iColNum, float
|
|||||||
iColNum, fEffects[PlayerOptions::EFFECT_TORNADO],
|
iColNum, fEffects[PlayerOptions::EFFECT_TORNADO],
|
||||||
fEffects[PlayerOptions::EFFECT_TORNADO_OFFSET],
|
fEffects[PlayerOptions::EFFECT_TORNADO_OFFSET],
|
||||||
fEffects[PlayerOptions::EFFECT_TORNADO_PERIOD],
|
fEffects[PlayerOptions::EFFECT_TORNADO_PERIOD],
|
||||||
pCols, pPlayerState->m_NotefieldZoom, data, fYOffset);
|
pCols, pPlayerState->m_NotefieldZoom, data, fYOffset, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_TAN_TORNADO] != 0 )
|
||||||
|
{
|
||||||
|
fPixelOffsetFromCenter += CalculateTornadoOffsetFromMagnitude(dim_x,
|
||||||
|
iColNum, fEffects[PlayerOptions::EFFECT_TAN_TORNADO],
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_TORNADO_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_TORNADO_PERIOD],
|
||||||
|
pCols, pPlayerState->m_NotefieldZoom, data, fYOffset, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_BUMPY_X] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_BUMPY_X] != 0 )
|
||||||
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_BUMPY_X] * 40*RageFastSin( (fYOffset+(100.0f*(fEffects[PlayerOptions::EFFECT_BUMPY_X_OFFSET])))/((fEffects[PlayerOptions::EFFECT_BUMPY_X_PERIOD]*16.0f)+16.0f) );
|
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_BUMPY_X] *
|
||||||
|
40*RageFastSin( CalculateBumpyAngle(fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_BUMPY_X_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_BUMPY_X_PERIOD]) );
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_TAN_BUMPY_X] != 0 )
|
||||||
|
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_TAN_BUMPY_X] *
|
||||||
|
40*SelectTanType( CalculateBumpyAngle(fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_BUMPY_X_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_BUMPY_X_PERIOD]), curr_options->m_bCosecant );
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_DRUNK] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_DRUNK] != 0 )
|
||||||
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_DRUNK] *
|
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_DRUNK] *
|
||||||
( RageFastCos( GetTime()*(1+fEffects[PlayerOptions::EFFECT_DRUNK_SPEED]) + iColNum*((fEffects[PlayerOptions::EFFECT_DRUNK_OFFSET]*DRUNK_COLUMN_FREQUENCY)+DRUNK_COLUMN_FREQUENCY)
|
( RageFastCos( CalculateDrunkAngle(fEffects[PlayerOptions::EFFECT_DRUNK_SPEED], iColNum,
|
||||||
+ fYOffset*((fEffects[PlayerOptions::EFFECT_DRUNK_PERIOD]*DRUNK_OFFSET_FREQUENCY)+DRUNK_OFFSET_FREQUENCY)/SCREEN_HEIGHT) * ARROW_SIZE*DRUNK_ARROW_MAGNITUDE );
|
fEffects[PlayerOptions::EFFECT_DRUNK_OFFSET], DRUNK_COLUMN_FREQUENCY,
|
||||||
|
fYOffset, fEffects[PlayerOptions::EFFECT_DRUNK_PERIOD],
|
||||||
|
DRUNK_OFFSET_FREQUENCY) ) * ARROW_SIZE*DRUNK_ARROW_MAGNITUDE );
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_TAN_DRUNK] != 0 )
|
||||||
|
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_TAN_DRUNK] *
|
||||||
|
( SelectTanType( CalculateDrunkAngle(fEffects[PlayerOptions::EFFECT_TAN_DRUNK_SPEED],
|
||||||
|
iColNum, fEffects[PlayerOptions::EFFECT_TAN_DRUNK_OFFSET],
|
||||||
|
DRUNK_COLUMN_FREQUENCY, fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_DRUNK_PERIOD], DRUNK_OFFSET_FREQUENCY)
|
||||||
|
, curr_options->m_bCosecant) * ARROW_SIZE*DRUNK_ARROW_MAGNITUDE );
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_FLIP] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_FLIP] != 0 )
|
||||||
{
|
{
|
||||||
@@ -685,8 +790,17 @@ float ArrowEffects::GetXPos( const PlayerState* pPlayerState, int iColNum, float
|
|||||||
if( fEffects[PlayerOptions::EFFECT_DIGITAL] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_DIGITAL] != 0 )
|
||||||
fPixelOffsetFromCenter += (fEffects[PlayerOptions::EFFECT_DIGITAL] * ARROW_SIZE * 0.5f) *
|
fPixelOffsetFromCenter += (fEffects[PlayerOptions::EFFECT_DIGITAL] * ARROW_SIZE * 0.5f) *
|
||||||
round((fEffects[PlayerOptions::EFFECT_DIGITAL_STEPS]+1) * RageFastSin(
|
round((fEffects[PlayerOptions::EFFECT_DIGITAL_STEPS]+1) * RageFastSin(
|
||||||
(PI * (fYOffset + (1.0f * (fEffects[PlayerOptions::EFFECT_DIGITAL_OFFSET]) ) ) /
|
CalculateDigitalAngle(fYOffset,
|
||||||
(ARROW_SIZE + (fEffects[PlayerOptions::EFFECT_DIGITAL_PERIOD] * ARROW_SIZE)) ) ) )/(fEffects[PlayerOptions::EFFECT_DIGITAL_STEPS]+1);
|
fEffects[PlayerOptions::EFFECT_DIGITAL_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_DIGITAL_PERIOD]) ) )/(fEffects[PlayerOptions::EFFECT_DIGITAL_STEPS]+1);
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_TAN_DIGITAL] != 0 )
|
||||||
|
fPixelOffsetFromCenter += (fEffects[PlayerOptions::EFFECT_TAN_DIGITAL] * ARROW_SIZE * 0.5f) *
|
||||||
|
round((fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_STEPS]+1) * SelectTanType(
|
||||||
|
CalculateDigitalAngle(fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_PERIOD]), curr_options->m_bCosecant ) )/(fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_STEPS]+1);
|
||||||
|
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_SQUARE] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_SQUARE] != 0 )
|
||||||
{
|
{
|
||||||
@@ -1073,14 +1187,35 @@ float ArrowEffects::GetZPos( const PlayerState* pPlayerState, int iCol, float fY
|
|||||||
fEffects[PlayerOptions::EFFECT_TORNADO_Z],
|
fEffects[PlayerOptions::EFFECT_TORNADO_Z],
|
||||||
fEffects[PlayerOptions::EFFECT_TORNADO_Z_OFFSET],
|
fEffects[PlayerOptions::EFFECT_TORNADO_Z_OFFSET],
|
||||||
fEffects[PlayerOptions::EFFECT_TORNADO_Z_PERIOD],
|
fEffects[PlayerOptions::EFFECT_TORNADO_Z_PERIOD],
|
||||||
pCols, pPlayerState->m_NotefieldZoom, data, fYOffset);
|
pCols, pPlayerState->m_NotefieldZoom, data, fYOffset, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_TAN_TORNADO_Z] != 0 )
|
||||||
|
{
|
||||||
|
fZPos += CalculateTornadoOffsetFromMagnitude(dim_z, iCol,
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_TORNADO_Z],
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_TORNADO_Z_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_TORNADO_Z_PERIOD],
|
||||||
|
pCols, pPlayerState->m_NotefieldZoom, data, fYOffset, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_BUMPY] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_BUMPY] != 0 )
|
||||||
fZPos += fEffects[PlayerOptions::EFFECT_BUMPY] * 40*RageFastSin( (fYOffset+(100.0f*fEffects[PlayerOptions::EFFECT_BUMPY_OFFSET]) )/((fEffects[PlayerOptions::EFFECT_BUMPY_PERIOD]*16.0f)+16.0f) );
|
fZPos += fEffects[PlayerOptions::EFFECT_BUMPY] * 40*RageFastSin(
|
||||||
|
CalculateBumpyAngle(fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_BUMPY_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_BUMPY_PERIOD]) );
|
||||||
|
|
||||||
if( curr_options->m_fBumpy[iCol] != 0 )
|
if( curr_options->m_fBumpy[iCol] != 0 )
|
||||||
fZPos += curr_options->m_fBumpy[iCol] * 40*RageFastSin( (fYOffset+(100.0f*(fEffects[PlayerOptions::EFFECT_BUMPY_OFFSET])))/((fEffects[PlayerOptions::EFFECT_BUMPY_PERIOD]*16.0f)+16.0f) );
|
fZPos += curr_options->m_fBumpy[iCol] * 40*RageFastSin(
|
||||||
|
CalculateBumpyAngle(fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_BUMPY_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_BUMPY_PERIOD]) );
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_TAN_BUMPY] != 0 )
|
||||||
|
fZPos += fEffects[PlayerOptions::EFFECT_TAN_BUMPY] * 40*SelectTanType(
|
||||||
|
CalculateBumpyAngle(fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_BUMPY_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_BUMPY_PERIOD]), curr_options->m_bCosecant );
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_ZIGZAG_Z] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_ZIGZAG_Z] != 0 )
|
||||||
{
|
{
|
||||||
@@ -1106,8 +1241,19 @@ float ArrowEffects::GetZPos( const PlayerState* pPlayerState, int iCol, float fY
|
|||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_DRUNK_Z] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_DRUNK_Z] != 0 )
|
||||||
fZPos += fEffects[PlayerOptions::EFFECT_DRUNK_Z] *
|
fZPos += fEffects[PlayerOptions::EFFECT_DRUNK_Z] *
|
||||||
( RageFastCos( GetTime()*(1+fEffects[PlayerOptions::EFFECT_DRUNK_Z_SPEED]) + iCol*((fEffects[PlayerOptions::EFFECT_DRUNK_Z_OFFSET]*DRUNK_Z_COLUMN_FREQUENCY)+DRUNK_Z_COLUMN_FREQUENCY)
|
( RageFastCos( CalculateDrunkAngle(fEffects[PlayerOptions::EFFECT_DRUNK_Z_SPEED], iCol,
|
||||||
+ fYOffset*((fEffects[PlayerOptions::EFFECT_DRUNK_Z_PERIOD]*DRUNK_Z_OFFSET_FREQUENCY)+DRUNK_Z_OFFSET_FREQUENCY)/SCREEN_HEIGHT) * ARROW_SIZE*DRUNK_Z_ARROW_MAGNITUDE );
|
fEffects[PlayerOptions::EFFECT_DRUNK_Z_OFFSET], DRUNK_Z_COLUMN_FREQUENCY,
|
||||||
|
fYOffset, fEffects[PlayerOptions::EFFECT_DRUNK_Z_PERIOD],
|
||||||
|
DRUNK_Z_OFFSET_FREQUENCY) ) * ARROW_SIZE*DRUNK_Z_ARROW_MAGNITUDE );
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_TAN_DRUNK_Z] != 0 )
|
||||||
|
fZPos += fEffects[PlayerOptions::EFFECT_TAN_DRUNK_Z] *
|
||||||
|
( SelectTanType( CalculateDrunkAngle(fEffects[PlayerOptions::EFFECT_TAN_DRUNK_Z_SPEED],
|
||||||
|
iCol, fEffects[PlayerOptions::EFFECT_TAN_DRUNK_Z_OFFSET],
|
||||||
|
DRUNK_Z_COLUMN_FREQUENCY, fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_DRUNK_Z_PERIOD],
|
||||||
|
DRUNK_Z_OFFSET_FREQUENCY)
|
||||||
|
, curr_options->m_bCosecant) * ARROW_SIZE*DRUNK_Z_ARROW_MAGNITUDE );
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_BEAT_Z] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_BEAT_Z] != 0 )
|
||||||
{
|
{
|
||||||
@@ -1118,8 +1264,17 @@ float ArrowEffects::GetZPos( const PlayerState* pPlayerState, int iCol, float fY
|
|||||||
if( fEffects[PlayerOptions::EFFECT_DIGITAL_Z] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_DIGITAL_Z] != 0 )
|
||||||
fZPos += (fEffects[PlayerOptions::EFFECT_DIGITAL_Z] * ARROW_SIZE * 0.5f) *
|
fZPos += (fEffects[PlayerOptions::EFFECT_DIGITAL_Z] * ARROW_SIZE * 0.5f) *
|
||||||
round((fEffects[PlayerOptions::EFFECT_DIGITAL_Z_STEPS]+1) * RageFastSin(
|
round((fEffects[PlayerOptions::EFFECT_DIGITAL_Z_STEPS]+1) * RageFastSin(
|
||||||
(PI * (fYOffset + (1.0f * (fEffects[PlayerOptions::EFFECT_DIGITAL_Z_OFFSET]) ) ) /
|
CalculateDigitalAngle(fYOffset,
|
||||||
(ARROW_SIZE + (fEffects[PlayerOptions::EFFECT_DIGITAL_Z_PERIOD] * ARROW_SIZE)) )))/(fEffects[PlayerOptions::EFFECT_DIGITAL_Z_STEPS]+1);
|
fEffects[PlayerOptions::EFFECT_DIGITAL_Z_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_DIGITAL_Z_PERIOD]) ) ) /(fEffects[PlayerOptions::EFFECT_DIGITAL_Z_STEPS]+1);
|
||||||
|
|
||||||
|
if( fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_Z] != 0 )
|
||||||
|
fZPos += (fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_Z] * ARROW_SIZE * 0.5f) *
|
||||||
|
round((fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_Z_STEPS]+1) * SelectTanType(
|
||||||
|
CalculateDigitalAngle(fYOffset,
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_Z_OFFSET],
|
||||||
|
fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_Z_PERIOD]), curr_options->m_bCosecant ) ) /(fEffects[PlayerOptions::EFFECT_TAN_DIGITAL_Z_STEPS]+1);
|
||||||
|
|
||||||
|
|
||||||
if( fEffects[PlayerOptions::EFFECT_SQUARE_Z] != 0 )
|
if( fEffects[PlayerOptions::EFFECT_SQUARE_Z] != 0 )
|
||||||
{
|
{
|
||||||
|
|||||||
+142
-1
@@ -94,6 +94,7 @@ void PlayerOptions::Init()
|
|||||||
m_bStealthPastReceptors = false;
|
m_bStealthPastReceptors = false;
|
||||||
m_bDizzyHolds = false;
|
m_bDizzyHolds = false;
|
||||||
m_bZBuffer = false;
|
m_bZBuffer = false;
|
||||||
|
m_bCosecant = false;
|
||||||
m_sNoteSkin = "";
|
m_sNoteSkin = "";
|
||||||
ZERO( m_fMovesX ); ONE( m_SpeedfMovesX );
|
ZERO( m_fMovesX ); ONE( m_SpeedfMovesX );
|
||||||
ZERO( m_fMovesY ); ONE( m_SpeedfMovesY );
|
ZERO( m_fMovesY ); ONE( m_SpeedfMovesY );
|
||||||
@@ -179,6 +180,7 @@ void PlayerOptions::Approach( const PlayerOptions& other, float fDeltaSeconds )
|
|||||||
DO_COPY( m_bStealthPastReceptors );
|
DO_COPY( m_bStealthPastReceptors );
|
||||||
DO_COPY( m_bDizzyHolds );
|
DO_COPY( m_bDizzyHolds );
|
||||||
DO_COPY( m_bZBuffer );
|
DO_COPY( m_bZBuffer );
|
||||||
|
DO_COPY( m_bCosecant );
|
||||||
DO_COPY( m_FailType );
|
DO_COPY( m_FailType );
|
||||||
DO_COPY( m_MinTNSToHideNotes );
|
DO_COPY( m_MinTNSToHideNotes );
|
||||||
DO_COPY( m_sNoteSkin );
|
DO_COPY( m_sNoteSkin );
|
||||||
@@ -286,16 +288,26 @@ void PlayerOptions::GetMods( vector<RString> &AddTo, bool bForceNoteSkin ) const
|
|||||||
AddPart( AddTo, m_fAccels[ACCEL_WAVE_PERIOD], "WavePeriod" );
|
AddPart( AddTo, m_fAccels[ACCEL_WAVE_PERIOD], "WavePeriod" );
|
||||||
AddPart( AddTo, m_fAccels[ACCEL_EXPAND], "Expand" );
|
AddPart( AddTo, m_fAccels[ACCEL_EXPAND], "Expand" );
|
||||||
AddPart( AddTo, m_fAccels[ACCEL_EXPAND_PERIOD], "ExpandPeriod" );
|
AddPart( AddTo, m_fAccels[ACCEL_EXPAND_PERIOD], "ExpandPeriod" );
|
||||||
|
AddPart( AddTo, m_fAccels[ACCEL_TAN_EXPAND], "TanExpand" );
|
||||||
|
AddPart( AddTo, m_fAccels[ACCEL_TAN_EXPAND_PERIOD], "TanExpandPeriod" );
|
||||||
AddPart( AddTo, m_fAccels[ACCEL_BOOMERANG], "Boomerang" );
|
AddPart( AddTo, m_fAccels[ACCEL_BOOMERANG], "Boomerang" );
|
||||||
|
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DRUNK], "Drunk" );
|
AddPart( AddTo, m_fEffects[EFFECT_DRUNK], "Drunk" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_SPEED], "DrunkSpeed" );
|
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_SPEED], "DrunkSpeed" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_OFFSET], "DrunkOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_OFFSET], "DrunkOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_PERIOD], "DrunkPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_PERIOD], "DrunkPeriod" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DRUNK], "TanDrunk" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DRUNK_SPEED], "TanDrunkSpeed" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DRUNK_OFFSET], "TanDrunkOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DRUNK_PERIOD], "TanDrunkPeriod" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_Z], "DrunkZ" );
|
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_Z], "DrunkZ" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_Z_SPEED], "DrunkZSpeed" );
|
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_Z_SPEED], "DrunkZSpeed" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_Z_OFFSET], "DrunkZOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_Z_OFFSET], "DrunkZOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_Z_PERIOD], "DrunkZPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_DRUNK_Z_PERIOD], "DrunkZPeriod" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DRUNK_Z], "TanDrunkZ" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DRUNK_Z_SPEED], "TanDrunkZSpeed" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DRUNK_Z_OFFSET], "TanDrunkZOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DRUNK_Z_PERIOD], "TanDrunkZPeriod" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_SHRINK_TO_LINEAR], "ShrinkLinear" );
|
AddPart( AddTo, m_fEffects[EFFECT_SHRINK_TO_LINEAR], "ShrinkLinear" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_SHRINK_TO_MULT], "ShrinkMult" );
|
AddPart( AddTo, m_fEffects[EFFECT_SHRINK_TO_MULT], "ShrinkMult" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_PULSE_INNER], "PulseInner" );
|
AddPart( AddTo, m_fEffects[EFFECT_PULSE_INNER], "PulseInner" );
|
||||||
@@ -325,18 +337,33 @@ void PlayerOptions::GetMods( vector<RString> &AddTo, bool bForceNoteSkin ) const
|
|||||||
AddPart( AddTo, m_fEffects[EFFECT_TORNADO], "Tornado" );
|
AddPart( AddTo, m_fEffects[EFFECT_TORNADO], "Tornado" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_PERIOD], "TornadoPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_PERIOD], "TornadoPeriod" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_OFFSET], "TornadoOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_OFFSET], "TornadoOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TORNADO], "TanTornado" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TORNADO_PERIOD], "TanTornadoPeriod" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TORNADO_OFFSET], "TanTornadoOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_Z], "TornadoZ" );
|
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_Z], "TornadoZ" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_Z_PERIOD], "TornadoZPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_Z_PERIOD], "TornadoZPeriod" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_Z_OFFSET], "TornadoZOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_TORNADO_Z_OFFSET], "TornadoZOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TORNADO_Z], "TanTornadoZ" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TORNADO_Z_PERIOD],"TanTornadoZPeriod" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TORNADO_Z_OFFSET],"TanTornadoZOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_TIPSY], "Tipsy" );
|
AddPart( AddTo, m_fEffects[EFFECT_TIPSY], "Tipsy" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_TIPSY_SPEED], "TipsySpeed" );
|
AddPart( AddTo, m_fEffects[EFFECT_TIPSY_SPEED], "TipsySpeed" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_TIPSY_OFFSET], "TipsyOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_TIPSY_OFFSET], "TipsyOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TIPSY], "TanTipsy" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TIPSY_SPEED], "TanTipsySpeed" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_TIPSY_OFFSET], "TanTipsyOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BUMPY], "Bumpy" );
|
AddPart( AddTo, m_fEffects[EFFECT_BUMPY], "Bumpy" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_OFFSET], "BumpyOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_OFFSET], "BumpyOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_PERIOD], "BumpyPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_PERIOD], "BumpyPeriod" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_BUMPY], "TanBumpy" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_BUMPY_OFFSET], "TanBumpyOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_BUMPY_PERIOD], "TanBumpyPeriod" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_X], "BumpyX" );
|
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_X], "BumpyX" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_X_OFFSET], "BumpyXOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_X_OFFSET], "BumpyXOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_X_PERIOD], "BumpyXPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_BUMPY_X_PERIOD], "BumpyXPeriod" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_BUMPY_X], "TanBumpyX" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_BUMPY_X_OFFSET], "TanBumpyXOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_BUMPY_X_PERIOD], "TanBumpyXPeriod" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BEAT], "Beat" );
|
AddPart( AddTo, m_fEffects[EFFECT_BEAT], "Beat" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BEAT_OFFSET], "BeatOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_BEAT_OFFSET], "BeatOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_BEAT_PERIOD], "BeatPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_BEAT_PERIOD], "BeatPeriod" );
|
||||||
@@ -369,10 +396,18 @@ void PlayerOptions::GetMods( vector<RString> &AddTo, bool bForceNoteSkin ) const
|
|||||||
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_STEPS], "DigitalSteps" );
|
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_STEPS], "DigitalSteps" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_PERIOD], "DigitalPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_PERIOD], "DigitalPeriod" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_OFFSET], "DigitalOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_OFFSET], "DigitalOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DIGITAL], "TanDigital" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DIGITAL_STEPS], "TanDigitalSteps" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DIGITAL_PERIOD], "TanDigitalPeriod" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DIGITAL_OFFSET], "TanDigitalOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_Z], "DigitalZ" );
|
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_Z], "DigitalZ" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_Z_STEPS], "DigitalZSteps" );
|
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_Z_STEPS], "DigitalZSteps" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_Z_PERIOD], "DigitalZPeriod" );
|
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_Z_PERIOD], "DigitalZPeriod" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_Z_OFFSET], "DigitalZOffset" );
|
AddPart( AddTo, m_fEffects[EFFECT_DIGITAL_Z_OFFSET], "DigitalZOffset" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DIGITAL_Z], "TanDigitalZ" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DIGITAL_Z_STEPS], "TanDigitalZSteps" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DIGITAL_Z_PERIOD],"TanDigitalZPeriod" );
|
||||||
|
AddPart( AddTo, m_fEffects[EFFECT_TAN_DIGITAL_Z_OFFSET],"TanDigitalZOffset" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_PARABOLA_X], "ParabolaX" );
|
AddPart( AddTo, m_fEffects[EFFECT_PARABOLA_X], "ParabolaX" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_PARABOLA_Y], "ParabolaY" );
|
AddPart( AddTo, m_fEffects[EFFECT_PARABOLA_Y], "ParabolaY" );
|
||||||
AddPart( AddTo, m_fEffects[EFFECT_PARABOLA_Z], "ParabolaZ" );
|
AddPart( AddTo, m_fEffects[EFFECT_PARABOLA_Z], "ParabolaZ" );
|
||||||
@@ -383,6 +418,7 @@ void PlayerOptions::GetMods( vector<RString> &AddTo, bool bForceNoteSkin ) const
|
|||||||
AddPart( AddTo, m_bStealthPastReceptors, "StealthPastReceptors");
|
AddPart( AddTo, m_bStealthPastReceptors, "StealthPastReceptors");
|
||||||
AddPart( AddTo, m_bDizzyHolds, "DizzyHolds");
|
AddPart( AddTo, m_bDizzyHolds, "DizzyHolds");
|
||||||
AddPart( AddTo, m_bZBuffer, "ZBuffer");
|
AddPart( AddTo, m_bZBuffer, "ZBuffer");
|
||||||
|
AddPart( AddTo, m_bCosecant, "Cosecant");
|
||||||
|
|
||||||
for( int i=0; i<16; i++)
|
for( int i=0; i<16; i++)
|
||||||
{
|
{
|
||||||
@@ -676,6 +712,8 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut
|
|||||||
{
|
{
|
||||||
if( sBit == "expand" || sBit == "dwiwave" ) SET_FLOAT( fAccels[ACCEL_EXPAND] )
|
if( sBit == "expand" || sBit == "dwiwave" ) SET_FLOAT( fAccels[ACCEL_EXPAND] )
|
||||||
else if( sBit == "expandperiod" ) SET_FLOAT( fAccels[ACCEL_EXPAND_PERIOD] )
|
else if( sBit == "expandperiod" ) SET_FLOAT( fAccels[ACCEL_EXPAND_PERIOD] )
|
||||||
|
else if( sBit == "tanexpand" ) SET_FLOAT( fAccels[ACCEL_TAN_EXPAND] )
|
||||||
|
else if( sBit == "tanexpandperiod" ) SET_FLOAT( fAccels[ACCEL_TAN_EXPAND_PERIOD] )
|
||||||
}
|
}
|
||||||
else if( sBit == "boomerang" ) SET_FLOAT( fAccels[ACCEL_BOOMERANG] )
|
else if( sBit == "boomerang" ) SET_FLOAT( fAccels[ACCEL_BOOMERANG] )
|
||||||
else if( sBit.find("drunk") != sBit.npos)
|
else if( sBit.find("drunk") != sBit.npos)
|
||||||
@@ -684,10 +722,18 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut
|
|||||||
else if( sBit == "drunkspeed" ) SET_FLOAT( fEffects[EFFECT_DRUNK_SPEED] )
|
else if( sBit == "drunkspeed" ) SET_FLOAT( fEffects[EFFECT_DRUNK_SPEED] )
|
||||||
else if( sBit == "drunkoffset" ) SET_FLOAT( fEffects[EFFECT_DRUNK_OFFSET] )
|
else if( sBit == "drunkoffset" ) SET_FLOAT( fEffects[EFFECT_DRUNK_OFFSET] )
|
||||||
else if( sBit == "drunkperiod" ) SET_FLOAT( fEffects[EFFECT_DRUNK_PERIOD] )
|
else if( sBit == "drunkperiod" ) SET_FLOAT( fEffects[EFFECT_DRUNK_PERIOD] )
|
||||||
|
else if( sBit == "tandrunk" ) SET_FLOAT( fEffects[EFFECT_TAN_DRUNK] )
|
||||||
|
else if( sBit == "tandrunkspeed" ) SET_FLOAT( fEffects[EFFECT_TAN_DRUNK_SPEED] )
|
||||||
|
else if( sBit == "tandrunkoffset" ) SET_FLOAT( fEffects[EFFECT_TAN_DRUNK_OFFSET] )
|
||||||
|
else if( sBit == "tandrunkperiod" ) SET_FLOAT( fEffects[EFFECT_TAN_DRUNK_PERIOD] )
|
||||||
else if( sBit == "drunkz" ) SET_FLOAT( fEffects[EFFECT_DRUNK_Z] )
|
else if( sBit == "drunkz" ) SET_FLOAT( fEffects[EFFECT_DRUNK_Z] )
|
||||||
else if( sBit == "drunkzspeed" ) SET_FLOAT( fEffects[EFFECT_DRUNK_Z_SPEED] )
|
else if( sBit == "drunkzspeed" ) SET_FLOAT( fEffects[EFFECT_DRUNK_Z_SPEED] )
|
||||||
else if( sBit == "drunkzoffset" ) SET_FLOAT( fEffects[EFFECT_DRUNK_Z_OFFSET] )
|
else if( sBit == "drunkzoffset" ) SET_FLOAT( fEffects[EFFECT_DRUNK_Z_OFFSET] )
|
||||||
else if( sBit == "drunkzperiod" ) SET_FLOAT( fEffects[EFFECT_DRUNK_Z_PERIOD] )
|
else if( sBit == "drunkzperiod" ) SET_FLOAT( fEffects[EFFECT_DRUNK_Z_PERIOD] )
|
||||||
|
else if( sBit == "tandrunkz" ) SET_FLOAT( fEffects[EFFECT_TAN_DRUNK_Z] )
|
||||||
|
else if( sBit == "tandrunkzspeed" ) SET_FLOAT( fEffects[EFFECT_TAN_DRUNK_Z_SPEED] )
|
||||||
|
else if( sBit == "tandrunkzoffset" ) SET_FLOAT( fEffects[EFFECT_TAN_DRUNK_Z_OFFSET] )
|
||||||
|
else if( sBit == "tandrunkzperiod" ) SET_FLOAT( fEffects[EFFECT_TAN_DRUNK_Z_PERIOD] )
|
||||||
}
|
}
|
||||||
else if( sBit.find("shrink") != sBit.npos)
|
else if( sBit.find("shrink") != sBit.npos)
|
||||||
{
|
{
|
||||||
@@ -790,24 +836,39 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut
|
|||||||
if( sBit == "tornado" ) SET_FLOAT( fEffects[EFFECT_TORNADO] )
|
if( sBit == "tornado" ) SET_FLOAT( fEffects[EFFECT_TORNADO] )
|
||||||
else if( sBit == "tornadoperiod" ) SET_FLOAT( fEffects[EFFECT_TORNADO_PERIOD] )
|
else if( sBit == "tornadoperiod" ) SET_FLOAT( fEffects[EFFECT_TORNADO_PERIOD] )
|
||||||
else if( sBit == "tornadooffset" ) SET_FLOAT( fEffects[EFFECT_TORNADO_OFFSET] )
|
else if( sBit == "tornadooffset" ) SET_FLOAT( fEffects[EFFECT_TORNADO_OFFSET] )
|
||||||
|
else if( sBit == "tantornado" ) SET_FLOAT( fEffects[EFFECT_TAN_TORNADO] )
|
||||||
|
else if( sBit == "tantornadoperiod" ) SET_FLOAT( fEffects[EFFECT_TAN_TORNADO_PERIOD] )
|
||||||
|
else if( sBit == "tantornadooffset" ) SET_FLOAT( fEffects[EFFECT_TAN_TORNADO_OFFSET] )
|
||||||
else if( sBit == "tornadoz" ) SET_FLOAT( fEffects[EFFECT_TORNADO_Z] )
|
else if( sBit == "tornadoz" ) SET_FLOAT( fEffects[EFFECT_TORNADO_Z] )
|
||||||
else if( sBit == "tornadozperiod" ) SET_FLOAT( fEffects[EFFECT_TORNADO_Z_PERIOD] )
|
else if( sBit == "tornadozperiod" ) SET_FLOAT( fEffects[EFFECT_TORNADO_Z_PERIOD] )
|
||||||
else if( sBit == "tornadozoffset" ) SET_FLOAT( fEffects[EFFECT_TORNADO_Z_OFFSET] )
|
else if( sBit == "tornadozoffset" ) SET_FLOAT( fEffects[EFFECT_TORNADO_Z_OFFSET] )
|
||||||
|
else if( sBit == "tantornadoz" ) SET_FLOAT( fEffects[EFFECT_TAN_TORNADO_Z] )
|
||||||
|
else if( sBit == "tantornadozperiod" ) SET_FLOAT( fEffects[EFFECT_TAN_TORNADO_Z_PERIOD] )
|
||||||
|
else if( sBit == "tantornadozoffset" ) SET_FLOAT( fEffects[EFFECT_TAN_TORNADO_Z_OFFSET] )
|
||||||
}
|
}
|
||||||
else if( sBit.find("tipsy") != sBit.npos)
|
else if( sBit.find("tipsy") != sBit.npos)
|
||||||
{
|
{
|
||||||
if( sBit == "tipsy" ) SET_FLOAT( fEffects[EFFECT_TIPSY] )
|
if( sBit == "tipsy" ) SET_FLOAT( fEffects[EFFECT_TIPSY] )
|
||||||
else if( sBit == "tipsyspeed" ) SET_FLOAT( fEffects[EFFECT_TIPSY_SPEED] )
|
else if( sBit == "tipsyspeed" ) SET_FLOAT( fEffects[EFFECT_TIPSY_SPEED] )
|
||||||
else if( sBit == "tipsyoffset" ) SET_FLOAT( fEffects[EFFECT_TIPSY_OFFSET] )
|
else if( sBit == "tipsyoffset" ) SET_FLOAT( fEffects[EFFECT_TIPSY_OFFSET] )
|
||||||
|
else if( sBit == "tantipsy" ) SET_FLOAT( fEffects[EFFECT_TAN_TIPSY] )
|
||||||
|
else if( sBit == "tantipsyspeed" ) SET_FLOAT( fEffects[EFFECT_TAN_TIPSY_SPEED] )
|
||||||
|
else if( sBit == "tantipsyoffset" ) SET_FLOAT( fEffects[EFFECT_TAN_TIPSY_OFFSET] )
|
||||||
}
|
}
|
||||||
else if( sBit.find("bumpy") != sBit.npos)
|
else if( sBit.find("bumpy") != sBit.npos)
|
||||||
{
|
{
|
||||||
if( sBit == "bumpy" ) SET_FLOAT( fEffects[EFFECT_BUMPY] )
|
if( sBit == "bumpy" ) SET_FLOAT( fEffects[EFFECT_BUMPY] )
|
||||||
else if( sBit == "bumpyoffset" ) SET_FLOAT( fEffects[EFFECT_BUMPY_OFFSET] )
|
else if( sBit == "bumpyoffset" ) SET_FLOAT( fEffects[EFFECT_BUMPY_OFFSET] )
|
||||||
else if( sBit == "bumpyperiod" ) SET_FLOAT( fEffects[EFFECT_BUMPY_PERIOD] )
|
else if( sBit == "bumpyperiod" ) SET_FLOAT( fEffects[EFFECT_BUMPY_PERIOD] )
|
||||||
|
else if( sBit == "tanbumpy" ) SET_FLOAT( fEffects[EFFECT_TAN_BUMPY] )
|
||||||
|
else if( sBit == "tanbumpyoffset" ) SET_FLOAT( fEffects[EFFECT_TAN_BUMPY_OFFSET] )
|
||||||
|
else if( sBit == "tanbumpyperiod" ) SET_FLOAT( fEffects[EFFECT_TAN_BUMPY_PERIOD] )
|
||||||
else if( sBit == "bumpyx" ) SET_FLOAT( fEffects[EFFECT_BUMPY_X] )
|
else if( sBit == "bumpyx" ) SET_FLOAT( fEffects[EFFECT_BUMPY_X] )
|
||||||
else if( sBit == "bumpyxoffset" ) SET_FLOAT( fEffects[EFFECT_BUMPY_X_OFFSET] )
|
else if( sBit == "bumpyxoffset" ) SET_FLOAT( fEffects[EFFECT_BUMPY_X_OFFSET] )
|
||||||
else if( sBit == "bumpyxperiod" ) SET_FLOAT( fEffects[EFFECT_BUMPY_X_PERIOD] )
|
else if( sBit == "bumpyxperiod" ) SET_FLOAT( fEffects[EFFECT_BUMPY_X_PERIOD] )
|
||||||
|
else if( sBit == "tanbumpyx" ) SET_FLOAT( fEffects[EFFECT_TAN_BUMPY_X] )
|
||||||
|
else if( sBit == "tanbumpyxoffset" ) SET_FLOAT( fEffects[EFFECT_TAN_BUMPY_X_OFFSET] )
|
||||||
|
else if( sBit == "tanbumpyxperiod" ) SET_FLOAT( fEffects[EFFECT_TAN_BUMPY_X_PERIOD] )
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (int i=0; i<16; i++)
|
for (int i=0; i<16; i++)
|
||||||
@@ -842,10 +903,18 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut
|
|||||||
else if( sBit == "digitalsteps" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_STEPS] )
|
else if( sBit == "digitalsteps" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_STEPS] )
|
||||||
else if( sBit == "digitalperiod" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_PERIOD] )
|
else if( sBit == "digitalperiod" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_PERIOD] )
|
||||||
else if( sBit == "digitaloffset" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_OFFSET] )
|
else if( sBit == "digitaloffset" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_OFFSET] )
|
||||||
|
else if( sBit == "tandigital" ) SET_FLOAT( fEffects[EFFECT_TAN_DIGITAL] )
|
||||||
|
else if( sBit == "tandigitalsteps" ) SET_FLOAT( fEffects[EFFECT_TAN_DIGITAL_STEPS] )
|
||||||
|
else if( sBit == "tandigitalperiod" ) SET_FLOAT( fEffects[EFFECT_TAN_DIGITAL_PERIOD] )
|
||||||
|
else if( sBit == "tandigitaloffset" ) SET_FLOAT( fEffects[EFFECT_TAN_DIGITAL_OFFSET] )
|
||||||
else if( sBit == "digitalz" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_Z] )
|
else if( sBit == "digitalz" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_Z] )
|
||||||
else if( sBit == "digitalzsteps" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_Z_STEPS] )
|
else if( sBit == "digitalzsteps" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_Z_STEPS] )
|
||||||
else if( sBit == "digitalzperiod" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_Z_PERIOD] )
|
else if( sBit == "digitalzperiod" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_Z_PERIOD] )
|
||||||
else if( sBit == "digitalzoffset" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_Z_OFFSET] )
|
else if( sBit == "digitalzoffset" ) SET_FLOAT( fEffects[EFFECT_DIGITAL_Z_OFFSET] )
|
||||||
|
else if( sBit == "tandigitalz" ) SET_FLOAT( fEffects[EFFECT_TAN_DIGITAL_Z] )
|
||||||
|
else if( sBit == "tandigitalzsteps" ) SET_FLOAT( fEffects[EFFECT_TAN_DIGITAL_Z_STEPS] )
|
||||||
|
else if( sBit == "tandigitalzperiod" ) SET_FLOAT( fEffects[EFFECT_TAN_DIGITAL_Z_PERIOD] )
|
||||||
|
else if( sBit == "tandigitalzoffset" ) SET_FLOAT( fEffects[EFFECT_TAN_DIGITAL_Z_OFFSET] )
|
||||||
}
|
}
|
||||||
else if( sBit.find("zigzag") != sBit.npos)
|
else if( sBit.find("zigzag") != sBit.npos)
|
||||||
{
|
{
|
||||||
@@ -1055,6 +1124,7 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( sBit == "zbuffer" ) m_bZBuffer = on;
|
else if( sBit == "zbuffer" ) m_bZBuffer = on;
|
||||||
|
else if( sBit == "cosecant" ) m_bCosecant = on;
|
||||||
// deprecated mods/left in for compatibility
|
// deprecated mods/left in for compatibility
|
||||||
else if( sBit == "converge" ) SET_FLOAT( fScrolls[SCROLL_CENTERED] )
|
else if( sBit == "converge" ) SET_FLOAT( fScrolls[SCROLL_CENTERED] )
|
||||||
// end of the list
|
// end of the list
|
||||||
@@ -1290,6 +1360,7 @@ bool PlayerOptions::operator==( const PlayerOptions &other ) const
|
|||||||
COMPARE(m_bStealthPastReceptors);
|
COMPARE(m_bStealthPastReceptors);
|
||||||
COMPARE(m_bDizzyHolds);
|
COMPARE(m_bDizzyHolds);
|
||||||
COMPARE(m_bZBuffer);
|
COMPARE(m_bZBuffer);
|
||||||
|
COMPARE(m_bCosecant);
|
||||||
COMPARE(m_fDark);
|
COMPARE(m_fDark);
|
||||||
COMPARE(m_fBlind);
|
COMPARE(m_fBlind);
|
||||||
COMPARE(m_fCover);
|
COMPARE(m_fCover);
|
||||||
@@ -1370,6 +1441,7 @@ PlayerOptions& PlayerOptions::operator=(PlayerOptions const& other)
|
|||||||
CPY(m_bStealthPastReceptors);
|
CPY(m_bStealthPastReceptors);
|
||||||
CPY(m_bDizzyHolds);
|
CPY(m_bDizzyHolds);
|
||||||
CPY(m_bZBuffer);
|
CPY(m_bZBuffer);
|
||||||
|
CPY(m_bCosecant);
|
||||||
CPY_SPEED(fDark);
|
CPY_SPEED(fDark);
|
||||||
CPY_SPEED(fBlind);
|
CPY_SPEED(fBlind);
|
||||||
CPY_SPEED(fCover);
|
CPY_SPEED(fCover);
|
||||||
@@ -1638,6 +1710,7 @@ void PlayerOptions::ResetPrefs( ResetPrefsType type )
|
|||||||
CPY(m_bStealthPastReceptors);
|
CPY(m_bStealthPastReceptors);
|
||||||
CPY(m_bDizzyHolds);
|
CPY(m_bDizzyHolds);
|
||||||
CPY(m_bZBuffer);
|
CPY(m_bZBuffer);
|
||||||
|
CPY(m_bCosecant);
|
||||||
CPY(m_MinTNSToHideNotes);
|
CPY(m_MinTNSToHideNotes);
|
||||||
|
|
||||||
CPY( m_fPerspectiveTilt );
|
CPY( m_fPerspectiveTilt );
|
||||||
@@ -1700,15 +1773,25 @@ public:
|
|||||||
FLOAT_INTERFACE(WavePeriod, Accels[PlayerOptions::ACCEL_WAVE_PERIOD], true);
|
FLOAT_INTERFACE(WavePeriod, Accels[PlayerOptions::ACCEL_WAVE_PERIOD], true);
|
||||||
FLOAT_INTERFACE(Expand, Accels[PlayerOptions::ACCEL_EXPAND], true);
|
FLOAT_INTERFACE(Expand, Accels[PlayerOptions::ACCEL_EXPAND], true);
|
||||||
FLOAT_INTERFACE(ExpandPeriod, Accels[PlayerOptions::ACCEL_EXPAND_PERIOD], true);
|
FLOAT_INTERFACE(ExpandPeriod, Accels[PlayerOptions::ACCEL_EXPAND_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanExpand, Accels[PlayerOptions::ACCEL_TAN_EXPAND], true);
|
||||||
|
FLOAT_INTERFACE(TanExpandPeriod, Accels[PlayerOptions::ACCEL_TAN_EXPAND_PERIOD], true);
|
||||||
FLOAT_INTERFACE(Boomerang, Accels[PlayerOptions::ACCEL_BOOMERANG], true);
|
FLOAT_INTERFACE(Boomerang, Accels[PlayerOptions::ACCEL_BOOMERANG], true);
|
||||||
FLOAT_INTERFACE(Drunk, Effects[PlayerOptions::EFFECT_DRUNK], true);
|
FLOAT_INTERFACE(Drunk, Effects[PlayerOptions::EFFECT_DRUNK], true);
|
||||||
FLOAT_INTERFACE(DrunkSpeed, Effects[PlayerOptions::EFFECT_DRUNK_SPEED], true);
|
FLOAT_INTERFACE(DrunkSpeed, Effects[PlayerOptions::EFFECT_DRUNK_SPEED], true);
|
||||||
FLOAT_INTERFACE(DrunkOffset, Effects[PlayerOptions::EFFECT_DRUNK_OFFSET], true);
|
FLOAT_INTERFACE(DrunkOffset, Effects[PlayerOptions::EFFECT_DRUNK_OFFSET], true);
|
||||||
FLOAT_INTERFACE(DrunkPeriod, Effects[PlayerOptions::EFFECT_DRUNK_PERIOD], true);
|
FLOAT_INTERFACE(DrunkPeriod, Effects[PlayerOptions::EFFECT_DRUNK_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanDrunk, Effects[PlayerOptions::EFFECT_TAN_DRUNK], true);
|
||||||
|
FLOAT_INTERFACE(TanDrunkSpeed, Effects[PlayerOptions::EFFECT_TAN_DRUNK_SPEED], true);
|
||||||
|
FLOAT_INTERFACE(TanDrunkOffset, Effects[PlayerOptions::EFFECT_TAN_DRUNK_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanDrunkPeriod, Effects[PlayerOptions::EFFECT_TAN_DRUNK_PERIOD], true);
|
||||||
FLOAT_INTERFACE(DrunkZ, Effects[PlayerOptions::EFFECT_DRUNK_Z], true);
|
FLOAT_INTERFACE(DrunkZ, Effects[PlayerOptions::EFFECT_DRUNK_Z], true);
|
||||||
FLOAT_INTERFACE(DrunkZSpeed, Effects[PlayerOptions::EFFECT_DRUNK_Z_SPEED], true);
|
FLOAT_INTERFACE(DrunkZSpeed, Effects[PlayerOptions::EFFECT_DRUNK_Z_SPEED], true);
|
||||||
FLOAT_INTERFACE(DrunkZOffset, Effects[PlayerOptions::EFFECT_DRUNK_Z_OFFSET], true);
|
FLOAT_INTERFACE(DrunkZOffset, Effects[PlayerOptions::EFFECT_DRUNK_Z_OFFSET], true);
|
||||||
FLOAT_INTERFACE(DrunkZPeriod, Effects[PlayerOptions::EFFECT_DRUNK_Z_PERIOD], true);
|
FLOAT_INTERFACE(DrunkZPeriod, Effects[PlayerOptions::EFFECT_DRUNK_Z_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanDrunkZ, Effects[PlayerOptions::EFFECT_TAN_DRUNK_Z], true);
|
||||||
|
FLOAT_INTERFACE(TanDrunkZSpeed, Effects[PlayerOptions::EFFECT_TAN_DRUNK_Z_SPEED], true);
|
||||||
|
FLOAT_INTERFACE(TanDrunkZOffset, Effects[PlayerOptions::EFFECT_TAN_DRUNK_Z_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanDrunkZPeriod, Effects[PlayerOptions::EFFECT_TAN_DRUNK_Z_PERIOD], true);
|
||||||
FLOAT_INTERFACE(Dizzy, Effects[PlayerOptions::EFFECT_DIZZY], true);
|
FLOAT_INTERFACE(Dizzy, Effects[PlayerOptions::EFFECT_DIZZY], true);
|
||||||
FLOAT_INTERFACE(AttenuateX, Effects[PlayerOptions::EFFECT_ATTENUATE_X], true);
|
FLOAT_INTERFACE(AttenuateX, Effects[PlayerOptions::EFFECT_ATTENUATE_X], true);
|
||||||
FLOAT_INTERFACE(AttenuateY, Effects[PlayerOptions::EFFECT_ATTENUATE_Y], true);
|
FLOAT_INTERFACE(AttenuateY, Effects[PlayerOptions::EFFECT_ATTENUATE_Y], true);
|
||||||
@@ -1738,18 +1821,33 @@ public:
|
|||||||
FLOAT_INTERFACE(Tornado, Effects[PlayerOptions::EFFECT_TORNADO], true);
|
FLOAT_INTERFACE(Tornado, Effects[PlayerOptions::EFFECT_TORNADO], true);
|
||||||
FLOAT_INTERFACE(TornadoPeriod, Effects[PlayerOptions::EFFECT_TORNADO_PERIOD], true);
|
FLOAT_INTERFACE(TornadoPeriod, Effects[PlayerOptions::EFFECT_TORNADO_PERIOD], true);
|
||||||
FLOAT_INTERFACE(TornadoOffset, Effects[PlayerOptions::EFFECT_TORNADO_OFFSET], true);
|
FLOAT_INTERFACE(TornadoOffset, Effects[PlayerOptions::EFFECT_TORNADO_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanTornado, Effects[PlayerOptions::EFFECT_TAN_TORNADO], true);
|
||||||
|
FLOAT_INTERFACE(TanTornadoPeriod, Effects[PlayerOptions::EFFECT_TAN_TORNADO_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanTornadoOffset, Effects[PlayerOptions::EFFECT_TAN_TORNADO_OFFSET], true);
|
||||||
FLOAT_INTERFACE(TornadoZ, Effects[PlayerOptions::EFFECT_TORNADO_Z], true);
|
FLOAT_INTERFACE(TornadoZ, Effects[PlayerOptions::EFFECT_TORNADO_Z], true);
|
||||||
FLOAT_INTERFACE(TornadoZPeriod, Effects[PlayerOptions::EFFECT_TORNADO_Z_PERIOD], true);
|
FLOAT_INTERFACE(TornadoZPeriod, Effects[PlayerOptions::EFFECT_TORNADO_Z_PERIOD], true);
|
||||||
FLOAT_INTERFACE(TornadoZOffset, Effects[PlayerOptions::EFFECT_TORNADO_Z_OFFSET], true);
|
FLOAT_INTERFACE(TornadoZOffset, Effects[PlayerOptions::EFFECT_TORNADO_Z_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanTornadoZ, Effects[PlayerOptions::EFFECT_TAN_TORNADO_Z], true);
|
||||||
|
FLOAT_INTERFACE(TanTornadoZPeriod, Effects[PlayerOptions::EFFECT_TAN_TORNADO_Z_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanTornadoZOffset, Effects[PlayerOptions::EFFECT_TAN_TORNADO_Z_OFFSET], true);
|
||||||
FLOAT_INTERFACE(Tipsy, Effects[PlayerOptions::EFFECT_TIPSY], true);
|
FLOAT_INTERFACE(Tipsy, Effects[PlayerOptions::EFFECT_TIPSY], true);
|
||||||
FLOAT_INTERFACE(TipsySpeed, Effects[PlayerOptions::EFFECT_TIPSY_SPEED], true);
|
FLOAT_INTERFACE(TipsySpeed, Effects[PlayerOptions::EFFECT_TIPSY_SPEED], true);
|
||||||
FLOAT_INTERFACE(TipsyOffset, Effects[PlayerOptions::EFFECT_TIPSY_OFFSET], true);
|
FLOAT_INTERFACE(TipsyOffset, Effects[PlayerOptions::EFFECT_TIPSY_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanTipsy, Effects[PlayerOptions::EFFECT_TAN_TIPSY], true);
|
||||||
|
FLOAT_INTERFACE(TanTipsySpeed, Effects[PlayerOptions::EFFECT_TAN_TIPSY_SPEED], true);
|
||||||
|
FLOAT_INTERFACE(TanTipsyOffset, Effects[PlayerOptions::EFFECT_TAN_TIPSY_OFFSET], true);
|
||||||
FLOAT_INTERFACE(Bumpy, Effects[PlayerOptions::EFFECT_BUMPY], true);
|
FLOAT_INTERFACE(Bumpy, Effects[PlayerOptions::EFFECT_BUMPY], true);
|
||||||
FLOAT_INTERFACE(BumpyOffset, Effects[PlayerOptions::EFFECT_BUMPY_OFFSET], true);
|
FLOAT_INTERFACE(BumpyOffset, Effects[PlayerOptions::EFFECT_BUMPY_OFFSET], true);
|
||||||
FLOAT_INTERFACE(BumpyPeriod, Effects[PlayerOptions::EFFECT_BUMPY_PERIOD], true);
|
FLOAT_INTERFACE(BumpyPeriod, Effects[PlayerOptions::EFFECT_BUMPY_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanBumpy, Effects[PlayerOptions::EFFECT_TAN_BUMPY], true);
|
||||||
|
FLOAT_INTERFACE(TanBumpyOffset, Effects[PlayerOptions::EFFECT_TAN_BUMPY_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanBumpyPeriod, Effects[PlayerOptions::EFFECT_TAN_BUMPY_PERIOD], true);
|
||||||
FLOAT_INTERFACE(BumpyX, Effects[PlayerOptions::EFFECT_BUMPY_X], true);
|
FLOAT_INTERFACE(BumpyX, Effects[PlayerOptions::EFFECT_BUMPY_X], true);
|
||||||
FLOAT_INTERFACE(BumpyXOffset, Effects[PlayerOptions::EFFECT_BUMPY_X_OFFSET], true);
|
FLOAT_INTERFACE(BumpyXOffset, Effects[PlayerOptions::EFFECT_BUMPY_X_OFFSET], true);
|
||||||
FLOAT_INTERFACE(BumpyXPeriod, Effects[PlayerOptions::EFFECT_BUMPY_X_PERIOD], true);
|
FLOAT_INTERFACE(BumpyXPeriod, Effects[PlayerOptions::EFFECT_BUMPY_X_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanBumpyX, Effects[PlayerOptions::EFFECT_TAN_BUMPY_X], true);
|
||||||
|
FLOAT_INTERFACE(TanBumpyXOffset, Effects[PlayerOptions::EFFECT_TAN_BUMPY_X_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanBumpyXPeriod, Effects[PlayerOptions::EFFECT_TAN_BUMPY_X_PERIOD], true);
|
||||||
FLOAT_INTERFACE(Beat, Effects[PlayerOptions::EFFECT_BEAT], true);
|
FLOAT_INTERFACE(Beat, Effects[PlayerOptions::EFFECT_BEAT], true);
|
||||||
FLOAT_INTERFACE(BeatOffset, Effects[PlayerOptions::EFFECT_BEAT_OFFSET], true);
|
FLOAT_INTERFACE(BeatOffset, Effects[PlayerOptions::EFFECT_BEAT_OFFSET], true);
|
||||||
FLOAT_INTERFACE(BeatPeriod, Effects[PlayerOptions::EFFECT_BEAT_PERIOD], true);
|
FLOAT_INTERFACE(BeatPeriod, Effects[PlayerOptions::EFFECT_BEAT_PERIOD], true);
|
||||||
@@ -1782,10 +1880,18 @@ public:
|
|||||||
FLOAT_INTERFACE(DigitalSteps, Effects[PlayerOptions::EFFECT_DIGITAL_STEPS], true);
|
FLOAT_INTERFACE(DigitalSteps, Effects[PlayerOptions::EFFECT_DIGITAL_STEPS], true);
|
||||||
FLOAT_INTERFACE(DigitalPeriod, Effects[PlayerOptions::EFFECT_DIGITAL_PERIOD], true);
|
FLOAT_INTERFACE(DigitalPeriod, Effects[PlayerOptions::EFFECT_DIGITAL_PERIOD], true);
|
||||||
FLOAT_INTERFACE(DigitalOffset, Effects[PlayerOptions::EFFECT_DIGITAL_OFFSET], true);
|
FLOAT_INTERFACE(DigitalOffset, Effects[PlayerOptions::EFFECT_DIGITAL_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanDigital, Effects[PlayerOptions::EFFECT_TAN_DIGITAL], true);
|
||||||
|
FLOAT_INTERFACE(TanDigitalSteps, Effects[PlayerOptions::EFFECT_TAN_DIGITAL_STEPS], true);
|
||||||
|
FLOAT_INTERFACE(TanDigitalPeriod, Effects[PlayerOptions::EFFECT_TAN_DIGITAL_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanDigitalOffset, Effects[PlayerOptions::EFFECT_TAN_DIGITAL_OFFSET], true);
|
||||||
FLOAT_INTERFACE(DigitalZ, Effects[PlayerOptions::EFFECT_DIGITAL_Z], true);
|
FLOAT_INTERFACE(DigitalZ, Effects[PlayerOptions::EFFECT_DIGITAL_Z], true);
|
||||||
FLOAT_INTERFACE(DigitalZSteps, Effects[PlayerOptions::EFFECT_DIGITAL_Z_STEPS], true);
|
FLOAT_INTERFACE(DigitalZSteps, Effects[PlayerOptions::EFFECT_DIGITAL_Z_STEPS], true);
|
||||||
FLOAT_INTERFACE(DigitalZPeriod, Effects[PlayerOptions::EFFECT_DIGITAL_Z_PERIOD], true);
|
FLOAT_INTERFACE(DigitalZPeriod, Effects[PlayerOptions::EFFECT_DIGITAL_Z_PERIOD], true);
|
||||||
FLOAT_INTERFACE(DigitalZOffset, Effects[PlayerOptions::EFFECT_DIGITAL_Z_OFFSET], true);
|
FLOAT_INTERFACE(DigitalZOffset, Effects[PlayerOptions::EFFECT_DIGITAL_Z_OFFSET], true);
|
||||||
|
FLOAT_INTERFACE(TanDigitalZ, Effects[PlayerOptions::EFFECT_TAN_DIGITAL_Z], true);
|
||||||
|
FLOAT_INTERFACE(TanDigitalZSteps, Effects[PlayerOptions::EFFECT_TAN_DIGITAL_Z_STEPS], true);
|
||||||
|
FLOAT_INTERFACE(TanDigitalZPeriod, Effects[PlayerOptions::EFFECT_TAN_DIGITAL_Z_PERIOD], true);
|
||||||
|
FLOAT_INTERFACE(TanDigitalZOffset, Effects[PlayerOptions::EFFECT_TAN_DIGITAL_Z_OFFSET], true);
|
||||||
FLOAT_INTERFACE(ParabolaX, Effects[PlayerOptions::EFFECT_PARABOLA_X], true);
|
FLOAT_INTERFACE(ParabolaX, Effects[PlayerOptions::EFFECT_PARABOLA_X], true);
|
||||||
FLOAT_INTERFACE(ParabolaY, Effects[PlayerOptions::EFFECT_PARABOLA_Y], true);
|
FLOAT_INTERFACE(ParabolaY, Effects[PlayerOptions::EFFECT_PARABOLA_Y], true);
|
||||||
FLOAT_INTERFACE(ParabolaZ, Effects[PlayerOptions::EFFECT_PARABOLA_Z], true);
|
FLOAT_INTERFACE(ParabolaZ, Effects[PlayerOptions::EFFECT_PARABOLA_Z], true);
|
||||||
@@ -1831,6 +1937,7 @@ public:
|
|||||||
BOOL_INTERFACE(StealthPastReceptors, StealthPastReceptors);
|
BOOL_INTERFACE(StealthPastReceptors, StealthPastReceptors);
|
||||||
BOOL_INTERFACE(DizzyHolds, DizzyHolds);
|
BOOL_INTERFACE(DizzyHolds, DizzyHolds);
|
||||||
BOOL_INTERFACE(ZBuffer, ZBuffer);
|
BOOL_INTERFACE(ZBuffer, ZBuffer);
|
||||||
|
BOOL_INTERFACE(Cosecant, Cosecant);
|
||||||
BOOL_INTERFACE(TurnNone, Turns[PlayerOptions::TURN_NONE]);
|
BOOL_INTERFACE(TurnNone, Turns[PlayerOptions::TURN_NONE]);
|
||||||
BOOL_INTERFACE(Mirror, Turns[PlayerOptions::TURN_MIRROR]);
|
BOOL_INTERFACE(Mirror, Turns[PlayerOptions::TURN_MIRROR]);
|
||||||
BOOL_INTERFACE(Backwards, Turns[PlayerOptions::TURN_BACKWARDS]);
|
BOOL_INTERFACE(Backwards, Turns[PlayerOptions::TURN_BACKWARDS]);
|
||||||
@@ -2187,15 +2294,25 @@ public:
|
|||||||
ADD_METHOD(WavePeriod);
|
ADD_METHOD(WavePeriod);
|
||||||
ADD_METHOD(Expand);
|
ADD_METHOD(Expand);
|
||||||
ADD_METHOD(ExpandPeriod);
|
ADD_METHOD(ExpandPeriod);
|
||||||
|
ADD_METHOD(TanExpand);
|
||||||
|
ADD_METHOD(TanExpandPeriod);
|
||||||
ADD_METHOD(Boomerang);
|
ADD_METHOD(Boomerang);
|
||||||
ADD_METHOD(Drunk);
|
ADD_METHOD(Drunk);
|
||||||
ADD_METHOD(DrunkSpeed);
|
ADD_METHOD(DrunkSpeed);
|
||||||
ADD_METHOD(DrunkOffset);
|
ADD_METHOD(DrunkOffset);
|
||||||
ADD_METHOD(DrunkPeriod);
|
ADD_METHOD(DrunkPeriod);
|
||||||
|
ADD_METHOD(TanDrunk);
|
||||||
|
ADD_METHOD(TanDrunkSpeed);
|
||||||
|
ADD_METHOD(TanDrunkOffset);
|
||||||
|
ADD_METHOD(TanDrunkPeriod);
|
||||||
ADD_METHOD(DrunkZ);
|
ADD_METHOD(DrunkZ);
|
||||||
ADD_METHOD(DrunkZSpeed);
|
ADD_METHOD(DrunkZSpeed);
|
||||||
ADD_METHOD(DrunkZOffset);
|
ADD_METHOD(DrunkZOffset);
|
||||||
ADD_METHOD(DrunkZPeriod);
|
ADD_METHOD(DrunkZPeriod);
|
||||||
|
ADD_METHOD(TanDrunkZ);
|
||||||
|
ADD_METHOD(TanDrunkZSpeed);
|
||||||
|
ADD_METHOD(TanDrunkZOffset);
|
||||||
|
ADD_METHOD(TanDrunkZPeriod);
|
||||||
ADD_METHOD(Dizzy);
|
ADD_METHOD(Dizzy);
|
||||||
ADD_METHOD(ShrinkLinear);
|
ADD_METHOD(ShrinkLinear);
|
||||||
ADD_METHOD(ShrinkMult);
|
ADD_METHOD(ShrinkMult);
|
||||||
@@ -2225,18 +2342,33 @@ public:
|
|||||||
ADD_METHOD(Tornado);
|
ADD_METHOD(Tornado);
|
||||||
ADD_METHOD(TornadoPeriod);
|
ADD_METHOD(TornadoPeriod);
|
||||||
ADD_METHOD(TornadoOffset);
|
ADD_METHOD(TornadoOffset);
|
||||||
|
ADD_METHOD(TanTornado);
|
||||||
|
ADD_METHOD(TanTornadoPeriod);
|
||||||
|
ADD_METHOD(TanTornadoOffset);
|
||||||
ADD_METHOD(TornadoZ);
|
ADD_METHOD(TornadoZ);
|
||||||
ADD_METHOD(TornadoZPeriod);
|
ADD_METHOD(TornadoZPeriod);
|
||||||
ADD_METHOD(TornadoZOffset);
|
ADD_METHOD(TornadoZOffset);
|
||||||
|
ADD_METHOD(TanTornadoZ);
|
||||||
|
ADD_METHOD(TanTornadoZPeriod);
|
||||||
|
ADD_METHOD(TanTornadoZOffset);
|
||||||
ADD_METHOD(Tipsy);
|
ADD_METHOD(Tipsy);
|
||||||
ADD_METHOD(TipsySpeed);
|
ADD_METHOD(TipsySpeed);
|
||||||
ADD_METHOD(TipsyOffset);
|
ADD_METHOD(TipsyOffset);
|
||||||
|
ADD_METHOD(TanTipsy);
|
||||||
|
ADD_METHOD(TanTipsySpeed);
|
||||||
|
ADD_METHOD(TanTipsyOffset);
|
||||||
ADD_METHOD(Bumpy);
|
ADD_METHOD(Bumpy);
|
||||||
ADD_METHOD(BumpyOffset);
|
ADD_METHOD(BumpyOffset);
|
||||||
ADD_METHOD(BumpyPeriod);
|
ADD_METHOD(BumpyPeriod);
|
||||||
|
ADD_METHOD(TanBumpy);
|
||||||
|
ADD_METHOD(TanBumpyOffset);
|
||||||
|
ADD_METHOD(TanBumpyPeriod);
|
||||||
ADD_METHOD(BumpyX);
|
ADD_METHOD(BumpyX);
|
||||||
ADD_METHOD(BumpyXOffset);
|
ADD_METHOD(BumpyXOffset);
|
||||||
ADD_METHOD(BumpyXPeriod);
|
ADD_METHOD(BumpyXPeriod);
|
||||||
|
ADD_METHOD(TanBumpyX);
|
||||||
|
ADD_METHOD(TanBumpyXOffset);
|
||||||
|
ADD_METHOD(TanBumpyXPeriod);
|
||||||
ADD_METHOD(Beat);
|
ADD_METHOD(Beat);
|
||||||
ADD_METHOD(BeatOffset);
|
ADD_METHOD(BeatOffset);
|
||||||
ADD_METHOD(BeatPeriod);
|
ADD_METHOD(BeatPeriod);
|
||||||
@@ -2269,10 +2401,18 @@ public:
|
|||||||
ADD_METHOD(DigitalSteps);
|
ADD_METHOD(DigitalSteps);
|
||||||
ADD_METHOD(DigitalPeriod);
|
ADD_METHOD(DigitalPeriod);
|
||||||
ADD_METHOD(DigitalOffset);
|
ADD_METHOD(DigitalOffset);
|
||||||
|
ADD_METHOD(TanDigital);
|
||||||
|
ADD_METHOD(TanDigitalSteps);
|
||||||
|
ADD_METHOD(TanDigitalPeriod);
|
||||||
|
ADD_METHOD(TanDigitalOffset);
|
||||||
ADD_METHOD(DigitalZ);
|
ADD_METHOD(DigitalZ);
|
||||||
ADD_METHOD(DigitalZSteps);
|
ADD_METHOD(DigitalZSteps);
|
||||||
ADD_METHOD(DigitalZPeriod);
|
ADD_METHOD(DigitalZPeriod);
|
||||||
ADD_METHOD(DigitalZOffset);
|
ADD_METHOD(DigitalZOffset);
|
||||||
|
ADD_METHOD(TanDigitalZ);
|
||||||
|
ADD_METHOD(TanDigitalZSteps);
|
||||||
|
ADD_METHOD(TanDigitalZPeriod);
|
||||||
|
ADD_METHOD(TanDigitalZOffset);
|
||||||
ADD_METHOD(ParabolaX);
|
ADD_METHOD(ParabolaX);
|
||||||
ADD_METHOD(ParabolaY);
|
ADD_METHOD(ParabolaY);
|
||||||
ADD_METHOD(ParabolaZ);
|
ADD_METHOD(ParabolaZ);
|
||||||
@@ -2298,6 +2438,7 @@ public:
|
|||||||
ADD_METHOD(StealthPastReceptors);
|
ADD_METHOD(StealthPastReceptors);
|
||||||
ADD_METHOD(DizzyHolds);
|
ADD_METHOD(DizzyHolds);
|
||||||
ADD_METHOD(ZBuffer);
|
ADD_METHOD(ZBuffer);
|
||||||
|
ADD_METHOD(Cosecant);
|
||||||
ADD_METHOD(RandAttack);
|
ADD_METHOD(RandAttack);
|
||||||
ADD_METHOD(NoAttack);
|
ADD_METHOD(NoAttack);
|
||||||
ADD_METHOD(PlayerAutoPlay);
|
ADD_METHOD(PlayerAutoPlay);
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ public:
|
|||||||
m_bMuteOnError(false), m_FailType(FailType_Immediate),
|
m_bMuteOnError(false), m_FailType(FailType_Immediate),
|
||||||
m_bStealthType(false), m_bStealthPastReceptors(false),
|
m_bStealthType(false), m_bStealthPastReceptors(false),
|
||||||
m_bDizzyHolds(false), m_bZBuffer(false),
|
m_bDizzyHolds(false), m_bZBuffer(false),
|
||||||
|
m_bCosecant(false),
|
||||||
m_MinTNSToHideNotes(PREFSMAN->m_MinTNSToHideNotes)
|
m_MinTNSToHideNotes(PREFSMAN->m_MinTNSToHideNotes)
|
||||||
{
|
{
|
||||||
m_sNoteSkin = "";
|
m_sNoteSkin = "";
|
||||||
@@ -137,6 +138,8 @@ public:
|
|||||||
ACCEL_WAVE_PERIOD,
|
ACCEL_WAVE_PERIOD,
|
||||||
ACCEL_EXPAND,
|
ACCEL_EXPAND,
|
||||||
ACCEL_EXPAND_PERIOD,
|
ACCEL_EXPAND_PERIOD,
|
||||||
|
ACCEL_TAN_EXPAND,
|
||||||
|
ACCEL_TAN_EXPAND_PERIOD,
|
||||||
ACCEL_BOOMERANG, /**< The arrows start from above the targets, go down, then come back up. */
|
ACCEL_BOOMERANG, /**< The arrows start from above the targets, go down, then come back up. */
|
||||||
NUM_ACCELS
|
NUM_ACCELS
|
||||||
};
|
};
|
||||||
@@ -145,10 +148,18 @@ public:
|
|||||||
EFFECT_DRUNK_SPEED,
|
EFFECT_DRUNK_SPEED,
|
||||||
EFFECT_DRUNK_OFFSET,
|
EFFECT_DRUNK_OFFSET,
|
||||||
EFFECT_DRUNK_PERIOD,
|
EFFECT_DRUNK_PERIOD,
|
||||||
|
EFFECT_TAN_DRUNK,
|
||||||
|
EFFECT_TAN_DRUNK_SPEED,
|
||||||
|
EFFECT_TAN_DRUNK_OFFSET,
|
||||||
|
EFFECT_TAN_DRUNK_PERIOD,
|
||||||
EFFECT_DRUNK_Z,
|
EFFECT_DRUNK_Z,
|
||||||
EFFECT_DRUNK_Z_SPEED,
|
EFFECT_DRUNK_Z_SPEED,
|
||||||
EFFECT_DRUNK_Z_OFFSET,
|
EFFECT_DRUNK_Z_OFFSET,
|
||||||
EFFECT_DRUNK_Z_PERIOD,
|
EFFECT_DRUNK_Z_PERIOD,
|
||||||
|
EFFECT_TAN_DRUNK_Z,
|
||||||
|
EFFECT_TAN_DRUNK_Z_SPEED,
|
||||||
|
EFFECT_TAN_DRUNK_Z_OFFSET,
|
||||||
|
EFFECT_TAN_DRUNK_Z_PERIOD,
|
||||||
EFFECT_DIZZY,
|
EFFECT_DIZZY,
|
||||||
EFFECT_ATTENUATE_X,
|
EFFECT_ATTENUATE_X,
|
||||||
EFFECT_ATTENUATE_Y,
|
EFFECT_ATTENUATE_Y,
|
||||||
@@ -178,18 +189,33 @@ public:
|
|||||||
EFFECT_TORNADO,
|
EFFECT_TORNADO,
|
||||||
EFFECT_TORNADO_PERIOD,
|
EFFECT_TORNADO_PERIOD,
|
||||||
EFFECT_TORNADO_OFFSET,
|
EFFECT_TORNADO_OFFSET,
|
||||||
|
EFFECT_TAN_TORNADO,
|
||||||
|
EFFECT_TAN_TORNADO_PERIOD,
|
||||||
|
EFFECT_TAN_TORNADO_OFFSET,
|
||||||
EFFECT_TORNADO_Z,
|
EFFECT_TORNADO_Z,
|
||||||
EFFECT_TORNADO_Z_PERIOD,
|
EFFECT_TORNADO_Z_PERIOD,
|
||||||
EFFECT_TORNADO_Z_OFFSET,
|
EFFECT_TORNADO_Z_OFFSET,
|
||||||
|
EFFECT_TAN_TORNADO_Z,
|
||||||
|
EFFECT_TAN_TORNADO_Z_PERIOD,
|
||||||
|
EFFECT_TAN_TORNADO_Z_OFFSET,
|
||||||
EFFECT_TIPSY,
|
EFFECT_TIPSY,
|
||||||
EFFECT_TIPSY_SPEED,
|
EFFECT_TIPSY_SPEED,
|
||||||
EFFECT_TIPSY_OFFSET,
|
EFFECT_TIPSY_OFFSET,
|
||||||
|
EFFECT_TAN_TIPSY,
|
||||||
|
EFFECT_TAN_TIPSY_SPEED,
|
||||||
|
EFFECT_TAN_TIPSY_OFFSET,
|
||||||
EFFECT_BUMPY,
|
EFFECT_BUMPY,
|
||||||
EFFECT_BUMPY_OFFSET,
|
EFFECT_BUMPY_OFFSET,
|
||||||
EFFECT_BUMPY_PERIOD,
|
EFFECT_BUMPY_PERIOD,
|
||||||
|
EFFECT_TAN_BUMPY,
|
||||||
|
EFFECT_TAN_BUMPY_OFFSET,
|
||||||
|
EFFECT_TAN_BUMPY_PERIOD,
|
||||||
EFFECT_BUMPY_X,
|
EFFECT_BUMPY_X,
|
||||||
EFFECT_BUMPY_X_OFFSET,
|
EFFECT_BUMPY_X_OFFSET,
|
||||||
EFFECT_BUMPY_X_PERIOD,
|
EFFECT_BUMPY_X_PERIOD,
|
||||||
|
EFFECT_TAN_BUMPY_X,
|
||||||
|
EFFECT_TAN_BUMPY_X_OFFSET,
|
||||||
|
EFFECT_TAN_BUMPY_X_PERIOD,
|
||||||
EFFECT_BEAT,
|
EFFECT_BEAT,
|
||||||
EFFECT_BEAT_OFFSET,
|
EFFECT_BEAT_OFFSET,
|
||||||
EFFECT_BEAT_PERIOD,
|
EFFECT_BEAT_PERIOD,
|
||||||
@@ -206,10 +232,18 @@ public:
|
|||||||
EFFECT_DIGITAL_STEPS,
|
EFFECT_DIGITAL_STEPS,
|
||||||
EFFECT_DIGITAL_PERIOD,
|
EFFECT_DIGITAL_PERIOD,
|
||||||
EFFECT_DIGITAL_OFFSET,
|
EFFECT_DIGITAL_OFFSET,
|
||||||
|
EFFECT_TAN_DIGITAL,
|
||||||
|
EFFECT_TAN_DIGITAL_STEPS,
|
||||||
|
EFFECT_TAN_DIGITAL_PERIOD,
|
||||||
|
EFFECT_TAN_DIGITAL_OFFSET,
|
||||||
EFFECT_DIGITAL_Z,
|
EFFECT_DIGITAL_Z,
|
||||||
EFFECT_DIGITAL_Z_STEPS,
|
EFFECT_DIGITAL_Z_STEPS,
|
||||||
EFFECT_DIGITAL_Z_PERIOD,
|
EFFECT_DIGITAL_Z_PERIOD,
|
||||||
EFFECT_DIGITAL_Z_OFFSET,
|
EFFECT_DIGITAL_Z_OFFSET,
|
||||||
|
EFFECT_TAN_DIGITAL_Z,
|
||||||
|
EFFECT_TAN_DIGITAL_Z_STEPS,
|
||||||
|
EFFECT_TAN_DIGITAL_Z_PERIOD,
|
||||||
|
EFFECT_TAN_DIGITAL_Z_OFFSET,
|
||||||
EFFECT_ZIGZAG,
|
EFFECT_ZIGZAG,
|
||||||
EFFECT_ZIGZAG_PERIOD,
|
EFFECT_ZIGZAG_PERIOD,
|
||||||
EFFECT_ZIGZAG_OFFSET,
|
EFFECT_ZIGZAG_OFFSET,
|
||||||
@@ -349,6 +383,7 @@ public:
|
|||||||
bool m_bStealthPastReceptors;
|
bool m_bStealthPastReceptors;
|
||||||
bool m_bDizzyHolds;
|
bool m_bDizzyHolds;
|
||||||
bool m_bZBuffer;
|
bool m_bZBuffer;
|
||||||
|
bool m_bCosecant;
|
||||||
/** @brief The method for which a player can fail a song. */
|
/** @brief The method for which a player can fail a song. */
|
||||||
FailType m_FailType;
|
FailType m_FailType;
|
||||||
TapNoteScore m_MinTNSToHideNotes;
|
TapNoteScore m_MinTNSToHideNotes;
|
||||||
|
|||||||
@@ -643,6 +643,16 @@ float RageFastCos( float x )
|
|||||||
return RageFastSin( x + 0.5f*PI );
|
return RageFastSin( x + 0.5f*PI );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float RageFastTan( float x )
|
||||||
|
{
|
||||||
|
return RageFastSin( x ) / RageFastCos( x );
|
||||||
|
}
|
||||||
|
|
||||||
|
float RageFastCsc( float x )
|
||||||
|
{
|
||||||
|
return 1 / RageFastSin( x );
|
||||||
|
}
|
||||||
|
|
||||||
float RageSquare( float angle )
|
float RageSquare( float angle )
|
||||||
{
|
{
|
||||||
float fAngle = fmod( angle , (PI * 2) );
|
float fAngle = fmod( angle , (PI * 2) );
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ void RageMatrixTranspose( RageMatrix* pOut, const RageMatrix* pIn );
|
|||||||
|
|
||||||
float RageFastSin( float x ) CONST_FUNCTION;
|
float RageFastSin( float x ) CONST_FUNCTION;
|
||||||
float RageFastCos( float x ) CONST_FUNCTION;
|
float RageFastCos( float x ) CONST_FUNCTION;
|
||||||
|
float RageFastTan( float x ) CONST_FUNCTION;
|
||||||
|
float RageFastCsc( float x ) CONST_FUNCTION;
|
||||||
|
|
||||||
float RageSquare( float x) CONST_FUNCTION;
|
float RageSquare( float x) CONST_FUNCTION;
|
||||||
float RageTriangle( float x) CONST_FUNCTION;
|
float RageTriangle( float x) CONST_FUNCTION;
|
||||||
|
|||||||
Reference in New Issue
Block a user