Skip to content

Commit 9f60496

Browse files
committed
Add get_inner_stream_playback.
1 parent 3c00684 commit 9f60496

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

src/player.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
void SteamAudioPlayer::_bind_methods() {
1212
ClassDB::bind_method(D_METHOD("play_stream", "stream", "from_offset", "volume_db", "pitch_scale"), &SteamAudioPlayer::play_stream, DEFVAL(0), DEFVAL(0), DEFVAL(1.0));
1313
ClassDB::bind_method(D_METHOD("get_inner_stream"), &SteamAudioPlayer::get_inner_stream);
14+
ClassDB::bind_method(D_METHOD("get_inner_stream_playback"), &SteamAudioPlayer::get_inner_stream_playback);
1415

1516
ClassDB::bind_method(D_METHOD("is_dist_attn_on"), &SteamAudioPlayer::is_dist_attn_on);
1617
ClassDB::bind_method(D_METHOD("set_dist_attn_on", "p_dist_attn_on"), &SteamAudioPlayer::set_dist_attn_on);
@@ -263,6 +264,18 @@ Ref<AudioStream> SteamAudioPlayer::get_inner_stream() {
263264
return str->get_stream();
264265
}
265266

267+
Ref<AudioStreamPlayback> SteamAudioPlayer::get_inner_stream_playback() {
268+
auto spb = dynamic_cast<SteamAudioStreamPlayback *>(get_stream_playback().ptr());
269+
if (spb == nullptr) {
270+
SteamAudio::log(SteamAudio::log_warn,
271+
"Tried to get an inner stream playback from a SteamAudioPlayer, but its outer stream playback is not a SteamAudioStreamPlayback (or the player may not be playing audio). Returning null.");
272+
Ref<AudioStream> null_pb;
273+
return null_pb;
274+
}
275+
276+
return spb->get_stream_playback();
277+
}
278+
266279
float SteamAudioPlayer::get_occlusion_radius() { return cfg.occ_radius; }
267280
void SteamAudioPlayer::set_occlusion_radius(float p_occlusion_radius) { cfg.occ_radius = p_occlusion_radius; }
268281
int SteamAudioPlayer::get_occlusion_samples() { return cfg.occ_samples; }

src/player.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class SteamAudioPlayer : public AudioStreamPlayer3D {
7373

7474
void play_stream(const Ref<AudioStream> &p_stream, float p_from_offset, float p_volume_db, float p_pitch_scale);
7575
Ref<AudioStream> get_inner_stream();
76+
Ref<AudioStreamPlayback> get_inner_stream_playback();
7677

7778
PackedStringArray _get_configuration_warnings() const override;
7879
};

src/stream.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,3 +183,4 @@ void SteamAudioStreamPlayback::_stop() {
183183

184184
bool SteamAudioStreamPlayback::_is_playing() const { return is_active; }
185185
void SteamAudioStreamPlayback::set_stream(Ref<AudioStream> p_stream) { stream = p_stream; }
186+
Ref<AudioStreamPlayback> SteamAudioStreamPlayback::get_stream_playback() { return this->stream_playback; }

src/stream.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class SteamAudioStreamPlayback : public AudioStreamPlayback {
5252
~SteamAudioStreamPlayback();
5353

5454
void set_stream(Ref<AudioStream> p_stream);
55+
Ref<AudioStreamPlayback> get_stream_playback();
5556

5657
virtual int32_t _mix(AudioFrame *buffer, double rate_scale,
5758
int32_t frames) override;

0 commit comments

Comments
 (0)