//////////////////////////////////////////////////////////////////////// /// Func /// <summary> /// <para>Eng. Inspector for edit Scene Background Image, BGM</para> /// <para>Kor. 씬의 배경 이미지, 배경음을 설정하는 인스펙터입니다. </para> /// </summary> /// <param name="_vinove"> <para> Eng. Parent Vinove class of Scene Class</para> /// <para> Kor. 씬 클래스를 지닌 Vinove 클래스입니다. </para> </param> /// <param name="_scene"> <para> Eng. IMG, BGM change target Scene class.</para> /// <para> Kor. 이미지, 배경음을 변경할 씬 클래스입니다. </para> </param> public SceneBackgroundInspector(Vinove _vinove, VinoveScene _scene) { _currentVinove = _vinove; _currentScene = _scene; _backgroundIllustItems = new string[_currentVinove.SpeakerIllustrations.Count]; }
//////////////////////////////////////////////////////////////////////// /// Func /// <summary> /// <para>Eng. Inspector for Branch data edit</para> /// <para>Kor. 분기의 정보를 편집하는 인스펙터입니다. </para> /// </summary> /// <param name="_vinove"> <para> Eng. Parent Vinove class of Branch</para> /// <para> Kor. 분기를 소지한 Vinove 클래스입니다. </para> </param> /// <param name="_branch"> <para> Eng. target Branch of Edit</para> /// <para> Kor. 편집 대상 분기입니다. </para> </param> public BranchInspector(Vinove _vinove, VinoveBranch _branch) { _currentVinove = _vinove; _currentBranch = _branch; _branchCount = _currentBranch.BranchCount; _windowSizeHeight = _popupPaddingY + _popupPaddingY + (_windowContentSizeY * _branchCount); }
/// <summary> /// <para>Eng. Inspector for Script Graph rename</para> /// <para>Kor. 스크립트 그래프의 이름을 변경하는 인스펙터입니다. </para> /// </summary> /// <param name="_vinove"> <para> Eng. Parent vinove class of graph</para> /// <para> Kor. 해당 그래프를 지니고 있는 Vinove 클래스 입니다. </para> </param> /// <param name="_scene"> <para> Eng. parent scene class of Scrip</para> /// <para> Kor. 이름 변경 대상 스크립트를 지닌 씬 클래스 입니다. </para> </param> /// <param name="_uid"> <para> Eng. UID of rename target Graph</para> /// <para> Kor. 이름을 변경할 대상 그래프의 UID 입니다 </para> </param> public RenameInspector(Vinove _vinove, VinoveScene _scene, string _uid) { _currentVinove = _vinove; _sourceUID = _uid; if (_sourceUID.StartsWith("SCR")) { _script = _scene.FindScriptWithUID(_uid); } }
/// <summary> /// <para>Eng. Assign Vinove file on Canvas UI GameObject. </para> /// <para>Kor. 비노비 파일을 인게임 매니저 오브젝트에 등록합니다. </para> /// </summary> public void VinoveInitialize() { #if UNITY_EDITOR string _archivePath = Application.dataPath + "/TemporaryArchive.vnvach"; if (System.IO.File.Exists(_archivePath)) { var loaded = Resources.Load <Vinove>("Gamedat"); AssetPathArchive _archive = BinaryIOManager.GetInst().BinaryDeserialize <AssetPathArchive>(_archivePath); AssetDatabase.ImportAsset(_archive._path); var currentLoaded = AssetDatabase.LoadAssetAtPath <Vinove>(_archive._path); _currentVinove = currentLoaded as Vinove; // ----------------------- Vinove - Starter Scene ----------------------- if (ErrorDetector.Instance.IsStringHasData(_archive._sceneUID)) { // ----------------------- Scene ----------------------- _currentScene = _currentVinove.FindSceneWithUID(_archive._sceneUID); // ----------------------- Scene - Specific Script ----------------------- if (ErrorDetector.Instance.IsStringHasData(_archive._scriptUID)) { _currentScript = _currentScene.FindScriptWithUID(_archive._scriptUID); } // ----------------------- Scene - Starter Script ----------------------- else if (ErrorDetector.Instance.IsStringHasData(_currentScene.StarterUID)) { _currentScript = _currentScene.FindScriptWithUID(_currentScene.StarterUID); } } } #else if (_currentVinove == null) { _currentVinove = Resources.Load <Vinove>("Gamedat"); // ----------------------- Vinove - Starter Scene ----------------------- if (ErrorDetector.Instance.IsStringHasData(_currentVinove.StarterUID)) { // ----------------------- Scene ----------------------- _currentScene = _currentVinove.FindSceneWithUID(_currentVinove.StarterUID); // ----------------------- Scene - Specific Script ----------------------- if (ErrorDetector.Instance.IsStringHasData(_currentScene.StarterUID)) { _currentScript = _currentScene.FindScriptWithUID(_currentScene.StarterUID); } } } #endif }
//////////////////////////////////////////////////////////////////////// /// Func /// <summary> /// <para>Eng. Inspector for Scene, Branch, Merge Graph rename</para> /// <para>Kor. 씬, 분기, 병합 그래프의 이름을 변경하는 인스펙터입니다. </para> /// </summary> /// <param name="_vinove"> <para> Eng. Parent vinove class of graph</para> /// <para> Kor. 해당 그래프를 지니고 있는 Vinove 클래스 입니다. </para> </param> /// <param name="_uid"> <para> Eng. UID of rename target Graph</para> /// <para> Kor. 이름을 변경할 대상 그래프의 UID 입니다 </para> </param> public RenameInspector(Vinove _vinove, string _uid) { _currentVinove = _vinove; _sourceUID = _uid; if (_sourceUID.StartsWith("BRA")) { _branch = _currentVinove.FindBranchWithUID(_sourceUID); } else if (_sourceUID.StartsWith("MRG")) { _merge = _currentVinove.FindMergeWithUID(_sourceUID); } else if (_sourceUID.StartsWith("SCE")) { _scene = _currentVinove.FindSceneWithUID(_sourceUID); } }
//////////////////////////////////////////////////////////////////////// /// Func /// <summary> /// <para>Eng. GraphViewer Event Proc Func </para> /// <para>Kor. GraphViewer의 이벤트를 담당하는 함수 </para> /// </summary> /// <param name="_vinove"> <para> Eng. Currently opened vinove file</para> /// <para> Kor. 현재 열린 비노비 파일 </para> </param> /// <param name="_canvasMousePos"> <para> Eng. Mouse pos on Canvas</para> /// <para> Kor. 캔버스 내에서의 마우스 위치</para> </param> static void GraphEvents(Vinove _vinove, Vector2 _canvasMousePos) { if (IsMouseOnMinimap()) { } else { if (e.type == EventType.Repaint) { needRepaint = false; } if (e.type == EventType.MouseUp) { graphTranslating = false; hoverScene = null; hoverBranch = null; hoverMerge = null; } if (e.type == EventType.MouseMove) { hoverScene = currentVinove.IsContainWholeGraph(e.mousePosition); if (hoverScene == null) { hoverBranch = currentVinove.IsContainWholeBranch(e.mousePosition); if (hoverBranch == null) { hoverMerge = currentVinove.IsContainWholeMerge(e.mousePosition); } } needRepaint = true; } if (e.type == EventType.ScrollWheel) { // Zoom if (canvasRect.Contains(e.mousePosition)) { float zoomCtrl = e.control ? 0.1f : 0.2f; float zoomValue = e.delta.y > 0 ? -zoomCtrl : zoomCtrl; ZoomWithFocus(e.mousePosition, zoomValue); e.Use(); } } if (((e.alt && e.button == 0 && e.type == EventType.MouseDrag && e.isMouse)) || (e.button == 2 && e.type == EventType.MouseDrag && canvasRect.Contains(e.mousePosition))) { //translation canvas Translation += e.delta; e.Use(); } if (e.type == EventType.MouseDown && e.button == 1 && canvasRect.Contains(e.mousePosition)) { // Open node popupMenu GenericMenu popupMenu = new GenericMenu(); VinoveScene overScene = currentVinove.IsContainWholeGraph(e.mousePosition); VinoveBranch overBranch = currentVinove.IsContainWholeBranch(e.mousePosition); VinoveMerge overMerge = currentVinove.IsContainWholeMerge(e.mousePosition); if (overScene == null && overBranch == null && overMerge == null) { // if, right click not on scene node popupMenu.AddItem(new GUIContent("Add Scene"), false, () => { currentVinove.CreateScene("New Scene", new Rect(_canvasMousePos.x, _canvasMousePos.y, 200, 100)); Debug.Log("popupMenu_AddScene Test"); }); popupMenu.AddItem(new GUIContent("Add Branch"), false, () => { currentVinove.CreateBranch("New Branch", new Rect(_canvasMousePos.x, _canvasMousePos.y, 150, 200)); Debug.Log("popupMenu_AddBranch Test"); }); popupMenu.AddItem(new GUIContent("Add Merge"), false, () => { currentVinove.CreateMerge("New Merge", new Rect(_canvasMousePos.x, _canvasMousePos.y, 150, 200)); Debug.Log("popupMenu_AddMerge Test"); }); popupMenu.AddSeparator(""); if (_copiedScene == null) { popupMenu.AddDisabledItem(new GUIContent("Paste Scene")); } else { popupMenu.AddItem(new GUIContent("Paste Scene"), false, () => { currentVinove.PasteScene(_copiedScene, new Rect(_canvasMousePos.x, _canvasMousePos.y, 200, 100)); _copiedScene = null; }); } popupMenu.AddSeparator(""); } else if (overScene != null) { // on graph popupMenu.AddItem(new GUIContent("Open Scene"), false, () => { currentScene = overScene; scriptViewer = true; _copiedScene = null; }); popupMenu.AddItem(new GUIContent("Copy Scene"), false, () => { _copiedScene = overScene; }); popupMenu.AddItem(new GUIContent("Delete Scene"), false, () => { GraphDeleteSequence(overScene.UID, true); }); popupMenu.AddSeparator(""); popupMenu.AddItem(new GUIContent("Select Starter"), false, () => { currentVinove.StarterUID = overScene.UID; }); popupMenu.AddItem(new GUIContent("Set Background Image and Music"), false, () => { OpenSceneBackgroundInspector(overScene); }); popupMenu.AddSeparator(""); popupMenu.AddItem(new GUIContent("Rename"), false, () => { OpenRenameInspector(overScene.UID); }); popupMenu.AddItem(new GUIContent("Run"), false, () => { AssetPathArchive _archive = new AssetPathArchive(currentVinovePath, overScene.UID); string _archivePath = "Assets/TemporaryArchive.vnvach"; BinaryIOManager.GetInst().BinarySerialize <AssetPathArchive>(_archive, _archivePath); ToolbarFuncSave(); EditorApplication.isPlaying = true; }); } else if (overBranch != null) { popupMenu.AddItem(new GUIContent("Open Branch"), false, () => { OpenBranchInspector(overBranch); Debug.Log("popupMenu_OpenBranch Test : " + overBranch.UID); }); popupMenu.AddItem(new GUIContent("Delete Branch"), false, () => { GraphDeleteSequence(overBranch.UID, true); Debug.Log("popupMenu_DeleteBranch"); }); popupMenu.AddSeparator(""); popupMenu.AddItem(new GUIContent("Change Branch Count"), false, () => { OpenCountInspector(overBranch); }); popupMenu.AddSeparator(""); popupMenu.AddItem(new GUIContent("Rename"), false, () => { OpenRenameInspector(overBranch.UID); }); } else if (overMerge != null) { popupMenu.AddItem(new GUIContent("Change Merge Count"), false, () => { OpenCountInspector(overMerge); }); popupMenu.AddSeparator(""); popupMenu.AddItem(new GUIContent("Delete Merge"), false, () => { GraphDeleteSequence(overMerge.UID, true); Debug.Log("popupMenu_DeleteBranch"); }); popupMenu.AddSeparator(""); popupMenu.AddItem(new GUIContent("Rename"), false, () => { OpenRenameInspector(overMerge.UID); }); } popupMenu.ShowAsContext(); } if (e.type == EventType.MouseDrag && e.button == 0 && canvasRect.Contains(e.mousePosition) && graphTranslating == true) { if (hoverScene != null) { graphTranslating = true; hoverScene.MoveSceneGraph(e.delta, ZoomFactor); needRepaint = true; } else if (hoverBranch != null) { graphTranslating = true; hoverBranch.MoveBranchGraph(e.delta, ZoomFactor); needRepaint = true; } else if (hoverMerge != null) { graphTranslating = true; hoverMerge.MoveMergeGraph(e.delta, ZoomFactor); needRepaint = true; } e.Use(); } if (e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { // Double clicked graphTranslating = false; VinoveScene overScene = currentVinove.IsContainWholeGraph(e.mousePosition); if (overScene != null) { currentScene = overScene; scriptViewer = true; prevLinkUID = null; linkerControllActivated = false; _copiedScene = null; _undoList.Clear(); } VinoveBranch overBranch = currentVinove.IsContainWholeBranch(e.mousePosition); if (overBranch != null) { OpenBranchInspector(overBranch); } e.Use(); } if (e.type == EventType.MouseDown && e.button == 0) { if (hoverScene == null && hoverBranch == null && hoverMerge == null) { linkerControllActivated = false; } else { graphTranslating = true; } } } }
/// <summary> /// <para>Eng. Script GraphViewer Event Proc Func </para> /// <para>Kor. Script GraphViewer의 이벤트를 담당하는 함수 </para> /// </summary> /// <param name="_vinove"> <para> Eng. Currently opened vinove file</para> /// <para> Kor. 현재 열린 비노비 파일 </para> </param> /// <param name="_openedScene"> <para> Eng. Currently opened scene</para> /// <para> Kor. 현재 뷰어로 열린 씬</para> </param> /// <param name="_canvasMousePos"> <para> Eng. Mouse pos in Canvas</para> /// <para> Kor. 캔버스 내에서의 마우스 위치</para> </param> static void ScriptGraphEvents(Vinove _vinove, VinoveScene _openedScene, Vector2 _canvasMousePos) { if (IsMouseOnMinimap()) { } else { if (e.type == EventType.Repaint) { needRepaint = false; } if (e.type == EventType.MouseUp) { graphTranslating = false; hoverScript = null; } if (e.type == EventType.ScrollWheel) { // Zoom if (canvasRect.Contains(e.mousePosition)) { float zoomCtrl = e.control ? 0.1f : 0.2f; float zoomValue = e.delta.y > 0 ? -zoomCtrl : zoomCtrl; ZoomWithFocus(e.mousePosition, zoomValue); e.Use(); } } if (((e.alt && e.button == 0 && e.type == EventType.MouseDrag && e.isMouse)) || (e.button == 2 && e.type == EventType.MouseDrag && canvasRect.Contains(e.mousePosition))) { //translation canvas _openedScene.Translation += e.delta; e.Use(); } if (e.type == EventType.MouseDown && e.button == 1 && canvasRect.Contains(e.mousePosition)) { // Open node popupMenu GenericMenu popupMenu = new GenericMenu(); VinoveScript overScript = _openedScene.IsContainWholeGraph(e.mousePosition); if (overScript == null) { // if, right click not on scene node popupMenu.AddItem(new GUIContent("Add Script"), false, () => { currentVinove.CreateScript(_openedScene, "New Script", new Rect(_canvasMousePos.x, _canvasMousePos.y, Constants.HORIZONTAL_GRAPH_SIZE_X, Constants.HORIZONTAL_GRAPH_SIZE_Y)); Debug.Log("popupMenu_AddScript Test"); }); popupMenu.AddSeparator(""); if (_copiedScript == null) { popupMenu.AddDisabledItem(new GUIContent("Paste Script")); } else { popupMenu.AddItem(new GUIContent("Paste Script"), false, () => { currentVinove.PasteScript(currentScene, _copiedScript, new Rect(_canvasMousePos.x, _canvasMousePos.y, Constants.HORIZONTAL_GRAPH_SIZE_X, Constants.HORIZONTAL_GRAPH_SIZE_Y)); _copiedScript = null; }); } popupMenu.AddSeparator(""); } else { // on graph popupMenu.AddItem(new GUIContent("Open Script"), false, () => { OpenScriptInspector(overScript); Debug.Log("popupMenu_OpenScript Test : " + overScript.UID); }); popupMenu.AddItem(new GUIContent("Copy Script"), false, () => { _copiedScript = overScript; }); popupMenu.AddItem(new GUIContent("Delete Script"), false, () => { GraphDeleteSequence(overScript.UID, true); Debug.Log("popupMenu_DeleteScript Test"); }); popupMenu.AddSeparator(""); popupMenu.AddItem(new GUIContent("Select Starter"), false, () => { currentScene.StarterUID = overScript.UID; }); popupMenu.AddSeparator(""); popupMenu.AddItem(new GUIContent("Rename"), false, () => { OpenRenameInspector(overScript.ParentSceneUID, overScript.UID); }); popupMenu.AddItem(new GUIContent("Run"), false, () => { ToolbarFuncSave(); AssetPathArchive _archive = new AssetPathArchive(currentVinovePath, overScript.ParentSceneUID, overScript.UID); string _archivePath = "Assets/TemporaryArchive.vnvach"; BinaryIOManager.GetInst().BinarySerialize <AssetPathArchive>(_archive, _archivePath); EditorApplication.isPlaying = true; }); } popupMenu.ShowAsContext(); } if (e.type == EventType.MouseDrag && e.button == 0 && canvasRect.Contains(e.mousePosition)) { // Graph Translating VinoveScript overScript = currentScene.IsContainWholeGraph(e.mousePosition); if (hoverScript != null) { graphTranslating = true; hoverScript.MoveScriptGraph((e.delta / currentScene.ZoomFactor)); needRepaint = true; } e.Use(); } if (e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { // Double clicked graphTranslating = false; VinoveScript overScript = currentScene.IsContainWholeGraph(e.mousePosition); if (overScript != null) { OpenScriptInspector(overScript); } e.Use(); } if (e.type == EventType.MouseDown && e.button == 0) { VinoveScript _scriptTmp = currentScene.IsContainWholeGraph(e.mousePosition); if (_scriptTmp == null) { linkerControllActivated = false; } else if (graphTranslating == false) { hoverScript = _scriptTmp; } } } }
//////////////////////////////////////////////////////////////////////// /// Func /// <summary> /// <para>Eng. Inspector for add Speaker data</para> /// <para>Kor. 화자 정보를 추가할 수 있는 인스펙터입니다. </para> /// </summary> /// <param name="_vinove"> <para> Eng. Vinove class for Add speaker data</para> /// <para> Kor. 추가할 화자 정보를 지닐 Vinove 클래스입니다. </para> </param> public SpeakerDataInspector(Vinove _vinove) { _currentVinove = _vinove; }
//////////////////////////////////////////////////////////////////////// /// Func /// <summary> /// <para>Eng. Inspector for add Speaker, BackgroundIMG illust</para> /// <para>Kor. 화자, 배경 일러스트를 추가할 수 있는 인스펙터입니다. </para> /// </summary> /// <param name="_vinove"> <para> Eng. Vinove class for Add illust</para> /// <para> Kor. 추가할 일러스트를 지닐 Vinove 클래스입니다. </para> </param> /// <param name="_IlluType"> <para> Eng. Types of Illustrations(Background or Speaker) to add</para> /// <para> Kor. 추가할 일러스트의 종류(배경 or 화자)입니다.</para> </param> public IllustrationInspector(Vinove _vinove, string _IlluType) { _currentVinove = _vinove; _category = _IlluType; }
/// <summary> /// <para>Eng. Inspector for edit Merge link count</para> /// <para>Kor. 병합의 링크 개수를 편집하는 인스펙터입니다. </para> /// </summary> /// <param name="_vinove"> <para> Eng. Parent Vinove class of Merge Class</para> /// <para> Kor. 병합 클래스를 지닌 Vinove 클래스입니다. </para> </param> /// <param name="_merge"> <para> Eng. Link count change target merge class.</para> /// <para> Kor. 링크 개수 변경 대상 병합 클래스입니다. </para> </param> public BranchCountInspector(Vinove _vinove, VinoveMerge _merge) { _currentVinove = _vinove; _currentMerge = _merge; }
//////////////////////////////////////////////////////////////////////// /// Func /// <summary> /// <para>Eng. Inspector for edit Branch link count</para> /// <para>Kor. 분기의 링크 개수를 편집하는 인스펙터입니다. </para> /// </summary> /// <param name="_vinove"> <para> Eng. Parent Vinove class of Branch Class</para> /// <para> Kor. 분기 클래스를 지닌 Vinove 클래스입니다. </para> </param> /// <param name="_branch"> <para> Eng. Link count change target branch class.</para> /// <para> Kor. 링크 개수 변경 대상 분기 클래스입니다. </para> </param> public BranchCountInspector(Vinove _vinove, VinoveBranch _branch) { _currentVinove = _vinove; _currentBranch = _branch; }