summaryrefslogtreecommitdiffstats
path: root/scene/resources/audio_stream_wav.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/resources/audio_stream_wav.cpp')
-rw-r--r--scene/resources/audio_stream_wav.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/scene/resources/audio_stream_wav.cpp b/scene/resources/audio_stream_wav.cpp
index db2564af22..e2ac0e6d26 100644
--- a/scene/resources/audio_stream_wav.cpp
+++ b/scene/resources/audio_stream_wav.cpp
@@ -465,6 +465,22 @@ void AudioStreamPlaybackWAV::tag_used_streams() {
base->tag_used(get_playback_position());
}
+void AudioStreamPlaybackWAV::set_is_sample(bool p_is_sample) {
+ _is_sample = p_is_sample;
+}
+
+bool AudioStreamPlaybackWAV::get_is_sample() const {
+ return _is_sample;
+}
+
+Ref<AudioSamplePlayback> AudioStreamPlaybackWAV::get_sample_playback() const {
+ return sample_playback;
+}
+
+void AudioStreamPlaybackWAV::set_sample_playback(const Ref<AudioSamplePlayback> &p_playback) {
+ sample_playback = p_playback;
+}
+
AudioStreamPlaybackWAV::AudioStreamPlaybackWAV() {}
AudioStreamPlaybackWAV::~AudioStreamPlaybackWAV() {
@@ -696,6 +712,33 @@ String AudioStreamWAV::get_stream_name() const {
return "";
}
+Ref<AudioSample> AudioStreamWAV::generate_sample() const {
+ Ref<AudioSample> sample;
+ sample.instantiate();
+ sample->stream = this;
+ switch (loop_mode) {
+ case AudioStreamWAV::LoopMode::LOOP_DISABLED: {
+ sample->loop_mode = AudioSample::LoopMode::LOOP_DISABLED;
+ } break;
+
+ case AudioStreamWAV::LoopMode::LOOP_FORWARD: {
+ sample->loop_mode = AudioSample::LoopMode::LOOP_FORWARD;
+ } break;
+
+ case AudioStreamWAV::LoopMode::LOOP_PINGPONG: {
+ sample->loop_mode = AudioSample::LoopMode::LOOP_PINGPONG;
+ } break;
+
+ case AudioStreamWAV::LoopMode::LOOP_BACKWARD: {
+ sample->loop_mode = AudioSample::LoopMode::LOOP_BACKWARD;
+ } break;
+ }
+ sample->loop_begin = loop_begin;
+ sample->loop_end = loop_end;
+ sample->sample_rate = mix_rate;
+ return sample;
+}
+
void AudioStreamWAV::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_data", "data"), &AudioStreamWAV::set_data);
ClassDB::bind_method(D_METHOD("get_data"), &AudioStreamWAV::get_data);