예제 #1
0
 public AudioSourceController(double initTime, AudioClip clip, AudioSource copySettings, AudioCueType type)
 {
     MusicManager_2.SyncSourceSettings(copySettings, ref source);
     source.clip   = clip;
     this.initTime = initTime;
     cueType       = type;
 }
예제 #2
0
    public void StartForeshadowing(AudioCueType cueType)
    {
        if (StateManager.State == GameState.Playing)
        {
            AudioSource foreshadow = gameObject.AddComponent <AudioSource>();

            SyncSourceSettings(audio, ref foreshadow);
            MusicWithInformation foreshadowTrack;

            if (cueType == AudioCueType.Foreshadow_Long)
            {
                foreshadowTrack = foreshadowTracksLong[0];
                CycleList(ref foreshadowTracksLong);
            }
            else if (cueType == AudioCueType.Foreshadow_Short)
            {
                foreshadowTrack = foreshadowTracksShort[0];
                CycleList(ref foreshadowTracksShort);
            }
            else
            {
                return;
            }

            foreshadow.clip   = foreshadowTrack.clip;
            foreshadow.volume = foreshadowTrack.volume;

            double initTime = GetTimeOfNextBar();
            foreshadow.PlayScheduled(initTime);
            foreshadow.SetScheduledStartTime(initTime);
            AudioSourceController controller = new AudioSourceController(initTime, foreshadow, foreshadowTracksLong[0].cueType);
            foreshadowSourceControllers.Add(controller);

            int id = foreshadowID++;

            //EventManager.Music_ForeshadowBegin(id, foreshadow.clip.length);

            double currentBeatDuration = 60.0 / (currentlyPlayingTrack.BPM);

            if (cueType == AudioCueType.Foreshadow_Long)
            {
                StartCoroutine(CallForeshadowBegin(initTime - AudioSettings.dspTime, id, currentBeatDuration * 8));
                StartCoroutine(CallForeshadowEvent(initTime - AudioSettings.dspTime + currentBeatDuration * 8, id, foreshadow.clip.length));
            }
            else if (cueType == AudioCueType.Foreshadow_Short)
            {
                StartCoroutine(CallForeshadowBegin(initTime - AudioSettings.dspTime, id, currentBeatDuration * 4));
                StartCoroutine(CallForeshadowEvent(initTime - AudioSettings.dspTime + currentBeatDuration * 4, id, foreshadow.clip.length));
            }
            else if (controller.cueType == AudioCueType.UNDEFINED)
            {
                Debug.LogWarning("Tried to activate a foreshadow countdown but the clip had the UNDEFINED cue type");
            }
        }
    }
예제 #3
0
 public AudioSourceController(double initTime, AudioSource source, AudioCueType type)
 {
     this.source   = source;
     this.initTime = initTime;
     cueType       = type;
 }