source-engine/game/gamepadui/gamepadui_scroll.h
2024-04-13 19:58:55 +03:00

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