예제 #1
0
    /* 古いキューシートを登録解除して、新しいキューシートの登録を行う。
     * ただし同じキューシートの再登録は回避する */
    private void MargeCueSheet(CriAtomCueSheet[] newCueSheets)
    {
        for (int i = 0; i < this.cueSheets.Length;)
        {
            int j = 0;
            for (j = 0; j < newCueSheets.Length; j++)
            {
                if (newCueSheets[j].name == this.cueSheets[i].name)
                {
                    break;
                }
            }
            if (j == newCueSheets.Length)
            {
                CriAtom.RemoveCueSheet(this.cueSheets[i].name);
            }
            else
            {
                i++;
            }
        }

        foreach (var sheet1 in newCueSheets)
        {
            var sheet2 = this.GetCueSheetInternal(sheet1.name);
            if (sheet2 == null)
            {
                this.AddCueSheetInternal(null, sheet1.acbFile, sheet1.awbFile, null);
            }
        }
    }
예제 #2
0
    /*
     * newDontRemoveExistsCueSheet == false の場合、古いキューシートを登録解除して、新しいキューシートの登録を行う。
     * ただし同じキューシートの再登録は回避する
     */
    private void MargeCueSheet(CriAtomCueSheet[] newCueSheets, bool newDontRemoveExistsCueSheet)
    {
        if (!newDontRemoveExistsCueSheet)
        {
            for (int i = 0; i < this.cueSheets.Length;)
            {
                int index = Array.FindIndex(newCueSheets, sheet => sheet.name == this.cueSheets[i].name);
                if (index < 0)
                {
                    CriAtom.RemoveCueSheet(this.cueSheets[i].name);
                }
                else
                {
                    i++;
                }
            }
        }

        foreach (var sheet1 in newCueSheets)
        {
            var sheet2 = this.GetCueSheetInternal(sheet1.name);
            if (sheet2 == null)
            {
                CriAtom.AddCueSheet(null, sheet1.acbFile, sheet1.awbFile, null);
            }
        }
    }
예제 #3
0
 public void LoadCueSheet(string cueSheetName, int bgmCueId)
 {
     CriAtom.RemoveCueSheet(beforeBGMCueSheetName);
     beforeBGMCueSheetName = cueSheetName;
     CriAtom.AddCueSheet(beforeBGMCueSheetName, beforeBGMCueSheetName + ".acb", null, null);
     bgmSource.cueSheet = beforeBGMCueSheetName;
     bgmSource.volume   = bgmVolume;
     bgmSource.Play(bgmCueId);
 }
예제 #4
0
        public static bool RemoveCueSheet(CriAtomCueSheet cueSheet)
        {
            if (cueSheet == null || string.IsNullOrEmpty(cueSheet.name))
            {
                return(false);
            }

            CriAtom.RemoveCueSheet(cueSheet.name);
            return(true);
        }
예제 #5
0
        private void ReleaseSoundSheet()
        {
            for (var i = 0; i < soundElements.Count; ++i)
            {
                if (!soundElements[i].FinishTime.HasValue)
                {
                    continue;
                }

                // 終了確認した時間から一定時間経過していたら解放.
                if (soundElements[i].FinishTime.Value + releaseTime < Time.realtimeSinceStartup)
                {
                    soundElements.RemoveAt(i);
                }
            }

            var targets = new List <SoundSheet>();

            foreach (var item in managedSoundSheets)
            {
                var release = true;

                // 再生中のCueが存在したら生存.
                foreach (var soundElement in soundElements)
                {
                    if (item.Key == soundElement.SoundSheet.AssetPath)
                    {
                        release = false;
                        break;
                    }
                }

                if (release)
                {
                    targets.Add(item.Value);
                }
            }

            foreach (var target in targets)
            {
                CriAtom.RemoveCueSheet(target.AssetPath);
                managedSoundSheets.Remove(target.AssetPath);
                UnityConsole.Event(ConsoleEventName, ConsoleEventColor, "UnLoad : {0}", SoundSheet.AcbPath(target.AssetPath));
            }
        }
예제 #6
0
        public void ReleaseAll(bool force = false)
        {
            // 再生リストの情報.
            var releaseElements = new List <SoundElement>();

            foreach (var soundElement in soundElements)
            {
                if (!force && soundElement.IsPlaying)
                {
                    continue;
                }

                releaseElements.Add(soundElement);
            }

            foreach (var item in releaseElements)
            {
                soundElements.Remove(item);
            }

            // 管理下の情報.
            var releaseList = new List <KeyValuePair <string, SoundSheet> >();

            foreach (var managedSoundSheet in managedSoundSheets)
            {
                // 再生中のCueは生存.
                if (soundElements.Any(x => managedSoundSheet.Key == x.SoundSheet.AssetPath))
                {
                    continue;
                }

                releaseList.Add(managedSoundSheet);
            }

            foreach (var item in releaseList)
            {
                CriAtom.RemoveCueSheet(item.Value.AssetPath);

                managedSoundSheets.Remove(item.Key);
            }
        }
예제 #7
0
 // Token: 0x060159CE RID: 88526 RVA: 0x005806A4 File Offset: 0x0057E8A4
 public void CRIRemoveCueSheet(string sheetName)
 {
     CriAtom.RemoveCueSheet(sheetName);
 }