Ejemplo n.º 1
0
    public void ScheduleNextMusic(AudioGroup group, int curMusicTransLoc = 0, int startSampleOffset = 0, int lengthInSamples = 0, bool bReplaceIfExists = false)
    {
        // TODO: Warn if channels/frequency not matching!
          // TODO: Validate AudioGroup (!group.IsEmpty())!

          if (!group.IsReady())
          {
         group.InitLayerData();		// Delay this?
          }

          if (curMusic == null)
          {
         // Just play now.
         curMusic = group;
         curMusicTime = startSampleOffset - 1;	// -1 to get the initial sample.

         bus.PlayAudio(group, startSampleOffset, lengthInSamples, bReplaceIfExists);
          }
          else if (transMusic == null || bReplaceIfExists)
          {
         if (bus.IsNextSongScheduled())
         {
            // Next song is already in, meaning we're likely waiting for curSong to transition in.  Save until buffers clear enough
            //  to allow scheduling.
            if (!transInfo.bValid || bReplaceIfExists)
            {
               // Override or just make sure there's nothing there.
               transMusic = null;
               transMusicTime = 0;

               // Set up info for another try later!
               transInfo.bValid = true;
               transInfo.group = group;
               transInfo.curMusicTransLoc = curMusicTransLoc;
               transInfo.startSampleOffset = startSampleOffset;
               transInfo.lengthInSamples = lengthInSamples;
               transInfo.bReplaceIfExists = bReplaceIfExists;
            }
            else
            {
               Debug.LogWarning("MusicPlayer::ScheduleNextMusic() - Transition music already scheduled!");
            }
         }
         else
         {
            // Set up the transition.
            transMusic = group;
            transMusicTime = startSampleOffset;

            // Koreography registration occurs later.  That way we don't double-up or trigger unwanted samples until later.
            bus.PlayAudioScheduled(group, curMusicTransLoc, startSampleOffset, lengthInSamples, bReplaceIfExists);
         }
          }
          // else - don't do anything - we already have music scheduled and we were told NOT to replace it.
    }
Ejemplo n.º 2
0
    public void PlayMusic(AudioGroup group, int startSampleOffset = 0, int lengthInSamples = 0, bool bReplaceIfExists = false)
    {
        // TODO: Warn if channels/frequency not matching!
          // TODO: Validate AudioGroup (!group.IsEmpty())!

          if (!group.IsReady())
          {
         group.InitLayerData();
          }

          if (curMusic != null)
          {
         transMusic = group;
         transMusicTime = startSampleOffset;
          }
          else
          {
         curMusic = group;
         curMusicTime = startSampleOffset - 1;	// -1 to get the initial sample.
          }

          group.RegisterKoreography();

          if (!bus.PlayAudio(group, startSampleOffset, lengthInSamples, bReplaceIfExists))
          {
         Debug.LogWarning("PlayMusic() failed with group: " + group + ", likely something already in the AudioBus?");
          }
    }