You've already forked pico-launcher
mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-01-09 16:28:48 -08:00
35 lines
862 B
C++
35 lines
862 B
C++
#pragma once
|
|
#include "InputProvider.h"
|
|
#include "IInputSource.h"
|
|
|
|
/// @brief Input provider providing input from an \see IInputSource.
|
|
class SampledInputProvider : public InputProvider
|
|
{
|
|
public:
|
|
explicit SampledInputProvider(const IInputSource* inputSource)
|
|
: _inputSource(inputSource), _inputBufferReadPtr(0), _inputBufferWritePtr(0) { }
|
|
|
|
void Update() override;
|
|
|
|
/// @brief Samples the input source.
|
|
void Sample()
|
|
{
|
|
_inputBuffer[_inputBufferWritePtr] = _inputSource->Sample();
|
|
_inputBufferWritePtr = (_inputBufferWritePtr + 1) & 3;
|
|
}
|
|
|
|
void Reset() override
|
|
{
|
|
InputProvider::Reset();
|
|
_inputBufferReadPtr = 0;
|
|
_inputBufferWritePtr = 0;
|
|
}
|
|
|
|
private:
|
|
const IInputSource* _inputSource;
|
|
|
|
InputKey _inputBuffer[4];
|
|
u8 _inputBufferReadPtr;
|
|
u8 _inputBufferWritePtr;
|
|
};
|