Fix interactive audio transitions fade in for clips with auto_advance
(cherry picked from commit 4fa6287de1
)
This commit is contained in:
parent
02c45088ea
commit
f5b5b6cbfe
|
@ -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) {
|
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;
|
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;
|
auto_advance_to = next_clip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -905,7 +905,9 @@ void AudioStreamPlaybackInteractive::_mix_internal_state(int p_state_idx, int p_
|
||||||
// time to start!
|
// time to start!
|
||||||
from_frame = state.fade_wait * mix_rate;
|
from_frame = state.fade_wait * mix_rate;
|
||||||
state.fade_wait = 0;
|
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;
|
playback_current = p_state_idx;
|
||||||
state.first_mix = false;
|
state.first_mix = false;
|
||||||
} else {
|
} 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);
|
state.playback->mix(temp_buffer + from_frame, 1.0, p_frames - from_frame);
|
||||||
|
|
||||||
double frame_fade_inc = state.fade_speed * frame_inc;
|
double frame_fade_inc = state.fade_speed * frame_inc;
|
||||||
|
|
||||||
for (int i = from_frame; i < p_frames; i++) {
|
for (int i = from_frame; i < p_frames; i++) {
|
||||||
if (state.fade_wait) {
|
if (state.fade_wait) {
|
||||||
// This is for fade out of existing stream;
|
// 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;
|
state.fade_speed = 0.0;
|
||||||
frame_fade_inc = 0.0;
|
frame_fade_inc = 0.0;
|
||||||
state.fade_volume = 1.0;
|
state.fade_volume = 1.0;
|
||||||
|
queue_next = state.auto_advance;
|
||||||
}
|
}
|
||||||
} else if (frame_fade_inc < 0.0) {
|
} else if (frame_fade_inc < 0.0) {
|
||||||
state.fade_volume += frame_fade_inc;
|
state.fade_volume += frame_fade_inc;
|
||||||
|
|
Loading…
Reference in New Issue