private bool Reload() { if (string.IsNullOrEmpty(Prefs.resourceDir)) { return(false); } resourceDir = Prefs.resourceDir; isLoaded = false; if (!string.IsNullOrEmpty(Prefs.selectionAssetGUID)) { var assetPath = AssetDatabase.GUIDToAssetPath(Prefs.selectionAssetGUID); selectAcbAsset = AssetDatabase.LoadMainAssetAtPath(assetPath); if (selectAcbAsset != null) { if (EditorApplication.isPlayingOrWillChangePlaymode) { // CriWareInitializerの初期化を待つ. Observable.EveryUpdate() .SkipWhile(_ => !CriWareInitializer.IsInitialized()) .First() .Subscribe( _ => { LoadCueInfo(selectAcbAsset); Repaint(); }) .AddTo(Disposable); } else { CriForceInitializer.Initialize(); LoadCueInfo(selectAcbAsset); } } } return(true); }
public override void OnEnable(UnityEngine.Object target) { if (EditorApplication.isPlayingOrWillChangePlaymode) { // CriWareInitializerの初期化を待つ. Observable.EveryUpdate() .SkipWhile(_ => !CriWareInitializer.IsInitialized()) .First() .Subscribe(_ => LoadCueInfo(target)) .AddTo(lifetimeDisposable.Disposable); } else { CriForceInitializer.Initialize(); LoadCueInfo(target); } clipboardIcon = EditorGUIUtility.IconContent("Clipboard"); }
private void UpdateDragAndDrop() { var e = Event.current; switch (e.type) { case EventType.DragUpdated: case EventType.DragPerform: var assetObject = DragAndDrop.objectReferences.FirstOrDefault(); if (assetObject == null) { return; } var assetPath = AssetDatabase.GetAssetPath(assetObject); var validate = Path.GetExtension(assetPath) == CriAssetDefinition.AcbExtension; DragAndDrop.visualMode = validate ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.Rejected; if (e.type == EventType.DragPerform) { DragAndDrop.AcceptDrag(); DragAndDrop.activeControlID = 0; if (validate) { selectAcbAsset = assetObject; CriForceInitializer.Initialize(); LoadCueInfo(selectAcbAsset); Prefs.selectionAssetGUID = AssetDatabase.AssetPathToGUID(assetPath); } } break; } }
private static CueInfo[] LoadAcbInfo(string path) { var result = new List <CueInfo>(); CriForceInitializer.Initialize(); var guids = AssetDatabase.FindAssets(string.Empty, new string[] { path }); var acbAssets = guids .Select(x => AssetDatabase.GUIDToAssetPath(x)) .Where(x => Path.GetExtension(x) == CriAssetDefinition.AcbExtension) .Select(x => AssetDatabase.LoadMainAssetAtPath(x)) .ToArray(); foreach (var acbAsset in acbAssets) { // 指定したACBファイル名(キューシート名)を指定してキュー情報を取得. var assetPath = AssetDatabase.GetAssetPath(acbAsset); var fullPath = UnityPathUtility.GetProjectFolderPath() + assetPath; var acb = CriAtomExAcb.LoadAcbFile(null, fullPath, ""); if (acb != null) { var cueInfos = acb.GetCueInfoList().ToArray(); foreach (var cueInfo in cueInfos) { var acbPath = assetPath.Replace(path + PathUtility.PathSeparator, string.Empty); acbPath = PathUtility.GetPathWithoutExtension(acbPath); result.Add(new CueInfo(cueInfo.name, acbPath, cueInfo.userData)); } acb.Dispose(); } } return(result.ToArray()); }