using System.Collections.Generic; using System.IO; using System.Linq; using UnityEngine; using System; public class UmaViewerMain : MonoBehaviour { public static UmaViewerMain Instance; private UmaViewerUI UI => UmaViewerUI.Instance; private UmaViewerBuilder Builder => UmaViewerBuilder.Instance; public List Characters = new List(); public List Lives = new List(); public List AbList = new List(); public List AbMotions = new List(); public List AbSounds = new List(); public List AbChara = new List(); [Header("Asset Memory")] public bool ShadersLoaded = false; public Dictionary LoadedBundles = new Dictionary(); private void Awake() { Instance = this; Application.targetFrameRate = -1; AbList = UmaDatabaseController.Instance.MetaEntries.ToList(); AbChara = AbList.Where(ab => ab.Name.StartsWith(UmaDatabaseController.CharaPath)).ToList(); AbMotions = AbList.Where(ab => ab.Name.StartsWith(UmaDatabaseController.MotionPath)).ToList(); AbSounds = AbList.Where(ab => ab.Name.EndsWith(".awb") || ab.Name.EndsWith(".acb")).ToList(); } private void Start() { var UmaCharaData = UmaDatabaseController.Instance.CharaData; foreach (var item in UmaCharaData) { var id = Convert.ToInt32(item["id"]); if (!Characters.Where(c => c.Id == id).Any()) { Characters.Add(new CharaEntry() { Name = item["charaname"].ToString(), Icon = UmaViewerBuilder.Instance.LoadCharaIcon(id.ToString()), Id = id }); } } UI.LoadModelPanels(); UI.LoadMiniModelPanels(); UI.LoadPropPanel(); UI.LoadMapPanel(); var asset = AbList.FirstOrDefault(a => a.Name.Equals("livesettings")); if (asset != null) { string filePath = UmaDatabaseController.GetABPath(asset); if (File.Exists(filePath)) { AssetBundle bundle = AssetBundle.LoadFromFile(filePath); foreach (var item in UmaDatabaseController.Instance.LiveData) { var musicId = Convert.ToInt32(item["music_id"]); var songName = item["songname"].ToString(); if (!Lives.Where(c => c.MusicId == musicId).Any()) { if (bundle.Contains(musicId.ToString())) { TextAsset liveData = bundle.LoadAsset(musicId.ToString()); Lives.Add(new LiveEntry(liveData.text) { MusicId = musicId, SongName = songName }); } } } UI.LoadLivePanels(); } } } public void OpenUrl(string url) { Application.OpenURL(url); } }