From 404921f8151aaaa9f3d8f46848544084d95a0286 Mon Sep 17 00:00:00 2001 From: "skrwns304@gmail.com" Date: Tue, 9 Jun 2026 15:51:29 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EB=8B=A4=EC=9D=B4=EC=96=BC=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=9E=91=EC=97=85=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01_Scenes/WhaleAdventure_VR/Dialog.meta | 8 + .../WhaleAdventure_VR/Dialog/DialogTest.unity | 3 + .../Dialog/DialogTest.unity.meta} | 4 +- Assets/02_Scripts/Communication.meta | 8 + Assets/02_Scripts/Communication/Dialog.meta | 8 + .../Communication/Dialog/DialogChoice.cs | 8 + .../Communication/Dialog/DialogChoice.cs.meta | 2 + .../Communication/Dialog/DialogGroup.cs | 8 + .../Communication/Dialog/DialogGroup.cs.meta | 2 + .../Communication/Dialog/DialogNode.cs | 31 + .../Communication/Dialog/DialogNode.cs.meta | 2 + .../Communication/Dialog/DialogPlayer.cs | 196 + .../Communication/Dialog/DialogPlayer.cs.meta | 2 + Assets/02_Scripts/Communication/Voice.meta | 8 + .../Voice/CharacterVoiceObject.cs | 18 + .../Voice/CharacterVoiceObject.cs.meta | 2 + .../02_Scripts/Communication/Voice/LipSync.cs | 109 + .../Communication/Voice/LipSync.cs.meta | 2 + Assets/02_Scripts/Data.meta | 8 + Assets/02_Scripts/Data/Character.meta | 8 + .../Data/Character/CharacterData.cs | 9 + .../Data/Character/CharacterData.cs.meta | 2 + Assets/02_Scripts/Data/Communication.meta | 8 + .../02_Scripts/Data/Communication/Dialog.meta | 8 + .../Communication/Dialog/ExpressionData.cs | 10 + .../Dialog/ExpressionData.cs.meta | 2 + .../Data/Communication/Dialog/GestureData.cs | 10 + .../Communication/Dialog/GestureData.cs.meta | 2 + .../02_Scripts/Data/Communication/Voice.meta | 8 + .../Data/Communication/Voice/VoiceClip.cs | 8 + .../Communication/Voice/VoiceClip.cs.meta | 2 + Assets/02_Scripts/dumy.txt | 1 - Assets/07_Data/Character.meta | 8 + Assets/07_Data/Character/Fish1.asset | 3 + Assets/07_Data/Character/Fish1.asset.meta | 8 + Assets/07_Data/Communication.meta | 8 + .../07_Data/Communication/DialogGroups.meta | 8 + .../DialogGroups/DialogGroup_Fish_1.asset | 3 + .../DialogGroup_Fish_1.asset.meta | 8 + Assets/07_Data/Communication/DialogNodes.meta | 8 + .../DialogNodes/DialogNode_Fish1_1_100.asset | 3 + .../DialogNode_Fish1_1_100.asset.meta | 8 + .../DialogNodes/DialogNode_Fish1_1_200.asset | 3 + .../DialogNode_Fish1_1_200.asset.meta | 8 + .../DialogNodes/DialogNode_Fish1_1_310.asset | 3 + .../DialogNode_Fish1_1_310.asset.meta | 8 + .../DialogNodes/DialogNode_Fish1_1_410.asset | 3 + .../DialogNode_Fish1_1_410.asset.meta | 8 + Assets/07_Data/dumy.txt | 1 - Assets/Samples/Graph Toolkit.meta | 8 + Assets/Samples/Graph Toolkit/0.4.0-exp.2.meta | 8 + .../0.4.0-exp.2/TextureMaker Sample.meta | 8 + .../TextureMaker Sample/Editor.meta | 8 + .../Editor/AssetImport.meta | 8 + .../AssetImport/TextureMakerImporter.cs | 91 + .../AssetImport/TextureMakerImporter.cs.meta | 3 + .../TextureMaker Sample/Editor/Model.meta | 8 + .../Editor/Model/Nodes.meta | 8 + .../Editor/Model/Nodes/CreateTextureNode.cs | 38 + .../Model/Nodes/CreateTextureNode.cs.meta | 3 + .../Model/Nodes/ITextureEvaluatorNode.cs | 22 + .../Model/Nodes/ITextureEvaluatorNode.cs.meta | 3 + .../Editor/Model/Nodes/MeanColorNode.cs | 75 + .../Editor/Model/Nodes/MeanColorNode.cs.meta | 3 + .../Editor/Model/Nodes/UniformNode.cs | 57 + .../Editor/Model/Nodes/UniformNode.cs.meta | 3 + .../Editor/TextureMakerGraph.cs | 120 + .../Editor/TextureMakerGraph.cs.meta | 3 + .../VisualNovelDirector Sample.meta | 8 + .../VisualNovelDirector Sample/Assets.meta | 8 + .../Assets/Actors.meta | 8 + .../Assets/Actors/NodusPose1.png | 3 + .../Assets/Actors/NodusPose1.png.meta | 117 + .../Assets/Actors/NodusPose2.png | 3 + .../Assets/Actors/NodusPose2.png.meta | 117 + .../Assets/Actors/WirerickPose1.png | 3 + .../Assets/Actors/WirerickPose1.png.meta | 117 + .../Assets/Actors/WirerickPose2.png | 3 + .../Assets/Actors/WirerickPose2.png.meta | 117 + .../Assets/Backgrounds.meta | 8 + .../Assets/Backgrounds/GraphWorld.png | 3 + .../Assets/Backgrounds/GraphWorld.png.meta | 117 + .../Assets/Backgrounds/Office.png | 3 + .../Assets/Backgrounds/Office.png.meta | 117 + .../Assets/FishGraph.vnd | 362 ++ .../Assets/FishGraph.vnd.meta | 10 + .../Assets/Visual Novel Graph.vnd | 5736 +++++++++++++++++ .../Assets/Visual Novel Graph.vnd.meta | 10 + .../Assets/VisualNovelScene.unity | 3 + .../Assets/VisualNovelScene.unity.meta} | 4 +- .../VisualNovelDirector Sample/Editor.meta | 8 + .../Editor/AssetImport.meta | 3 + .../VisualNovelDirectorImporter.cs | 330 + .../VisualNovelDirectorImporter.cs.meta | 3 + .../Editor/Model.meta | 3 + .../Editor/Model/Nodes.meta | 8 + .../Editor/Model/Nodes/SetBackgroundNode.cs | 28 + .../Model/Nodes/SetBackgroundNode.cs.meta | 3 + .../Editor/Model/Nodes/SetDialogueNode.cs | 48 + .../Model/Nodes/SetDialogueNode.cs.meta | 3 + .../Editor/Model/Nodes/StartNode.cs | 28 + .../Editor/Model/Nodes/StartNode.cs.meta | 3 + .../Editor/Model/Nodes/TwoOptionNode.cs | 56 + .../Editor/Model/Nodes/TwoOptionNode.cs.meta | 2 + .../Editor/Model/Nodes/VisualNovelNode.cs | 33 + .../Model/Nodes/VisualNovelNode.cs.meta | 3 + .../Editor/Model/Nodes/WaitForInputNode.cs | 30 + .../Model/Nodes/WaitForInputNode.cs.meta | 3 + .../Editor/Model/VisualNovelDirectorGraph.cs | 86 + .../Model/VisualNovelDirectorGraph.cs.meta | 2 + ....Samples.VisualNovelDirector.Editor.asmdef | 21 + ...les.VisualNovelDirector.Editor.asmdef.meta | 7 + .../ExampleProject.meta | 8 + .../ExampleProject/Videos.meta | 8 + .../ExampleProject/Videos/FantasyKingdom.mp4 | 3 + .../Videos/FantasyKingdom.mp4.meta | 27 + .../VisualNovelDirector Sample/Readme.md | 1 + .../VisualNovelDirector Sample/Readme.md.meta | 3 + .../VisualNovelDirector Sample/Runtime.meta | 3 + .../Runtime/BasicVisualNovelCanvas.prefab | 3 + .../BasicVisualNovelCanvas.prefab.meta | 7 + .../Runtime/InputProvider.meta | 3 + .../IVisualNovelInputProvider.cs | 33 + .../IVisualNovelInputProvider.cs.meta | 3 + .../InputProvider/UnityInputProvider.cs | 150 + .../InputProvider/UnityInputProvider.cs.meta | 3 + .../Runtime/InputProvider/VisualNovelInput.cs | 326 + .../InputProvider/VisualNovelInput.cs.meta | 2 + .../VisualNovelInput.inputactions | 45 + .../VisualNovelInput.inputactions.meta | 14 + .../Runtime/Nodes.meta | 3 + .../Runtime/Nodes/IVisualNovelNodeExecutor.cs | 22 + .../Nodes/IVisualNovelNodeExecutor.cs.meta | 3 + .../Runtime/Nodes/SetBackground.meta | 3 + .../SetBackground/SetBackgroundExecutor.cs | 19 + .../SetBackgroundExecutor.cs.meta | 3 + .../Nodes/SetBackground/SetBackgroundNode.cs | 14 + .../SetBackground/SetBackgroundNode.cs.meta | 3 + .../Runtime/Nodes/SetDialogue.meta | 3 + .../Nodes/SetDialogue/SetDialogueExecutor.cs | 114 + .../SetDialogue/SetDialogueExecutor.cs.meta | 3 + .../Nodes/SetDialogue/SetDialogueNode.cs | 17 + .../Nodes/SetDialogue/SetDialogueNode.cs.meta | 3 + .../SetDialogueNodeWithPreviousActor.cs | 13 + .../SetDialogueNodeWithPreviousActor.cs.meta | 3 + .../Runtime/Nodes/TwoOption.meta | 8 + .../Nodes/TwoOption/TwoOptionExecutor.cs | 37 + .../Nodes/TwoOption/TwoOptionExecutor.cs.meta | 2 + .../Nodes/TwoOption/TwoOptionRuntimeNode.cs | 34 + .../TwoOption/TwoOptionRuntimeNode.cs.meta | 2 + .../Runtime/Nodes/VisualNovelRuntimeNode.cs | 18 + .../Nodes/VisualNovelRuntimeNode.cs.meta | 3 + .../Runtime/Nodes/WaitForInput.meta | 3 + .../WaitForInput/WaitForInputExecutor.cs | 18 + .../WaitForInput/WaitForInputExecutor.cs.meta | 3 + .../Nodes/WaitForInput/WaitForInputNode.cs | 12 + .../WaitForInput/WaitForInputNode.cs.meta | 3 + ...Toolkit.Samples.VisualNovelDirector.asmdef | 18 + ...it.Samples.VisualNovelDirector.asmdef.meta | 3 + .../Runtime/VisualNovelDirector.cs | 103 + .../Runtime/VisualNovelDirector.cs.meta | 3 + .../Runtime/VisualNovelRuntimeGraph.cs | 18 + .../Runtime/VisualNovelRuntimeGraph.cs.meta | 3 + .../Fonts/LiberationSans.ttf.meta | 16 +- .../LiberationSans SDF - Fallback.asset | 4 +- .../LiberationSans SDF - Fallback.asset.meta | 4 +- .../LiberationSans SDF.asset | 4 +- .../LiberationSans SDF.asset.meta | 4 +- .../Shaders/TMPro_Properties.cginc.meta | 4 +- .../XR/Settings/OpenXRPackageSettings.asset | 4 +- Packages/manifest.json | 1 + Packages/packages-lock.json | 9 + 172 files changed, 9854 insertions(+), 26 deletions(-) create mode 100644 Assets/01_Scenes/WhaleAdventure_VR/Dialog.meta create mode 100644 Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity rename Assets/{02_Scripts/dumy.txt.meta => 01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity.meta} (62%) create mode 100644 Assets/02_Scripts/Communication.meta create mode 100644 Assets/02_Scripts/Communication/Dialog.meta create mode 100644 Assets/02_Scripts/Communication/Dialog/DialogChoice.cs create mode 100644 Assets/02_Scripts/Communication/Dialog/DialogChoice.cs.meta create mode 100644 Assets/02_Scripts/Communication/Dialog/DialogGroup.cs create mode 100644 Assets/02_Scripts/Communication/Dialog/DialogGroup.cs.meta create mode 100644 Assets/02_Scripts/Communication/Dialog/DialogNode.cs create mode 100644 Assets/02_Scripts/Communication/Dialog/DialogNode.cs.meta create mode 100644 Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs create mode 100644 Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs.meta create mode 100644 Assets/02_Scripts/Communication/Voice.meta create mode 100644 Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs create mode 100644 Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs.meta create mode 100644 Assets/02_Scripts/Communication/Voice/LipSync.cs create mode 100644 Assets/02_Scripts/Communication/Voice/LipSync.cs.meta create mode 100644 Assets/02_Scripts/Data.meta create mode 100644 Assets/02_Scripts/Data/Character.meta create mode 100644 Assets/02_Scripts/Data/Character/CharacterData.cs create mode 100644 Assets/02_Scripts/Data/Character/CharacterData.cs.meta create mode 100644 Assets/02_Scripts/Data/Communication.meta create mode 100644 Assets/02_Scripts/Data/Communication/Dialog.meta create mode 100644 Assets/02_Scripts/Data/Communication/Dialog/ExpressionData.cs create mode 100644 Assets/02_Scripts/Data/Communication/Dialog/ExpressionData.cs.meta create mode 100644 Assets/02_Scripts/Data/Communication/Dialog/GestureData.cs create mode 100644 Assets/02_Scripts/Data/Communication/Dialog/GestureData.cs.meta create mode 100644 Assets/02_Scripts/Data/Communication/Voice.meta create mode 100644 Assets/02_Scripts/Data/Communication/Voice/VoiceClip.cs create mode 100644 Assets/02_Scripts/Data/Communication/Voice/VoiceClip.cs.meta delete mode 100644 Assets/02_Scripts/dumy.txt create mode 100644 Assets/07_Data/Character.meta create mode 100644 Assets/07_Data/Character/Fish1.asset create mode 100644 Assets/07_Data/Character/Fish1.asset.meta create mode 100644 Assets/07_Data/Communication.meta create mode 100644 Assets/07_Data/Communication/DialogGroups.meta create mode 100644 Assets/07_Data/Communication/DialogGroups/DialogGroup_Fish_1.asset create mode 100644 Assets/07_Data/Communication/DialogGroups/DialogGroup_Fish_1.asset.meta create mode 100644 Assets/07_Data/Communication/DialogNodes.meta create mode 100644 Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_100.asset create mode 100644 Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_100.asset.meta create mode 100644 Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_200.asset create mode 100644 Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_200.asset.meta create mode 100644 Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset create mode 100644 Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset.meta create mode 100644 Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset create mode 100644 Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset.meta delete mode 100644 Assets/07_Data/dumy.txt create mode 100644 Assets/Samples/Graph Toolkit.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport/TextureMakerImporter.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport/TextureMakerImporter.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/CreateTextureNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/CreateTextureNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/ITextureEvaluatorNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/ITextureEvaluatorNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/MeanColorNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/MeanColorNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/UniformNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/UniformNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/TextureMakerGraph.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/TextureMakerGraph.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose1.png create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose1.png.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose2.png create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose2.png.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose1.png create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose1.png.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose2.png create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose2.png.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/GraphWorld.png create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/GraphWorld.png.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/Office.png create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/Office.png.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/FishGraph.vnd create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/FishGraph.vnd.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Visual Novel Graph.vnd create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Visual Novel Graph.vnd.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/VisualNovelScene.unity rename Assets/{07_Data/dumy.txt.meta => Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/VisualNovelScene.unity.meta} (62%) create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport/VisualNovelDirectorImporter.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport/VisualNovelDirectorImporter.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetBackgroundNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetBackgroundNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetDialogueNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetDialogueNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/StartNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/StartNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/TwoOptionNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/TwoOptionNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/VisualNovelNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/VisualNovelNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/WaitForInputNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/WaitForInputNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/VisualNovelDirectorGraph.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/VisualNovelDirectorGraph.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.asmdef create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.asmdef.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos/FantasyKingdom.mp4 create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos/FantasyKingdom.mp4.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Readme.md create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Readme.md.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/BasicVisualNovelCanvas.prefab create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/BasicVisualNovelCanvas.prefab.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/IVisualNovelInputProvider.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/IVisualNovelInputProvider.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/UnityInputProvider.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/UnityInputProvider.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/IVisualNovelNodeExecutor.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/IVisualNovelNodeExecutor.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundExecutor.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundExecutor.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNodeWithPreviousActor.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNodeWithPreviousActor.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionExecutor.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionExecutor.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionRuntimeNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionRuntimeNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/VisualNovelRuntimeNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/VisualNovelRuntimeNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputExecutor.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputExecutor.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputNode.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputNode.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Unity.GraphToolkit.Samples.VisualNovelDirector.asmdef create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Unity.GraphToolkit.Samples.VisualNovelDirector.asmdef.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelDirector.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelDirector.cs.meta create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelRuntimeGraph.cs create mode 100644 Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelRuntimeGraph.cs.meta diff --git a/Assets/01_Scenes/WhaleAdventure_VR/Dialog.meta b/Assets/01_Scenes/WhaleAdventure_VR/Dialog.meta new file mode 100644 index 00000000..961b9ad5 --- /dev/null +++ b/Assets/01_Scenes/WhaleAdventure_VR/Dialog.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 318e27bd31adda9468bbc46ace95b9c6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity b/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity new file mode 100644 index 00000000..17e01b3f --- /dev/null +++ b/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5aa4aaa513a0738a9c05e1d48ab31d6f5c764d91d08be39d0b67487515b9cbc4 +size 13217 diff --git a/Assets/02_Scripts/dumy.txt.meta b/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity.meta similarity index 62% rename from Assets/02_Scripts/dumy.txt.meta rename to Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity.meta index 3985dff0..0f59e57d 100644 --- a/Assets/02_Scripts/dumy.txt.meta +++ b/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: d860f3521bf608c468e4863c7cc232ac -TextScriptImporter: +guid: f4d6b8db1a5ed1343accb75293597025 +DefaultImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/02_Scripts/Communication.meta b/Assets/02_Scripts/Communication.meta new file mode 100644 index 00000000..78b911b1 --- /dev/null +++ b/Assets/02_Scripts/Communication.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 103ef77e0ab79bf4bb00e69a4f3fbb11 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Communication/Dialog.meta b/Assets/02_Scripts/Communication/Dialog.meta new file mode 100644 index 00000000..2775930c --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b5dd56c374fcdca41927418e4717e370 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs b/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs new file mode 100644 index 00000000..f13ceb6f --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs @@ -0,0 +1,8 @@ +using System; + +[Serializable] +public class DialogChoice +{ + public DialogNode DestinationNode; + public string ChoiceText; +} diff --git a/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs.meta b/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs.meta new file mode 100644 index 00000000..822d67a5 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogChoice.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bd5ea8e7c904dd24e967d91b86004efb \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs b/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs new file mode 100644 index 00000000..70127b7b --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/Dialog Group")] +public class DialogGroup : ScriptableObject +{ + public string DialogGroupName; + public DialogNode StartNode; +} diff --git a/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs.meta b/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs.meta new file mode 100644 index 00000000..3325b9e7 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogGroup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 72ef984dbd5eb29498ece3d2dae297ea \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Dialog/DialogNode.cs b/Assets/02_Scripts/Communication/Dialog/DialogNode.cs new file mode 100644 index 00000000..d576f72c --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogNode.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/Dialog Node")] +public class DialogNode : ScriptableObject +{ + [Header("Speaker")] + public CharacterData Speaker; + + [Header("Content")] + [TextArea(2,5)] public string TalkText; + public GestureData Gesture; + public ExpressionData Expression; + public VoiceClip Voice; + public float LineDuration; //자동 넘김 시간 + //LineDuration=0 → 플레이어 입력 대기 (수동) + //Voice 있음 → 클립 길이만큼 대기 + //Voice 없음 → LineDuration 대기 + + + [Header("Behavior")] + public bool LookAtPlayer; + + [Header("Flow")] + public DialogNode Next; // 선택지 없을 때 자동으로 갈 노드 + public List Choices; // 있으면 플레이어 선택 대기 + + [Header("ChoiceQuestion")] + [TextArea(2,5)] public string ChoiceQuestion; +} diff --git a/Assets/02_Scripts/Communication/Dialog/DialogNode.cs.meta b/Assets/02_Scripts/Communication/Dialog/DialogNode.cs.meta new file mode 100644 index 00000000..00eb4d74 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogNode.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fb30abdb4b5671b458096d48d11c7f27 \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs new file mode 100644 index 00000000..333a711a --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs @@ -0,0 +1,196 @@ +using System.Collections.Generic; +using UnityEngine.InputSystem; +using UnityEngine; + +[RequireComponent(typeof(CharacterVoiceObject))] +public class DialogPlayer : MonoBehaviour +{ + [SerializeField] private List _dialogGroups; + private Dictionary _dialogGroupMap; + private Animator _animator; + private int _initialGestureHash; + private int _initialExpressionHash; + private bool _hasInitialExpression; + private readonly Dictionary _originalRotations = new(); + public bool IsPlaying { get; private set; } + + private void Awake() + { + _dialogGroupMap = new Dictionary(); + foreach (var g in _dialogGroups) + _dialogGroupMap[g.DialogGroupName] = g; + + _animator = GetComponentInChildren(); + + if (_animator != null) + { + _initialGestureHash = _animator.GetCurrentAnimatorStateInfo(0).fullPathHash; + if (_animator.layerCount > 1) + { + _initialExpressionHash = _animator.GetCurrentAnimatorStateInfo(1).fullPathHash; + _hasInitialExpression = true; + } + } + } + + public void Play() + { + if(_dialogGroups.Count > 0) + _ = Play(_dialogGroups[0].DialogGroupName); + + } + + public async Awaitable Play(string groupName) + { + if (IsPlaying) return; + if (!_dialogGroupMap.TryGetValue(groupName, out var group)) + { + Debug.LogWarning($"[DialogPlayer] 그룹 없음: {groupName}"); + return; + } + + IsPlaying = true; + try + { + var node = group.StartNode; + while (node != null) + { + await PlayNode(node); + + if (node.Choices != null && node.Choices.Count > 0) + { + int picked = await WaitForChoice(node); + node = node.Choices[picked].DestinationNode; + } + else + { + node = node.Next; + } + } + } + finally + { + IsPlaying = false; + RestoreDefaultAnimations(); + RestoreRotations(); + } + + Debug.Log("[DialogPlayer] 대화 종료"); + } + + private void RestoreDefaultAnimations() + { + if (_animator == null) return; + _animator.CrossFade(_initialGestureHash, 0.3f, 0, normalizedTimeOffset: 0f); + if (_hasInitialExpression) + _animator.CrossFade(_initialExpressionHash, 0.3f, 1, normalizedTimeOffset: 0f); + } + + private async Awaitable RotateTowardPlayer(Transform target) + { + if (Camera.main == null) return; + var playerCam = Camera.main.transform; + + float duration = 0.5f; + float elapsed = 0f; + + while (elapsed < duration) + { + Vector3 dir = playerCam.position - target.position; + dir.y = 0f; + if (dir.sqrMagnitude > 0.0001f) + { + var targetRot = Quaternion.LookRotation(dir); + target.rotation = Quaternion.Slerp(target.rotation, targetRot, 10f * Time.deltaTime); + } + elapsed += Time.deltaTime; + await Awaitable.NextFrameAsync(); + } + } + + private void RestoreRotations() + { + foreach (var kvp in _originalRotations) + { + if (kvp.Key != null) + _ = RotateToRotation(kvp.Key, kvp.Value); + } + _originalRotations.Clear(); + } + + private async Awaitable RotateToRotation(Transform target, Quaternion targetRotation) + { + float duration = 0.5f; + float elapsed = 0f; + while (elapsed < duration) + { + if (target == null) return; + target.rotation = Quaternion.Slerp(target.rotation, targetRotation, 10f * Time.deltaTime); + elapsed += Time.deltaTime; + await Awaitable.NextFrameAsync(); + } + } + + private async Awaitable PlayNode(DialogNode node) + { + var speakerName = node.Speaker != null ? node.Speaker.Name : "(누구?)"; + Debug.Log($"[{speakerName}] {node.TalkText}"); + + // 보이스 재생 + if (node.Voice != null && node.Speaker != null) + { + var voiceObj = CharacterVoiceObject.Find(node.Speaker); + if (voiceObj != null && node.Voice.Clip != null) + voiceObj.Play(node.Voice.Clip); + } + + // 플레이어 향해 회전 + if (node.LookAtPlayer && node.Speaker != null) + { + var voiceObj = CharacterVoiceObject.Find(node.Speaker); + if (voiceObj != null) + { + _originalRotations.TryAdd(voiceObj.transform, voiceObj.transform.rotation); + _ = RotateTowardPlayer(voiceObj.transform); + } + } + + if (node.Gesture != null) + _animator.CrossFade(node.Gesture.StateName, node.Gesture.CrossFadeDuration, node.Gesture.AnimationLayer); + if (node.Expression != null) + _animator.CrossFade(node.Expression.StateName, node.Expression.CrossFadeDuration, node.Expression.AnimationLayer); + + // 대기 시간 결정 + float wait = 0f; + if (node.Voice != null && node.Voice.Clip != null) + wait = node.Voice.Clip.length; + else + wait = node.LineDuration; + + if (wait > 0f) + await Awaitable.WaitForSecondsAsync(wait); + else + await WaitForAdvanceInput(); // 수동 진행 + } + + private async Awaitable WaitForChoice(DialogNode node) + { + //선택을 기다리는 함수 수정해서 사용할것 + /* + if (ChoiceHud.Instance == null) + { + Debug.LogWarning("[DialogPlayer] ChoiceHud 없음 — 0번 자동 선택"); + return 0; + } + return await ChoiceHud.Instance.Show(node.Speaker, node.ChoiceQuestion ,node.Choices); + */ + + return 0; + } + + private async Awaitable WaitForAdvanceInput() + { + // TODO: VR 컨트롤러 버튼 입력 대기. 일단은 1초 대기 + await Awaitable.WaitForSecondsAsync(1f); + } +} diff --git a/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs.meta b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs.meta new file mode 100644 index 00000000..7fef4127 --- /dev/null +++ b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9838e0e0a3edefa4e92ddbb98aaa3ce5 \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Voice.meta b/Assets/02_Scripts/Communication/Voice.meta new file mode 100644 index 00000000..8df93f8b --- /dev/null +++ b/Assets/02_Scripts/Communication/Voice.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98959040e708aa04891672a6c21a9479 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs b/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs new file mode 100644 index 00000000..e07abd73 --- /dev/null +++ b/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using UnityEngine; + +public class CharacterVoiceObject : MonoBehaviour +{ + public CharacterData Character; + public AudioSource VoiceSource; + + private static readonly Dictionary _registry = new(); + + private void OnEnable() => _registry[Character] = this; + private void OnDisable() => _registry.Remove(Character); + + public static CharacterVoiceObject Find(CharacterData data) + => _registry.TryGetValue(data, out var obj) ? obj : null; + + public void Play(AudioClip clip) => VoiceSource.PlayOneShot(clip); +} diff --git a/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs.meta b/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs.meta new file mode 100644 index 00000000..e4965c45 --- /dev/null +++ b/Assets/02_Scripts/Communication/Voice/CharacterVoiceObject.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: aa8a1a66f46e7ef4f99770437e10ae34 \ No newline at end of file diff --git a/Assets/02_Scripts/Communication/Voice/LipSync.cs b/Assets/02_Scripts/Communication/Voice/LipSync.cs new file mode 100644 index 00000000..a2debdde --- /dev/null +++ b/Assets/02_Scripts/Communication/Voice/LipSync.cs @@ -0,0 +1,109 @@ +using System; +using UnityEngine; + +// 보이스 진폭에 따라 입 관련 블렌드셰이프 그룹의 weight를 직접 제어 +// LateUpdate에서 갱신해 Animator가 같은 프레임에 0으로 세팅한 값을 덮어씀 +[RequireComponent(typeof(CharacterVoiceObject))] +public class LipSync : MonoBehaviour +{ + [Serializable] + private struct LipShape + { + public string Name; + [Range(0f, 100f)] public float MaxWeight; // amplitude=1일 때 도달할 weight + } + + [Header("Refs")] + [SerializeField] private SkinnedMeshRenderer _meshRenderer; + + // BMAC_OpenMouse_Big 클립의 입 관련 셰이프 프리셋 + [Header("Mouth Preset (입 최대 시 weight)")] + [SerializeField] private LipShape[] _shapes = + { + new() { Name = "Expression_SurpriesedMouth", MaxWeight = 50f }, + new() { Name = "Expression_MouthSad_L", MaxWeight = 10f }, + new() { Name = "Expression_MouthSad_R", MaxWeight = 10f }, + new() { Name = "Expression_MouthWide_L", MaxWeight = 30f }, + new() { Name = "Expression_MouthWide_R", MaxWeight = 30f }, + new() { Name = "Expression_LipsOh", MaxWeight = 100f }, + new() { Name = "Expression_LipsO", MaxWeight = 5f }, + }; + + [Header("Tuning")] + [SerializeField, Range(0f, 20f)] private float _amplitudeScale = 6f; // RMS → 0~1 매핑 배수 + [SerializeField, Range(0f, 0.05f)] private float _noiseFloor = 0.005f; + [SerializeField, Range(0f, 30f)] private float _smoothingSpeed = 15f; + [SerializeField] private int _sampleSize = 256; + + private AudioSource _audioSource; + private int[] _indices; + private float[] _sampleBuffer; + private float _currentAmplitude; + + private void Awake() + { + var voiceObj = GetComponent(); + _audioSource = voiceObj != null ? voiceObj.VoiceSource : null; + + // 메시 자동 탐색 — 첫 번째 셰이프 이름을 가진 SkinnedMeshRenderer 사용 + if (_meshRenderer == null && _shapes.Length > 0) + { + string probe = _shapes[0].Name; + foreach (var smr in GetComponentsInChildren(true)) + { + if (smr.sharedMesh != null && smr.sharedMesh.GetBlendShapeIndex(probe) >= 0) + { + _meshRenderer = smr; + break; + } + } + } + + // 인덱스 캐시 + _indices = new int[_shapes.Length]; + if (_meshRenderer != null && _meshRenderer.sharedMesh != null) + { + var mesh = _meshRenderer.sharedMesh; + for (int i = 0; i < _shapes.Length; i++) + { + _indices[i] = mesh.GetBlendShapeIndex(_shapes[i].Name); + if (_indices[i] < 0) + Debug.LogWarning($"[LipSync] 블렌드셰이프 없음: {_shapes[i].Name}", this); + } + } + else + { + for (int i = 0; i < _indices.Length; i++) _indices[i] = -1; + } + + if (_audioSource == null) + Debug.LogWarning("[LipSync] CharacterVoiceObject.VoiceSource 미할당", this); + + _sampleBuffer = new float[_sampleSize]; + } + + private void LateUpdate() + { + if (_audioSource == null || _meshRenderer == null) return; + + // PlayOneShot도 잡히도록 항상 샘플링 — 무음은 노이즈 플로어로 컷 + _audioSource.GetOutputData(_sampleBuffer, 0); + + float sumSq = 0f; + for (int i = 0; i < _sampleBuffer.Length; i++) + sumSq += _sampleBuffer[i] * _sampleBuffer[i]; + + float rms = Mathf.Sqrt(sumSq / _sampleBuffer.Length); + rms = Mathf.Max(0f, rms - _noiseFloor); + float target = Mathf.Clamp01(rms * _amplitudeScale); + + _currentAmplitude = Mathf.Lerp(_currentAmplitude, target, Time.deltaTime * _smoothingSpeed); + + // Animator가 같은 프레임에 0으로 덮은 값을 LateUpdate에서 다시 씌움 + for (int i = 0; i < _shapes.Length; i++) + { + if (_indices[i] < 0) continue; + _meshRenderer.SetBlendShapeWeight(_indices[i], _currentAmplitude * _shapes[i].MaxWeight); + } + } +} diff --git a/Assets/02_Scripts/Communication/Voice/LipSync.cs.meta b/Assets/02_Scripts/Communication/Voice/LipSync.cs.meta new file mode 100644 index 00000000..580b2927 --- /dev/null +++ b/Assets/02_Scripts/Communication/Voice/LipSync.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ae0d9abbe32fe5b4e8e4886143e1e5e2 \ No newline at end of file diff --git a/Assets/02_Scripts/Data.meta b/Assets/02_Scripts/Data.meta new file mode 100644 index 00000000..321634b4 --- /dev/null +++ b/Assets/02_Scripts/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f15371153c317454585018e424b7df5f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Data/Character.meta b/Assets/02_Scripts/Data/Character.meta new file mode 100644 index 00000000..377f057e --- /dev/null +++ b/Assets/02_Scripts/Data/Character.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7bdce60fa4722c409858d6a5a234ec3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Data/Character/CharacterData.cs b/Assets/02_Scripts/Data/Character/CharacterData.cs new file mode 100644 index 00000000..8f15688c --- /dev/null +++ b/Assets/02_Scripts/Data/Character/CharacterData.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Character/CharacterData")] +public class CharacterData : ScriptableObject +{ + public string Id; + public string Name; + public Sprite Portrait; +} diff --git a/Assets/02_Scripts/Data/Character/CharacterData.cs.meta b/Assets/02_Scripts/Data/Character/CharacterData.cs.meta new file mode 100644 index 00000000..7a183a8d --- /dev/null +++ b/Assets/02_Scripts/Data/Character/CharacterData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c44a4226e5f3e344a96eac21f829952f \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication.meta b/Assets/02_Scripts/Data/Communication.meta new file mode 100644 index 00000000..517c5059 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f31eda293b7f19046b229ac17d081f81 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Data/Communication/Dialog.meta b/Assets/02_Scripts/Data/Communication/Dialog.meta new file mode 100644 index 00000000..58498322 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/Dialog.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 864a90870193471458445ecc75905891 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Data/Communication/Dialog/ExpressionData.cs b/Assets/02_Scripts/Data/Communication/Dialog/ExpressionData.cs new file mode 100644 index 00000000..7b6868f2 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/Dialog/ExpressionData.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/Expression")] +public class ExpressionData : ScriptableObject +{ + [HideInInspector] public int AnimationLayer = 1; + public string StateName; + public float CrossFadeDuration = 0.2f; + public AnimationClip AnimClip; +} \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication/Dialog/ExpressionData.cs.meta b/Assets/02_Scripts/Data/Communication/Dialog/ExpressionData.cs.meta new file mode 100644 index 00000000..c3d08105 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/Dialog/ExpressionData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b705522cfca24d141b3d560aeffb2c14 \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication/Dialog/GestureData.cs b/Assets/02_Scripts/Data/Communication/Dialog/GestureData.cs new file mode 100644 index 00000000..98421feb --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/Dialog/GestureData.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/Gesture")] +public class GestureData : ScriptableObject +{ + [HideInInspector] public int AnimationLayer = 0; + public string StateName; + public float CrossFadeDuration = 0.2f; + public AnimationClip AnimClip; +} diff --git a/Assets/02_Scripts/Data/Communication/Dialog/GestureData.cs.meta b/Assets/02_Scripts/Data/Communication/Dialog/GestureData.cs.meta new file mode 100644 index 00000000..080886d3 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/Dialog/GestureData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7287df3d52d586a4085d412938dae461 \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication/Voice.meta b/Assets/02_Scripts/Data/Communication/Voice.meta new file mode 100644 index 00000000..d0065645 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/Voice.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e5b1fe96389ab554db24396abacdc278 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/02_Scripts/Data/Communication/Voice/VoiceClip.cs b/Assets/02_Scripts/Data/Communication/Voice/VoiceClip.cs new file mode 100644 index 00000000..50bdfe51 --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/Voice/VoiceClip.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +[CreateAssetMenu(menuName = "Communication/VoiceClip")] +public class VoiceClip : ScriptableObject +{ + public string VoiceCode; //해당 음성 고유코드 + public AudioClip Clip; +} \ No newline at end of file diff --git a/Assets/02_Scripts/Data/Communication/Voice/VoiceClip.cs.meta b/Assets/02_Scripts/Data/Communication/Voice/VoiceClip.cs.meta new file mode 100644 index 00000000..6b66801d --- /dev/null +++ b/Assets/02_Scripts/Data/Communication/Voice/VoiceClip.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fc306ebaeba77b94dbb631e9fdc0e864 \ No newline at end of file diff --git a/Assets/02_Scripts/dumy.txt b/Assets/02_Scripts/dumy.txt deleted file mode 100644 index 34b4a496..00000000 --- a/Assets/02_Scripts/dumy.txt +++ /dev/null @@ -1 +0,0 @@ -지울것 \ No newline at end of file diff --git a/Assets/07_Data/Character.meta b/Assets/07_Data/Character.meta new file mode 100644 index 00000000..764ad150 --- /dev/null +++ b/Assets/07_Data/Character.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 92e8daf2a9ba20a49a16bb225f8d77d3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Character/Fish1.asset b/Assets/07_Data/Character/Fish1.asset new file mode 100644 index 00000000..5e630e66 --- /dev/null +++ b/Assets/07_Data/Character/Fish1.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43242bfc34271e0bc3ecce828df312e9c0eccf4786f4edb7168ac9d611f0b42a +size 546 diff --git a/Assets/07_Data/Character/Fish1.asset.meta b/Assets/07_Data/Character/Fish1.asset.meta new file mode 100644 index 00000000..5b6d51d4 --- /dev/null +++ b/Assets/07_Data/Character/Fish1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 141467d7781315e48add8aa98cc3f898 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Communication.meta b/Assets/07_Data/Communication.meta new file mode 100644 index 00000000..f7e7b4f4 --- /dev/null +++ b/Assets/07_Data/Communication.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b8aa4d76be40e104a8092d81a3ec5514 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Communication/DialogGroups.meta b/Assets/07_Data/Communication/DialogGroups.meta new file mode 100644 index 00000000..a30723d3 --- /dev/null +++ b/Assets/07_Data/Communication/DialogGroups.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 950e0361db9a0a745b0ed9ad142f100f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Communication/DialogGroups/DialogGroup_Fish_1.asset b/Assets/07_Data/Communication/DialogGroups/DialogGroup_Fish_1.asset new file mode 100644 index 00000000..9beeee7f --- /dev/null +++ b/Assets/07_Data/Communication/DialogGroups/DialogGroup_Fish_1.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c40d9887db3270d7118eb71fb06b91f6a67adbd90d2bbe6a6ed66a9cba1217b8 +size 575 diff --git a/Assets/07_Data/Communication/DialogGroups/DialogGroup_Fish_1.asset.meta b/Assets/07_Data/Communication/DialogGroups/DialogGroup_Fish_1.asset.meta new file mode 100644 index 00000000..71cc3659 --- /dev/null +++ b/Assets/07_Data/Communication/DialogGroups/DialogGroup_Fish_1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61a783976a5fa5b42bc285ab42cb6163 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Communication/DialogNodes.meta b/Assets/07_Data/Communication/DialogNodes.meta new file mode 100644 index 00000000..4d2d9569 --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f943b2edd3f1d14bac0dd498d02472b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_100.asset b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_100.asset new file mode 100644 index 00000000..b9509206 --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_100.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a53348a7fc07cd121b894a200504d65b80f16ac9b63f34570d59613eeefb5e7 +size 791 diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_100.asset.meta b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_100.asset.meta new file mode 100644 index 00000000..4f691fec --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_100.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f645ce42811120c4e96f476777bdfdb8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_200.asset b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_200.asset new file mode 100644 index 00000000..8d6a4ba1 --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_200.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b839dec9f1e035496f8141c526e1f6f197d4390171cbea3dea514016ef7c0918 +size 1111 diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_200.asset.meta b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_200.asset.meta new file mode 100644 index 00000000..a5ad28f0 --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_200.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 389924088ebe3cb4c9eba808e6930cbd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset new file mode 100644 index 00000000..ce5c3949 --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f3c1e87208e0b8b4d6291c4a8e1a9f34589c2aa8a61794dbe8a6f50ff2ff1f6 +size 749 diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset.meta b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset.meta new file mode 100644 index 00000000..c08a2c4e --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31dd7fd2b9c6180449ac56389b32d9dc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset new file mode 100644 index 00000000..cb4365ff --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da2e901585c6d11f7a937ff91d169b8cbfdb4df0633a34655cb740d44f56f12e +size 754 diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset.meta b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset.meta new file mode 100644 index 00000000..19872ec9 --- /dev/null +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 66f8495fd4406e64da3cc6b32bbd81a6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/07_Data/dumy.txt b/Assets/07_Data/dumy.txt deleted file mode 100644 index 34b4a496..00000000 --- a/Assets/07_Data/dumy.txt +++ /dev/null @@ -1 +0,0 @@ -지울것 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit.meta b/Assets/Samples/Graph Toolkit.meta new file mode 100644 index 00000000..d1fb018b --- /dev/null +++ b/Assets/Samples/Graph Toolkit.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 87758d7304fe4e048a2ff5af7c1d0ad1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2.meta new file mode 100644 index 00000000..2fd6121e --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ea9a14d170e8fb44b2d23996f207323 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample.meta new file mode 100644 index 00000000..49c24b48 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ed698945ae02b742902aee392bc1f5b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor.meta new file mode 100644 index 00000000..b6ccb829 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6fddd458db0b7c14f9ccd96f22b9ee24 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport.meta new file mode 100644 index 00000000..0fbcc1c5 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32a9038ef099d5a4d87f583d4b99d0b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport/TextureMakerImporter.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport/TextureMakerImporter.cs new file mode 100644 index 00000000..5b35b3bf --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport/TextureMakerImporter.cs @@ -0,0 +1,91 @@ +using System.Linq; +using Unity.GraphToolkit.Editor; +using UnityEditor.AssetImporters; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.TextureMaker.Editor +{ + /// + /// TextureMakerImporter is a responsible for creating the texture and adding the + /// texture to the asset, so the graph can be used directly as a texture in the scene. + /// It contains all the Texture logic of the tool. + /// + [ScriptedImporter(1, TextureMakerGraph.AssetExtension)] + internal class TextureMakerImporter : ScriptedImporter + { + /// + /// The name of the texture identifier in the asset. + /// + private const string OutputTextureAssetIdName = "OutputTexture"; + + /// + /// Gets or sets the output Texture2D. + /// + private Texture2D OutputTexture { get; set; } + + /// + /// Called when the asset is imported. This method processes the graph object and creates the texture. + /// + /// The asset import context. + public override void OnImportAsset(AssetImportContext ctx) + { + // The loaded graph may be null if the `Graph.LoadForImporter` method fails to load the asset from the + // specified `ctx.assetPath`. + // This can occur under the following circumstances: + // - The asset path is incorrect, or the asset does not exist at the specified location. + // - The asset located at the specified path is not of type `TextureMakerGraph`. + // - The asset file itself is problematic, such as being corrupted or stored in an unsupported format. + // + // Best practice when dealing with serialization is to account for potential deserialization issues + // by thoroughly validating and safeguarding against impaired or incomplete data. + var graph = GraphDatabase.LoadGraphForImporter(ctx.assetPath); + if (graph == null) + { + Debug.LogError($"Failed to load texture maker graph object: {ctx.assetPath}"); + return; + } + + CompileGraph(graph); + + // Adding the texture to the graph object and setting it to be the main asset. + // This allows the generated texture to be used directly in the project and referenced in a material or a scene. + if (OutputTexture != null) + { + ctx.AddObjectToAsset(OutputTextureAssetIdName, OutputTexture); + ctx.SetMainObject(OutputTexture); + } + } + + /// + /// Compiles the provided texture maker graph and updates the output texture based on its evaluated nodes. + /// + /// The texture maker graph to compile. + private void CompileGraph(TextureMakerGraph graph) + { + // Get the first CreateTexture Node + // (Only using the first one is a tool design simplification we made for this sample) + var createTextureNode = graph.GetNodes().OfType().FirstOrDefault(); + if (createTextureNode == null) + { + // No need to log an error here, as an error is already logged in the console (see the `OnGraphChanged` method + // overriden in the TextureMakerGraph class). + return; + } + + // Initialize the output texture to a default texture + // This enables the graph object to use a default texture when a valid texture evaluator node is not yet available. + OutputTexture = new Texture2D(CreateTextureNode.OutputWidth, CreateTextureNode.OutputHeight); + OutputTexture.name = OutputTextureAssetIdName; + + // Get the input port of the CreateTextureNode + var inputPort = createTextureNode.GetInputPortByName(CreateTextureNode.TextureInputName); + // Resolve the texture from the input port + var texture = TextureMakerGraph.ResolvePortValue(inputPort); + if (texture != null) + { + OutputTexture = new Texture2D(texture.width, texture.height); + OutputTexture.SetPixels(texture.GetPixels()); + } // else can happen when the input port is not connected and no embedded value is set + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport/TextureMakerImporter.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport/TextureMakerImporter.cs.meta new file mode 100644 index 00000000..d1988eb9 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/AssetImport/TextureMakerImporter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e14cbdfe3bad40dc9e5cf791df184d43 +timeCreated: 1740674216 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model.meta new file mode 100644 index 00000000..7f32b994 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51ff29566e157cc42a82d110da3fa57f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes.meta new file mode 100644 index 00000000..9692adae --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2145001d8b7b79d4d90138544650514d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/CreateTextureNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/CreateTextureNode.cs new file mode 100644 index 00000000..6599daf5 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/CreateTextureNode.cs @@ -0,0 +1,38 @@ +using System; +using JetBrains.Annotations; +using Unity.GraphToolkit.Editor; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.TextureMaker.Editor +{ + /// + /// Represents the result node in a Texture Maker Graph. + /// + /// + /// The result node serves as the end node in the texture graph, where the final texture is evaluated. + /// + [Serializable] + [UsedImplicitly] + internal class CreateTextureNode : Node + { + /// Using constants for port ids provides type safety and ensures consistent references across the implementation + internal const string TextureInputName = "InTexture"; + /// + /// The width of the output texture. + /// + public const int OutputWidth = 16; + + /// + /// The height of the output texture. + /// + public const int OutputHeight = 16; + + /// + /// Defines the input for the node. + /// + protected override void OnDefinePorts(IPortDefinitionContext context) + { + context.AddInputPort(TextureInputName).Build(); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/CreateTextureNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/CreateTextureNode.cs.meta new file mode 100644 index 00000000..cdc55ebc --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/CreateTextureNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5bbd857d07214e2b97256039bbd713f7 +timeCreated: 1740675943 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/ITextureEvaluatorNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/ITextureEvaluatorNode.cs new file mode 100644 index 00000000..1a673b60 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/ITextureEvaluatorNode.cs @@ -0,0 +1,22 @@ +using Unity.GraphToolkit.Editor; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.TextureMaker.Editor +{ + /// + /// Defines an interface for evaluating Texture ports. + /// + /// + /// This interface is defined by nodes with the ability to output a Texture2D. + /// Implementations of this interface should provide the logic to evaluate a given port model and return the resulting Texture. + /// + internal interface ITextureEvaluatorNode + { + /// + /// Evaluates the specified port and returns the resulting Texture. + /// + /// The port to evaluate. + /// The result of the evaluation. + public Texture2D EvaluateTexturePort(IPort port); + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/ITextureEvaluatorNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/ITextureEvaluatorNode.cs.meta new file mode 100644 index 00000000..f69c7160 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/ITextureEvaluatorNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 184980cc4753403d96db0011e12a78b2 +timeCreated: 1742204057 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/MeanColorNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/MeanColorNode.cs new file mode 100644 index 00000000..e8074664 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/MeanColorNode.cs @@ -0,0 +1,75 @@ +using System; +using JetBrains.Annotations; +using Unity.GraphToolkit.Editor; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.TextureMaker.Editor +{ + /// + /// Represents a node that combines two input textures and produces an output texture where pixel values are the mean + /// of the two input values at the same position. + /// + [Serializable] + [UsedImplicitly] + internal class MeanColorNode : Node, ITextureEvaluatorNode + { + /// Using constants for port ids provides type safety and ensures consistent references across the implementation + internal const string Texture1InputName = "InTexture1"; + internal const string Texture2InputName = "InTexture2"; + internal const string TextureOutputName = "OutTexture"; + + /// + /// Defines the input and output port for the Mean node. + /// This node takes two textures as input and outputs a Texture2D. + /// + protected override void OnDefinePorts(IPortDefinitionContext context) + { + context.AddInputPort(Texture1InputName).Build(); + context.AddInputPort(Texture2InputName).Build(); + context.AddOutputPort(TextureOutputName).Build(); + } + + + + /// + /// Evaluates the specified port and returns the result. + /// + /// The port model to evaluate. + /// The result of the evaluation. + public Texture2D EvaluateTexturePort(IPort port) + { + // Only the output port can be evaluated for this node. + if (port != GetOutputPortByName(TextureOutputName)) + return null; + + // Get the textures from the ports or the embedded value + Texture2D firstTexture = TextureMakerGraph.ResolvePortValue(GetInputPortByName(Texture1InputName)); + Texture2D secondTexture = TextureMakerGraph.ResolvePortValue(GetInputPortByName(Texture2InputName)); + + if (firstTexture != null && secondTexture != null) + { + // Using min dimensions to prevent out-of-bounds access; simplified for learning (production code would handle varying texture sizes) + int width = Math.Min(firstTexture.width, secondTexture.width); + int height = Math.Min(firstTexture.height, secondTexture.height); + + Texture2D resultTexture = new Texture2D(width, height); + + for (var j = 0; j < height; j++) + { + for (var i = 0; i < width; i++) + { + // Set the color of each pixel in the texture + Color firstColor = firstTexture.GetPixel(i, j); + Color secondColor = secondTexture.GetPixel(i, j); + Color color = (firstColor + secondColor) / 2; + resultTexture.SetPixel(i, j, color); + } + } + return resultTexture; + } + + // If one of the input ports have no resolved value, return a default texture + return new Texture2D(CreateTextureNode.OutputWidth, CreateTextureNode.OutputHeight); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/MeanColorNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/MeanColorNode.cs.meta new file mode 100644 index 00000000..8fb6671e --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/MeanColorNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2866fff3cefe46638f8fe6860cb86b5e +timeCreated: 1742380071 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/UniformNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/UniformNode.cs new file mode 100644 index 00000000..3ce19b3b --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/UniformNode.cs @@ -0,0 +1,57 @@ +using System; +using JetBrains.Annotations; +using Unity.GraphToolkit.Editor; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.TextureMaker.Editor +{ + /// + /// Represents a node that generates a uniform texture from a specified color. + /// + [Serializable] + [UsedImplicitly] + internal class UniformNode : Node, ITextureEvaluatorNode + { + /// Using constants for port ids provides type safety and ensures consistent references across the implementation + internal const string ColorInputName = "InColor"; + internal const string TextureOutputName = "OutTexture"; + /// + /// Defines the input and output port for the Uniform node. + /// This nodes takes a color as input and outputs a Texture2D. + /// + protected override void OnDefinePorts(IPortDefinitionContext context) + { + context.AddInputPort(ColorInputName).Build(); + context.AddOutputPort(TextureOutputName).Build(); + } + + /// + /// Evaluates the specified port and returns the result. + /// + /// The port model to evaluate. + /// The result of the evaluation. + public Texture2D EvaluateTexturePort(IPort port) + { + // Only the Texture output port can be evaluated for this node. + if (port != GetOutputPortByName(TextureOutputName)) + return null; + + // Gets the color port. + var colorPort = GetInputPortByName(ColorInputName); + + // Get the color from the connected port or the embedded value + var color = TextureMakerGraph.ResolvePortValue(colorPort); + + var texture = new Texture2D(CreateTextureNode.OutputWidth, CreateTextureNode.OutputHeight); + // Set the color of each pixel in the texture + for (var j = 0; j < CreateTextureNode.OutputHeight; j++) + { + for (var i = 0; i < CreateTextureNode.OutputWidth; i++) + { + texture.SetPixel(i, j, color); + } + } + return texture; + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/UniformNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/UniformNode.cs.meta new file mode 100644 index 00000000..f2def870 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/Model/Nodes/UniformNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5b8ad780581240939565c81dd3d40ce5 +timeCreated: 1740675943 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/TextureMakerGraph.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/TextureMakerGraph.cs new file mode 100644 index 00000000..a37d8d83 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/TextureMakerGraph.cs @@ -0,0 +1,120 @@ +using System; +using System.Linq; +using Unity.GraphToolkit.Editor; +using UnityEditor; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.TextureMaker.Editor +{ + /// + /// Represents the Texture Maker graph. + /// + /// This is the entry point for the Texture Maker tool, it represents a Texture Maker graph. + /// This class extends the Graph Toolkit class, which provides a range of default behaviors, + /// reducing the amount of code required to quickly implement a basic graph tool. + /// It also provides customization by allowing you to override specific methods and can be decorated by attributes to + /// tailor the tool's functionality. + /// For example, in this class, we override the OnGraphChanged method to add our custom handling for graph errors and warnings. + /// We also decorated it with the , which specifies the asset extension. + /// + [Graph(AssetExtension)] + [Serializable] + internal class TextureMakerGraph : Graph + { + /// + /// The file extension for Texture Maker graph assets. + /// + /// In Unity, the extension is used to select the right importer, so it must be unique. + internal const string AssetExtension = "texmkr"; + + /// + /// Create a texture maker asset file. + /// + [MenuItem("Assets/Create/Graph Toolkit Samples/Texture Maker Graph", false)] + static void CreateAssetFile() + { + GraphDatabase.PromptInProjectBrowserToCreateNewAsset(); + } + + /// + /// Checks the graph for errors and warnings and adds them to the result object. + /// + /// Object implementing interface and containing + /// collected errors and warnings + /// Errors and warnings are reported by adding them to the GraphLogger object, + /// which is the default reporting mechanism for a Graph Toolkit tool. + private void CheckGraphErrors(GraphLogger infos) + { + // Get all CreateTextureNode instances in the graph + var createTextureNodes = GetNodes().OfType().ToList(); + switch (createTextureNodes.Count) + { + case 0: + // This is a tool design choice to log an error if no CreateTextureNode is found in the graph. + // This will result in an error message being logged in the console. + infos.LogError("Add a CreateTextureNode in your Texture graph."); + break; + case > 1: + { + foreach (var createTextureNode in createTextureNodes.Skip(1)) + { + // This will result in a warning message being logged in the console and a warning marker being displayed on the node + infos.LogWarning($"TextureMaker only supports one {nameof(CreateTextureNode)} by graph. " + + "Only the first created one will be used.", createTextureNode); + } + break; + } + } + } + + /// + /// Called when the graph changes. + /// + /// The GraphLogger object to which errors and warnings are added. + /// + /// This method is triggered whenever the graph is modified. It calls `CheckGraphErrors` to validate the graph + /// and report any issues. + /// + public override void OnGraphChanged(GraphLogger infos) + { + CheckGraphErrors(infos); + } + + /// + /// Resolves the value from the given port by determining the type of node connected. + /// For constant, variable, and texture evaluator nodes, it extracts the corresponding value. + /// If no connected source is available, it attempts to resolve an embedded value from the port. + /// + /// The expected type of the port value. + /// The port from which to resolve the value. + /// + /// The resolved value of type if successful; otherwise, the default value of . + /// + public static T ResolvePortValue(IPort port) + { + // Get the source port providing input to "port" (null if no connection exists) + var sourcePort = port.firstConnectedPort; + + switch (sourcePort?.GetNode()) + { + case IConstantNode node: + node.TryGetValue(out T constantValue); + return constantValue; + case IVariableNode node: + node.variable.TryGetDefaultValue(out T variableValue); + return variableValue; + case ITextureEvaluatorNode textureEvaluatorNode: + if (typeof(T).IsAssignableFrom(typeof(Texture2D))) + { + return (T)(object)textureEvaluatorNode.EvaluateTexturePort(sourcePort); + } + break; + case null: + // If no connection exists, try to get "port" 's embedded value (returns type default if unavailable) + port.TryGetValue(out T embeddedValue); + return embeddedValue; + } + return default; + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/TextureMakerGraph.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/TextureMakerGraph.cs.meta new file mode 100644 index 00000000..848af9d6 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/TextureMaker Sample/Editor/TextureMakerGraph.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ed470a2448996694b915fbb1456339f6 +timeCreated: 1647523327 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample.meta new file mode 100644 index 00000000..eca44dc0 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dac0961372db2d04fbe83f6429dcbc1c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets.meta new file mode 100644 index 00000000..63201368 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93047d44cb250814093971723f2c02b8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors.meta new file mode 100644 index 00000000..b3b28087 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9c33a34c7388f5240a69a3ace09379ad +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose1.png b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose1.png new file mode 100644 index 00000000..733c01f1 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97be1a5a86dbdddb84b5e7c6c90a8875e5b7c6ac58d95eb121a3e11c1d33464d +size 1061147 diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose1.png.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose1.png.meta new file mode 100644 index 00000000..ae4b40b5 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose1.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 8c636d999f90e614d85cf993f7211c1d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 4096 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose2.png b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose2.png new file mode 100644 index 00000000..0a783f4b --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bca41d4ef8dc09e819b0694bda8e5e436e51b80f01f076afc1efac0a7143eb2 +size 1058441 diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose2.png.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose2.png.meta new file mode 100644 index 00000000..938c9ffe --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/NodusPose2.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 2d9bbc299867e244c98e4a3cb6e7a4bf +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose1.png b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose1.png new file mode 100644 index 00000000..562429c6 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93be62ca93bc296b63cf4944673f2dae17f260de2e130616667e844ddd67e15a +size 2078744 diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose1.png.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose1.png.meta new file mode 100644 index 00000000..30eb9489 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose1.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: ae8b150e3c088b84f879db093e49f80e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 4096 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose2.png b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose2.png new file mode 100644 index 00000000..7960b283 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbe369d51b52f6b1f87a91ae80e4b13b99278a8ca3755a72aacbd9dcc66cb9ad +size 2077068 diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose2.png.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose2.png.meta new file mode 100644 index 00000000..051797b9 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Actors/WirerickPose2.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 938e70ce972aab048a4ffac6f77386bb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds.meta new file mode 100644 index 00000000..b467c7cd --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f482b7cbfff70ad468d867cdee4cb3b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/GraphWorld.png b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/GraphWorld.png new file mode 100644 index 00000000..d3e56e4d --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/GraphWorld.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f67c5b827200b382708785abe5fb2abfd96a7e0dbaec1de0e9aa19be3fd46eba +size 19228335 diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/GraphWorld.png.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/GraphWorld.png.meta new file mode 100644 index 00000000..420aa168 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/GraphWorld.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: c94e9de1d1d086f41bfeaafb64d32436 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/Office.png b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/Office.png new file mode 100644 index 00000000..d5c2d710 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/Office.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c85ee6b3de6190149d7847464775e7450bbc92effb472e8afca8fd2697972000 +size 6474168 diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/Office.png.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/Office.png.meta new file mode 100644 index 00000000..d8d8dbcd --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Backgrounds/Office.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 91ebf5c54c1ef1a478545d01bed02985 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/FishGraph.vnd b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/FishGraph.vnd new file mode 100644 index 00000000..9588623d --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/FishGraph.vnd @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 790b4d75d92f4b0984310a268dbd952f, type: 3} + m_Name: FishGraph + m_EditorClassIdentifier: Unity.GraphToolkit.Editor::Unity.GraphToolkit.Editor.Implementation.GraphObjectImp + m_GraphModel: + rid: 7374727060909719746 + references: + version: 2 + RefIds: + - rid: -2 + type: {class: , ns: , asm: } + - rid: 7374727060909719746 + type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 10871790756099748146 + m_Value1: 18346613123235132978 + m_HashGuid: + serializedVersion: 2 + Hash: 3271b369175ce0963236f3596e439cfe + m_Name: FishGraph + m_GraphNodeModels: + - rid: 7374727060909719749 + - rid: 7374727060909719757 + - rid: 7374727060909719761 + m_GraphWireModels: + - rid: 7374727060909719760 + - rid: 7374727060909719762 + m_GraphStickyNoteModels: [] + m_GraphPlacematModels: [] + m_GraphVariableModels: + - rid: 7374727060909719770 + m_GraphPortalModels: [] + m_SectionModels: + - rid: 7374727060909719747 + m_LocalSubgraphs: [] + m_LastKnownBounds: + serializedVersion: 2 + x: 588 + y: 170.66666 + width: 882.6666 + height: 188.00003 + m_GraphElementMetaData: + - m_Guid: + m_Value0: 16114223607233698066 + m_Value1: 9777206141510115540 + m_HashGuid: + serializedVersion: 2 + Hash: 12d96074fe38a1dfd4607a102f9daf87 + m_Category: 0 + m_Index: 0 + - m_Guid: + m_Value0: 17642536195234030393 + m_Value1: 14841915658528706059 + m_HashGuid: + serializedVersion: 2 + Hash: 3963e50532e1d6f40b4ee9d4a713f9cd + m_Category: 0 + m_Index: 1 + - m_Guid: + m_Value0: 5435177532580037469 + m_Value1: 15680088436607675287 + m_HashGuid: + serializedVersion: 2 + Hash: 5d039e482ba16d4b97ebb53e5bdd9ad9 + m_Category: 2 + m_Index: 0 + - m_Guid: + m_Value0: 885725688160263005 + m_Value1: 3538362528306852737 + m_HashGuid: + serializedVersion: 2 + Hash: 5d1b3b13d2ba4a0c817348f2f8c91a31 + m_Category: 0 + m_Index: 2 + - m_Guid: + m_Value0: 12130015399313110953 + m_Value1: 4354400247149229639 + m_HashGuid: + serializedVersion: 2 + Hash: a97713f4bc7856a847f63345f4ef6d3c + m_Category: 2 + m_Index: 1 + - m_Guid: + m_Value0: 15287734564713934406 + m_Value1: 9766309808735964307 + m_HashGuid: + serializedVersion: 2 + Hash: 462e3cb696f128d493cc1ee406e78887 + m_Category: 1 + m_Index: 0 + m_EntryPoint: + rid: 7374727060909719749 + m_Graph: + rid: 7374727060909719748 + - rid: 7374727060909719747 + type: {class: SectionModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 3666221662041836785 + m_Value1: 8866686477437553489 + m_HashGuid: + serializedVersion: 2 + Hash: f18cd8592d09e13251cb6c9e5fcc0c7b + m_Version: 2 + m_Items: + - rid: 7374727060909719770 + m_Title: + - rid: 7374727060909719748 + type: {class: VisualNovelDirectorGraph, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 7374727060909719749 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 16114223607233698066 + m_Value1: 9777206141510115540 + m_HashGuid: + serializedVersion: 2 + Hash: 12d96074fe38a1dfd4607a102f9daf87 + m_Version: 2 + m_Position: {x: 588.00006, y: 170.66666} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 7374727060909719750 + - rid: 7374727060909719750 + type: {class: StartNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 7374727060909719757 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 17642536195234030393 + m_Value1: 14841915658528706059 + m_HashGuid: + serializedVersion: 2 + Hash: 3963e50532e1d6f40b4ee9d4a713f9cd + m_Version: 2 + m_Position: {x: 788.9752, y: 176.91309} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - Background + m_ValueList: + - rid: 7374727060909719758 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 7374727060909719759 + - rid: 7374727060909719758 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 0} + - rid: 7374727060909719759 + type: {class: SetBackgroundNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 7374727060909719760 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 5435177532580037469 + m_Value1: 15680088436607675287 + m_HashGuid: + serializedVersion: 2 + Hash: 5d039e482ba16d4b97ebb53e5bdd9ad9 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 16114223607233698066 + m_Value1: 9777206141510115540 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 12d96074fe38a1dfd4607a102f9daf87 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 17642536195234030393 + m_Value1: 14841915658528706059 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 3963e50532e1d6f40b4ee9d4a713f9cd + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 7374727060909719761 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 885725688160263005 + m_Value1: 3538362528306852737 + m_HashGuid: + serializedVersion: 2 + Hash: 5d1b3b13d2ba4a0c817348f2f8c91a31 + m_Version: 2 + m_Position: {x: 1168, y: 174.66663} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 7374727060909719763 + - rid: 7374727060909719764 + - rid: 7374727060909719765 + - rid: 7374727060909719766 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 7374727060909719767 + - rid: 7374727060909719762 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12130015399313110953 + m_Value1: 4354400247149229639 + m_HashGuid: + serializedVersion: 2 + Hash: a97713f4bc7856a847f63345f4ef6d3c + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17642536195234030393 + m_Value1: 14841915658528706059 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 3963e50532e1d6f40b4ee9d4a713f9cd + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 885725688160263005 + m_Value1: 3538362528306852737 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 5d1b3b13d2ba4a0c817348f2f8c91a31 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 7374727060909719763 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 7374727060909719764 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 0} + - rid: 7374727060909719765 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 7374727060909719766 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 7374727060909719767 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 7374727060909719770 + type: {class: VariableDeclarationModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 15287734564713934406 + m_Value1: 9766309808735964307 + m_HashGuid: + serializedVersion: 2 + Hash: 462e3cb696f128d493cc1ee406e78887 + m_Version: 2 + m_Name: Fish1 + m_UniqueId: + m_DataType: + m_Identification: System.String, System.Private.CoreLib, Version=4.0.0.0, + Culture=neutral, PublicKeyToken=b77a5c561934e089 + m_IsExposed: 0 + m_Scope: 0 + m_ShowOnInspectorOnly: 0 + m_Tooltip: + m_InitializationValue: + rid: 7374727060909719771 + m_Modifiers: 1 + m_VariableFlags: 0 + - rid: 7374727060909719771 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/FishGraph.vnd.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/FishGraph.vnd.meta new file mode 100644 index 00000000..cb31b292 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/FishGraph.vnd.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6582b238d52902d49834d98156b8eeff +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 5cc0cd77ad7bd1646b4bbaa06b9ca408, type: 3} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Visual Novel Graph.vnd b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Visual Novel Graph.vnd new file mode 100644 index 00000000..4ff0727c --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Visual Novel Graph.vnd @@ -0,0 +1,5736 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 790b4d75d92f4b0984310a268dbd952f, type: 3} + m_Name: Visual Novel Graph + m_EditorClassIdentifier: Unity.GraphToolkit.Editor::Unity.GraphToolkit.Editor.Implementation.GraphObjectImp + m_GraphModel: + rid: 212506196344832059 + references: + version: 2 + RefIds: + - rid: -2 + type: {class: , ns: , asm: } + - rid: 212506196344832059 + type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 2302897198505650750 + m_Value1: 13785479348435745915 + m_HashGuid: + serializedVersion: 2 + Hash: 3eea2bffcc88f51f7bfcfec56ddc4fbf + m_Name: + m_GraphNodeModels: + - rid: 212506196344832062 + - rid: 212506196344832064 + - rid: 212506292077986251 + - rid: 212506292077986258 + - rid: 212506292077986260 + - rid: 212506292077986265 + - rid: 212506292077986272 + - rid: 212506292077986274 + - rid: 212506292077986281 + - rid: 212506292077986288 + - rid: 212506292077986289 + - rid: 212506292077986298 + - rid: 212506292077986304 + - rid: 212506292077986311 + - rid: 212506292077986318 + - rid: 212506292077986319 + - rid: 212506292077986327 + - rid: 212506292077986334 + - rid: 212506292077986341 + - rid: 212506292077986342 + - rid: 212506292077986355 + - rid: 212506292077986356 + - rid: 212506292077986364 + - rid: 212506292077986369 + - rid: 212506292077986376 + - rid: 212506292077986378 + - rid: 212506292077986385 + - rid: 212506292077986388 + - rid: 212506292077986395 + - rid: 212506292077986402 + - rid: 212506292077986403 + - rid: 212506292077986411 + - rid: 212506292077986415 + - rid: 212506292077986422 + - rid: 212506292077986431 + - rid: 212506292077986432 + - rid: 212506292077986433 + - rid: 212506292077986449 + - rid: 212506292077986450 + - rid: 212506292077986463 + - rid: 212506292077986464 + - rid: 212506292077986472 + - rid: 212506292077986477 + - rid: 212506292077986484 + - rid: 212506292077986486 + - rid: 212506292077986493 + - rid: 212506292077986500 + - rid: 212506292077986501 + - rid: 212506292077986514 + - rid: 212506292077986515 + - rid: 212506292077986528 + - rid: 212506292077986529 + - rid: 212506292077986542 + - rid: 212506292077986543 + m_GraphWireModels: + - rid: 212506196344832067 + - rid: 212506292077986252 + - rid: 212506292077986259 + - rid: 212506292077986261 + - rid: 212506292077986266 + - rid: 212506292077986273 + - rid: 212506292077986275 + - rid: 212506292077986282 + - rid: 212506292077986290 + - rid: 212506292077986301 + - rid: 212506292077986302 + - rid: 212506292077986303 + - rid: 212506292077986305 + - rid: 212506292077986312 + - rid: 212506292077986320 + - rid: 212506292077986326 + - rid: 212506292077986328 + - rid: 212506292077986335 + - rid: 212506292077986343 + - rid: 212506292077986349 + - rid: 212506292077986362 + - rid: 212506292077986363 + - rid: 212506292077986365 + - rid: 212506292077986370 + - rid: 212506292077986377 + - rid: 212506292077986379 + - rid: 212506292077986386 + - rid: 212506292077986387 + - rid: 212506292077986389 + - rid: 212506292077986396 + - rid: 212506292077986404 + - rid: 212506292077986410 + - rid: 212506292077986412 + - rid: 212506292077986416 + - rid: 212506292077986423 + - rid: 212506292077986434 + - rid: 212506292077986435 + - rid: 212506292077986443 + - rid: 212506292077986456 + - rid: 212506292077986457 + - rid: 212506292077986465 + - rid: 212506292077986471 + - rid: 212506292077986473 + - rid: 212506292077986478 + - rid: 212506292077986485 + - rid: 212506292077986487 + - rid: 212506292077986494 + - rid: 212506292077986502 + - rid: 212506292077986508 + - rid: 212506292077986516 + - rid: 212506292077986522 + - rid: 212506292077986535 + - rid: 212506292077986536 + - rid: 212506292077986549 + - rid: 212506292077986550 + m_GraphStickyNoteModels: [] + m_GraphPlacematModels: [] + m_GraphVariableModels: + - rid: 212506292077986245 + - rid: 212506292077986247 + - rid: 212506292077986249 + m_GraphPortalModels: [] + m_SectionModels: + - rid: 212506196344832060 + m_LocalSubgraphs: [] + m_LastKnownBounds: + serializedVersion: 2 + x: -55 + y: -342 + width: 14334 + height: 601 + m_GraphElementMetaData: + - m_Guid: + m_Value0: 4100805016759667866 + m_Value1: 4676883398720774892 + m_HashGuid: + serializedVersion: 2 + Hash: 9a8c198d6ffce838ec62ac04aca0e740 + m_Category: 0 + m_Index: 0 + - m_Guid: + m_Value0: 8138582243208631634 + m_Value1: 11606800698878507489 + m_HashGuid: + serializedVersion: 2 + Hash: 5295c01d6e0df270e1b9687bbda313a1 + m_Category: 0 + m_Index: 1 + - m_Guid: + m_Value0: 16279867892364253535 + m_Value1: 11389520719771399514 + m_HashGuid: + serializedVersion: 2 + Hash: 5f99a8fa97b5ede15af5ec17c0b40f9e + m_Category: 2 + m_Index: 0 + - m_Guid: + m_Value0: 4936186216617997086 + m_Value1: 5971618189832200919 + m_HashGuid: + serializedVersion: 2 + Hash: 1ef3b10236db8044d7a235cb1a73df52 + m_Category: 1 + m_Index: 0 + - m_Guid: + m_Value0: 14861195973942319042 + m_Value1: 8054515641685541175 + m_HashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + m_Category: 1 + m_Index: 1 + - m_Guid: + m_Value0: 8022976763440967490 + m_Value1: 17461347163538205615 + m_HashGuid: + serializedVersion: 2 + Hash: 42af1cdadb56576faf2b7826bb2a53f2 + m_Category: 1 + m_Index: 2 + - m_Guid: + m_Value0: 2684306375145960687 + m_Value1: 15742232437561128067 + m_HashGuid: + serializedVersion: 2 + Hash: ef34e4166d924025837476fcfea477da + m_Category: 0 + m_Index: 2 + - m_Guid: + m_Value0: 6729012220092223014 + m_Value1: 10185875344474795934 + m_HashGuid: + serializedVersion: 2 + Hash: 260edc5bf640625d9e6fd4a1a87f5b8d + m_Category: 2 + m_Index: 1 + - m_Guid: + m_Value0: 16159650277354198192 + m_Value1: 13992843344432217103 + m_HashGuid: + serializedVersion: 2 + Hash: b0543d4c4f9c42e00f3c926ee29030c2 + m_Category: 0 + m_Index: 3 + - m_Guid: + m_Value0: 18279037732123672491 + m_Value1: 491507420134479320 + m_HashGuid: + serializedVersion: 2 + Hash: ab7f318bf82facfdd89595fd642fd206 + m_Category: 2 + m_Index: 2 + - m_Guid: + m_Value0: 17393196479511017208 + m_Value1: 4083500700731865724 + m_HashGuid: + serializedVersion: 2 + Hash: f836d4850b0c61f17c7a2e834082ab38 + m_Category: 0 + m_Index: 4 + - m_Guid: + m_Value0: 5443305701284200828 + m_Value1: 8773396374097724399 + m_HashGuid: + serializedVersion: 2 + Hash: 7c41e708b2818a4bef83cbcf845dc179 + m_Category: 2 + m_Index: 3 + - m_Guid: + m_Value0: 10031770771796246276 + m_Value1: 4922728716274900112 + m_HashGuid: + serializedVersion: 2 + Hash: 04bf0fc95d02388b901c2e8baf0b5144 + m_Category: 0 + m_Index: 5 + - m_Guid: + m_Value0: 4987296764089418781 + m_Value1: 1617921644482299013 + m_HashGuid: + serializedVersion: 2 + Hash: 1d4401adfb6f36458584c8dd29037416 + m_Category: 2 + m_Index: 4 + - m_Guid: + m_Value0: 14131663102665211401 + m_Value1: 853179524738661450 + m_HashGuid: + serializedVersion: 2 + Hash: 09beda17b8c01dc44a3cafe5411ad70b + m_Category: 0 + m_Index: 6 + - m_Guid: + m_Value0: 17889621579352838573 + m_Value1: 714284381824370040 + m_HashGuid: + serializedVersion: 2 + Hash: ad117d0b0bb444f87845405fdca5e909 + m_Category: 2 + m_Index: 5 + - m_Guid: + m_Value0: 17491017914151302113 + m_Value1: 4591343917947881789 + m_HashGuid: + serializedVersion: 2 + Hash: e173fb1c1f94bcf23d09efa6f7bab73f + m_Category: 0 + m_Index: 7 + - m_Guid: + m_Value0: 2442302538338889700 + m_Value1: 16743595208377259093 + m_HashGuid: + serializedVersion: 2 + Hash: e46fb9ff37cde4215554427221335de8 + m_Category: 2 + m_Index: 6 + - m_Guid: + m_Value0: 17301476553333032113 + m_Value1: 903860243938307012 + m_HashGuid: + serializedVersion: 2 + Hash: b1442a1342311bf0c46b8a5e1a288b0c + m_Category: 0 + m_Index: 8 + - m_Guid: + m_Value0: 15834359648379107140 + m_Value1: 16316048741047497602 + m_HashGuid: + serializedVersion: 2 + Hash: 44776ac734f2bedb82731844e23f6ee2 + m_Category: 2 + m_Index: 7 + - m_Guid: + m_Value0: 6545910262536456117 + m_Value1: 9501591018433930647 + m_HashGuid: + serializedVersion: 2 + Hash: b5c711bab3bed75a97e5cb8eb06edc83 + m_Category: 0 + m_Index: 9 + - m_Guid: + m_Value0: 5373498893506340515 + m_Value1: 15193123256983535122 + m_HashGuid: + serializedVersion: 2 + Hash: a366660cc680924a12be3a091bd1d8d2 + m_Category: 0 + m_Index: 10 + - m_Guid: + m_Value0: 4969178073584728042 + m_Value1: 2102334701284985777 + m_HashGuid: + serializedVersion: 2 + Hash: ea77ad4d2111f644b18b11ad45fe2c1d + m_Category: 2 + m_Index: 8 + - m_Guid: + m_Value0: 17816373165312911407 + m_Value1: 9922871848130531527 + m_HashGuid: + serializedVersion: 2 + Hash: 2f2847a8ff7840f7c7508b4b5f1fb589 + m_Category: 0 + m_Index: 11 + - m_Guid: + m_Value0: 12826589824252024212 + m_Value1: 813169971554892425 + m_HashGuid: + serializedVersion: 2 + Hash: 94952eaa7c3301b2893a8be0c7f5480b + m_Category: 2 + m_Index: 9 + - m_Guid: + m_Value0: 13874663720999219148 + m_Value1: 11975678196089357675 + m_HashGuid: + serializedVersion: 2 + Hash: cc6f28a424b58cc06b054c96de2732a6 + m_Category: 2 + m_Index: 10 + - m_Guid: + m_Value0: 14599040659635005847 + m_Value1: 9212252812832929351 + m_HashGuid: + serializedVersion: 2 + Hash: 9769078321369aca47f6ffe91f7fd87f + m_Category: 2 + m_Index: 11 + - m_Guid: + m_Value0: 5825339970904015074 + m_Value1: 3682661254003267708 + m_HashGuid: + serializedVersion: 2 + Hash: e2409eedd6c3d7507c98f520e6701b33 + m_Category: 0 + m_Index: 12 + - m_Guid: + m_Value0: 2514631186328259391 + m_Value1: 125290741128772959 + m_HashGuid: + serializedVersion: 2 + Hash: 3f0b37aabdc3e5225f3da0e6431fbd01 + m_Category: 2 + m_Index: 12 + - m_Guid: + m_Value0: 3446801599067699725 + m_Value1: 2715767826681732919 + m_HashGuid: + serializedVersion: 2 + Hash: 0dbaaddbca7fd52f379fcc197358b025 + m_Category: 0 + m_Index: 13 + - m_Guid: + m_Value0: 4295588581722648588 + m_Value1: 16776403470322816946 + m_HashGuid: + serializedVersion: 2 + Hash: 0c70cd5a0eff9c3bb2d7383112c2d1e8 + m_Category: 2 + m_Index: 13 + - m_Guid: + m_Value0: 1299974772548670608 + m_Value1: 14140560310255163115 + m_HashGuid: + serializedVersion: 2 + Hash: 9094bb062b700a12eb16bfa9ae5c3dc4 + m_Category: 0 + m_Index: 14 + - m_Guid: + m_Value0: 17038491109040982343 + m_Value1: 785946714215586534 + m_HashGuid: + serializedVersion: 2 + Hash: 47090acf63e174ece69a34595f3ee80a + m_Category: 0 + m_Index: 15 + - m_Guid: + m_Value0: 4178208235536503903 + m_Value1: 536548767513067379 + m_HashGuid: + serializedVersion: 2 + Hash: 5fd4c3cc40fafb39733f4ae442347207 + m_Category: 2 + m_Index: 14 + - m_Guid: + m_Value0: 2079617455837560888 + m_Value1: 2091813306629284263 + m_HashGuid: + serializedVersion: 2 + Hash: 3840e6cb0e49dc1ca7e112961e9d071d + m_Category: 2 + m_Index: 15 + - m_Guid: + m_Value0: 2685450221431985292 + m_Value1: 16998293844760880984 + m_HashGuid: + serializedVersion: 2 + Hash: 8c94728ebfa244255867aee43012e6eb + m_Category: 0 + m_Index: 16 + - m_Guid: + m_Value0: 1758342506701751934 + m_Value1: 16259398974838224954 + m_HashGuid: + serializedVersion: 2 + Hash: 7e866d9931e366183a3895bc38fda4e1 + m_Category: 2 + m_Index: 16 + - m_Guid: + m_Value0: 4210364483073394414 + m_Value1: 11550954105868030973 + m_HashGuid: + serializedVersion: 2 + Hash: eec6829c30386e3afd931a498f3b4da0 + m_Category: 0 + m_Index: 17 + - m_Guid: + m_Value0: 12534710476130644633 + m_Value1: 15904490640668531442 + m_HashGuid: + serializedVersion: 2 + Hash: 9972222cc43cf4adf29a92daf819b8dc + m_Category: 2 + m_Index: 17 + - m_Guid: + m_Value0: 1587802512576717392 + m_Value1: 4265834315007858579 + m_HashGuid: + serializedVersion: 2 + Hash: 50a29bfff80109169317b748b549333b + m_Category: 0 + m_Index: 18 + - m_Guid: + m_Value0: 8050809525251326534 + m_Value1: 9594889822612751014 + m_HashGuid: + serializedVersion: 2 + Hash: 46c2efb29b38ba6fa602d82f75e52785 + m_Category: 0 + m_Index: 19 + - m_Guid: + m_Value0: 12860761084263187239 + m_Value1: 17575272062438964114 + m_HashGuid: + serializedVersion: 2 + Hash: 27c3ac20119a7ab2927b85b0d2e8e7f3 + m_Category: 2 + m_Index: 18 + - m_Guid: + m_Value0: 477321094192110531 + m_Value1: 8823209664358218695 + m_HashGuid: + serializedVersion: 2 + Hash: c31b1f9701c99f06c77bdd3e7156727a + m_Category: 2 + m_Index: 19 + - m_Guid: + m_Value0: 5753779792778141801 + m_Value1: 4592228631768954344 + m_HashGuid: + serializedVersion: 2 + Hash: 69a05c983c88d94fe875f7239cdfba3f + m_Category: 0 + m_Index: 20 + - m_Guid: + m_Value0: 1813557420254565528 + m_Value1: 17546868856489658569 + m_HashGuid: + serializedVersion: 2 + Hash: 98140c76dd0c2b19c9486ef7410083f3 + m_Category: 0 + m_Index: 21 + - m_Guid: + m_Value0: 16948095280242653446 + m_Value1: 12911118773620709071 + m_HashGuid: + serializedVersion: 2 + Hash: 067956cedcba33ebcf168a5a1e822db3 + m_Category: 2 + m_Index: 20 + - m_Guid: + m_Value0: 14581462720896976344 + m_Value1: 4488133629553314931 + m_HashGuid: + serializedVersion: 2 + Hash: d845aab816c35bca738c02c6c10d493e + m_Category: 2 + m_Index: 21 + - m_Guid: + m_Value0: 6033029348406389940 + m_Value1: 17482310910486119295 + m_HashGuid: + serializedVersion: 2 + Hash: b4ec445f3aa0b9537f0376d825a59df2 + m_Category: 0 + m_Index: 22 + - m_Guid: + m_Value0: 359574505755441249 + m_Value1: 3853718988034703548 + m_HashGuid: + serializedVersion: 2 + Hash: 61f8d69d1b77fd04bc80fc7100297b35 + m_Category: 2 + m_Index: 22 + - m_Guid: + m_Value0: 15091188558104324049 + m_Value1: 10247402027108060447 + m_HashGuid: + serializedVersion: 2 + Hash: d1673f7c09ac6ed11fcd64c0d915368e + m_Category: 0 + m_Index: 23 + - m_Guid: + m_Value0: 4521146440086917586 + m_Value1: 16805178418193852554 + m_HashGuid: + serializedVersion: 2 + Hash: d211e7b2bb56be3e8a6881d3bbfc37e9 + m_Category: 2 + m_Index: 23 + - m_Guid: + m_Value0: 8775400581448580988 + m_Value1: 18231737807351531216 + m_HashGuid: + serializedVersion: 2 + Hash: 7cbfffb2557cc879d0463f9df02404fd + m_Category: 0 + m_Index: 24 + - m_Guid: + m_Value0: 6437311434592069133 + m_Value1: 16124784751074772151 + m_HashGuid: + serializedVersion: 2 + Hash: 0da66bb7a4ec5559b784725f4cbec6df + m_Category: 2 + m_Index: 24 + - m_Guid: + m_Value0: 7702279676458852513 + m_Value1: 13980004590442244754 + m_HashGuid: + serializedVersion: 2 + Hash: a1600aac8efee36a92eaa3131bf402c2 + m_Category: 0 + m_Index: 25 + - m_Guid: + m_Value0: 16092478424963112464 + m_Value1: 17501004291483118292 + m_HashGuid: + serializedVersion: 2 + Hash: 105e90abddf753dfd42a70c6ad0ee0f2 + m_Category: 2 + m_Index: 25 + - m_Guid: + m_Value0: 4738567919683100755 + m_Value1: 9026763021371732781 + m_HashGuid: + serializedVersion: 2 + Hash: 53e0c5bc6ac6c2412d737e602481457d + m_Category: 0 + m_Index: 26 + - m_Guid: + m_Value0: 18170115976423065384 + m_Value1: 1980708906962131912 + m_HashGuid: + serializedVersion: 2 + Hash: 28c7580e363829fcc81beeb241e47c1b + m_Category: 2 + m_Index: 26 + - m_Guid: + m_Value0: 12177041303627175427 + m_Value1: 5800004433383543913 + m_HashGuid: + serializedVersion: 2 + Hash: 0316f5858c8afda86954846b4dc17d50 + m_Category: 2 + m_Index: 27 + - m_Guid: + m_Value0: 726275701732486232 + m_Value1: 10362838814555075835 + m_HashGuid: + serializedVersion: 2 + Hash: 582cc31ae73f140afb742f46ff32d08f + m_Category: 0 + m_Index: 27 + - m_Guid: + m_Value0: 12002329353589267998 + m_Value1: 2223840509414618865 + m_HashGuid: + serializedVersion: 2 + Hash: 1e9eeebdf4d690a6f136c83029abdc1e + m_Category: 2 + m_Index: 28 + - m_Guid: + m_Value0: 55306115345619017 + m_Value1: 13686721128542919296 + m_HashGuid: + serializedVersion: 2 + Hash: 4918156f9e7cc400805aa2de5900f1bd + m_Category: 0 + m_Index: 28 + - m_Guid: + m_Value0: 12526669405259361893 + m_Value1: 6526745077417367666 + m_HashGuid: + serializedVersion: 2 + Hash: 65ee3c7774abd7ad72d8fd5611a8935a + m_Category: 2 + m_Index: 29 + - m_Guid: + m_Value0: 10396597624093444431 + m_Value1: 10668738879688607622 + m_HashGuid: + serializedVersion: 2 + Hash: 4f89c2a07422489086073d557cf90e94 + m_Category: 0 + m_Index: 29 + - m_Guid: + m_Value0: 15928628041607872806 + m_Value1: 3959582190883770886 + m_HashGuid: + serializedVersion: 2 + Hash: 26015d73cfda0ddd0612971a0643f336 + m_Category: 0 + m_Index: 30 + - m_Guid: + m_Value0: 259393230435176897 + m_Value1: 890277082929756534 + m_HashGuid: + serializedVersion: 2 + Hash: c1d13acdc48c990376f9b23f4ae65a0c + m_Category: 2 + m_Index: 30 + - m_Guid: + m_Value0: 484612431741368539 + m_Value1: 11684630296441915813 + m_HashGuid: + serializedVersion: 2 + Hash: dbb8ae6770b0b906a50930c7582528a2 + m_Category: 2 + m_Index: 31 + - m_Guid: + m_Value0: 13702449949509897020 + m_Value1: 15297506243677371493 + m_HashGuid: + serializedVersion: 2 + Hash: 3c4b1b61a1e128be65bcb503e1a84bd4 + m_Category: 0 + m_Index: 31 + - m_Guid: + m_Value0: 15250816389072998654 + m_Value1: 6371928814937547505 + m_HashGuid: + serializedVersion: 2 + Hash: fed0661db4c8a5d3f1a26d4c7fa36d58 + m_Category: 2 + m_Index: 32 + - m_Guid: + m_Value0: 3285350401428725583 + m_Value1: 4958822397581833277 + m_HashGuid: + serializedVersion: 2 + Hash: 4f9fd897c8e8972d3db41d98b246d144 + m_Category: 0 + m_Index: 32 + - m_Guid: + m_Value0: 17565808333328434749 + m_Value1: 8606608470685741990 + m_HashGuid: + serializedVersion: 2 + Hash: 3d46a38c9c49c6f3a67317e8cdd07077 + m_Category: 2 + m_Index: 33 + - m_Guid: + m_Value0: 10332405437753434739 + m_Value1: 10877551952539482373 + m_HashGuid: + serializedVersion: 2 + Hash: 73a29b900014648f05f9f87cded3f496 + m_Category: 0 + m_Index: 33 + - m_Guid: + m_Value0: 2802286603685168758 + m_Value1: 15813423688799447999 + m_HashGuid: + serializedVersion: 2 + Hash: 76867da3d1b8e326bf6ba3d50f9174db + m_Category: 2 + m_Index: 34 + - m_Guid: + m_Value0: 9108742290001119945 + m_Value1: 2483487481492022999 + m_HashGuid: + serializedVersion: 2 + Hash: c94a1842dac0687ed72676d2b41e7722 + m_Category: 0 + m_Index: 34 + - m_Guid: + m_Value0: 18196257321434640336 + m_Value1: 11908661044753711930 + m_HashGuid: + serializedVersion: 2 + Hash: d06fb63da01786fc3ac3131b201044a5 + m_Category: 0 + m_Index: 35 + - m_Guid: + m_Value0: 4309876486438325380 + m_Value1: 12113945766363913917 + m_HashGuid: + serializedVersion: 2 + Hash: 840cf767d4c1cf3bbdde77f87d611da8 + m_Category: 0 + m_Index: 36 + - m_Guid: + m_Value0: 12113785385688403104 + m_Value1: 14583396814860842352 + m_HashGuid: + serializedVersion: 2 + Hash: a08c466fa0cf1ca870f5571023a262ca + m_Category: 2 + m_Index: 35 + - m_Guid: + m_Value0: 12265729631817574357 + m_Value1: 15941017325118786448 + m_HashGuid: + serializedVersion: 2 + Hash: d527780f1da038aa908b0d4eccde39dd + m_Category: 2 + m_Index: 36 + - m_Guid: + m_Value0: 1414786516526273152 + m_Value1: 12624261671112788587 + m_HashGuid: + serializedVersion: 2 + Hash: 80928f46d754a2136bca418a1a6332af + m_Category: 2 + m_Index: 37 + - m_Guid: + m_Value0: 15817742451798638067 + m_Value1: 17720966502497287723 + m_HashGuid: + serializedVersion: 2 + Hash: f3fd1234f4e883db2b7ef2f12485edf5 + m_Category: 0 + m_Index: 37 + - m_Guid: + m_Value0: 2543553700929955435 + m_Value1: 17296263920712035437 + m_HashGuid: + serializedVersion: 2 + Hash: 6b660f5b9d844c236d2c727765ac08f0 + m_Category: 0 + m_Index: 38 + - m_Guid: + m_Value0: 1385576749155400147 + m_Value1: 1303693529471071798 + m_HashGuid: + serializedVersion: 2 + Hash: d3b97256b68e3a13363619985ba61712 + m_Category: 2 + m_Index: 38 + - m_Guid: + m_Value0: 2466161377074876163 + m_Value1: 1535688395896829270 + m_HashGuid: + serializedVersion: 2 + Hash: 030f56c7b490392256b51eab75dc4f15 + m_Category: 2 + m_Index: 39 + - m_Guid: + m_Value0: 1976370406995879566 + m_Value1: 9234824876857314878 + m_HashGuid: + serializedVersion: 2 + Hash: 8e6695f5697a6d1b3e4e051c4cb02880 + m_Category: 0 + m_Index: 39 + - m_Guid: + m_Value0: 12285053860691802499 + m_Value1: 13448240601720850145 + m_HashGuid: + serializedVersion: 2 + Hash: 837913b565477daae1868e4f93bfa1ba + m_Category: 0 + m_Index: 40 + - m_Guid: + m_Value0: 12442824639715998818 + m_Value1: 14979044128099564557 + m_HashGuid: + serializedVersion: 2 + Hash: 62fcbfbc15cbadac0d7c46aa4541e0cf + m_Category: 2 + m_Index: 40 + - m_Guid: + m_Value0: 2249461083042594202 + m_Value1: 324336386003671830 + m_HashGuid: + serializedVersion: 2 + Hash: 9abdd1d6efb0371f169b7b8339468004 + m_Category: 2 + m_Index: 41 + - m_Guid: + m_Value0: 6769670841027895332 + m_Value1: 6718070716094645745 + m_HashGuid: + serializedVersion: 2 + Hash: 24a0c93dc3b3f25df185c6f0b8613b5d + m_Category: 0 + m_Index: 41 + - m_Guid: + m_Value0: 2894536898099985902 + m_Value1: 5493897534320201638 + m_HashGuid: + serializedVersion: 2 + Hash: eebd8210f9752b28a6cf8c15b33e3e4c + m_Category: 2 + m_Index: 42 + - m_Guid: + m_Value0: 8352788746116368516 + m_Value1: 569244632770703493 + m_HashGuid: + serializedVersion: 2 + Hash: 848825101c11eb738570983efa5ce607 + m_Category: 0 + m_Index: 42 + - m_Guid: + m_Value0: 6599438517308307442 + m_Value1: 18242558121128431610 + m_HashGuid: + serializedVersion: 2 + Hash: f23731bd5dea955bfa0f473cf5952afd + m_Category: 2 + m_Index: 43 + - m_Guid: + m_Value0: 2937616585783166327 + m_Value1: 12385603157419810255 + m_HashGuid: + serializedVersion: 2 + Hash: 77c5e679b882c428cfddf62e7380e2ab + m_Category: 0 + m_Index: 43 + - m_Guid: + m_Value0: 14494977458417372132 + m_Value1: 10390277288489310522 + m_HashGuid: + serializedVersion: 2 + Hash: e40b4364338128c93ad936d224ae3190 + m_Category: 2 + m_Index: 44 + - m_Guid: + m_Value0: 8461095553560597274 + m_Value1: 9267047493502304475 + m_HashGuid: + serializedVersion: 2 + Hash: 1ad39dc093d96b75db00e1ae982a9b80 + m_Category: 0 + m_Index: 44 + - m_Guid: + m_Value0: 17314624322304671032 + m_Value1: 10844870776979596864 + m_HashGuid: + serializedVersion: 2 + Hash: 38fd4e9615e749f04026e25883b88096 + m_Category: 2 + m_Index: 45 + - m_Guid: + m_Value0: 16051972679422638207 + m_Value1: 14703138455845612296 + m_HashGuid: + serializedVersion: 2 + Hash: 7ff842dd1a10c4de082b1068860a0ccc + m_Category: 0 + m_Index: 45 + - m_Guid: + m_Value0: 13332020208144518730 + m_Value1: 17377304032922122957 + m_HashGuid: + serializedVersion: 2 + Hash: 4a8ec844bed904b9cd3a49f4f29528f1 + m_Category: 2 + m_Index: 46 + - m_Guid: + m_Value0: 15502642372912329036 + m_Value1: 7952721200874689897 + m_HashGuid: + serializedVersion: 2 + Hash: 4cb15b051a7324d76995daffcbbd5d6e + m_Category: 0 + m_Index: 46 + - m_Guid: + m_Value0: 17898123569631489457 + m_Value1: 13578405266099553823 + m_HashGuid: + serializedVersion: 2 + Hash: b16deee98ee862f81f4628e6a52f70bc + m_Category: 0 + m_Index: 47 + - m_Guid: + m_Value0: 6777654291692438851 + m_Value1: 3973042899289830525 + m_HashGuid: + serializedVersion: 2 + Hash: 43c5ba32ab100f5e7df48e8177152337 + m_Category: 2 + m_Index: 47 + - m_Guid: + m_Value0: 14084126535428690965 + m_Value1: 12424995343496433835 + m_HashGuid: + serializedVersion: 2 + Hash: 1554e18b76de74c3abd0fc386f736eac + m_Category: 2 + m_Index: 48 + - m_Guid: + m_Value0: 10756103251044134855 + m_Value1: 8489052522125139014 + m_HashGuid: + serializedVersion: 2 + Hash: c7efe825eb5a4595461ce7bc4a2ccf75 + m_Category: 0 + m_Index: 48 + - m_Guid: + m_Value0: 17190070197365973228 + m_Value1: 8973740198056460363 + m_HashGuid: + serializedVersion: 2 + Hash: ec200782c4658fee4b80cc4b2a21897c + m_Category: 0 + m_Index: 49 + - m_Guid: + m_Value0: 13070687771575028010 + m_Value1: 16042154140089346917 + m_HashGuid: + serializedVersion: 2 + Hash: 2a89c5da466964b5656b1608322ea1de + m_Category: 2 + m_Index: 49 + - m_Guid: + m_Value0: 5908936843511780657 + m_Value1: 15725560613092187097 + m_HashGuid: + serializedVersion: 2 + Hash: 31d5bc95c0c20052d9db3b5d0f6a3cda + m_Category: 2 + m_Index: 50 + - m_Guid: + m_Value0: 18148101924647537084 + m_Value1: 16415583951798714988 + m_HashGuid: + serializedVersion: 2 + Hash: bc0933368c02dbfb6cc29073a1decfe3 + m_Category: 0 + m_Index: 50 + - m_Guid: + m_Value0: 11743748374549970520 + m_Value1: 10971621234676904448 + m_HashGuid: + serializedVersion: 2 + Hash: 583e9ff4ec2cfaa200b20cff61074398 + m_Category: 0 + m_Index: 51 + - m_Guid: + m_Value0: 44362528310319433 + m_Value1: 9967745803510063374 + m_HashGuid: + serializedVersion: 2 + Hash: 495946057c9b9d000ea19b35ff8b548a + m_Category: 2 + m_Index: 51 + - m_Guid: + m_Value0: 7593402978500405416 + m_Value1: 10365301743039041200 + m_HashGuid: + serializedVersion: 2 + Hash: a8e8e801c72f6169b04e947f04f3d88f + m_Category: 2 + m_Index: 52 + - m_Guid: + m_Value0: 6220278439588499237 + m_Value1: 381404794485648404 + m_HashGuid: + serializedVersion: 2 + Hash: 258fb1cb48de525614acf2caa3054b05 + m_Category: 0 + m_Index: 52 + - m_Guid: + m_Value0: 4834019322597316689 + m_Value1: 389573836314601882 + m_HashGuid: + serializedVersion: 2 + Hash: 5198c950f6e215439a69510f570b6805 + m_Category: 0 + m_Index: 53 + - m_Guid: + m_Value0: 17274162711134662052 + m_Value1: 16485148469014592017 + m_HashGuid: + serializedVersion: 2 + Hash: a4ed7a9d7627baef117a30c53003c7e4 + m_Category: 2 + m_Index: 53 + - m_Guid: + m_Value0: 11398438999349522589 + m_Value1: 18023776733901110856 + m_HashGuid: + serializedVersion: 2 + Hash: 9df02fdee0632f9e483e2007725121fa + m_Category: 2 + m_Index: 54 + m_EntryPoint: + rid: 212506196344832062 + m_Graph: + rid: 212506196344832061 + - rid: 212506196344832060 + type: {class: SectionModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 4750755334678618737 + m_Value1: 1903239954300250078 + m_HashGuid: + serializedVersion: 2 + Hash: 71a24f6ace12ee41dea76596a7aa691a + m_Version: 2 + m_Items: + - rid: 212506292077986245 + - rid: 212506292077986247 + - rid: 212506292077986249 + m_Title: + - rid: 212506196344832061 + type: {class: VisualNovelDirectorGraph, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506196344832062 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 4100805016759667866 + m_Value1: 4676883398720774892 + m_HashGuid: + serializedVersion: 2 + Hash: 9a8c198d6ffce838ec62ac04aca0e740 + m_Version: 2 + m_Position: {x: -54.708984, y: -94.93607} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506196344832063 + - rid: 212506196344832063 + type: {class: StartNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506196344832064 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 8138582243208631634 + m_Value1: 11606800698878507489 + m_HashGuid: + serializedVersion: 2 + Hash: 5295c01d6e0df270e1b9687bbda313a1 + m_Version: 2 + m_Position: {x: 237.58499, y: -90.318535} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - Background + m_ValueList: + - rid: 212506196344832065 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506196344832066 + - rid: 212506196344832065 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 91ebf5c54c1ef1a478545d01bed02985, type: 3} + - rid: 212506196344832066 + type: {class: SetBackgroundNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506196344832067 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 16279867892364253535 + m_Value1: 11389520719771399514 + m_HashGuid: + serializedVersion: 2 + Hash: 5f99a8fa97b5ede15af5ec17c0b40f9e + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 4100805016759667866 + m_Value1: 4676883398720774892 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 9a8c198d6ffce838ec62ac04aca0e740 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 8138582243208631634 + m_Value1: 11606800698878507489 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 5295c01d6e0df270e1b9687bbda313a1 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986245 + type: {class: VariableDeclarationModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 4936186216617997086 + m_Value1: 5971618189832200919 + m_HashGuid: + serializedVersion: 2 + Hash: 1ef3b10236db8044d7a235cb1a73df52 + m_Version: 2 + m_Name: Player + m_UniqueId: + m_DataType: + m_Identification: System.String, System.Private.CoreLib, Version=4.0.0.0, + Culture=neutral, PublicKeyToken=b77a5c561934e089 + m_IsExposed: 0 + m_Scope: 0 + m_ShowOnInspectorOnly: 0 + m_Tooltip: + m_InitializationValue: + rid: 212506292077986246 + m_Modifiers: 1 + m_VariableFlags: 0 + - rid: 212506292077986246 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: Player + - rid: 212506292077986247 + type: {class: VariableDeclarationModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 14861195973942319042 + m_Value1: 8054515641685541175 + m_HashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + m_Version: 2 + m_Name: Nodus + m_UniqueId: + m_DataType: + m_Identification: System.String, System.Private.CoreLib, Version=4.0.0.0, + Culture=neutral, PublicKeyToken=b77a5c561934e089 + m_IsExposed: 0 + m_Scope: 0 + m_ShowOnInspectorOnly: 0 + m_Tooltip: + m_InitializationValue: + rid: 212506292077986248 + m_Modifiers: 1 + m_VariableFlags: 0 + - rid: 212506292077986248 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: Nodus + - rid: 212506292077986249 + type: {class: VariableDeclarationModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 8022976763440967490 + m_Value1: 17461347163538205615 + m_HashGuid: + serializedVersion: 2 + Hash: 42af1cdadb56576faf2b7826bb2a53f2 + m_Version: 2 + m_Name: Wirerick + m_UniqueId: + m_DataType: + m_Identification: System.String, System.Private.CoreLib, Version=4.0.0.0, + Culture=neutral, PublicKeyToken=b77a5c561934e089 + m_IsExposed: 0 + m_Scope: 0 + m_ShowOnInspectorOnly: 0 + m_Tooltip: + m_InitializationValue: + rid: 212506292077986250 + m_Modifiers: 1 + m_VariableFlags: 0 + - rid: 212506292077986250 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: Wirerick + - rid: 212506292077986251 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 2684306375145960687 + m_Value1: 15742232437561128067 + m_HashGuid: + serializedVersion: 2 + Hash: ef34e4166d924025837476fcfea477da + m_Version: 2 + m_Position: {x: 693.4307, y: -90.90291} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986253 + - rid: 212506292077986254 + - rid: 212506292077986255 + - rid: 212506292077986256 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986257 + - rid: 212506292077986252 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 6729012220092223014 + m_Value1: 10185875344474795934 + m_HashGuid: + serializedVersion: 2 + Hash: 260edc5bf640625d9e6fd4a1a87f5b8d + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 8138582243208631634 + m_Value1: 11606800698878507489 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 5295c01d6e0df270e1b9687bbda313a1 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 2684306375145960687 + m_Value1: 15742232437561128067 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: ef34e4166d924025837476fcfea477da + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986253 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986254 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 0} + - rid: 212506292077986255 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986256 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: "Today\u2019s the big day. Do you want to boot up the sample project + from the framework?" + - rid: 212506292077986257 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986258 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 16159650277354198192 + m_Value1: 13992843344432217103 + m_HashGuid: + serializedVersion: 2 + Hash: b0543d4c4f9c42e00f3c926ee29030c2 + m_Version: 2 + m_Position: {x: 529.74554, y: 78.88526} + m_Title: Player + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986245 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 1ef3b10236db8044d7a235cb1a73df52 + - rid: 212506292077986259 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 18279037732123672491 + m_Value1: 491507420134479320 + m_HashGuid: + serializedVersion: 2 + Hash: ab7f318bf82facfdd89595fd642fd206 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 16159650277354198192 + m_Value1: 13992843344432217103 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: b0543d4c4f9c42e00f3c926ee29030c2 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 2684306375145960687 + m_Value1: 15742232437561128067 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: ef34e4166d924025837476fcfea477da + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986260 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 17393196479511017208 + m_Value1: 4083500700731865724 + m_HashGuid: + serializedVersion: 2 + Hash: f836d4850b0c61f17c7a2e834082ab38 + m_Version: 2 + m_Position: {x: 1135.5917, y: -89.57119} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - Option1 + - Option2 + m_ValueList: + - rid: 212506292077986262 + - rid: 212506292077986263 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986264 + - rid: 212506292077986261 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 5443305701284200828 + m_Value1: 8773396374097724399 + m_HashGuid: + serializedVersion: 2 + Hash: 7c41e708b2818a4bef83cbcf845dc179 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 2684306375145960687 + m_Value1: 15742232437561128067 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: ef34e4166d924025837476fcfea477da + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 17393196479511017208 + m_Value1: 4083500700731865724 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: f836d4850b0c61f17c7a2e834082ab38 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986262 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: Yes + - rid: 212506292077986263 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: No + - rid: 212506292077986264 + type: {class: TwoOptionNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986265 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 10031770771796246276 + m_Value1: 4922728716274900112 + m_HashGuid: + serializedVersion: 2 + Hash: 04bf0fc95d02388b901c2e8baf0b5144 + m_Version: 2 + m_Position: {x: 1756.7137, y: -262.6904} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986267 + - rid: 212506292077986268 + - rid: 212506292077986269 + - rid: 212506292077986270 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986271 + - rid: 212506292077986266 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 4987296764089418781 + m_Value1: 1617921644482299013 + m_HashGuid: + serializedVersion: 2 + Hash: 1d4401adfb6f36458584c8dd29037416 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17393196479511017208 + m_Value1: 4083500700731865724 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: f836d4850b0c61f17c7a2e834082ab38 + m_UniqueId: Option1Execution + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: Option 1 + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 10031770771796246276 + m_Value1: 4922728716274900112 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 04bf0fc95d02388b901c2e8baf0b5144 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986267 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986268 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 0} + - rid: 212506292077986269 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986270 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: ...and something strange happens. + - rid: 212506292077986271 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986272 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 14131663102665211401 + m_Value1: 853179524738661450 + m_HashGuid: + serializedVersion: 2 + Hash: 09beda17b8c01dc44a3cafe5411ad70b + m_Version: 2 + m_Position: {x: 1620.7618, y: -65.84244} + m_Title: Player + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986245 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 1ef3b10236db8044d7a235cb1a73df52 + - rid: 212506292077986273 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 17889621579352838573 + m_Value1: 714284381824370040 + m_HashGuid: + serializedVersion: 2 + Hash: ad117d0b0bb444f87845405fdca5e909 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 14131663102665211401 + m_Value1: 853179524738661450 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 09beda17b8c01dc44a3cafe5411ad70b + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 10031770771796246276 + m_Value1: 4922728716274900112 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 04bf0fc95d02388b901c2e8baf0b5144 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986274 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 17491017914151302113 + m_Value1: 4591343917947881789 + m_HashGuid: + serializedVersion: 2 + Hash: e173fb1c1f94bcf23d09efa6f7bab73f + m_Version: 2 + m_Position: {x: 1745.074, y: -0.83003235} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986276 + - rid: 212506292077986277 + - rid: 212506292077986278 + - rid: 212506292077986279 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986280 + - rid: 212506292077986275 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 2442302538338889700 + m_Value1: 16743595208377259093 + m_HashGuid: + serializedVersion: 2 + Hash: e46fb9ff37cde4215554427221335de8 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17393196479511017208 + m_Value1: 4083500700731865724 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: f836d4850b0c61f17c7a2e834082ab38 + m_UniqueId: Option2Execution + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: Option 2 + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 17491017914151302113 + m_Value1: 4591343917947881789 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: e173fb1c1f94bcf23d09efa6f7bab73f + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986276 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986277 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 0} + - rid: 212506292077986278 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986279 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: You should boot up the sample project, it's really cool... + - rid: 212506292077986280 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986281 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 17301476553333032113 + m_Value1: 903860243938307012 + m_HashGuid: + serializedVersion: 2 + Hash: b1442a1342311bf0c46b8a5e1a288b0c + m_Version: 2 + m_Position: {x: 1601.4882, y: 126.13321} + m_Title: Player + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986245 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 1ef3b10236db8044d7a235cb1a73df52 + - rid: 212506292077986282 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 15834359648379107140 + m_Value1: 16316048741047497602 + m_HashGuid: + serializedVersion: 2 + Hash: 44776ac734f2bedb82731844e23f6ee2 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17301476553333032113 + m_Value1: 903860243938307012 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: b1442a1342311bf0c46b8a5e1a288b0c + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 17491017914151302113 + m_Value1: 4591343917947881789 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: e173fb1c1f94bcf23d09efa6f7bab73f + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986288 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 6545910262536456117 + m_Value1: 9501591018433930647 + m_HashGuid: + serializedVersion: 2 + Hash: b5c711bab3bed75a97e5cb8eb06edc83 + m_Version: 2 + m_Position: {x: 2714.303, y: -12.448673} + m_Title: Player + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986245 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 1ef3b10236db8044d7a235cb1a73df52 + - rid: 212506292077986289 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 5373498893506340515 + m_Value1: 15193123256983535122 + m_HashGuid: + serializedVersion: 2 + Hash: a366660cc680924a12be3a091bd1d8d2 + m_Version: 2 + m_Position: {x: 2889.078, y: -182.11072} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986291 + - rid: 212506292077986292 + - rid: 212506292077986293 + - rid: 212506292077986294 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986295 + - rid: 212506292077986290 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 4969178073584728042 + m_Value1: 2102334701284985777 + m_HashGuid: + serializedVersion: 2 + Hash: ea77ad4d2111f644b18b11ad45fe2c1d + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 6545910262536456117 + m_Value1: 9501591018433930647 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: b5c711bab3bed75a97e5cb8eb06edc83 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5373498893506340515 + m_Value1: 15193123256983535122 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: a366660cc680924a12be3a091bd1d8d2 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986291 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986292 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 0} + - rid: 212506292077986293 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986294 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"What is this??"' + - rid: 212506292077986295 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986298 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 17816373165312911407 + m_Value1: 9922871848130531527 + m_HashGuid: + serializedVersion: 2 + Hash: 2f2847a8ff7840f7c7508b4b5f1fb589 + m_Version: 2 + m_Position: {x: 2273.8433, y: -161.95763} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - Background + m_ValueList: + - rid: 212506292077986299 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986300 + - rid: 212506292077986299 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: c94e9de1d1d086f41bfeaafb64d32436, type: 3} + - rid: 212506292077986300 + type: {class: SetBackgroundNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986301 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12826589824252024212 + m_Value1: 813169971554892425 + m_HashGuid: + serializedVersion: 2 + Hash: 94952eaa7c3301b2893a8be0c7f5480b + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 10031770771796246276 + m_Value1: 4922728716274900112 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 04bf0fc95d02388b901c2e8baf0b5144 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 17816373165312911407 + m_Value1: 9922871848130531527 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 2f2847a8ff7840f7c7508b4b5f1fb589 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986302 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 13874663720999219148 + m_Value1: 11975678196089357675 + m_HashGuid: + serializedVersion: 2 + Hash: cc6f28a424b58cc06b054c96de2732a6 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17491017914151302113 + m_Value1: 4591343917947881789 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: e173fb1c1f94bcf23d09efa6f7bab73f + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 17816373165312911407 + m_Value1: 9922871848130531527 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 2f2847a8ff7840f7c7508b4b5f1fb589 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986303 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 14599040659635005847 + m_Value1: 9212252812832929351 + m_HashGuid: + serializedVersion: 2 + Hash: 9769078321369aca47f6ffe91f7fd87f + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17816373165312911407 + m_Value1: 9922871848130531527 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 2f2847a8ff7840f7c7508b4b5f1fb589 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5373498893506340515 + m_Value1: 15193123256983535122 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: a366660cc680924a12be3a091bd1d8d2 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986304 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 5825339970904015074 + m_Value1: 3682661254003267708 + m_HashGuid: + serializedVersion: 2 + Hash: e2409eedd6c3d7507c98f520e6701b33 + m_Version: 2 + m_Position: {x: 3464.784, y: -193.58015} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986306 + - rid: 212506292077986307 + - rid: 212506292077986308 + - rid: 212506292077986309 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986310 + - rid: 212506292077986305 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 2514631186328259391 + m_Value1: 125290741128772959 + m_HashGuid: + serializedVersion: 2 + Hash: 3f0b37aabdc3e5225f3da0e6431fbd01 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 5373498893506340515 + m_Value1: 15193123256983535122 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: a366660cc680924a12be3a091bd1d8d2 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5825339970904015074 + m_Value1: 3682661254003267708 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: e2409eedd6c3d7507c98f520e6701b33 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986306 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986307 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 8c636d999f90e614d85cf993f7211c1d, type: 3} + - rid: 212506292077986308 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986309 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Whoa!! A new user??!"' + - rid: 212506292077986310 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986311 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 3446801599067699725 + m_Value1: 2715767826681732919 + m_HashGuid: + serializedVersion: 2 + Hash: 0dbaaddbca7fd52f379fcc197358b025 + m_Version: 2 + m_Position: {x: 3285.3545, y: 22.555908} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986312 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 4295588581722648588 + m_Value1: 16776403470322816946 + m_HashGuid: + serializedVersion: 2 + Hash: 0c70cd5a0eff9c3bb2d7383112c2d1e8 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 3446801599067699725 + m_Value1: 2715767826681732919 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 0dbaaddbca7fd52f379fcc197358b025 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5825339970904015074 + m_Value1: 3682661254003267708 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: e2409eedd6c3d7507c98f520e6701b33 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986318 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 1299974772548670608 + m_Value1: 14140560310255163115 + m_HashGuid: + serializedVersion: 2 + Hash: 9094bb062b700a12eb16bfa9ae5c3dc4 + m_Version: 2 + m_Position: {x: 3959.2468, y: -196.90807} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986321 + - rid: 212506292077986322 + - rid: 212506292077986323 + - rid: 212506292077986324 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986325 + - rid: 212506292077986319 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 17038491109040982343 + m_Value1: 785946714215586534 + m_HashGuid: + serializedVersion: 2 + Hash: 47090acf63e174ece69a34595f3ee80a + m_Version: 2 + m_Position: {x: 3728.0466, y: 15.030392} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986320 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 4178208235536503903 + m_Value1: 536548767513067379 + m_HashGuid: + serializedVersion: 2 + Hash: 5fd4c3cc40fafb39733f4ae442347207 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17038491109040982343 + m_Value1: 785946714215586534 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 47090acf63e174ece69a34595f3ee80a + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 1299974772548670608 + m_Value1: 14140560310255163115 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 9094bb062b700a12eb16bfa9ae5c3dc4 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986321 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986322 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 2d9bbc299867e244c98e4a3cb6e7a4bf, type: 3} + - rid: 212506292077986323 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986324 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: "\"Oh wow oh wow oh wow\u2014welcome to Graph World!!\"" + - rid: 212506292077986325 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986326 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 2079617455837560888 + m_Value1: 2091813306629284263 + m_HashGuid: + serializedVersion: 2 + Hash: 3840e6cb0e49dc1ca7e112961e9d071d + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 5825339970904015074 + m_Value1: 3682661254003267708 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: e2409eedd6c3d7507c98f520e6701b33 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 1299974772548670608 + m_Value1: 14140560310255163115 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 9094bb062b700a12eb16bfa9ae5c3dc4 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986327 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 2685450221431985292 + m_Value1: 16998293844760880984 + m_HashGuid: + serializedVersion: 2 + Hash: 8c94728ebfa244255867aee43012e6eb + m_Version: 2 + m_Position: {x: 4450.2085, y: -195.29431} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986329 + - rid: 212506292077986330 + - rid: 212506292077986331 + - rid: 212506292077986332 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986333 + - rid: 212506292077986328 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 1758342506701751934 + m_Value1: 16259398974838224954 + m_HashGuid: + serializedVersion: 2 + Hash: 7e866d9931e366183a3895bc38fda4e1 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 1299974772548670608 + m_Value1: 14140560310255163115 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 9094bb062b700a12eb16bfa9ae5c3dc4 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 2685450221431985292 + m_Value1: 16998293844760880984 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 8c94728ebfa244255867aee43012e6eb + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986329 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986330 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: ae8b150e3c088b84f879db093e49f80e, type: 3} + - rid: 212506292077986331 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 1 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986332 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Another one. Booted straight into runtime again."' + - rid: 212506292077986333 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986334 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 4210364483073394414 + m_Value1: 11550954105868030973 + m_HashGuid: + serializedVersion: 2 + Hash: eec6829c30386e3afd931a498f3b4da0 + m_Version: 2 + m_Position: {x: 4219.0083, y: 24.046186} + m_Title: Wirerick + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986249 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 42af1cdadb56576faf2b7826bb2a53f2 + - rid: 212506292077986335 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12534710476130644633 + m_Value1: 15904490640668531442 + m_HashGuid: + serializedVersion: 2 + Hash: 9972222cc43cf4adf29a92daf819b8dc + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 4210364483073394414 + m_Value1: 11550954105868030973 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: eec6829c30386e3afd931a498f3b4da0 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 2685450221431985292 + m_Value1: 16998293844760880984 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 8c94728ebfa244255867aee43012e6eb + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986341 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 1587802512576717392 + m_Value1: 4265834315007858579 + m_HashGuid: + serializedVersion: 2 + Hash: 50a29bfff80109169317b748b549333b + m_Version: 2 + m_Position: {x: 4921.245, y: -191.43053} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986344 + - rid: 212506292077986345 + - rid: 212506292077986346 + - rid: 212506292077986347 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986348 + - rid: 212506292077986342 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 8050809525251326534 + m_Value1: 9594889822612751014 + m_HashGuid: + serializedVersion: 2 + Hash: 46c2efb29b38ba6fa602d82f75e52785 + m_Version: 2 + m_Position: {x: 4653.036, y: 66.76936} + m_Title: Wirerick + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986249 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 42af1cdadb56576faf2b7826bb2a53f2 + - rid: 212506292077986343 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12860761084263187239 + m_Value1: 17575272062438964114 + m_HashGuid: + serializedVersion: 2 + Hash: 27c3ac20119a7ab2927b85b0d2e8e7f3 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 8050809525251326534 + m_Value1: 9594889822612751014 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 46c2efb29b38ba6fa602d82f75e52785 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 1587802512576717392 + m_Value1: 4265834315007858579 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 50a29bfff80109169317b748b549333b + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986344 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986345 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 938e70ce972aab048a4ffac6f77386bb, type: 3} + - rid: 212506292077986346 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 1 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986347 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Figures.."' + - rid: 212506292077986348 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986349 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 477321094192110531 + m_Value1: 8823209664358218695 + m_HashGuid: + serializedVersion: 2 + Hash: c31b1f9701c99f06c77bdd3e7156727a + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 2685450221431985292 + m_Value1: 16998293844760880984 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 8c94728ebfa244255867aee43012e6eb + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 1587802512576717392 + m_Value1: 4265834315007858579 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 50a29bfff80109169317b748b549333b + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986355 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 5753779792778141801 + m_Value1: 4592228631768954344 + m_HashGuid: + serializedVersion: 2 + Hash: 69a05c983c88d94fe875f7239cdfba3f + m_Version: 2 + m_Position: {x: 5406.638, y: -131.81987} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986357 + - rid: 212506292077986358 + - rid: 212506292077986359 + - rid: 212506292077986360 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986361 + - rid: 212506292077986356 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 1813557420254565528 + m_Value1: 17546868856489658569 + m_HashGuid: + serializedVersion: 2 + Hash: 98140c76dd0c2b19c9486ef7410083f3 + m_Version: 2 + m_Position: {x: 5175.4375, y: 80.11859} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986357 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986358 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 8c636d999f90e614d85cf993f7211c1d, type: 3} + - rid: 212506292077986359 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986360 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Do You want to check out the visual novel sample?"' + - rid: 212506292077986361 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986362 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 16948095280242653446 + m_Value1: 12911118773620709071 + m_HashGuid: + serializedVersion: 2 + Hash: 067956cedcba33ebcf168a5a1e822db3 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 1813557420254565528 + m_Value1: 17546868856489658569 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 98140c76dd0c2b19c9486ef7410083f3 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5753779792778141801 + m_Value1: 4592228631768954344 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 69a05c983c88d94fe875f7239cdfba3f + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986363 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 14581462720896976344 + m_Value1: 4488133629553314931 + m_HashGuid: + serializedVersion: 2 + Hash: d845aab816c35bca738c02c6c10d493e + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 1587802512576717392 + m_Value1: 4265834315007858579 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 50a29bfff80109169317b748b549333b + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 5753779792778141801 + m_Value1: 4592228631768954344 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 69a05c983c88d94fe875f7239cdfba3f + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986364 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 6033029348406389940 + m_Value1: 17482310910486119295 + m_HashGuid: + serializedVersion: 2 + Hash: b4ec445f3aa0b9537f0376d825a59df2 + m_Version: 2 + m_Position: {x: 5934.626, y: -133.47379} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - Option1 + - Option2 + m_ValueList: + - rid: 212506292077986366 + - rid: 212506292077986367 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986368 + - rid: 212506292077986365 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 359574505755441249 + m_Value1: 3853718988034703548 + m_HashGuid: + serializedVersion: 2 + Hash: 61f8d69d1b77fd04bc80fc7100297b35 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 5753779792778141801 + m_Value1: 4592228631768954344 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 69a05c983c88d94fe875f7239cdfba3f + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 6033029348406389940 + m_Value1: 17482310910486119295 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: b4ec445f3aa0b9537f0376d825a59df2 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986366 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: Sure, let's check it out + - rid: 212506292077986367 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: No thanks + - rid: 212506292077986368 + type: {class: TwoOptionNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986369 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 15091188558104324049 + m_Value1: 10247402027108060447 + m_HashGuid: + serializedVersion: 2 + Hash: d1673f7c09ac6ed11fcd64c0d915368e + m_Version: 2 + m_Position: {x: 7013.5903, y: -97.79392} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986371 + - rid: 212506292077986372 + - rid: 212506292077986373 + - rid: 212506292077986374 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986375 + - rid: 212506292077986370 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 4521146440086917586 + m_Value1: 16805178418193852554 + m_HashGuid: + serializedVersion: 2 + Hash: d211e7b2bb56be3e8a6881d3bbfc37e9 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 6033029348406389940 + m_Value1: 17482310910486119295 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: b4ec445f3aa0b9537f0376d825a59df2 + m_UniqueId: Option2Execution + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: Option 2 + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 15091188558104324049 + m_Value1: 10247402027108060447 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: d1673f7c09ac6ed11fcd64c0d915368e + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986371 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986372 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: ae8b150e3c088b84f879db093e49f80e, type: 3} + - rid: 212506292077986373 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 1 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986374 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Well let me explain what it is, We are Nodes. Wires."' + - rid: 212506292077986375 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986376 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 8775400581448580988 + m_Value1: 18231737807351531216 + m_HashGuid: + serializedVersion: 2 + Hash: 7cbfffb2557cc879d0463f9df02404fd + m_Version: 2 + m_Position: {x: 6835.6255, y: -7.9850464} + m_Title: Wirerick + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986249 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 42af1cdadb56576faf2b7826bb2a53f2 + - rid: 212506292077986377 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 6437311434592069133 + m_Value1: 16124784751074772151 + m_HashGuid: + serializedVersion: 2 + Hash: 0da66bb7a4ec5559b784725f4cbec6df + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 8775400581448580988 + m_Value1: 18231737807351531216 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 7cbfffb2557cc879d0463f9df02404fd + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 15091188558104324049 + m_Value1: 10247402027108060447 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: d1673f7c09ac6ed11fcd64c0d915368e + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986378 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 7702279676458852513 + m_Value1: 13980004590442244754 + m_HashGuid: + serializedVersion: 2 + Hash: a1600aac8efee36a92eaa3131bf402c2 + m_Version: 2 + m_Position: {x: 6608.4976, y: -342.375} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986380 + - rid: 212506292077986381 + - rid: 212506292077986382 + - rid: 212506292077986383 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986384 + - rid: 212506292077986379 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 16092478424963112464 + m_Value1: 17501004291483118292 + m_HashGuid: + serializedVersion: 2 + Hash: 105e90abddf753dfd42a70c6ad0ee0f2 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 6033029348406389940 + m_Value1: 17482310910486119295 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: b4ec445f3aa0b9537f0376d825a59df2 + m_UniqueId: Option1Execution + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: Option 1 + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 7702279676458852513 + m_Value1: 13980004590442244754 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: a1600aac8efee36a92eaa3131bf402c2 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986380 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986381 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 8c636d999f90e614d85cf993f7211c1d, type: 3} + - rid: 212506292077986382 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986383 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"You''re inside it!"' + - rid: 212506292077986384 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986385 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 4738567919683100755 + m_Value1: 9026763021371732781 + m_HashGuid: + serializedVersion: 2 + Hash: 53e0c5bc6ac6c2412d737e602481457d + m_Version: 2 + m_Position: {x: 6374.5522, y: -152.80283} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986386 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 18170115976423065384 + m_Value1: 1980708906962131912 + m_HashGuid: + serializedVersion: 2 + Hash: 28c7580e363829fcc81beeb241e47c1b + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 4738567919683100755 + m_Value1: 9026763021371732781 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 53e0c5bc6ac6c2412d737e602481457d + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 7702279676458852513 + m_Value1: 13980004590442244754 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: a1600aac8efee36a92eaa3131bf402c2 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986387 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12177041303627175427 + m_Value1: 5800004433383543913 + m_HashGuid: + serializedVersion: 2 + Hash: 0316f5858c8afda86954846b4dc17d50 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 7702279676458852513 + m_Value1: 13980004590442244754 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: a1600aac8efee36a92eaa3131bf402c2 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 15091188558104324049 + m_Value1: 10247402027108060447 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: d1673f7c09ac6ed11fcd64c0d915368e + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986388 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 726275701732486232 + m_Value1: 10362838814555075835 + m_HashGuid: + serializedVersion: 2 + Hash: 582cc31ae73f140afb742f46ff32d08f + m_Version: 2 + m_Position: {x: 7608.623, y: -250.93689} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986390 + - rid: 212506292077986391 + - rid: 212506292077986392 + - rid: 212506292077986393 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986394 + - rid: 212506292077986389 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12002329353589267998 + m_Value1: 2223840509414618865 + m_HashGuid: + serializedVersion: 2 + Hash: 1e9eeebdf4d690a6f136c83029abdc1e + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 15091188558104324049 + m_Value1: 10247402027108060447 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: d1673f7c09ac6ed11fcd64c0d915368e + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 726275701732486232 + m_Value1: 10362838814555075835 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 582cc31ae73f140afb742f46ff32d08f + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986390 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986391 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 0} + - rid: 212506292077986392 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986393 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: "\"...I didn\u2019t think it would talk back.\"" + - rid: 212506292077986394 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986395 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 55306115345619017 + m_Value1: 13686721128542919296 + m_HashGuid: + serializedVersion: 2 + Hash: 4918156f9e7cc400805aa2de5900f1bd + m_Version: 2 + m_Position: {x: 7451.1045, y: -16.730057} + m_Title: Player + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986245 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 1ef3b10236db8044d7a235cb1a73df52 + - rid: 212506292077986396 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12526669405259361893 + m_Value1: 6526745077417367666 + m_HashGuid: + serializedVersion: 2 + Hash: 65ee3c7774abd7ad72d8fd5611a8935a + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 55306115345619017 + m_Value1: 13686721128542919296 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4918156f9e7cc400805aa2de5900f1bd + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 726275701732486232 + m_Value1: 10362838814555075835 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 582cc31ae73f140afb742f46ff32d08f + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986402 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 10396597624093444431 + m_Value1: 10668738879688607622 + m_HashGuid: + serializedVersion: 2 + Hash: 4f89c2a07422489086073d557cf90e94 + m_Version: 2 + m_Position: {x: 8104.7812, y: -112.28906} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986405 + - rid: 212506292077986406 + - rid: 212506292077986407 + - rid: 212506292077986408 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986409 + - rid: 212506292077986403 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 15928628041607872806 + m_Value1: 3959582190883770886 + m_HashGuid: + serializedVersion: 2 + Hash: 26015d73cfda0ddd0612971a0643f336 + m_Version: 2 + m_Position: {x: 7870.836, y: 77.28311} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986404 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 259393230435176897 + m_Value1: 890277082929756534 + m_HashGuid: + serializedVersion: 2 + Hash: c1d13acdc48c990376f9b23f4ae65a0c + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 15928628041607872806 + m_Value1: 3959582190883770886 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 26015d73cfda0ddd0612971a0643f336 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 10396597624093444431 + m_Value1: 10668738879688607622 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4f89c2a07422489086073d557cf90e94 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986405 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986406 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 8c636d999f90e614d85cf993f7211c1d, type: 3} + - rid: 212506292077986407 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986408 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Oh, we do more than that! Watch this!"' + - rid: 212506292077986409 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986410 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 484612431741368539 + m_Value1: 11684630296441915813 + m_HashGuid: + serializedVersion: 2 + Hash: dbb8ae6770b0b906a50930c7582528a2 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 726275701732486232 + m_Value1: 10362838814555075835 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 582cc31ae73f140afb742f46ff32d08f + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 10396597624093444431 + m_Value1: 10668738879688607622 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4f89c2a07422489086073d557cf90e94 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986411 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 13702449949509897020 + m_Value1: 15297506243677371493 + m_HashGuid: + serializedVersion: 2 + Hash: 3c4b1b61a1e128be65bcb503e1a84bd4 + m_Version: 2 + m_Position: {x: 8529.832, y: -68.20086} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - Background + m_ValueList: + - rid: 212506292077986413 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986414 + - rid: 212506292077986412 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 15250816389072998654 + m_Value1: 6371928814937547505 + m_HashGuid: + serializedVersion: 2 + Hash: fed0661db4c8a5d3f1a26d4c7fa36d58 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 10396597624093444431 + m_Value1: 10668738879688607622 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4f89c2a07422489086073d557cf90e94 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 13702449949509897020 + m_Value1: 15297506243677371493 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 3c4b1b61a1e128be65bcb503e1a84bd4 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986413 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 91ebf5c54c1ef1a478545d01bed02985, type: 3} + - rid: 212506292077986414 + type: {class: SetBackgroundNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986415 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 3285350401428725583 + m_Value1: 4958822397581833277 + m_HashGuid: + serializedVersion: 2 + Hash: 4f9fd897c8e8972d3db41d98b246d144 + m_Version: 2 + m_Position: {x: 9079.345, y: -115.77389} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986417 + - rid: 212506292077986418 + - rid: 212506292077986419 + - rid: 212506292077986420 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986421 + - rid: 212506292077986416 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 17565808333328434749 + m_Value1: 8606608470685741990 + m_HashGuid: + serializedVersion: 2 + Hash: 3d46a38c9c49c6f3a67317e8cdd07077 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 13702449949509897020 + m_Value1: 15297506243677371493 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 3c4b1b61a1e128be65bcb503e1a84bd4 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 3285350401428725583 + m_Value1: 4958822397581833277 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4f9fd897c8e8972d3db41d98b246d144 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986417 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986418 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 0} + - rid: 212506292077986419 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986420 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Boom..."' + - rid: 212506292077986421 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986422 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 10332405437753434739 + m_Value1: 10877551952539482373 + m_HashGuid: + serializedVersion: 2 + Hash: 73a29b900014648f05f9f87cded3f496 + m_Version: 2 + m_Position: {x: 8880.144, y: 75.54753} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986423 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 2802286603685168758 + m_Value1: 15813423688799447999 + m_HashGuid: + serializedVersion: 2 + Hash: 76867da3d1b8e326bf6ba3d50f9174db + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 10332405437753434739 + m_Value1: 10877551952539482373 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 73a29b900014648f05f9f87cded3f496 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 3285350401428725583 + m_Value1: 4958822397581833277 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4f9fd897c8e8972d3db41d98b246d144 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986431 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 9108742290001119945 + m_Value1: 2483487481492022999 + m_HashGuid: + serializedVersion: 2 + Hash: c94a1842dac0687ed72676d2b41e7722 + m_Version: 2 + m_Position: {x: 10012.2705, y: -173.08846} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986436 + - rid: 212506292077986437 + - rid: 212506292077986438 + - rid: 212506292077986439 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986440 + - rid: 212506292077986432 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 18196257321434640336 + m_Value1: 11908661044753711930 + m_HashGuid: + serializedVersion: 2 + Hash: d06fb63da01786fc3ac3131b201044a5 + m_Version: 2 + m_Position: {x: 9493.542, y: -103.12817} + m_Title: SetBackgroundNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - Background + m_ValueList: + - rid: 212506292077986441 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986442 + - rid: 212506292077986433 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 4309876486438325380 + m_Value1: 12113945766363913917 + m_HashGuid: + serializedVersion: 2 + Hash: 840cf767d4c1cf3bbdde77f87d611da8 + m_Version: 2 + m_Position: {x: 9813.069, y: 18.232964} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986434 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12113785385688403104 + m_Value1: 14583396814860842352 + m_HashGuid: + serializedVersion: 2 + Hash: a08c466fa0cf1ca870f5571023a262ca + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 18196257321434640336 + m_Value1: 11908661044753711930 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: d06fb63da01786fc3ac3131b201044a5 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 9108742290001119945 + m_Value1: 2483487481492022999 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c94a1842dac0687ed72676d2b41e7722 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986435 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12265729631817574357 + m_Value1: 15941017325118786448 + m_HashGuid: + serializedVersion: 2 + Hash: d527780f1da038aa908b0d4eccde39dd + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 4309876486438325380 + m_Value1: 12113945766363913917 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 840cf767d4c1cf3bbdde77f87d611da8 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 9108742290001119945 + m_Value1: 2483487481492022999 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c94a1842dac0687ed72676d2b41e7722 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986436 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986437 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 2d9bbc299867e244c98e4a3cb6e7a4bf, type: 3} + - rid: 212506292077986438 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986439 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Boom!"' + - rid: 212506292077986440 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986441 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: c94e9de1d1d086f41bfeaafb64d32436, type: 3} + - rid: 212506292077986442 + type: {class: SetBackgroundNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986443 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 1414786516526273152 + m_Value1: 12624261671112788587 + m_HashGuid: + serializedVersion: 2 + Hash: 80928f46d754a2136bca418a1a6332af + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 3285350401428725583 + m_Value1: 4958822397581833277 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4f9fd897c8e8972d3db41d98b246d144 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 18196257321434640336 + m_Value1: 11908661044753711930 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: d06fb63da01786fc3ac3131b201044a5 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986449 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 15817742451798638067 + m_Value1: 17720966502497287723 + m_HashGuid: + serializedVersion: 2 + Hash: f3fd1234f4e883db2b7ef2f12485edf5 + m_Version: 2 + m_Position: {x: 10456.293, y: -113.40077} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986451 + - rid: 212506292077986452 + - rid: 212506292077986453 + - rid: 212506292077986454 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986455 + - rid: 212506292077986450 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 2543553700929955435 + m_Value1: 17296263920712035437 + m_HashGuid: + serializedVersion: 2 + Hash: 6b660f5b9d844c236d2c727765ac08f0 + m_Version: 2 + m_Position: {x: 10257.092, y: 77.920654} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986451 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986452 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 2d9bbc299867e244c98e4a3cb6e7a4bf, type: 3} + - rid: 212506292077986453 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986454 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Runtime-bound scene transitions! Straight from the graph!"' + - rid: 212506292077986455 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986456 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 1385576749155400147 + m_Value1: 1303693529471071798 + m_HashGuid: + serializedVersion: 2 + Hash: d3b97256b68e3a13363619985ba61712 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 2543553700929955435 + m_Value1: 17296263920712035437 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 6b660f5b9d844c236d2c727765ac08f0 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 15817742451798638067 + m_Value1: 17720966502497287723 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: f3fd1234f4e883db2b7ef2f12485edf5 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986457 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 2466161377074876163 + m_Value1: 1535688395896829270 + m_HashGuid: + serializedVersion: 2 + Hash: 030f56c7b490392256b51eab75dc4f15 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 9108742290001119945 + m_Value1: 2483487481492022999 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c94a1842dac0687ed72676d2b41e7722 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 15817742451798638067 + m_Value1: 17720966502497287723 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: f3fd1234f4e883db2b7ef2f12485edf5 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986463 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 1976370406995879566 + m_Value1: 9234824876857314878 + m_HashGuid: + serializedVersion: 2 + Hash: 8e6695f5697a6d1b3e4e051c4cb02880 + m_Version: 2 + m_Position: {x: 11061.202, y: -73.78966} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986466 + - rid: 212506292077986467 + - rid: 212506292077986468 + - rid: 212506292077986469 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986470 + - rid: 212506292077986464 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 12285053860691802499 + m_Value1: 13448240601720850145 + m_HashGuid: + serializedVersion: 2 + Hash: 837913b565477daae1868e4f93bfa1ba + m_Version: 2 + m_Position: {x: 10862.001, y: 117.53177} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986465 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 12442824639715998818 + m_Value1: 14979044128099564557 + m_HashGuid: + serializedVersion: 2 + Hash: 62fcbfbc15cbadac0d7c46aa4541e0cf + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 12285053860691802499 + m_Value1: 13448240601720850145 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 837913b565477daae1868e4f93bfa1ba + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 1976370406995879566 + m_Value1: 9234824876857314878 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 8e6695f5697a6d1b3e4e051c4cb02880 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986466 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986467 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 8c636d999f90e614d85cf993f7211c1d, type: 3} + - rid: 212506292077986468 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986469 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: Do you want to finish the demo? + - rid: 212506292077986470 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986471 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 2249461083042594202 + m_Value1: 324336386003671830 + m_HashGuid: + serializedVersion: 2 + Hash: 9abdd1d6efb0371f169b7b8339468004 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 15817742451798638067 + m_Value1: 17720966502497287723 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: f3fd1234f4e883db2b7ef2f12485edf5 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 1976370406995879566 + m_Value1: 9234824876857314878 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 8e6695f5697a6d1b3e4e051c4cb02880 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986472 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 6769670841027895332 + m_Value1: 6718070716094645745 + m_HashGuid: + serializedVersion: 2 + Hash: 24a0c93dc3b3f25df185c6f0b8613b5d + m_Version: 2 + m_Position: {x: 11544.873, y: -64.00328} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - Option1 + - Option2 + m_ValueList: + - rid: 212506292077986474 + - rid: 212506292077986475 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986476 + - rid: 212506292077986473 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 2894536898099985902 + m_Value1: 5493897534320201638 + m_HashGuid: + serializedVersion: 2 + Hash: eebd8210f9752b28a6cf8c15b33e3e4c + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 1976370406995879566 + m_Value1: 9234824876857314878 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 8e6695f5697a6d1b3e4e051c4cb02880 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 6769670841027895332 + m_Value1: 6718070716094645745 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 24a0c93dc3b3f25df185c6f0b8613b5d + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986474 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: Yes + - rid: 212506292077986475 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: No + - rid: 212506292077986476 + type: {class: TwoOptionNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986477 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 8352788746116368516 + m_Value1: 569244632770703493 + m_HashGuid: + serializedVersion: 2 + Hash: 848825101c11eb738570983efa5ce607 + m_Version: 2 + m_Position: {x: 12161.985, y: -275.2831} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986479 + - rid: 212506292077986480 + - rid: 212506292077986481 + - rid: 212506292077986482 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986483 + - rid: 212506292077986478 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 6599438517308307442 + m_Value1: 18242558121128431610 + m_HashGuid: + serializedVersion: 2 + Hash: f23731bd5dea955bfa0f473cf5952afd + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 6769670841027895332 + m_Value1: 6718070716094645745 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 24a0c93dc3b3f25df185c6f0b8613b5d + m_UniqueId: Option1Execution + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: Option 1 + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 8352788746116368516 + m_Value1: 569244632770703493 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 848825101c11eb738570983efa5ce607 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986479 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986480 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 2d9bbc299867e244c98e4a3cb6e7a4bf, type: 3} + - rid: 212506292077986481 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986482 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"We''re here to help you demo!"' + - rid: 212506292077986483 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986484 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 2937616585783166327 + m_Value1: 12385603157419810255 + m_HashGuid: + serializedVersion: 2 + Hash: 77c5e679b882c428cfddf62e7380e2ab + m_Version: 2 + m_Position: {x: 11977.986, y: -54.578365} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986485 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 14494977458417372132 + m_Value1: 10390277288489310522 + m_HashGuid: + serializedVersion: 2 + Hash: e40b4364338128c93ad936d224ae3190 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 2937616585783166327 + m_Value1: 12385603157419810255 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 77c5e679b882c428cfddf62e7380e2ab + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 8352788746116368516 + m_Value1: 569244632770703493 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 848825101c11eb738570983efa5ce607 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986486 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 8461095553560597274 + m_Value1: 9267047493502304475 + m_HashGuid: + serializedVersion: 2 + Hash: 1ad39dc093d96b75db00e1ae982a9b80 + m_Version: 2 + m_Position: {x: 12041.601, y: 74.51811} + m_Title: + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986488 + - rid: 212506292077986489 + - rid: 212506292077986490 + - rid: 212506292077986491 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986492 + - rid: 212506292077986487 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 17314624322304671032 + m_Value1: 10844870776979596864 + m_HashGuid: + serializedVersion: 2 + Hash: 38fd4e9615e749f04026e25883b88096 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 6769670841027895332 + m_Value1: 6718070716094645745 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 24a0c93dc3b3f25df185c6f0b8613b5d + m_UniqueId: Option2Execution + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: Option 2 + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 8461095553560597274 + m_Value1: 9267047493502304475 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 1ad39dc093d96b75db00e1ae982a9b80 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986488 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986489 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: ae8b150e3c088b84f879db093e49f80e, type: 3} + - rid: 212506292077986490 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 1 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986491 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Finish the demo. Run the tool. Keep the graph tidy."' + - rid: 212506292077986492 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986493 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 16051972679422638207 + m_Value1: 14703138455845612296 + m_HashGuid: + serializedVersion: 2 + Hash: 7ff842dd1a10c4de082b1068860a0ccc + m_Version: 2 + m_Position: {x: 11759.2, y: 181.88702} + m_Title: Wirerick + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986249 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 42af1cdadb56576faf2b7826bb2a53f2 + - rid: 212506292077986494 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 13332020208144518730 + m_Value1: 17377304032922122957 + m_HashGuid: + serializedVersion: 2 + Hash: 4a8ec844bed904b9cd3a49f4f29528f1 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 16051972679422638207 + m_Value1: 14703138455845612296 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 7ff842dd1a10c4de082b1068860a0ccc + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 8461095553560597274 + m_Value1: 9267047493502304475 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 1ad39dc093d96b75db00e1ae982a9b80 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986500 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 15502642372912329036 + m_Value1: 7952721200874689897 + m_HashGuid: + serializedVersion: 2 + Hash: 4cb15b051a7324d76995daffcbbd5d6e + m_Version: 2 + m_Position: {x: 12606.563, y: -252.19604} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986503 + - rid: 212506292077986504 + - rid: 212506292077986505 + - rid: 212506292077986506 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986507 + - rid: 212506292077986501 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 17898123569631489457 + m_Value1: 13578405266099553823 + m_HashGuid: + serializedVersion: 2 + Hash: b16deee98ee862f81f4628e6a52f70bc + m_Version: 2 + m_Position: {x: 12422.564, y: -31.491299} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986502 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 6777654291692438851 + m_Value1: 3973042899289830525 + m_HashGuid: + serializedVersion: 2 + Hash: 43c5ba32ab100f5e7df48e8177152337 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17898123569631489457 + m_Value1: 13578405266099553823 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: b16deee98ee862f81f4628e6a52f70bc + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 15502642372912329036 + m_Value1: 7952721200874689897 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4cb15b051a7324d76995daffcbbd5d6e + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986503 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986504 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 8c636d999f90e614d85cf993f7211c1d, type: 3} + - rid: 212506292077986505 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986506 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Runtime-accurate, editor-defined! You get it, right?!"' + - rid: 212506292077986507 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986508 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 14084126535428690965 + m_Value1: 12424995343496433835 + m_HashGuid: + serializedVersion: 2 + Hash: 1554e18b76de74c3abd0fc386f736eac + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 8352788746116368516 + m_Value1: 569244632770703493 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 848825101c11eb738570983efa5ce607 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 15502642372912329036 + m_Value1: 7952721200874689897 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4cb15b051a7324d76995daffcbbd5d6e + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986514 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 10756103251044134855 + m_Value1: 8489052522125139014 + m_HashGuid: + serializedVersion: 2 + Hash: c7efe825eb5a4595461ce7bc4a2ccf75 + m_Version: 2 + m_Position: {x: 13089.257, y: -227.09143} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986517 + - rid: 212506292077986518 + - rid: 212506292077986519 + - rid: 212506292077986520 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986521 + - rid: 212506292077986515 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 17190070197365973228 + m_Value1: 8973740198056460363 + m_HashGuid: + serializedVersion: 2 + Hash: ec200782c4658fee4b80cc4b2a21897c + m_Version: 2 + m_Position: {x: 12857.228, y: -14.782196} + m_Title: Wirerick + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986249 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 42af1cdadb56576faf2b7826bb2a53f2 + - rid: 212506292077986516 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 13070687771575028010 + m_Value1: 16042154140089346917 + m_HashGuid: + serializedVersion: 2 + Hash: 2a89c5da466964b5656b1608322ea1de + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 17190070197365973228 + m_Value1: 8973740198056460363 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: ec200782c4658fee4b80cc4b2a21897c + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 10756103251044134855 + m_Value1: 8489052522125139014 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c7efe825eb5a4595461ce7bc4a2ccf75 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986517 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986518 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: ae8b150e3c088b84f879db093e49f80e, type: 3} + - rid: 212506292077986519 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 1 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986520 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Finish the demo. Run the tool. Keep the graph tidy."' + - rid: 212506292077986521 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986522 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 5908936843511780657 + m_Value1: 15725560613092187097 + m_HashGuid: + serializedVersion: 2 + Hash: 31d5bc95c0c20052d9db3b5d0f6a3cda + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 15502642372912329036 + m_Value1: 7952721200874689897 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 4cb15b051a7324d76995daffcbbd5d6e + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 10756103251044134855 + m_Value1: 8489052522125139014 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c7efe825eb5a4595461ce7bc4a2ccf75 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986528 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 18148101924647537084 + m_Value1: 16415583951798714988 + m_HashGuid: + serializedVersion: 2 + Hash: bc0933368c02dbfb6cc29073a1decfe3 + m_Version: 2 + m_Position: {x: 13511.646, y: -191.04285} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986530 + - rid: 212506292077986531 + - rid: 212506292077986532 + - rid: 212506292077986533 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986534 + - rid: 212506292077986529 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 11743748374549970520 + m_Value1: 10971621234676904448 + m_HashGuid: + serializedVersion: 2 + Hash: 583e9ff4ec2cfaa200b20cff61074398 + m_Version: 2 + m_Position: {x: 13327.647, y: 29.6619} + m_Title: Nodus + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986247 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: c2174c1400933dce37817e2c4d63c76f + - rid: 212506292077986530 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986531 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: 8c636d999f90e614d85cf993f7211c1d, type: 3} + - rid: 212506292077986532 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 0 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986533 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: "\u201CTO THE FRAMEWORK!\u201D" + - rid: 212506292077986534 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986535 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 44362528310319433 + m_Value1: 9967745803510063374 + m_HashGuid: + serializedVersion: 2 + Hash: 495946057c9b9d000ea19b35ff8b548a + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 11743748374549970520 + m_Value1: 10971621234676904448 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 583e9ff4ec2cfaa200b20cff61074398 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 18148101924647537084 + m_Value1: 16415583951798714988 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: bc0933368c02dbfb6cc29073a1decfe3 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986536 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 7593402978500405416 + m_Value1: 10365301743039041200 + m_HashGuid: + serializedVersion: 2 + Hash: a8e8e801c72f6169b04e947f04f3d88f + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 10756103251044134855 + m_Value1: 8489052522125139014 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: c7efe825eb5a4595461ce7bc4a2ccf75 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 18148101924647537084 + m_Value1: 16415583951798714988 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: bc0933368c02dbfb6cc29073a1decfe3 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: + - rid: 212506292077986542 + type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 6220278439588499237 + m_Value1: 381404794485648404 + m_HashGuid: + serializedVersion: 2 + Hash: 258fb1cb48de525614acf2caa3054b05 + m_Version: 2 + m_Position: {x: 13976.157, y: -145.80856} + m_Title: SetDialogueNode + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: + - ActorName + - ActorSprite + - ActorLocation + - Dialogue + m_ValueList: + - rid: 212506292077986544 + - rid: 212506292077986545 + - rid: 212506292077986546 + - rid: 212506292077986547 + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_Node: + rid: 212506292077986548 + - rid: 212506292077986543 + type: {class: VariableNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor} + data: + m_Guid: + m_Value0: 4834019322597316689 + m_Value1: 389573836314601882 + m_HashGuid: + serializedVersion: 2 + Hash: 5198c950f6e215439a69510f570b6805 + m_Version: 2 + m_Position: {x: 13744.128, y: 66.50068} + m_Title: Wirerick + m_Tooltip: + m_NodePreviewModel: + rid: -2 + m_State: 0 + m_InputConstantsById: + m_KeyList: [] + m_ValueList: [] + m_InputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_OutputPortInfos: + expandedPortsById: + m_KeyList: [] + m_ValueList: + m_Collapsed: 0 + m_CurrentModeIndex: 0 + m_ElementColor: + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_HasUserColor: 0 + m_DeclarationModel: + rid: 212506292077986249 + m_DeclarationModelHashGuid: + serializedVersion: 2 + Hash: 42af1cdadb56576faf2b7826bb2a53f2 + - rid: 212506292077986544 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + - rid: 212506292077986545 + type: {class: 'Constant`1[[UnityEngine.Sprite, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: {fileID: 21300000, guid: ae8b150e3c088b84f879db093e49f80e, type: 3} + - rid: 212506292077986546 + type: {class: EnumConstant, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Value: 1 + m_EnumType: + m_Identification: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.SetDialogueNode+Location, + Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - rid: 212506292077986547 + type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Value: '"Sigh. To the framework."' + - rid: 212506292077986548 + type: {class: SetDialogueNode, ns: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor, asm: Unity.GraphToolkit.Samples.VisualNovelDirector.Editor} + data: + - rid: 212506292077986549 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 17274162711134662052 + m_Value1: 16485148469014592017 + m_HashGuid: + serializedVersion: 2 + Hash: a4ed7a9d7627baef117a30c53003c7e4 + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 4834019322597316689 + m_Value1: 389573836314601882 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 5198c950f6e215439a69510f570b6805 + m_UniqueId: MainPortName + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: MainPortName + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 6220278439588499237 + m_Value1: 381404794485648404 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 258fb1cb48de525614acf2caa3054b05 + m_UniqueId: ActorName + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: Actor Name + - rid: 212506292077986550 + type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor} + data: + m_Guid: + m_Value0: 11398438999349522589 + m_Value1: 18023776733901110856 + m_HashGuid: + serializedVersion: 2 + Hash: 9df02fdee0632f9e483e2007725121fa + m_Version: 2 + m_FromPortReference: + m_NodeModelGuid: + m_Value0: 18148101924647537084 + m_Value1: 16415583951798714988 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: bc0933368c02dbfb6cc29073a1decfe3 + m_UniqueId: ExecutionPort + m_PortDirection: 2 + m_PortOrientation: 0 + m_Title: + m_ToPortReference: + m_NodeModelGuid: + m_Value0: 6220278439588499237 + m_Value1: 381404794485648404 + m_NodeModelHashGuid: + serializedVersion: 2 + Hash: 258fb1cb48de525614acf2caa3054b05 + m_UniqueId: ExecutionPort + m_PortDirection: 1 + m_PortOrientation: 0 + m_Title: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Visual Novel Graph.vnd.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Visual Novel Graph.vnd.meta new file mode 100644 index 00000000..94f792e4 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/Visual Novel Graph.vnd.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2eef90b0729576f48acf0e5a8dccd047 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 5cc0cd77ad7bd1646b4bbaa06b9ca408, type: 3} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/VisualNovelScene.unity b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/VisualNovelScene.unity new file mode 100644 index 00000000..0ad1839e --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/VisualNovelScene.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c3b59ed0b395f84a6ec9b96f56ba46463802dcbea5ba17e97d2764b2711c2be +size 19099 diff --git a/Assets/07_Data/dumy.txt.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/VisualNovelScene.unity.meta similarity index 62% rename from Assets/07_Data/dumy.txt.meta rename to Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/VisualNovelScene.unity.meta index 0eb3b7e9..63db4cc5 100644 --- a/Assets/07_Data/dumy.txt.meta +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Assets/VisualNovelScene.unity.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 38acbdf5a2c207e41a9cbc000d617486 -TextScriptImporter: +guid: aabc1a18e22649544aa44ef45945cf54 +DefaultImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor.meta new file mode 100644 index 00000000..e18126a7 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: adff2def1fbe63d4bbf736ae549a38b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport.meta new file mode 100644 index 00000000..f85900c5 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 25c0bc052eb686040a094b80e9456edc +timeCreated: 1647540495 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport/VisualNovelDirectorImporter.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport/VisualNovelDirectorImporter.cs new file mode 100644 index 00000000..b57e3320 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport/VisualNovelDirectorImporter.cs @@ -0,0 +1,330 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Unity.GraphToolkit.Editor; +using UnityEditor.AssetImporters; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector.Editor +{ + /// + /// VisualNovelDirectorImporter is a that imports the + /// and builds the corresponding . + /// + [ScriptedImporter(1, VisualNovelDirectorGraph.AssetExtension)] + internal class VisualNovelDirectorImporter : ScriptedImporter + { + /// + /// Unity calls this method when the editor imports the asset. This method then processes the imported . + /// + /// The asset import context. + public override void OnImportAsset(AssetImportContext ctx) + { + var graph = GraphDatabase.LoadGraphForImporter(ctx.assetPath); + + // The `graph` may be null if the `GraphDatabase.LoadGraphForImporter` method + // fails to load the asset from the specified `ctx.assetPath`. + // This can occur under the following circumstances: + // - The asset path is incorrect, or the asset does not exist at the specified location. + // - The asset located at the specified path is not of type `VisualNovelDirectorGraph`. + // - The asset file itself is problematic. For example, it is corrupted, or stored in an unsupported format. + // + // Best practice to deal with serialization is to thoroughly validate and safeguard against + // impaired or incomplete data, to account for potential deserialization issues. + if (graph == null) + { + Debug.LogError($"Failed to load Visual Novel Director graph asset: {ctx.assetPath}"); + return; + } + + // Get the first Start Node + // (Only using the first node is a simplification we made for this sample) + var startNodeModel = graph.GetNodes().OfType().FirstOrDefault(); + if (startNodeModel == null) + { + // No need to log an error here, as the VisualNovelDirectorGraphProcessor is already logging an error in the console + // See VisualNovelDirectorGraph.CheckGraphErrors(GraphLogger). + return; + } + + // Build the runtime asset by walking the graph and adding the relevant nodes. + var runtimeAsset = ScriptableObject.CreateInstance(); + BuildRuntimeGraph(startNodeModel, runtimeAsset); + + // Add the runtime object to the graph asset and set it to be the main asset. + // This allows the same asset to be used in inspectors wherever a runtime asset is expected. + // Refer to the BasicVisualNovelCanvas.prefab for an example of this. + ctx.AddObjectToAsset("RuntimeAsset", runtimeAsset); + ctx.SetMainObject(runtimeAsset); + } + + /// + /// Builds the runtime graph by traversing all reachable nodes from the start node. + /// Supports both linear and branching paths. + /// + /// The start node of the graph + /// The runtime asset to populate + static void BuildRuntimeGraph(INode startNode, VisualNovelRuntimeGraph runtimeAsset) + { + // Map from editor nodes to their starting index in the runtime nodes list + var nodeToRuntimeIndex = new Dictionary(); + + // Queue for breadth-first traversal + var nodesToProcess = new Queue(); + + // Start with the first node after the start node + var firstNode = GetNextNode(startNode); + if (firstNode != null) + { + nodesToProcess.Enqueue(firstNode); + } + + // Process all reachable nodes + while (nodesToProcess.Count > 0) + { + var currentNode = nodesToProcess.Dequeue(); + + // Skip if we've already processed this node + if (nodeToRuntimeIndex.ContainsKey(currentNode)) + continue; + + // Record the starting index for this node's runtime nodes + var startIndex = runtimeAsset.Nodes.Count; + nodeToRuntimeIndex[currentNode] = startIndex; + + // Convert the editor node to runtime node(s) + var runtimeNodes = TranslateNodeModelToRuntimeNodes(currentNode); + runtimeAsset.Nodes.AddRange(runtimeNodes); + + // Enqueue connected nodes based on node type + if (currentNode is TwoOptionNode dialogueOptionNode) + { + // For branching nodes, enqueue both branches + var option1Node = GetNextNodeFromPort(dialogueOptionNode, TwoOptionNode.OUT_PORT_OPTION1_NAME); + var option2Node = GetNextNodeFromPort(dialogueOptionNode, TwoOptionNode.OUT_PORT_OPTION2_NAME); + + if (option1Node != null) + nodesToProcess.Enqueue(option1Node); + if (option2Node != null) + nodesToProcess.Enqueue(option2Node); + } + else + { + // For linear nodes, enqueue the next node + var nextNode = GetNextNode(currentNode); + if (nextNode != null) + nodesToProcess.Enqueue(nextNode); + } + } + + // Second pass: set up NextNodeIndex references + SetupNodeReferences(runtimeAsset, nodeToRuntimeIndex, startNode); + } + + /// + /// Sets up the NextNodeIndex references for all runtime nodes. + /// + static void SetupNodeReferences(VisualNovelRuntimeGraph runtimeAsset, Dictionary nodeToRuntimeIndex, INode startNode) + { + var processedNodes = new HashSet(); + var nodesToProcess = new Queue(); + + var firstNode = GetNextNode(startNode); + if (firstNode != null) + { + nodesToProcess.Enqueue(firstNode); + } + + while (nodesToProcess.Count > 0) + { + var currentNode = nodesToProcess.Dequeue(); + + if (!processedNodes.Add(currentNode)) + continue; + + if (!nodeToRuntimeIndex.TryGetValue(currentNode, out var currentRuntimeIndex)) + continue; + + // Handle different node types + if (currentNode is TwoOptionNode optionNode) + { + // For branching nodes, set both branch indices + var option1Node = GetNextNodeFromPort(optionNode, TwoOptionNode.OUT_PORT_OPTION1_NAME); + var option2Node = GetNextNodeFromPort(optionNode, TwoOptionNode.OUT_PORT_OPTION2_NAME); + + var twoOptionRuntimeNode = runtimeAsset.Nodes[currentRuntimeIndex] as TwoOptionRuntimeNode; + if (twoOptionRuntimeNode != null) + { + twoOptionRuntimeNode.Option1NextNodeIndex = option1Node != null && nodeToRuntimeIndex.TryGetValue(option1Node, out var idx1) ? idx1 : -1; + twoOptionRuntimeNode.Option2NextNodeIndex = option2Node != null && nodeToRuntimeIndex.TryGetValue(option2Node, out var idx2) ? idx2 : -1; + } + + // Enqueue both branches for processing + if (option1Node != null) + nodesToProcess.Enqueue(option1Node); + if (option2Node != null) + nodesToProcess.Enqueue(option2Node); + } + else + { + // For linear nodes, set NextNodeIndex + var nextNode = GetNextNode(currentNode); + + // Get all runtime nodes created from this editor node + var runtimeNodes = TranslateNodeModelToRuntimeNodes(currentNode); + for (int i = 0; i < runtimeNodes.Count; i++) + { + var runtimeNodeIndex = currentRuntimeIndex + i; + var runtimeNode = runtimeAsset.Nodes[runtimeNodeIndex]; + + // If this is the last runtime node from this editor node + if (i == runtimeNodes.Count - 1) + { + // Point to the next editor node's first runtime node + runtimeNode.NextNodeIndex = nextNode != null && nodeToRuntimeIndex.TryGetValue(nextNode, out var nextIdx) ? nextIdx : -1; + } + else + { + // Point to the next runtime node in the sequence + runtimeNode.NextNodeIndex = runtimeNodeIndex + 1; + } + } + + if (nextNode != null) + nodesToProcess.Enqueue(nextNode); + } + } + } + + /// + /// Gets the node connected to a specific output port. + /// + /// The node to get the output from + /// The name of the output port + /// The connected node, or null if not connected + static INode GetNextNodeFromPort(INode currentNode, string portName) + { + var outputPort = currentNode.GetOutputPortByName(portName); + var nextNodePort = outputPort?.firstConnectedPort; + return nextNodePort?.GetNode(); + } + + /// + /// Gets the node that is executed after the given node. + /// + /// The current node + /// The next node in the graph + static INode GetNextNode(INode currentNode) + { + var outputPort = currentNode.GetOutputPortByName(VisualNovelNode.EXECUTION_PORT_DEFAULT_NAME); + var nextNodePort = outputPort.firstConnectedPort; + var nextNode = nextNodePort?.GetNode(); + + return nextNode; + } + + /// + /// Converts a to a list of one or more runtime s. + /// + /// The to convert. + /// + /// A list of s that represent the runtime behavior of the input node. + /// Multiple runtime nodes may be generated from a single input . + /// + /// + /// Thrown if the passed in is unsupported and cannot be converted. + /// + /// + /// This conversion is not always 1:1. For example: the node is converted to + /// a and a . This is so that the + /// runtime pauses execution and waits for player input after a dialogue is displayed. This approach allows + /// more complex behaviour to be composed of multiple simpler runtime nodes. + ///

+ ///
+ static List TranslateNodeModelToRuntimeNodes(INode nodeModel) + { + var returnedNodes = new List(); + switch (nodeModel) + { + case SetBackgroundNode setBackgroundNodeModel: + returnedNodes.Add(new SetBackgroundRuntimeNode + { + BackgroundSprite = GetInputPortValue(setBackgroundNodeModel.GetInputPortByName(SetBackgroundNode.IN_PORT_BACKGROUND_NAME)) + }); + + // Note: We deliberately don't add a WaitForInputRuntimeNode here to enable updating multiple + // visual novel elements (the background, music, dialogue, etc) all at once. This creates a seamless + // transition involving more than one element. + break; + + case SetDialogueNode setDialogueNodeModel: + returnedNodes.Add(new SetDialogueRuntimeNode + { + ActorName = GetInputPortValue(setDialogueNodeModel.GetInputPortByName(SetDialogueNode.IN_PORT_ACTOR_NAME_NAME)), + ActorSprite = GetInputPortValue(setDialogueNodeModel.GetInputPortByName(SetDialogueNode.IN_PORT_ACTOR_SPRITE_NAME)), + LocationIndex = (int)GetInputPortValue(setDialogueNodeModel.GetInputPortByName(SetDialogueNode.IN_PORT_LOCATION_NAME)), + DialogueText = GetInputPortValue(setDialogueNodeModel.GetInputPortByName(SetDialogueNode.IN_PORT_DIALOGUE_NAME)) + }); + + // Insert a WaitForInputNode after dialogue to create the expected visual novel behaviour. + // This ensures narrative flow pauses until the player signals readiness to continue. + returnedNodes.Add(new WaitForInputRuntimeNode()); + break; + + case WaitForInputNode _: + returnedNodes.Add(new WaitForInputRuntimeNode()); + break; + + case TwoOptionNode twoOptionNodeModel: + returnedNodes.Add(new TwoOptionRuntimeNode + { + Option1Text = GetInputPortValue(twoOptionNodeModel.GetInputPortByName(TwoOptionNode.IN_PORT_OPTION1_NAME)), + Option2Text = GetInputPortValue(twoOptionNodeModel.GetInputPortByName(TwoOptionNode.IN_PORT_OPTION2_NAME)) + }); + break; + + default: + throw new ArgumentException($"Unsupported node model type: {nodeModel.GetType()}"); + } + + return returnedNodes; + } + + /// + /// Gets the value of an input port on a node. + ///

+ /// The value is obtained from (in priority order):
+ /// 1. Connections to the port (variable nodes, constant nodes, wire portals)
+ /// 2. Embedded value on the port
+ /// 3. Default value of the port
+ ///
+ static T GetInputPortValue(IPort port) + { + T value = default; + + // If port is connected to another node, get value from connection + if (port.isConnected) + { + switch (port.firstConnectedPort.GetNode()) + { + case IVariableNode variableNode: + variableNode.variable.TryGetDefaultValue(out value); + return value; + case IConstantNode constantNode: + constantNode.TryGetValue(out value); + return value; + default: + break; + } + } + else + { + // If port has embedded value, return it. + // Otherwise, return the default value of the port + port.TryGetValue(out value); + } + + return value; + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport/VisualNovelDirectorImporter.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport/VisualNovelDirectorImporter.cs.meta new file mode 100644 index 00000000..02de1b4b --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/AssetImport/VisualNovelDirectorImporter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5cc0cd77ad7bd1646b4bbaa06b9ca408 +timeCreated: 1740674216 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model.meta new file mode 100644 index 00000000..d4995509 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 603dae51e7f0bd74199c3ec0dcc55a8f +timeCreated: 1741946956 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes.meta new file mode 100644 index 00000000..c18cc551 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5704810c9af26f5448573e38148dbb5f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetBackgroundNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetBackgroundNode.cs new file mode 100644 index 00000000..f28d8195 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetBackgroundNode.cs @@ -0,0 +1,28 @@ +using System; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector.Editor +{ + /// + /// Represents the Set Background Node in the Visual Novel Director tool. + /// + /// + /// Is converted to a for the runtime. + /// + [Serializable] + internal class SetBackgroundNode : VisualNovelNode + { + public static readonly string IN_PORT_BACKGROUND_NAME = "Background"; + + /// + /// Defines the output for the node. + /// + /// The scope to define the node. + protected override void OnDefinePorts(IPortDefinitionContext context) + { + AddInputOutputExecutionPorts(context); + + context.AddInputPort(IN_PORT_BACKGROUND_NAME); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetBackgroundNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetBackgroundNode.cs.meta new file mode 100644 index 00000000..0f7e6e7c --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetBackgroundNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fcad573acd6e41f68c6e963a725d1853 +timeCreated: 1743698947 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetDialogueNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetDialogueNode.cs new file mode 100644 index 00000000..7e78fca4 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetDialogueNode.cs @@ -0,0 +1,48 @@ +using System; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector.Editor +{ + /// + /// Represents the Set Dialogue Node in the Visual Novel Director tool. + /// + /// + /// Is converted to a for the runtime. + /// + [Serializable] + internal class SetDialogueNode : VisualNovelNode + { + public const string IN_PORT_ACTOR_NAME_NAME = "ActorName"; + public const string IN_PORT_ACTOR_SPRITE_NAME = "ActorSprite"; + public const string IN_PORT_LOCATION_NAME = "ActorLocation"; + public const string IN_PORT_DIALOGUE_NAME = "Dialogue"; + + public enum Location + { + Left = 0, + Right = 1 + } + + /// + /// Defines the output for the node. + /// + /// The scope to define the node. + protected override void OnDefinePorts(IPortDefinitionContext context) + { + AddInputOutputExecutionPorts(context); + + context.AddInputPort(IN_PORT_ACTOR_NAME_NAME) + .WithDisplayName("Actor Name") + .Build(); + context.AddInputPort(IN_PORT_ACTOR_SPRITE_NAME) + .WithDisplayName("Actor Sprite") + .Build(); + context.AddInputPort(IN_PORT_LOCATION_NAME) + .WithDisplayName("Actor Location") + .Build(); + context.AddInputPort(IN_PORT_DIALOGUE_NAME) + .Build(); + + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetDialogueNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetDialogueNode.cs.meta new file mode 100644 index 00000000..f20ed100 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/SetDialogueNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b615d15a39ee45b18faded43e7ebb6a3 +timeCreated: 1743699457 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/StartNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/StartNode.cs new file mode 100644 index 00000000..9582294f --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/StartNode.cs @@ -0,0 +1,28 @@ +using System; +using Unity.GraphToolkit.Editor; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector.Editor +{ + /// + /// Represents the Start Node in the Visual Novel Director tool. + /// + /// + /// The start node serves as the entry point to the visual novel graph. + /// + [Serializable] + internal class StartNode : VisualNovelNode + { + /// + /// Defines the output for the node. + /// + /// The scope to define the node. + protected override void OnDefinePorts(IPortDefinitionContext context) + { + // Start is a special node that has no input, so we don't call DefineCommonPorts + context.AddOutputPort(EXECUTION_PORT_DEFAULT_NAME) + .WithDisplayName(string.Empty) + .WithConnectorUI(PortConnectorUI.Arrowhead) + .Build(); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/StartNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/StartNode.cs.meta new file mode 100644 index 00000000..0dc1bafa --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/StartNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7287891ea1ec438f9fd806f827c2cfb2 +timeCreated: 1743616343 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/TwoOptionNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/TwoOptionNode.cs new file mode 100644 index 00000000..1c264126 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/TwoOptionNode.cs @@ -0,0 +1,56 @@ +using System; +using Unity.GraphToolkit.Editor; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector.Editor +{ + /// + /// Represents a Two Dialogue Option Node in the Visual Novel Director tool. + /// + /// + /// This node presents two dialogue options to the player and branches the narrative + /// based on their choice. Is converted to a for the runtime. + /// + [Serializable] + internal class TwoOptionNode : VisualNovelNode + { + public const string IN_PORT_OPTION1_NAME = "Option1"; + public const string IN_PORT_OPTION2_NAME = "Option2"; + public const string OUT_PORT_OPTION1_NAME = "Option1Execution"; + public const string OUT_PORT_OPTION2_NAME = "Option2Execution"; + + /// + /// Defines the ports for the node. + /// + /// The scope to define the node. + protected override void OnDefinePorts(IPortDefinitionContext context) + { + // Input execution port + context.AddInputPort(EXECUTION_PORT_DEFAULT_NAME) + .WithDisplayName(string.Empty) + .WithConnectorUI(PortConnectorUI.Arrowhead) + .Build(); + + context.AddInputPort(IN_PORT_OPTION1_NAME) + .WithDisplayName("Option 1") + .Build(); + + context.AddInputPort(IN_PORT_OPTION2_NAME) + .WithDisplayName("Option 2") + .Build(); + + // Two output execution ports for branching + context.AddOutputPort(OUT_PORT_OPTION1_NAME) + .WithDisplayName("Option 1") + .WithConnectorUI(PortConnectorUI.Arrowhead) + //.AsVertical() + .Build(); + + context.AddOutputPort(OUT_PORT_OPTION2_NAME) + .WithDisplayName("Option 2") + .WithConnectorUI(PortConnectorUI.Arrowhead) + //.AsVertical() + .Build(); + } + } +} + diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/TwoOptionNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/TwoOptionNode.cs.meta new file mode 100644 index 00000000..512266f2 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/TwoOptionNode.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 39468cd3f080f8b47819d2cd9bc57f5c \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/VisualNovelNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/VisualNovelNode.cs new file mode 100644 index 00000000..cd6a21ee --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/VisualNovelNode.cs @@ -0,0 +1,33 @@ +using System; +using Unity.GraphToolkit.Editor; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector.Editor +{ + /// + /// Visual Novel Director Base Node model. + /// + /// It is best practice to group all the nodes of a tool under a base node. It improves organization, + /// scalability, maintenance and debugging. + [Serializable] + internal abstract class VisualNovelNode : Node + { + public const string EXECUTION_PORT_DEFAULT_NAME = "ExecutionPort"; + + /// + /// Defines common input and output execution ports for all nodes in the Visual Novel Director tool. + /// + /// The scope to define the node. + protected void AddInputOutputExecutionPorts(IPortDefinitionContext context) + { + context.AddInputPort(EXECUTION_PORT_DEFAULT_NAME) + .WithDisplayName(string.Empty) + .WithConnectorUI(PortConnectorUI.Arrowhead) + .Build(); + + context.AddOutputPort(EXECUTION_PORT_DEFAULT_NAME) + .WithDisplayName(string.Empty) + .WithConnectorUI(PortConnectorUI.Arrowhead) + .Build(); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/VisualNovelNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/VisualNovelNode.cs.meta new file mode 100644 index 00000000..b47468a0 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/VisualNovelNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0ac21a44da3824d4c98464ff10ad58e6 +timeCreated: 1647524465 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/WaitForInputNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/WaitForInputNode.cs new file mode 100644 index 00000000..0c4c2aea --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/WaitForInputNode.cs @@ -0,0 +1,30 @@ +using System; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector.Editor +{ + /// + /// Represents the Wait For Input Node in the Visual Novel Director tool. + ///

+ /// Use this when you want to have an explicit pause / wait for player input after you change an element + /// (background, etc.) of the visual novel. + ///
+ /// + /// Is converted to a for the runtime. + ///

+ /// The automatically waits for input after it executes because it creates + /// a when converted to the runtime graph. This is to match the typical + /// expected behaviour of visual novel dialogue waiting for player input between dialogue lines. + ///
+ [Serializable] + internal class WaitForInputNode : VisualNovelNode + { + /// + /// Defines the output for the node. + /// + /// The scope to define the node. + protected override void OnDefinePorts(IPortDefinitionContext context) + { + AddInputOutputExecutionPorts(context); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/WaitForInputNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/WaitForInputNode.cs.meta new file mode 100644 index 00000000..ef7911c4 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/Nodes/WaitForInputNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2d2a06b9574e4493aeaa55e6b50e57e0 +timeCreated: 1743699516 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/VisualNovelDirectorGraph.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/VisualNovelDirectorGraph.cs new file mode 100644 index 00000000..6379ff3d --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/VisualNovelDirectorGraph.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Unity.GraphToolkit.Editor; +using UnityEditor; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector.Editor +{ + /// + /// Represents the Visual Novel Director graph. + /// + /// This is the entry point for the Visual Novel Director tool, it represents a Visual Novel Director graph. + /// This class extends the Graph Toolkit class, which provides a range of default behaviors, + /// reducing the amount of code required to quickly implement a basic graph tool. + /// It also provides customization by allowing you to override specific methods and can be decorated by attributes to + /// tailor the tool's functionality. + /// For example, in this class, we override the OnGraphChanged method to add our custom handling for graph errors and warnings. + /// We also decorated it with the , which specifies the asset extension. + /// ``` + [Serializable] + [Graph(AssetExtension)] + internal class VisualNovelDirectorGraph : Graph + { + const string k_graphName = "Visual Novel Graph"; + + /// + /// The file extension for Visual Novel Director graphs. + /// + /// In Unity, the extension is used to select the right importer, so it must be unique. + internal const string AssetExtension = "vnd"; + + /// + /// Creates a new Visual Novel Director graph asset file in the project window. + /// + /// This is also where we add the shortcut to create a new graph from the editor Asset menu. + [MenuItem("Assets/Create/Graph Toolkit Samples/Visual Novel Director Graph")] + static void CreateAssetFile() + { + GraphDatabase.PromptInProjectBrowserToCreateNewAsset(k_graphName); + } + + /// + /// Called when the graph changes. + /// + /// The GraphLogger object to which errors and warnings are added. + /// + /// This method is triggered whenever the graph is modified. It calls `CheckGraphErrors` to validate the graph + /// and report any issues. + /// + public override void OnGraphChanged(GraphLogger infos) + { + base.OnGraphChanged(infos); + + CheckGraphErrors(infos); + } + + /// + /// Checks the graph for errors and warnings and adds them to the result object. + /// + /// Object implementing interface and containing + /// collected errors and warnings + /// Errors and warnings are reported by adding them to the GraphLogger object, + /// which is the default reporting mechanism for a Graph Toolkit tool. + void CheckGraphErrors(GraphLogger infos) + { + List startNodes = GetNodes().OfType().ToList(); + + switch (startNodes.Count) + { + case 0: + infos.LogError("Add a StartNode in your Visual Novel graph.", this); + break; + case >= 1: + { + foreach (var startNode in startNodes.Skip(1)) + { + infos.LogWarning($"VisualNovelDirector only supports one StartNode per graph. Only the first created one will be used.", startNode); + } + break; + } + } + } + + + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/VisualNovelDirectorGraph.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/VisualNovelDirectorGraph.cs.meta new file mode 100644 index 00000000..9076276c --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Model/VisualNovelDirectorGraph.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c758821cbc96e7a4683ec8b226d2cc8e \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.asmdef b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.asmdef new file mode 100644 index 00000000..1691ab0a --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.asmdef @@ -0,0 +1,21 @@ +{ + "name": "Unity.GraphToolkit.Samples.VisualNovelDirector.Editor", + "rootNamespace": "Unity.GraphToolkit.Samples.VisualNovelDirector.Editor", + "references": [ + "Unity.GraphToolkit.Common.Editor", + "Unity.GraphToolkit.Utility.Editor", + "Unity.GraphToolkit.Samples.VisualNovelDirector", + "Unity.GraphToolkit.Editor" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": false, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.asmdef.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.asmdef.meta new file mode 100644 index 00000000..ebb397e2 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Editor/Unity.GraphToolkit.Samples.VisualNovelDirector.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0b053859551fb114d88470e7062594e0 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject.meta new file mode 100644 index 00000000..b699f9fe --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0759d22cc99527043bda9b6e0a2fe8b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos.meta new file mode 100644 index 00000000..e78f0ad3 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 47ebf8f9e20fcf44c8b607ae79efe8dd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos/FantasyKingdom.mp4 b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos/FantasyKingdom.mp4 new file mode 100644 index 00000000..428a7025 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos/FantasyKingdom.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54a5d6591d169c4089fea858f87699c3874de701abbfe867771e01c0ab967a2c +size 24385737 diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos/FantasyKingdom.mp4.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos/FantasyKingdom.mp4.meta new file mode 100644 index 00000000..0ab361fe --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/ExampleProject/Videos/FantasyKingdom.mp4.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: c6a623f1cee3112449698a48ca162996 +VideoClipImporter: + externalObjects: {} + serializedVersion: 3 + frameRange: 0 + startFrame: -1 + endFrame: -1 + colorSpace: 0 + deinterlace: 0 + encodeAlpha: 0 + flipVertical: 0 + flipHorizontal: 0 + importAudio: 1 + targetSettings: + : + enableTranscoding: 1 + codec: 0 + resizeFormat: 0 + aspectRatio: 0 + customWidth: 1920 + customHeight: 1080 + bitrateMode: 2 + spatialQuality: 2 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Readme.md b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Readme.md new file mode 100644 index 00000000..afbf0061 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Readme.md @@ -0,0 +1 @@ +A walk-through of this sample is available in the package user documentation. diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Readme.md.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Readme.md.meta new file mode 100644 index 00000000..f2a52289 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Readme.md.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e3d91f136ec9cef47aef74ff06570825 +timeCreated: 1741687002 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime.meta new file mode 100644 index 00000000..3db0a722 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9af4cbeb8fb84bc08f1cd5beb5655cb2 +timeCreated: 1743536029 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/BasicVisualNovelCanvas.prefab b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/BasicVisualNovelCanvas.prefab new file mode 100644 index 00000000..1dd3006b --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/BasicVisualNovelCanvas.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc7dcc9710a07ca34e33d74755c69ac0eb22ab8fcc826e0a862aabf84397520b +size 44175 diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/BasicVisualNovelCanvas.prefab.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/BasicVisualNovelCanvas.prefab.meta new file mode 100644 index 00000000..1b743c51 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/BasicVisualNovelCanvas.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 82de047e611e5a44c887040fdafeacda +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider.meta new file mode 100644 index 00000000..27ef9fd0 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c904b6591dbd4e018f8047a670116d54 +timeCreated: 1743647791 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/IVisualNovelInputProvider.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/IVisualNovelInputProvider.cs new file mode 100644 index 00000000..c9867190 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/IVisualNovelInputProvider.cs @@ -0,0 +1,33 @@ +using System.Threading.Tasks; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// An interface that abstracts the input required by the visual novel system. + /// + public interface IVisualNovelInputProvider + { + /// + /// This method creates a that monitors for input to advance the visual novel. + /// The returned Task can be awaited to coordinate the visual novel flow with + /// user interactions, allowing for proper sequencing with other async operations like + /// the typewriter effect in . + /// + /// + /// A Task that completes when the user provides the necessary input (such as clicking, + /// pressing space/enter, etc.) to progress to the next step in the visual novel. + /// + Task InputDetected(); + + /// + /// This method creates a that monitors for player selection of a dialogue option. + /// The returned Task can be awaited to coordinate the visual novel flow with player choice interactions, + /// enabling branching narrative based on the selected option. + /// + /// + /// A Task that completes when the player selects a dialogue option. The task result is an integer + /// representing the index of the selected option (e.g., 0 for Option 1, 1 for Option 2). + /// + Task OptionSelectionDetected(); + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/IVisualNovelInputProvider.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/IVisualNovelInputProvider.cs.meta new file mode 100644 index 00000000..41f72678 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/IVisualNovelInputProvider.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fcd4572b1a774a55a52280c27264d7e2 +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/UnityInputProvider.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/UnityInputProvider.cs new file mode 100644 index 00000000..654b544c --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/UnityInputProvider.cs @@ -0,0 +1,150 @@ +using System.Threading.Tasks; +using UnityEngine; +#if ENABLE_INPUT_SYSTEM +using UnityEngine.InputSystem; +#endif + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// Implementation of the interface using Unity's Input System if present in project, otherwise uses Unity's Input Manager. + /// + public class UnityInputProvider : MonoBehaviour, IVisualNovelInputProvider + { + /// + /// A that is used to signal when the next input event is detected. + ///

+ /// This is almost like a 'fake' that lets us use the Unity input systems events to signal when + /// the next input is detected by marking the task as completed. + ///

+ /// We're using s because some nodes can have long-running execution behaviour (e.g. the typewriter effect for dialogue). + ///
+ private TaskCompletionSource _nextTcs; + + /// + /// A that is used to signal when a dialogue option has been selected by the player. + ///

+ /// This completion source allows UI buttons or other input mechanisms to communicate the player's choice + /// to the visual novel execution system. When an option is selected via , + /// this task is completed with the index of the selected option. + ///

+ /// The result is an integer representing the zero-based index of the selected option + /// (e.g., 0 for the first option, 1 for the second option). + ///
+ private TaskCompletionSource _optionSelectedTcs; + +#if ENABLE_INPUT_SYSTEM + /// + /// An that defines the input actions for the visual novel system. + ///

+ /// See the 'VisualNovelInput.inputactions' asset and corresponding generated script file 'VisualNovelInput.cs'. + ///
+ private VisualNovelInput _inputActions; + + /// + /// On Awake we set up our input actions and subscribe to input events. + /// + private void Awake() + { + _inputActions = new VisualNovelInput(); + if (_inputActions != null) + _inputActions.Gameplay.Next.performed += OnNextPressed; + } + + /// + /// On Destroy we unsubscribe from input events and dispose of the input actions object. + /// + private void OnDestroy() + { + _inputActions.Gameplay.Next.performed -= OnNextPressed; + _inputActions.Dispose(); + } + + /// + /// When the 'Next' input action is performed, we set the task as completed. + /// This can be awaited on by s. + /// + private void OnNextPressed(InputAction.CallbackContext _) => _nextTcs?.TrySetResult(true); + + /// + /// Enables the input actions when the object is enabled. + /// + private void OnEnable() => _inputActions.Enable(); + + /// + /// Disables the input actions when the object is disabled. + /// + private void OnDisable() => _inputActions.Disable(); +#else + + static bool KeyPressed() + { + return Input.anyKeyDown || Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(3) || Input.GetMouseButtonDown(2); + } + + private void Update() + { + if (KeyPressed()) + { + OnNextPressed(); + } + } + + /// + /// When the 'Next' input action is performed, we set the task as completed. + /// This can be awaited on by s. + /// + private void OnNextPressed() => _nextTcs?.TrySetResult(true); +#endif + /// + /// Creates a to wait for the next input event. + ///

+ /// If there is already a created and it's not already completed, + /// we just return it. This allows nodes to wait for the next input event without mistakenly waiting for input + /// more than once. + ///
+ public Task InputDetected() + { + if (_nextTcs == null || _nextTcs.Task.IsCompleted) + { + _nextTcs = new TaskCompletionSource(); + } + + return _nextTcs.Task; + } + + /// + /// Signals that a dialogue option has been selected by the player. + ///

+ /// This method is typically called by UI button click handlers or other input mechanisms + /// to notify the visual novel system that the player has made a choice. The method completes + /// the task with the provided option index, allowing awaiting + /// executors to proceed with the selected branch of the narrative. + ///
+ /// + /// The zero-based index of the selected option (e.g., 0 for Option 1, 1 for Option 2). + /// This value is passed to the awaiting executor to determine which narrative branch to follow. + /// + public void SelectOption(int option) + { + _optionSelectedTcs?.TrySetResult(option); + } + + /// + /// Creates a to wait for a dialogue option selection event. + /// + /// + /// A that completes when the player selects an option via . + /// The task result is an integer representing the zero-based index of the selected option. + /// + public Task OptionSelectionDetected() + { + if (_optionSelectedTcs == null || _optionSelectedTcs.Task.IsCompleted) + { + _optionSelectedTcs = new TaskCompletionSource(); + } + + return _optionSelectedTcs.Task; + } + } +} \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/UnityInputProvider.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/UnityInputProvider.cs.meta new file mode 100644 index 00000000..8ff61503 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/UnityInputProvider.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 38c9f0a499e44c74bb1ed38f9cd96eec +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.cs new file mode 100644 index 00000000..3622e4ea --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.cs @@ -0,0 +1,326 @@ +//------------------------------------------------------------------------------ +// +// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator +// version 1.17.0 +// from Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.Utilities; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// Provides programmatic access to , , and instances defined in asset "Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions". + /// + /// + /// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified. + /// + /// + /// + /// using namespace UnityEngine; + /// using UnityEngine.InputSystem; + /// + /// // Example of using an InputActionMap named "Player" from a UnityEngine.MonoBehaviour implementing callback interface. + /// public class Example : MonoBehaviour, MyActions.IPlayerActions + /// { + /// private MyActions_Actions m_Actions; // Source code representation of asset. + /// private MyActions_Actions.PlayerActions m_Player; // Source code representation of action map. + /// + /// void Awake() + /// { + /// m_Actions = new MyActions_Actions(); // Create asset object. + /// m_Player = m_Actions.Player; // Extract action map object. + /// m_Player.AddCallbacks(this); // Register callback interface IPlayerActions. + /// } + /// + /// void OnDestroy() + /// { + /// m_Actions.Dispose(); // Destroy asset object. + /// } + /// + /// void OnEnable() + /// { + /// m_Player.Enable(); // Enable all actions within map. + /// } + /// + /// void OnDisable() + /// { + /// m_Player.Disable(); // Disable all actions within map. + /// } + /// + /// #region Interface implementation of MyActions.IPlayerActions + /// + /// // Invoked when "Move" action is either started, performed or canceled. + /// public void OnMove(InputAction.CallbackContext context) + /// { + /// Debug.Log($"OnMove: {context.ReadValue<Vector2>()}"); + /// } + /// + /// // Invoked when "Attack" action is either started, performed or canceled. + /// public void OnAttack(InputAction.CallbackContext context) + /// { + /// Debug.Log($"OnAttack: {context.ReadValue<float>()}"); + /// } + /// + /// #endregion + /// } + /// + /// + public partial class @VisualNovelInput: IInputActionCollection2, IDisposable + { + /// + /// Provides access to the underlying asset instance. + /// + public InputActionAsset asset { get; } + + /// + /// Constructs a new instance. + /// + public @VisualNovelInput() + { + asset = InputActionAsset.FromJson(@"{ + ""version"": 1, + ""name"": ""VisualNovelInput"", + ""maps"": [ + { + ""name"": ""Gameplay"", + ""id"": ""ff3ff594-6a1b-4e6b-a089-1434b012f74e"", + ""actions"": [ + { + ""name"": ""Next"", + ""type"": ""Button"", + ""id"": ""2619d0c1-1283-4786-976f-29e43a07ee7a"", + ""expectedControlType"": """", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + } + ], + ""bindings"": [ + { + ""name"": """", + ""id"": ""3126c9dc-4ebe-4ee1-8524-8a232a8a1cfc"", + ""path"": ""/space"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Next"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""d91d96b8-272b-4c54-8d47-842cb12c0bc4"", + ""path"": ""/leftButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Next"", + ""isComposite"": false, + ""isPartOfComposite"": false + } + ] + } + ], + ""controlSchemes"": [] +}"); + // Gameplay + m_Gameplay = asset.FindActionMap("Gameplay", throwIfNotFound: true); + m_Gameplay_Next = m_Gameplay.FindAction("Next", throwIfNotFound: true); + } + + ~@VisualNovelInput() + { + UnityEngine.Debug.Assert(!m_Gameplay.enabled, "This will cause a leak and performance issues, VisualNovelInput.Gameplay.Disable() has not been called."); + } + + /// + /// Destroys this asset and all associated instances. + /// + public void Dispose() + { + UnityEngine.Object.Destroy(asset); + } + + /// + public InputBinding? bindingMask + { + get => asset.bindingMask; + set => asset.bindingMask = value; + } + + /// + public ReadOnlyArray? devices + { + get => asset.devices; + set => asset.devices = value; + } + + /// + public ReadOnlyArray controlSchemes => asset.controlSchemes; + + /// + public bool Contains(InputAction action) + { + return asset.Contains(action); + } + + /// + public IEnumerator GetEnumerator() + { + return asset.GetEnumerator(); + } + + /// + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + /// + public void Enable() + { + asset.Enable(); + } + + /// + public void Disable() + { + asset.Disable(); + } + + /// + public IEnumerable bindings => asset.bindings; + + /// + public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false) + { + return asset.FindAction(actionNameOrId, throwIfNotFound); + } + + /// + public int FindBinding(InputBinding bindingMask, out InputAction action) + { + return asset.FindBinding(bindingMask, out action); + } + + // Gameplay + private readonly InputActionMap m_Gameplay; + private List m_GameplayActionsCallbackInterfaces = new List(); + private readonly InputAction m_Gameplay_Next; + /// + /// Provides access to input actions defined in input action map "Gameplay". + /// + public struct GameplayActions + { + private @VisualNovelInput m_Wrapper; + + /// + /// Construct a new instance of the input action map wrapper class. + /// + public GameplayActions(@VisualNovelInput wrapper) { m_Wrapper = wrapper; } + /// + /// Provides access to the underlying input action "Gameplay/Next". + /// + public InputAction @Next => m_Wrapper.m_Gameplay_Next; + /// + /// Provides access to the underlying input action map instance. + /// + public InputActionMap Get() { return m_Wrapper.m_Gameplay; } + /// + public void Enable() { Get().Enable(); } + /// + public void Disable() { Get().Disable(); } + /// + public bool enabled => Get().enabled; + /// + /// Implicitly converts an to an instance. + /// + public static implicit operator InputActionMap(GameplayActions set) { return set.Get(); } + /// + /// Adds , and callbacks provided via on all input actions contained in this map. + /// + /// Callback instance. + /// + /// If is null or have already been added this method does nothing. + /// + /// + public void AddCallbacks(IGameplayActions instance) + { + if (instance == null || m_Wrapper.m_GameplayActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_GameplayActionsCallbackInterfaces.Add(instance); + @Next.started += instance.OnNext; + @Next.performed += instance.OnNext; + @Next.canceled += instance.OnNext; + } + + /// + /// Removes , and callbacks provided via on all input actions contained in this map. + /// + /// + /// Calling this method when have not previously been registered has no side-effects. + /// + /// + private void UnregisterCallbacks(IGameplayActions instance) + { + @Next.started -= instance.OnNext; + @Next.performed -= instance.OnNext; + @Next.canceled -= instance.OnNext; + } + + /// + /// Unregisters and unregisters all input action callbacks via . + /// + /// + public void RemoveCallbacks(IGameplayActions instance) + { + if (m_Wrapper.m_GameplayActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + + /// + /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via . + /// + /// + /// If is null, calling this method will only unregister all existing callbacks but not register any new callbacks. + /// + /// + /// + /// + public void SetCallbacks(IGameplayActions instance) + { + foreach (var item in m_Wrapper.m_GameplayActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_GameplayActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); + } + } + /// + /// Provides a new instance referencing this action map. + /// + public GameplayActions @Gameplay => new GameplayActions(this); + /// + /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "Gameplay" which allows adding and removing callbacks. + /// + /// + /// + public interface IGameplayActions + { + /// + /// Method invoked when associated input action "Next" is either , or . + /// + /// + /// + /// + void OnNext(InputAction.CallbackContext context); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.cs.meta new file mode 100644 index 00000000..80f04cd5 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e8ac63a985b92f4408ab2372bb93187c \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions new file mode 100644 index 00000000..3304352e --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions @@ -0,0 +1,45 @@ +{ + "name": "VisualNovelInput", + "maps": [ + { + "name": "Gameplay", + "id": "ff3ff594-6a1b-4e6b-a089-1434b012f74e", + "actions": [ + { + "name": "Next", + "type": "Button", + "id": "2619d0c1-1283-4786-976f-29e43a07ee7a", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "", + "id": "3126c9dc-4ebe-4ee1-8524-8a232a8a1cfc", + "path": "/space", + "interactions": "", + "processors": "", + "groups": "", + "action": "Next", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d91d96b8-272b-4c54-8d47-842cb12c0bc4", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": "", + "action": "Next", + "isComposite": false, + "isPartOfComposite": false + } + ] + } + ], + "controlSchemes": [] +} \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions.meta new file mode 100644 index 00000000..5957ffe9 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/InputProvider/VisualNovelInput.inputactions.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 4e5756691e94d394b92d844a511c362c +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} + generateWrapperCode: 1 + wrapperCodePath: + wrapperClassName: + wrapperCodeNamespace: Unity.GraphToolkit.Samples.VisualNovelDirector diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes.meta new file mode 100644 index 00000000..f9b2cf66 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ae79cbe980a84d759abd999c4c014280 +timeCreated: 1743614709 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/IVisualNovelNodeExecutor.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/IVisualNovelNodeExecutor.cs new file mode 100644 index 00000000..479c7c34 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/IVisualNovelNodeExecutor.cs @@ -0,0 +1,22 @@ +using System.Threading.Tasks; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The interface for an executor of a visual novel node. + ///

+ /// An executor defines the runtime behaviour for the data stored in a . Each + /// will have its own implementation of an executor. + ///
+ /// + /// If we want to share runtime behaviour between nodes, a single class can implement multiple node executors and have + /// functions for shared behaviour. This is useful for nodes that have similar behaviour but different data. + /// We can see an example of this in the class, which implements + /// for both and + /// + /// The type of to execute + public interface IVisualNovelNodeExecutor where TNode : VisualNovelRuntimeNode + { + Task ExecuteAsync(TNode node, VisualNovelDirector ctx); + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/IVisualNovelNodeExecutor.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/IVisualNovelNodeExecutor.cs.meta new file mode 100644 index 00000000..8cbe8bd9 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/IVisualNovelNodeExecutor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bcf95c3fd8c7449eb6d6aa5368f3f575 +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground.meta new file mode 100644 index 00000000..25ce8f54 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ab22459b58eb45bfa0373ce6130bfcfb +timeCreated: 1743647612 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundExecutor.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundExecutor.cs new file mode 100644 index 00000000..cb5d2373 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundExecutor.cs @@ -0,0 +1,19 @@ +using System.Threading.Tasks; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// Executor for the node. + /// + public class SetBackgroundExecutor : IVisualNovelNodeExecutor + { + /// + /// Sets the background image of the visual novel director context to the specified sprite. + /// + public async Task ExecuteAsync(SetBackgroundRuntimeNode runtimeNode, VisualNovelDirector ctx) + { + ctx.BackgroundImage.sprite = runtimeNode.BackgroundSprite; + await Task.Yield(); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundExecutor.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundExecutor.cs.meta new file mode 100644 index 00000000..a073e8ce --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundExecutor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ea05d640e7a44fb1a25b0543cc9f9e47 +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundNode.cs new file mode 100644 index 00000000..2382c069 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundNode.cs @@ -0,0 +1,14 @@ +using System; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The serializable data representing a runtime node in the visual novel graph that sets the background image. + /// + [Serializable] + public class SetBackgroundRuntimeNode : VisualNovelRuntimeNode + { + public Sprite BackgroundSprite; + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundNode.cs.meta new file mode 100644 index 00000000..430ca1ea --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetBackground/SetBackgroundNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e5611765a9ea43fb8f1348a7e1dd8f55 +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue.meta new file mode 100644 index 00000000..2dd3b971 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9b31022c513b476d8e79090f8556e1b6 +timeCreated: 1743647633 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs new file mode 100644 index 00000000..3e11528e --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs @@ -0,0 +1,114 @@ +using System.Text; +using System.Threading.Tasks; +using TMPro; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// Executor for the and nodes. + /// + public class SetDialogueExecutor : + IVisualNovelNodeExecutor, + IVisualNovelNodeExecutor + { + /// + /// Executes the node, setting the dialogue text and actor sprite settings. + /// + public async Task ExecuteAsync(SetDialogueRuntimeNode runtimeNode, VisualNovelDirector ctx) + { + if (string.IsNullOrEmpty(runtimeNode.DialogueText)) + { + ctx.DialoguePanel.SetActive(false); + return; + } + + ctx.DialoguePanel.SetActive(true); + ctx.ActorNameText.text = runtimeNode.ActorName; + + foreach (var location in ctx.ActorLocationList) + location.enabled = false; + + if (runtimeNode.ActorSprite != null) + { + var img = ctx.ActorLocationList[runtimeNode.LocationIndex]; + img.enabled = true; + img.sprite = runtimeNode.ActorSprite; + } + + await TypeTextWithSkipAsync(runtimeNode.DialogueText, ctx); + } + + /// + /// Executes the node, and keeps all previous actor settings + /// while changing the dialogue text. + /// + public async Task ExecuteAsync(SetDialogueRuntimeNodeWithPreviousActor runtimeNode, VisualNovelDirector ctx) + { + if (string.IsNullOrEmpty(runtimeNode.DialogueText)) + { + ctx.DialoguePanel.SetActive(false); + return; + } + + ctx.DialoguePanel.SetActive(true); + + await TypeTextWithSkipAsync(runtimeNode.DialogueText, ctx); + } + + /// + /// Executes a typewriter effect on the given label. + /// + /// The text to set + /// The context to get settings and input from + /// + /// Input is used to skip the typewriter effect if it's in-progress. + /// + static async Task TypeTextWithSkipAsync(string dialogueText, VisualNovelDirector ctx) + { + var label = ctx.DialogueText; + var delayPerCharSeconds = ctx.GlobalTextDelayPerCharacter; + var inputProvider = ctx.InputProvider; + + label.text = ""; + var builder = new StringBuilder(); + + var insideRichTag = false; + + // Start listening for skip input + var skipInputDetected = inputProvider.InputDetected(); + + foreach (var c in dialogueText) + { + // Handle rich text tags (e.g., , ) + if (c == '<') + insideRichTag = true; + + builder.Append(c); + + if (c == '>') + insideRichTag = false; + + // Skip delay if rich text + if (insideRichTag || char.IsWhiteSpace(c)) continue; + + label.text = builder.ToString(); + + var timer = 0f; + while (timer < delayPerCharSeconds) + { + if (skipInputDetected.IsCompleted) + { + label.text = dialogueText; + return; + } + timer += Time.deltaTime; + await Task.Yield(); + } + } + + label.text = dialogueText; + } + } + +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs.meta new file mode 100644 index 00000000..681f2df2 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b5306b40600a4b1dba95ac4dbff24dc3 +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNode.cs new file mode 100644 index 00000000..5aad0421 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNode.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The serializable data representing a runtime node in the visual novel graph that sets the dialogue text and actor information. + /// + [Serializable] + public class SetDialogueRuntimeNode : VisualNovelRuntimeNode + { + public string ActorName; + public Sprite ActorSprite; + public int LocationIndex; + public string DialogueText; + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNode.cs.meta new file mode 100644 index 00000000..fe22aabc --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3b73106ed058476487451106f4cd06cd +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNodeWithPreviousActor.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNodeWithPreviousActor.cs new file mode 100644 index 00000000..ada2b5ec --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNodeWithPreviousActor.cs @@ -0,0 +1,13 @@ +using System; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The serializable data that represents a runtime node in the visual novel graph that sets the dialogue text only. + /// + [Serializable] + public class SetDialogueRuntimeNodeWithPreviousActor : VisualNovelRuntimeNode + { + public string DialogueText; + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNodeWithPreviousActor.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNodeWithPreviousActor.cs.meta new file mode 100644 index 00000000..3f8eafa7 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/SetDialogue/SetDialogueNodeWithPreviousActor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f76932495d484264a27c87163f5ee1a6 +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption.meta new file mode 100644 index 00000000..e1dbf0b5 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e04bdd30e6acbb244ac32c9196b537d2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionExecutor.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionExecutor.cs new file mode 100644 index 00000000..5b761347 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionExecutor.cs @@ -0,0 +1,37 @@ +using System.Threading.Tasks; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// Executor for the node. + /// + /// + /// This executor displays a question and two dialogue options to the player, + /// waits for their selection, and records which option was chosen. + /// + public class TwoOptionExecutor : IVisualNovelNodeExecutor + { + /// + /// Executes the node, displaying the dialogue options + /// and waiting for the player to select one. + /// + public async Task ExecuteAsync(TwoOptionRuntimeNode runtimeNode, VisualNovelDirector ctx) + { + // Display the options + ctx.OptionPanel.SetActive(true); + ctx.Option1Text.text = runtimeNode.Option1Text; + ctx.Option2Text.text = runtimeNode.Option2Text; + + // Wait for player to select an option + var optionSelectionDetected = ctx.InputProvider.OptionSelectionDetected(); + while (!optionSelectionDetected.IsCompleted) + { + await Task.Yield(); + } + runtimeNode.SelectedOption = optionSelectionDetected.Result; + ctx.OptionPanel.SetActive(false); + } + } +} + diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionExecutor.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionExecutor.cs.meta new file mode 100644 index 00000000..18827a0c --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionExecutor.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 67810d7679f665c4b869ceefa9f4736d \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionRuntimeNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionRuntimeNode.cs new file mode 100644 index 00000000..669840ba --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionRuntimeNode.cs @@ -0,0 +1,34 @@ +using System; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The serializable data representing a runtime node in the visual novel graph + /// that presents two dialogue options to the player. + /// + [Serializable] + public class TwoOptionRuntimeNode : VisualNovelRuntimeNode + { + public string Option1Text; + public string Option2Text; + + /// + /// The index of the node to execute if Option 1 is selected. + /// -1 indicates no continuation for this branch. + /// + public int Option1NextNodeIndex = -1; + + /// + /// The index of the node to execute if Option 2 is selected. + /// -1 indicates no continuation for this branch. + /// + public int Option2NextNodeIndex = -1; + + /// + /// Records which option the player selected (0 for option 1, 1 for option 2). + /// Set during runtime execution. + /// + public int SelectedOption; + } +} + diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionRuntimeNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionRuntimeNode.cs.meta new file mode 100644 index 00000000..7febfc81 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/TwoOption/TwoOptionRuntimeNode.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: afce09435a9f2b049bc1fa2034268cca \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/VisualNovelRuntimeNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/VisualNovelRuntimeNode.cs new file mode 100644 index 00000000..a6454179 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/VisualNovelRuntimeNode.cs @@ -0,0 +1,18 @@ +using System; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The base class for the runtime data for all visual novel nodes. + /// + [Serializable] + public abstract class VisualNovelRuntimeNode + { + /// + /// The index of the next node to execute in the runtime graph. + /// -1 indicates no next node (end of execution). + /// For branching nodes, this represents the default path. + /// + public int NextNodeIndex = -1; + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/VisualNovelRuntimeNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/VisualNovelRuntimeNode.cs.meta new file mode 100644 index 00000000..03ac113b --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/VisualNovelRuntimeNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b0bf19e6af304282be4060c37ab3aec7 +timeCreated: 1743618864 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput.meta new file mode 100644 index 00000000..3b30be3e --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 162d7b6e660341b9b835e484ea6717c3 +timeCreated: 1743647811 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputExecutor.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputExecutor.cs new file mode 100644 index 00000000..5bceed92 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputExecutor.cs @@ -0,0 +1,18 @@ +using System.Threading.Tasks; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The executor for the node. + /// + public class WaitForInputExecutor : IVisualNovelNodeExecutor + { + /// + /// Asynchronously waits for user input to be detected before proceeding with the execution of the visual novel graph. + /// + public async Task ExecuteAsync(WaitForInputRuntimeNode _, VisualNovelDirector ctx) + { + await ctx.InputProvider.InputDetected(); + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputExecutor.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputExecutor.cs.meta new file mode 100644 index 00000000..23166eb5 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputExecutor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4cfe275f272e4272aad2ae65d590f4fc +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputNode.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputNode.cs new file mode 100644 index 00000000..40527acf --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputNode.cs @@ -0,0 +1,12 @@ +using System; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The serializable data that represents a runtime node in the visual novel graph that waits for player input. + /// + [Serializable] + public class WaitForInputRuntimeNode : VisualNovelRuntimeNode + { + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputNode.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputNode.cs.meta new file mode 100644 index 00000000..af104ab6 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Nodes/WaitForInput/WaitForInputNode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 16cc3826ec21426989b58379033c6688 +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Unity.GraphToolkit.Samples.VisualNovelDirector.asmdef b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Unity.GraphToolkit.Samples.VisualNovelDirector.asmdef new file mode 100644 index 00000000..3d1c9f5a --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Unity.GraphToolkit.Samples.VisualNovelDirector.asmdef @@ -0,0 +1,18 @@ +{ + "name": "Unity.GraphToolkit.Samples.VisualNovelDirector", + "rootNamespace": "Unity.GraphToolkit.Samples.VisualNovelDirector", + "references": [ + "Unity.TextMeshPro", + "Unity.InputSystem" + ], + "includePlatforms": [], + "excludePlatforms": [ + ], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": false, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Unity.GraphToolkit.Samples.VisualNovelDirector.asmdef.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Unity.GraphToolkit.Samples.VisualNovelDirector.asmdef.meta new file mode 100644 index 00000000..233292c6 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/Unity.GraphToolkit.Samples.VisualNovelDirector.asmdef.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3defba82bff4491b8a28b9a1ae75de9b +timeCreated: 1743615994 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelDirector.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelDirector.cs new file mode 100644 index 00000000..984728bd --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelDirector.cs @@ -0,0 +1,103 @@ +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The main class that controls the visual novel direction. + ///

+ /// This class is a intended to be attached to a specific hierarchy of GameObjects. + /// In this sample we can see it being used in the `BasicVisualNovelCanvas` prefab. This is how it gets all the + /// necessary components to run the visual novel, including the scene references, global settings, input handling + /// and the runtime graph to execute. + ///

+ /// When running (in PlayMode or in a build) this class executes the runtime visual novel graph, one node at a time, + /// using their respective . The execution supports both linear + /// narrative flow and branching paths. + ///
+ public class VisualNovelDirector : MonoBehaviour + { + [Header("Graph")] + // The runtime graph to execute. Note that the runtime graph asset is the same as the authoring graph asset + // because we export the runtime asset object into the same asset and set it as the 'main' asset in our importer. + // This allows us to edit the authoring graph in the editor and drag-drop the same asset into inspector fields + // that expect the runtime graph. + public VisualNovelRuntimeGraph RuntimeGraph; + + [Header("Scene References")] + public Image BackgroundImage; + public List ActorLocationList; + public GameObject DialoguePanel; + public TextMeshProUGUI DialogueText; + public TextMeshProUGUI ActorNameText; + public GameObject OptionPanel; + public TextMeshProUGUI Option1Text; + public TextMeshProUGUI Option2Text; + + [Header("Settings")] + public float GlobalFadeDuration = 0.5f; + public float GlobalTextDelayPerCharacter = 0.03f; + + [Header("Input")] + public MonoBehaviour InputComponent; + public IVisualNovelInputProvider InputProvider => InputComponent as IVisualNovelInputProvider; + + private async void Start() + { + // Create each executor once + var setBackgroundExecutor = new SetBackgroundExecutor(); + var setDialogueExecutor = new SetDialogueExecutor(); + var waitForInputExecutor = new WaitForInputExecutor(); + var twoOptionExecutor = new TwoOptionExecutor(); + + // Execute nodes following the graph structure, supporting branching paths + int currentNodeIndex = 0; + + while (currentNodeIndex >= 0 && currentNodeIndex < RuntimeGraph.Nodes.Count) + { + var node = RuntimeGraph.Nodes[currentNodeIndex]; + int nextNodeIndex = -1; + + switch (node) + { + case SetBackgroundRuntimeNode bgNode: + await setBackgroundExecutor.ExecuteAsync(bgNode, this); + nextNodeIndex = bgNode.NextNodeIndex; + break; + + case SetDialogueRuntimeNode dialogueNode: + await setDialogueExecutor.ExecuteAsync(dialogueNode, this); + nextNodeIndex = dialogueNode.NextNodeIndex; + break; + + case SetDialogueRuntimeNodeWithPreviousActor dialogueNode: + await setDialogueExecutor.ExecuteAsync(dialogueNode, this); + nextNodeIndex = dialogueNode.NextNodeIndex; + break; + + case WaitForInputRuntimeNode waitNode: + await waitForInputExecutor.ExecuteAsync(waitNode, this); + nextNodeIndex = waitNode.NextNodeIndex; + break; + + case TwoOptionRuntimeNode twoOptionNode: + await twoOptionExecutor.ExecuteAsync(twoOptionNode, this); + + // Follow the branch based on the player's choice + nextNodeIndex = twoOptionNode.SelectedOption == 0 + ? twoOptionNode.Option1NextNodeIndex + : twoOptionNode.Option2NextNodeIndex; + break; + + default: + Debug.LogError($"No executor found for node type: {node.GetType()}"); + return; + } + + currentNodeIndex = nextNodeIndex; + } + } + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelDirector.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelDirector.cs.meta new file mode 100644 index 00000000..f9176e92 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelDirector.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 42432a6228314f7b90d5fee81e0acab7 +timeCreated: 1743647471 \ No newline at end of file diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelRuntimeGraph.cs b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelRuntimeGraph.cs new file mode 100644 index 00000000..30da8611 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelRuntimeGraph.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Unity.GraphToolkit.Samples.VisualNovelDirector +{ + /// + /// The runtime representation of a visual novel graph. + /// + /// + /// For the sake of this sample, the visual novel graph is represented as a linear list of nodes with no branching + /// or loops. + /// + public class VisualNovelRuntimeGraph : ScriptableObject + { + [SerializeReference] + public List Nodes = new(); + } +} diff --git a/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelRuntimeGraph.cs.meta b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelRuntimeGraph.cs.meta new file mode 100644 index 00000000..4a0a99a2 --- /dev/null +++ b/Assets/Samples/Graph Toolkit/0.4.0-exp.2/VisualNovelDirector Sample/Runtime/VisualNovelRuntimeGraph.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 78cfb74c87314c8995fa927b0cfe7086 +timeCreated: 1743647517 \ No newline at end of file diff --git a/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta b/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta index 5c093805..f2fc8140 100644 --- a/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta +++ b/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta @@ -1,21 +1,19 @@ fileFormatVersion: 2 guid: e3265ab4bf004d28a9537516768c1c75 +timeCreated: 1484171297 +licenseType: Pro TrueTypeFontImporter: - externalObjects: {} - serializedVersion: 4 + serializedVersion: 2 fontSize: 16 forceTextureCase: -2 - characterSpacing: 0 - characterPadding: 1 + characterSpacing: 1 + characterPadding: 0 includeFontData: 1 - fontNames: - - Liberation Sans + use2xBehaviour: 0 + fontNames: [] fallbackFontReferences: [] customCharacters: fontRenderingMode: 0 - ascentCalculationMode: 1 - useLegacyBoundsCalculation: 0 - shouldRoundAdvanceValue: 1 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset index ddc94fa0..ea769cb6 100644 --- a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ff4ac652c2e66f2de72987ef5b7c49fb532a266591bbf97e932c257497f246f -size 9746 +oid sha256:e2d77876f2b90d98ba2424f6fc32b1403ea701de8fd24a8fe8e571ecc3cdc10a +size 9365 diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta index 25b5d54f..42dd6acd 100644 --- a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 guid: 2e498d1c8094910479dc3e1b768306a4 +timeCreated: 1484171803 +licenseType: Pro NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset index 75b82ba7..40d3e112 100644 --- a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05cd2699ed3a217e5755a34d8f585a367dc0f07d5afe41bb270578585642315e -size 2264677 +oid sha256:c3ff50e3133d989180b187748ffc67903f1fede099a5b85b4fcbd8cb6e8be958 +size 2256862 diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta index 882f397d..66e69d18 100644 --- a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 guid: 8f586378b4e144a9851e7b34d9b748ee +timeCreated: 1484171803 +licenseType: Pro NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta b/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta index 873716a3..7b37f2f1 100644 --- a/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta +++ b/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta @@ -1,7 +1,9 @@ fileFormatVersion: 2 guid: 3997e2241185407d80309a82f9148466 -ShaderIncludeImporter: +ShaderImporter: externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] userData: assetBundleName: assetBundleVariant: diff --git a/Assets/XR/Settings/OpenXRPackageSettings.asset b/Assets/XR/Settings/OpenXRPackageSettings.asset index 8ed289a3..e32a3335 100644 --- a/Assets/XR/Settings/OpenXRPackageSettings.asset +++ b/Assets/XR/Settings/OpenXRPackageSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c074763b15fa4a20fdd8dd8c51bc15ed668a22ed884b7b0911cd6c1452b7a7d -size 94543 +oid sha256:7aef8727367b0d4ce651fc1ae72013a99d388b056e775efd854cb25d2b741dc9 +size 96308 diff --git a/Packages/manifest.json b/Packages/manifest.json index 4e865644..e6e53d00 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,6 +1,7 @@ { "dependencies": { "com.unity.feature.development": "1.0.2", + "com.unity.graphtoolkit": "0.4.0-exp.2", "com.unity.ide.rider": "3.0.39", "com.unity.inputsystem": "1.17.0", "com.unity.learn.iet-framework": "5.0.3", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 1b037fa1..f2dc741c 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -49,6 +49,15 @@ "com.unity.testtools.codecoverage": "1.2.7" } }, + "com.unity.graphtoolkit": { + "version": "0.4.0-exp.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, "com.unity.ide.rider": { "version": "3.0.39", "depth": 0, -- 2.43.0 From 3a18351d17e7876f6f4f0f43c382e336937a31f3 Mon Sep 17 00:00:00 2001 From: "skrwns304@gmail.com" Date: Tue, 9 Jun 2026 16:33:55 +0900 Subject: [PATCH 2/2] =?UTF-8?q?2026-06-09=20=EB=8B=A4=EC=9D=B4=EC=96=BC?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=ED=94=84=EB=A1=9C=ED=86=A0=ED=83=80?= =?UTF-8?q?=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WhaleAdventure_VR/Dialog/DialogTest.unity | 4 +- .../Communication/Dialog/DialogPlayer.cs | 21 ++- .../dumy.txt.meta => 02_Scripts/UI.meta} | 5 +- Assets/02_Scripts/UI/ChoiceHud.cs | 120 ++++++++++++++++++ Assets/02_Scripts/UI/ChoiceHud.cs.meta | 2 + Assets/02_Scripts/UI/DialogChoiceRow.cs | 26 ++++ Assets/02_Scripts/UI/DialogChoiceRow.cs.meta | 2 + Assets/04_Models/Choice.meta | 8 ++ Assets/04_Models/Choice/Row.meta | 8 ++ Assets/04_Models/Choice/Row/ChoiceRow.prefab | 3 + .../Row/ChoiceRow.prefab.meta} | 4 +- Assets/04_Models/dumy.txt | 1 - .../DialogNodes/DialogNode_Fish1_1_310.asset | 2 +- .../DialogNodes/DialogNode_Fish1_1_410.asset | 2 +- .../12_Font/Hakgyoansim_TteokbokkiB SDF.asset | 3 + .../Hakgyoansim_TteokbokkiB SDF.asset.meta | 8 ++ Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf | 3 + .../12_Font/Hakgyoansim_TteokbokkiB.ttf.meta | 21 +++ Assets/12_Font/dumy.txt | 1 - 19 files changed, 230 insertions(+), 14 deletions(-) rename Assets/{12_Font/dumy.txt.meta => 02_Scripts/UI.meta} (57%) create mode 100644 Assets/02_Scripts/UI/ChoiceHud.cs create mode 100644 Assets/02_Scripts/UI/ChoiceHud.cs.meta create mode 100644 Assets/02_Scripts/UI/DialogChoiceRow.cs create mode 100644 Assets/02_Scripts/UI/DialogChoiceRow.cs.meta create mode 100644 Assets/04_Models/Choice.meta create mode 100644 Assets/04_Models/Choice/Row.meta create mode 100644 Assets/04_Models/Choice/Row/ChoiceRow.prefab rename Assets/04_Models/{dumy.txt.meta => Choice/Row/ChoiceRow.prefab.meta} (62%) delete mode 100644 Assets/04_Models/dumy.txt create mode 100644 Assets/12_Font/Hakgyoansim_TteokbokkiB SDF.asset create mode 100644 Assets/12_Font/Hakgyoansim_TteokbokkiB SDF.asset.meta create mode 100644 Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf create mode 100644 Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf.meta delete mode 100644 Assets/12_Font/dumy.txt diff --git a/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity b/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity index 17e01b3f..d550f66e 100644 --- a/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity +++ b/Assets/01_Scenes/WhaleAdventure_VR/Dialog/DialogTest.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5aa4aaa513a0738a9c05e1d48ab31d6f5c764d91d08be39d0b67487515b9cbc4 -size 13217 +oid sha256:12282a225cd3a1838baf13dfd5b4370872b7415a386aafb6839af5312931ca2c +size 34621 diff --git a/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs index 333a711a..33af3dc5 100644 --- a/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs +++ b/Assets/02_Scripts/Communication/Dialog/DialogPlayer.cs @@ -176,16 +176,14 @@ private async Awaitable PlayNode(DialogNode node) private async Awaitable WaitForChoice(DialogNode node) { //선택을 기다리는 함수 수정해서 사용할것 - /* + if (ChoiceHud.Instance == null) { Debug.LogWarning("[DialogPlayer] ChoiceHud 없음 — 0번 자동 선택"); return 0; } return await ChoiceHud.Instance.Show(node.Speaker, node.ChoiceQuestion ,node.Choices); - */ - - return 0; + } private async Awaitable WaitForAdvanceInput() @@ -193,4 +191,19 @@ private async Awaitable WaitForAdvanceInput() // TODO: VR 컨트롤러 버튼 입력 대기. 일단은 1초 대기 await Awaitable.WaitForSecondsAsync(1f); } + + //테스트용 + private void Update() + { + if (Mouse.current == null) return; + if (!Mouse.current.leftButton.wasPressedThisFrame) return; + if (Camera.main == null) return; + + var ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue()); + if (Physics.Raycast(ray, out var hit) && hit.transform.IsChildOf(transform)) + { + Debug.Log("캐릭터 클릭"); + Play(); + } + } } diff --git a/Assets/12_Font/dumy.txt.meta b/Assets/02_Scripts/UI.meta similarity index 57% rename from Assets/12_Font/dumy.txt.meta rename to Assets/02_Scripts/UI.meta index 87a7afab..21aec122 100644 --- a/Assets/12_Font/dumy.txt.meta +++ b/Assets/02_Scripts/UI.meta @@ -1,6 +1,7 @@ fileFormatVersion: 2 -guid: f954c56664544ab45987cd3f22c833bc -TextScriptImporter: +guid: 540f24a679513b344b55eda149fcb29c +folderAsset: yes +DefaultImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/02_Scripts/UI/ChoiceHud.cs b/Assets/02_Scripts/UI/ChoiceHud.cs new file mode 100644 index 00000000..d32b883f --- /dev/null +++ b/Assets/02_Scripts/UI/ChoiceHud.cs @@ -0,0 +1,120 @@ +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +// 화자 몸통 앞에 떠 있는 World-space 선택지 UI 싱글턴 +// DialogPlayer가 Show()를 await해서 선택된 인덱스를 받아감 +public class ChoiceHud : MonoBehaviour +{ + public static ChoiceHud Instance { get; private set; } + + [Header("Refs")] + [SerializeField] private GameObject _root; + [SerializeField] private Transform _rowContainer; + [SerializeField] private DialogChoiceRow _rowPrefab; + [SerializeField] private TMP_Text ChoiceQuestion; + + [Header("Placement")] + [SerializeField] private float _chestHeight = 1.2f; // 화자 발 기준 가슴 높이 + [SerializeField] private float _forwardOffset = 0.5f; // 화자→플레이어 방향으로 띄울 거리 + + private Transform _speakerTransform; + private readonly List _rows = new(); + private AwaitableCompletionSource _completion; + + private void Awake() + { + if (Instance != null && Instance != this) { Destroy(gameObject); return; } + Instance = this; + if (_root == null) _root = gameObject; + Hide(); + } + + private void OnDestroy() + { + if (Instance == this) Instance = null; + } + + private void OnDisable() + { + // 진행 중 대기 정리 (씬 전환 등으로 비활성화될 때) + _completion?.TrySetCanceled(); + _completion = null; + } + + public async Awaitable Show(CharacterData speaker,string choiceQuestion, List choices) + { + if (choices == null || choices.Count == 0) return 0; + + _speakerTransform = speaker != null ? CharacterVoiceObject.Find(speaker)?.transform : null; + + ChoiceQuestion.text = choiceQuestion; + ClearRows(); + for (int i = 0; i < choices.Count; i++) + { + var row = Instantiate(_rowPrefab, _rowContainer); + row.Bind(i, choices[i].ChoiceText); + row.OnClicked += HandleClicked; + _rows.Add(row); + } + + _root.SetActive(true); + _completion = new AwaitableCompletionSource(); + + int result; + try + { + result = await _completion.Awaitable; + } + finally + { + _completion = null; + Hide(); + } + return result; + } + + private void HandleClicked(int index) + { + _completion?.TrySetResult(index); + } + + private void Hide() + { + ChoiceQuestion.text = ""; + ClearRows(); + if (_root != null) _root.SetActive(false); + _speakerTransform = null; + } + + private void ClearRows() + { + foreach (var row in _rows) + { + if (row == null) continue; + row.OnClicked -= HandleClicked; + Destroy(row.gameObject); + } + _rows.Clear(); + } + + private void LateUpdate() + { + if (_root == null || !_root.activeSelf) return; + if (_speakerTransform == null || Camera.main == null) return; + + var camTr = Camera.main.transform; + + // 화자에서 플레이어 카메라로 향하는 수평 방향 (yaw만) + Vector3 toCam = camTr.position - _speakerTransform.position; + toCam.y = 0f; + if (toCam.sqrMagnitude < 0.0001f) return; + Vector3 dir = toCam.normalized; + + Vector3 chestWorld = _speakerTransform.position + Vector3.up * _chestHeight; + _root.transform.position = chestWorld + dir * _forwardOffset; + + // 빌보드 — 캔버스의 -Z(읽는 면)가 카메라를 향하도록 +Z를 카메라 반대로 + _root.transform.rotation = Quaternion.LookRotation(-dir); + } +} diff --git a/Assets/02_Scripts/UI/ChoiceHud.cs.meta b/Assets/02_Scripts/UI/ChoiceHud.cs.meta new file mode 100644 index 00000000..6b564c30 --- /dev/null +++ b/Assets/02_Scripts/UI/ChoiceHud.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 66c54b72d69da6b4e9c30ef648aade40 \ No newline at end of file diff --git a/Assets/02_Scripts/UI/DialogChoiceRow.cs b/Assets/02_Scripts/UI/DialogChoiceRow.cs new file mode 100644 index 00000000..37f1f4e6 --- /dev/null +++ b/Assets/02_Scripts/UI/DialogChoiceRow.cs @@ -0,0 +1,26 @@ +using System; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class DialogChoiceRow : MonoBehaviour +{ + [SerializeField] private TMP_Text _text; + [SerializeField] private Button _button; + + public event Action OnClicked; + + private int _index; + + private void Awake() + { + if (_button != null) + _button.onClick.AddListener(() => OnClicked?.Invoke(_index)); + } + + public void Bind(int index, string text) + { + _index = index; + if (_text != null) _text.text = text; + } +} diff --git a/Assets/02_Scripts/UI/DialogChoiceRow.cs.meta b/Assets/02_Scripts/UI/DialogChoiceRow.cs.meta new file mode 100644 index 00000000..cca61284 --- /dev/null +++ b/Assets/02_Scripts/UI/DialogChoiceRow.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 63cb7682c2757f74cad43848f593838f \ No newline at end of file diff --git a/Assets/04_Models/Choice.meta b/Assets/04_Models/Choice.meta new file mode 100644 index 00000000..7ba77579 --- /dev/null +++ b/Assets/04_Models/Choice.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c038b57f026442c44b4173b9cbc00906 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/04_Models/Choice/Row.meta b/Assets/04_Models/Choice/Row.meta new file mode 100644 index 00000000..f6a0268b --- /dev/null +++ b/Assets/04_Models/Choice/Row.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8ed44e79da1eed4d89009c073e6e325 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/04_Models/Choice/Row/ChoiceRow.prefab b/Assets/04_Models/Choice/Row/ChoiceRow.prefab new file mode 100644 index 00000000..68e35102 --- /dev/null +++ b/Assets/04_Models/Choice/Row/ChoiceRow.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:970f0e0b82e8a90ae14fb69b743adab27f4d6acd5b38499eef88b06cbbc952cb +size 6090 diff --git a/Assets/04_Models/dumy.txt.meta b/Assets/04_Models/Choice/Row/ChoiceRow.prefab.meta similarity index 62% rename from Assets/04_Models/dumy.txt.meta rename to Assets/04_Models/Choice/Row/ChoiceRow.prefab.meta index 5a108d9a..7e3886fa 100644 --- a/Assets/04_Models/dumy.txt.meta +++ b/Assets/04_Models/Choice/Row/ChoiceRow.prefab.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 79e9e3274eb3e724490ac16b6706b6ae -TextScriptImporter: +guid: a4c299230cdcd9442bde6e02b8823135 +PrefabImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/04_Models/dumy.txt b/Assets/04_Models/dumy.txt deleted file mode 100644 index 34b4a496..00000000 --- a/Assets/04_Models/dumy.txt +++ /dev/null @@ -1 +0,0 @@ -지울것 \ No newline at end of file diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset index ce5c3949..6250f9f8 100644 --- a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_310.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f3c1e87208e0b8b4d6291c4a8e1a9f34589c2aa8a61794dbe8a6f50ff2ff1f6 +oid sha256:096de3f9c350aed0007f17029cf9a11a66725b33b4ea720dbedd9e3640ecec05 size 749 diff --git a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset index cb4365ff..3d898b5c 100644 --- a/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset +++ b/Assets/07_Data/Communication/DialogNodes/DialogNode_Fish1_1_410.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da2e901585c6d11f7a937ff91d169b8cbfdb4df0633a34655cb740d44f56f12e +oid sha256:5b14ea171168670f81c6e96c7fe6003e6ba76fed4b33fdd1f4bc1ffe936f31b7 size 754 diff --git a/Assets/12_Font/Hakgyoansim_TteokbokkiB SDF.asset b/Assets/12_Font/Hakgyoansim_TteokbokkiB SDF.asset new file mode 100644 index 00000000..51c2495f --- /dev/null +++ b/Assets/12_Font/Hakgyoansim_TteokbokkiB SDF.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d6663d59c8c343f172088f225287fa4d9ba42c61405b43089c468c8bb22f291 +size 139125144 diff --git a/Assets/12_Font/Hakgyoansim_TteokbokkiB SDF.asset.meta b/Assets/12_Font/Hakgyoansim_TteokbokkiB SDF.asset.meta new file mode 100644 index 00000000..14086930 --- /dev/null +++ b/Assets/12_Font/Hakgyoansim_TteokbokkiB SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81f0fb85a86d25b4db2a69347ec056fd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf b/Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf new file mode 100644 index 00000000..5f82b513 --- /dev/null +++ b/Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f1eba3e4d45e8bf2bd4ae54f0572a4d54ad8e75aa635b8005c2720ea3b71be7 +size 1520868 diff --git a/Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf.meta b/Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf.meta new file mode 100644 index 00000000..b5fa2418 --- /dev/null +++ b/Assets/12_Font/Hakgyoansim_TteokbokkiB.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 61af039048c279940929bb3263a04712 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Hakgyoansim TTeokbokki B + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/12_Font/dumy.txt b/Assets/12_Font/dumy.txt deleted file mode 100644 index 34b4a496..00000000 --- a/Assets/12_Font/dumy.txt +++ /dev/null @@ -1 +0,0 @@ -지울것 \ No newline at end of file -- 2.43.0