mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 11:32:13 +00:00
Fix interactive audio transitions fade in for clips with auto_advance
This commit is contained in:
parent
1bd740d18d
commit
4fa6287de1
@ -777,7 +777,7 @@ void AudioStreamPlaybackInteractive::_queue(int p_to_clip_index, bool p_is_auto_
|
||||
|
||||
if (stream->clips[p_to_clip_index].auto_advance == AudioStreamInteractive::AUTO_ADVANCE_ENABLED) {
|
||||
int next_clip = stream->clips[p_to_clip_index].auto_advance_next_clip;
|
||||
if (next_clip >= 0 && next_clip < (int)stream->clip_count && states[next_clip].playback.is_valid() && next_clip != p_to_clip_index && next_clip != playback_current && (!transition.use_filler_clip || next_clip != transition.filler_clip)) {
|
||||
if (next_clip >= 0 && next_clip < (int)stream->clip_count && states[next_clip].playback.is_valid() && next_clip != p_to_clip_index && (!transition.use_filler_clip || next_clip != transition.filler_clip)) {
|
||||
auto_advance_to = next_clip;
|
||||
}
|
||||
}
|
||||
@ -905,7 +905,9 @@ void AudioStreamPlaybackInteractive::_mix_internal_state(int p_state_idx, int p_
|
||||
// time to start!
|
||||
from_frame = state.fade_wait * mix_rate;
|
||||
state.fade_wait = 0;
|
||||
queue_next = state.auto_advance;
|
||||
if (state.fade_speed == 0.0) {
|
||||
queue_next = state.auto_advance;
|
||||
}
|
||||
playback_current = p_state_idx;
|
||||
state.first_mix = false;
|
||||
} else {
|
||||
@ -919,7 +921,6 @@ void AudioStreamPlaybackInteractive::_mix_internal_state(int p_state_idx, int p_
|
||||
state.playback->mix(temp_buffer + from_frame, 1.0, p_frames - from_frame);
|
||||
|
||||
double frame_fade_inc = state.fade_speed * frame_inc;
|
||||
|
||||
for (int i = from_frame; i < p_frames; i++) {
|
||||
if (state.fade_wait) {
|
||||
// This is for fade out of existing stream;
|
||||
@ -933,6 +934,7 @@ void AudioStreamPlaybackInteractive::_mix_internal_state(int p_state_idx, int p_
|
||||
state.fade_speed = 0.0;
|
||||
frame_fade_inc = 0.0;
|
||||
state.fade_volume = 1.0;
|
||||
queue_next = state.auto_advance;
|
||||
}
|
||||
} else if (frame_fade_inc < 0.0) {
|
||||
state.fade_volume += frame_fade_inc;
|
||||
|
Loading…
Reference in New Issue
Block a user