mirror of
https://github.com/MultiMC/MultiMC5.git
synced 2024-12-26 18:14:22 +00:00
44 lines
811 B
C
44 lines
811 B
C
|
|
||
|
#pragma once
|
||
|
|
||
|
template <typename T>
|
||
|
inline void clamp(T& current, T min, T max)
|
||
|
{
|
||
|
if (current < min)
|
||
|
{
|
||
|
current = min;
|
||
|
}
|
||
|
else if(current > max)
|
||
|
{
|
||
|
current = max;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// List of numbers from min to max. Next is exponent times bigger than previous.
|
||
|
|
||
|
class ExponentialSeries
|
||
|
{
|
||
|
public:
|
||
|
ExponentialSeries(unsigned min, unsigned max, unsigned exponent = 2)
|
||
|
{
|
||
|
m_current = m_min = min;
|
||
|
m_max = max;
|
||
|
m_exponent = exponent;
|
||
|
}
|
||
|
void reset()
|
||
|
{
|
||
|
m_current = m_min;
|
||
|
}
|
||
|
unsigned operator()()
|
||
|
{
|
||
|
unsigned retval = m_current;
|
||
|
m_current *= m_exponent;
|
||
|
clamp(m_current, m_min, m_max);
|
||
|
return retval;
|
||
|
}
|
||
|
unsigned m_current;
|
||
|
unsigned m_min;
|
||
|
unsigned m_max;
|
||
|
unsigned m_exponent;
|
||
|
};
|