private void SetBestMatchTransition(string name) { if (_currentlyPlayingComponent != null) { for (int i = 0; i < _transitions.Count; i++) { MusicTransition musicTransition = _transitions[i]; if (musicTransition._fromComponent._component.Name == _currentlyPlayingComponent.Name && musicTransition._toComponent._component.Name == name) { _activeTransition = musicTransition; _musicTransitionState = MusicTransitionState.FromComponent; return; } } } for (int j = 0; j < _components.Count; j++) { Component component = _components[j]; if (component.name == name) { _toComponent = component; break; } } }
public MusicTransitionHolder GetActiveTransitionComponentFromState(MusicTransitionState state) { switch (state) { case MusicTransitionState.FromComponent: return _fromComponent; case MusicTransitionState.ToComponent: return _toComponent; case MusicTransitionState.Transition: return _transition; default: return null; } }
private MusicSyncType GetTransitionMusicSyncType(MusicTransition transition, MusicTransitionState state) { switch (state) { case MusicTransitionState.FromComponent: return(transition._fromComponent._musicSyncType); case MusicTransitionState.Transition: return(transition._transition._musicSyncType); case MusicTransitionState.ToComponent: return(transition._toComponent._musicSyncType); default: return(MusicSyncType.OnBar); } }
private void PlayNext(double time) { Component component = null; MusicSyncType transitionMusicSyncType = GetTransitionMusicSyncType(_activeTransition, _musicTransitionState); if (_musicTransitionState == MusicTransitionState.FromComponent) { if (_activeTransition._transition._component != null) { component = _activeTransition._transition._component; _musicTransitionState = MusicTransitionState.Transition; } else { component = _activeTransition._toComponent._component; _musicTransitionState = MusicTransitionState.Idle; } } else if (_musicTransitionState == MusicTransitionState.Transition) { component = _activeTransition._toComponent._component; _musicTransitionState = MusicTransitionState.Idle; } else { if (!_toComponent) { return; } component = _toComponent; _toComponent = null; } if (_currentlyPlayingComponent != null && transitionMusicSyncType != MusicSyncType.OnMarker) { double scheduleEnd = time; if (_currentlyPlayingComponent.FadeOutTime > 0f) { scheduleEnd = 0.0; } _currentlyPlayingComponent.StopInternal(stopInstances: false, forceStop: false, 0f, 0.5f, scheduleEnd); } _componentInstance._instance.SetPlayScheduled(time, 0.0); component.PlayInternal(_componentInstance, 0f, 0.5f); _currentlyPlayingComponent = component; }
protected override void OnInitialise(bool inPreviewMode = false) { _musicTransitionState = MusicTransitionState.Idle; base.OnInitialise(inPreviewMode); }