mirror of
https://github.com/nillerusr/source-engine.git
synced 2025-02-09 21:54:19 +00:00
56 lines
1.3 KiB
C++
56 lines
1.3 KiB
C++
#ifndef GAMEPADUI_SCROLL_H
|
|
#define GAMEPADUI_SCROLL_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
class GamepadUIScrollState
|
|
{
|
|
public:
|
|
GamepadUIScrollState()
|
|
{
|
|
}
|
|
|
|
void UpdateScrollBounds( float flMin, float flMax )
|
|
{
|
|
m_flScrollTarget = clamp( m_flScrollTarget, flMin, flMax );
|
|
}
|
|
|
|
void UpdateScrolling( float flScrollSpeed, float flTime )
|
|
{
|
|
float flLerpV = Min( ( flTime - m_flScrollLastScrolledTime ) * flScrollSpeed, 1.0f );
|
|
flLerpV *= 2.0f - flLerpV;
|
|
m_flScrollProgress = Lerp( flLerpV, m_flScrollLastScrolledValue, m_flScrollTarget );
|
|
}
|
|
|
|
float GetScrollProgress()
|
|
{
|
|
return m_flScrollProgress;
|
|
}
|
|
|
|
float GetScrollTarget() const
|
|
{
|
|
return m_flScrollTarget;
|
|
}
|
|
|
|
void SetScrollTarget( float flScrollTarget, float flTime )
|
|
{
|
|
m_flScrollTarget = flScrollTarget;
|
|
m_flScrollLastScrolledValue = m_flScrollProgress;
|
|
m_flScrollLastScrolledTime = flTime;
|
|
}
|
|
|
|
void OnMouseWheeled( int nDelta, float flTime )
|
|
{
|
|
SetScrollTarget( GetScrollTarget() - nDelta, flTime );
|
|
}
|
|
|
|
private:
|
|
float m_flScrollTarget = 0.0f;
|
|
float m_flScrollProgress = 0.0f;
|
|
float m_flScrollLastScrolledValue = 0.0f;
|
|
float m_flScrollLastScrolledTime = 0.0f;
|
|
};
|
|
|
|
#endif // GAMEPADUI_SCROLL_H
|