project-kyoku/src/impl/sfml/musicsfml.h

36 lines
872 B
C
Raw Normal View History

2021-12-29 09:59:18 -05:00
#pragma once
#include "core/music.h"
#include <SFML/Audio/Music.hpp>
#include <SFML/System/Clock.hpp>
class MusicSFML : public kku::Music
{
public:
2021-12-29 09:59:18 -05:00
explicit MusicSFML();
virtual bool open(const std::string &filepath) override;
2021-12-29 09:59:18 -05:00
virtual void play() override;
virtual void pause() override;
virtual void stop() override;
virtual bool isPlaying() const override;
virtual void setVolume(float volume) override;
virtual void setOffset(const kku::microsec &offset) override;
virtual void moveOffset(const kku::microsec &delta) override;
2021-12-29 09:59:18 -05:00
virtual kku::microsec fetchOffset() override;
virtual kku::microsec getDuration() const override;
private:
2021-12-29 09:59:18 -05:00
sf::Music _music;
sf::Clock _offset_interpolator;
kku::microsec _sfml_music_offset;
kku::microsec _previous_frame_offset;
kku::microsec _absolute_offset;
};