#pragma once
#include "common.hpp"
class AudioBufferSourceNode : public CommonNode {
DECLARE_ES5_CLASS(AudioBufferSourceNode, AudioBufferSourceNode);
public:
static void init(Napi::Env env, Napi::Object exports);
explicit AudioBufferSourceNode(const Napi::CallbackInfo &info);
~AudioBufferSourceNode();
void _destroy();
private:
Napi::ObjectReference _buffer;
Napi::ObjectReference _playbackRate;
Napi::ObjectReference _detune;
bool _isLooping;
float _loopStart;
float _loopEnd;
JS_DECLARE_METHOD(AudioBufferSourceNode, destroy);
JS_DECLARE_METHOD(AudioBufferSourceNode, start);
JS_DECLARE_METHOD(AudioBufferSourceNode, schedule);
JS_DECLARE_GETTER(AudioBufferSourceNode, buffer);
JS_DECLARE_SETTER(AudioBufferSourceNode, buffer);
JS_DECLARE_GETTER(AudioBufferSourceNode, playbackRate);
JS_DECLARE_GETTER(AudioBufferSourceNode, detune);
JS_DECLARE_GETTER(AudioBufferSourceNode, loop);
JS_DECLARE_SETTER(AudioBufferSourceNode, loop);
JS_DECLARE_GETTER(AudioBufferSourceNode, loopStart);
JS_DECLARE_SETTER(AudioBufferSourceNode, loopStart);
JS_DECLARE_GETTER(AudioBufferSourceNode, loopEnd);
JS_DECLARE_SETTER(AudioBufferSourceNode, loopEnd);
};