コード例 #1
0
 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;
         }
     }
 }
コード例 #2
0
	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;
		}
	}
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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;
        }
コード例 #5
0
 protected override void OnInitialise(bool inPreviewMode = false)
 {
     _musicTransitionState = MusicTransitionState.Idle;
     base.OnInitialise(inPreviewMode);
 }