|
@@ -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;
|