Ejemplo n.º 1
0
    private void HandlePlayRequest(TracklistEntry entry, float timeSkip)
    {
        float  fadeTime  = entry.GetEntranceFadeTime();
        ITrack nextTrack = entry.GetTrack();

        currentOutput.FadeOut(fadeTime);
        // This even fires as the track is fading out, not strictly as it ends. Good enough for our purposes.
//		if (TrackEndsEvent != null) {
//			TrackEndsEvent (currentOutput.GetTrack ());
//		}
        currentOutput = GetOutputForNewEntry(entry);
        currentOutput.SetTrack(nextTrack);

        // safety
        LoadTrackIfNeeded(nextTrack);
        currentOutput.FadeIn(fadeTime);
        if (NewTrackBeginsEvent != null)
        {
            NewTrackBeginsEvent(nextTrack);
        }
        if (timeSkip != 0)
        {
            Diglbug.Log("TracklistPlayer Skipping to catch up with signal delay: " + timeSkip, PrintStream.AUDIO_PLAYBACK);
            currentOutput.SetTrackTime(timeSkip);
        }
        else
        {
            Diglbug.Log("TracklistPlayer timeSkip neglibile", PrintStream.AUDIO_PLAYBACK);
        }
    }
Ejemplo n.º 2
0
 private int IndexOfEntryInTracklist(TracklistEntry entry)
 {
     for (int k = 0; k < tracklist.entries.Length; k++)
     {
         if (entry == tracklist.entries [k])
         {
             return(k);
         }
     }
     return(-1);
 }
Ejemplo n.º 3
0
 private TrackOutput GetOutputForNewEntry(TracklistEntry entry)
 {
     if (entry is VideoTracklistEntry)
     {
         return(videoSystem);
     }
     else
     {
         multiPlayer.SwitchTracks();
         return(multiPlayer);
     }
 }
Ejemplo n.º 4
0
 private void PlayTrackEntryAtIndex(int index, float timeSkip)
 {
     if (index < tracklist.entries.Length)
     {
         trackIndex = index;
         TracklistEntry entry = tracklist.GetTrackEntryAtIndex(index);
         HandlePlayRequest(entry, timeSkip);
     }
     else
     {
         Diglbug.Log("Refused to play track at invalid index: " + index);
     }
 }
Ejemplo n.º 5
0
    // public for rehearsal controls scrub.
    public void PlayTrackEntry(TracklistEntry entry, float timeSkip)
    {
        int requestedIndex = IndexOfEntryInTracklist(entry);

        if (requestedIndex != -1)
        {
            if (!IsExpectedIndex(requestedIndex))
            {
                Diglbug.Log("Detected unorthodox track request (" + requestedIndex + ") - unloading previously loaded tracks", PrintStream.MEDIA_LOAD);
                UnloadAllTracksExcept(entry.GetTrack());
            }
            PlayTrackEntryAtIndex(requestedIndex, timeSkip);
        }
        else
        {
            Diglbug.LogError("Requested play of TrackEntry failed - entry not initialised in the Tracklist player's Tracklist");
        }
    }
Ejemplo n.º 6
0
    public void Rehearse_SkipToProgress(float p)
    {
        float destTime = totalActingLength * p;

        for (int k = 0; k < acts.Length; k++)
        {
            if (destTime - acts [k].GetActingLength() < 0f)
            {
                TracklistEntry entry = acts [k].GetEntryAtActTime(destTime);
                float          delay = acts [k].GetSpecificEntryTimeAtActTime(entry, destTime);
                player.PlayTrackEntry(entry, delay);
                return;
            }
            else
            {
                destTime -= acts [k].GetActingLength();
            }
        }
    }
Ejemplo n.º 7
0
    private IEnumerator PlayActWhenLoaded(ActSignalBundle asb)
    {
        Act            a          = asb.act;
        Signal         s          = asb.signal;
        int            timeToSkip = SignalUtils.GetSignalTimeOffset(s.GetSignalTime());
        TracklistEntry toPlay     = a.GetEntryAtActTime(timeToSkip);

        LoadTrackIfNeeded(toPlay.GetTrack());
        while (!toPlay.GetTrack().IsLoaded())
        {
            yield return(null);
        }
//		RecoveryManager.Instance.RecoveryComplete ();// TODO: Move this somewhere nicer. Maybe sub.

        int   postLoadTimeToSkip = SignalUtils.GetSignalTimeOffset(s.GetSignalTime());
        float timeToPlayFrom     = a.GetSpecificEntryTimeAtActTime(toPlay, postLoadTimeToSkip);

        PlayTrackEntry(toPlay, timeToPlayFrom);
    }
Ejemplo n.º 8
0
    public float GetSpecificEntryTimeAtActTime(TracklistEntry entry, float time)
    {
        float          totalTime = time;
        TracklistEntry te;

        for (int k = 0; k < trackEntries.Length; k++)
        {
            te = trackEntries [k];
            if (te == entry)
            {
                return(Mathf.Min(totalTime, te.GetTrackLength() - 0.1f));
            }
            else
            {
                totalTime -= te.GetTrackLength();
            }
        }
        // else, we mustn't have found the track here :(
        Diglbug.LogError("GetSpecificEntryTimeAtActTime request in " + name + " track not present " + entry.name);
        return(-1f);
    }
Ejemplo n.º 9
0
    private IEnumerator SendWhenLoaded(ActBoolBundle abb)
    {
        Act            a      = abb.act;
        bool           forced = abb.b;
        TracklistEntry toPlay = a.GetFirstTracklistEntry();

//		SetTrack (toPlay.GetTrack ());
        LoadTrackIfNeeded(toPlay.GetTrack());
        while (!toPlay.GetTrack().IsLoaded())
        {
            yield return(null);
        }
        if (forced)
        {
            Payload toSend = actSet.GetPayloadForDefinedAct(a.definedAct);
            Diglbug.Log("Forcing Payload Send from TracklistPlayer " + toSend);
            BLE.Instance.Manager.ForceSendPayload(toSend);
        }
        else
        {
            Diglbug.Log("Sending Expected from TracklistPlayer ");
            BLE.Instance.Manager.SendExpectedPayload();
        }
    }
Ejemplo n.º 10
0
 public void PlayTrackEntry(TracklistEntry entry)
 {
     PlayTrackEntry(entry, 0f);
 }
Ejemplo n.º 11
0
    public void TracklistItemChosen(int i)
    {
        TracklistEntry toPlay = GetEntryAtIndex(i);

        player.PlayTrackEntry(toPlay);
    }