Example #1
0
    void ChangeFastToEndingTracks()
    {
        StopCoroutine(newClipWaitingRoutine);

        double initTime = GetTimeOfNextBar();
        MusicWithInformation newTrack = GetNextBaseTrack();

        foreach (AudioSource source in sources)
        {
            source.SetScheduledEndTime(initTime);
        }

        AudioSource newSource = sources[0];

        newSource.clip   = newTrack.clip;
        newSource.volume = newTrack.volume;
        newSource.PlayScheduled(initTime);
        newSource.SetScheduledStartTime(initTime);



        newSource.SetScheduledEndTime(initTime + newSource.clip.length);
        newTrack.initTime = initTime;

        Debug.Log("New clip interrupt! Name: " + newTrack.name);

        initOfNextClip = initTime;

        beatNumber            = 0;
        currentlyPlayingTrack = newTrack;

        EventManager.Music_NewClip(initTime, newTrack.clip.length);
    }
Example #2
0
    public MusicWithInformation Copy()
    {
        MusicWithInformation result = new MusicWithInformation();

        result.name         = name;
        result.clip         = clip;
        result.BPM          = BPM;
        result.volume       = volume;
        result.chanceWeight = chanceWeight;
        result.cueType      = cueType;

        return(result);
    }
Example #3
0
    MusicWithInformation GetNextBaseTrack()
    {
        MusicWithInformation result = null;

        switch (StateManager.State)
        {
        case GameState.Beginning:
            Debug.Log("Flags here: " + StateManager.Flags);
            if (StateManager.Flags == StateFlags.ReadyForPlay)
            {
                EventManager.OnMusic_StartNewClip += QueuedEventSetStatePlaying;
                result = trackList[0];
                CycleList(ref trackList);
            }
            else
            {
                if (beginTrackIndex > beginTracks.Count - 1)
                {
                    beginTrackIndex = 0;
                }
                result = beginTracks[beginTrackIndex];
                beginTrackIndex++;
            }
            break;

        case GameState.Playing:
            result = trackList[0];
            CycleList(ref trackList);
            break;

        case GameState.Ended:
            if (endTrackIndex > endTracks.Count - 1)
            {
                result = null;
            }
            else
            {
                result = endTracks[endTrackIndex];
                endTrackIndex++;
            }
            break;
        }

        if (result == null)
        {
            return(null);
        }

        return(result.Copy());
    }
Example #4
0
    IEnumerator OnNewClip(double syncTime, double clipLength)
    {
        double initTime = syncTime + clipLength;

        yield return(new WaitForSeconds((float)(initTime - AudioSettings.dspTime - Time.fixedDeltaTime * 1.5f)));

        MusicWithInformation newTrack = GetNextBaseTrack();

        if (newTrack != null)
        {
            AudioSource newSource = sources[0];
            newSource.clip   = newTrack.clip;
            newSource.volume = newTrack.volume;
            newSource.PlayScheduled(initTime);
            newSource.SetScheduledStartTime(initTime);
            newSource.SetScheduledEndTime(initTime + newSource.clip.length);
            newTrack.initTime = initTime;

            Debug.Log("New clip queued! Name: " + newTrack.name);

            CycleList(ref sources);

            initOfNextClip = initTime;

            beatNumber            = 0;
            currentlyPlayingTrack = newTrack;

            EventManager.Music_NewClip(initTime, newTrack.clip.length);
            yield break;
        }
        else
        {
            Debug.Log("Returned null track");
            Application.LoadLevel("StartMenu");
        }
    }