├── .gitattributes ├── .gitignore ├── .vsconfig ├── Assets ├── Materials.meta ├── Materials │ ├── NPC1.mat │ ├── NPC1.mat.meta │ ├── NPC2.mat │ ├── NPC2.mat.meta │ ├── Player.mat │ └── Player.mat.meta ├── Prefabs.meta ├── Prefabs │ ├── UI.meta │ └── UI │ │ ├── Dialogues.meta │ │ └── Dialogues │ │ ├── DialogueChoiceButton.prefab │ │ └── DialogueChoiceButton.prefab.meta ├── Scenes.meta ├── Scenes │ ├── DialogueZoo.unity │ └── DialogueZoo.unity.meta ├── ScriptableObjects.meta ├── ScriptableObjects │ ├── Flow.meta │ ├── Flow │ │ ├── FlowChannel.asset │ │ ├── FlowChannel.asset.meta │ │ ├── States.meta │ │ └── States │ │ │ ├── FlowState_InDialogue.asset │ │ │ ├── FlowState_InDialogue.asset.meta │ │ │ ├── FlowState_InGame.asset │ │ │ └── FlowState_InGame.asset.meta │ ├── Narration.meta │ └── Narration │ │ ├── Characters.meta │ │ ├── Characters │ │ ├── NarrationCharacter_FluffyGameDev.asset │ │ ├── NarrationCharacter_FluffyGameDev.asset.meta │ │ ├── NarrationCharacter_NPC1.asset │ │ └── NarrationCharacter_NPC1.asset.meta │ │ ├── Dialogue.meta │ │ └── Dialogue │ │ ├── Dialogue1.meta │ │ ├── Dialogue1 │ │ ├── Dialogue1.asset │ │ ├── Dialogue1.asset.meta │ │ ├── Dialogue1Node1.asset │ │ ├── Dialogue1Node1.asset.meta │ │ ├── Dialogue1Node2.asset │ │ ├── Dialogue1Node2.asset.meta │ │ ├── Dialogue1Node3.asset │ │ ├── Dialogue1Node3.asset.meta │ │ ├── NarrationLine_Dialogue1_1.asset │ │ ├── NarrationLine_Dialogue1_1.asset.meta │ │ ├── NarrationLine_Dialogue1_2.asset │ │ ├── NarrationLine_Dialogue1_2.asset.meta │ │ ├── NarrationLine_Dialogue1_3.asset │ │ └── NarrationLine_Dialogue1_3.asset.meta │ │ ├── Dialogue2.meta │ │ ├── Dialogue2 │ │ ├── Dialogue2.asset │ │ ├── Dialogue2.asset.meta │ │ ├── Dialogue2_Node1.asset │ │ ├── Dialogue2_Node1.asset.meta │ │ ├── Dialogue2_Node2.asset │ │ ├── Dialogue2_Node2.asset.meta │ │ ├── Dialogue2_Node3.asset │ │ ├── Dialogue2_Node3.asset.meta │ │ ├── NarrationLine_Dialogue2_1.asset │ │ ├── NarrationLine_Dialogue2_1.asset.meta │ │ ├── NarrationLine_Dialogue2_2.asset │ │ ├── NarrationLine_Dialogue2_2.asset.meta │ │ ├── NarrationLine_Dialogue2_3.asset │ │ └── NarrationLine_Dialogue2_3.asset.meta │ │ ├── DialogueChannel.asset │ │ └── DialogueChannel.asset.meta ├── Scripts.meta ├── Scripts │ ├── 3C.meta │ ├── 3C │ │ ├── CharacterMovement.cs │ │ ├── CharacterMovement.cs.meta │ │ ├── Interaction.meta │ │ └── Interaction │ │ │ ├── Interactable.cs │ │ │ ├── Interactable.cs.meta │ │ │ ├── InteractionInstigator.cs │ │ │ └── InteractionInstigator.cs.meta │ ├── Flow.meta │ ├── Flow │ │ ├── FlowChannel.cs │ │ ├── FlowChannel.cs.meta │ │ ├── FlowListener.cs │ │ ├── FlowListener.cs.meta │ │ ├── FlowState.cs │ │ ├── FlowState.cs.meta │ │ ├── FlowStateMachine.cs │ │ └── FlowStateMachine.cs.meta │ ├── Narration.meta │ ├── Narration │ │ ├── Dialogue.meta │ │ ├── Dialogue │ │ │ ├── Components.meta │ │ │ ├── Components │ │ │ │ ├── DialogueInstigator.cs │ │ │ │ └── DialogueInstigator.cs.meta │ │ │ ├── Data.meta │ │ │ ├── Data │ │ │ │ ├── Dialogue.cs │ │ │ │ ├── Dialogue.cs.meta │ │ │ │ ├── DialogueNodeVisitor.cs │ │ │ │ ├── DialogueNodeVisitor.cs.meta │ │ │ │ ├── Nodes.meta │ │ │ │ └── Nodes │ │ │ │ │ ├── BasicDialogueNode.cs │ │ │ │ │ ├── BasicDialogueNode.cs.meta │ │ │ │ │ ├── ChoiceDialogueNode.cs │ │ │ │ │ ├── ChoiceDialogueNode.cs.meta │ │ │ │ │ ├── DialogueNode.cs │ │ │ │ │ └── DialogueNode.cs.meta │ │ │ ├── DialogueChannel.cs │ │ │ ├── DialogueChannel.cs.meta │ │ │ ├── Logic.meta │ │ │ └── Logic │ │ │ │ ├── DialogueSequencer.cs │ │ │ │ └── DialogueSequencer.cs.meta │ │ ├── NarrationCharacter.cs │ │ ├── NarrationCharacter.cs.meta │ │ ├── NarrationLine.cs │ │ └── NarrationLine.cs.meta │ ├── UI.meta │ └── UI │ │ ├── 3C.meta │ │ ├── 3C │ │ ├── Interaction.meta │ │ └── Interaction │ │ │ ├── UIInteractionTextController.cs │ │ │ └── UIInteractionTextController.cs.meta │ │ ├── Dialogue.meta │ │ └── Dialogue │ │ ├── UIDialogueChoiceController.cs │ │ ├── UIDialogueChoiceController.cs.meta │ │ ├── UIDialogueTextBoxController.cs │ │ └── UIDialogueTextBoxController.cs.meta ├── TextMesh Pro.meta └── TextMesh Pro │ ├── Documentation.meta │ ├── Documentation │ ├── TextMesh Pro User Guide 2016.pdf │ └── TextMesh Pro User Guide 2016.pdf.meta │ ├── Fonts.meta │ ├── Fonts │ ├── LiberationSans - OFL.txt │ ├── LiberationSans - OFL.txt.meta │ ├── LiberationSans.ttf │ └── LiberationSans.ttf.meta │ ├── Resources.meta │ ├── Resources │ ├── Fonts & Materials.meta │ ├── Fonts & Materials │ │ ├── LiberationSans SDF - Drop Shadow.mat │ │ ├── LiberationSans SDF - Drop Shadow.mat.meta │ │ ├── LiberationSans SDF - Fallback.asset │ │ ├── LiberationSans SDF - Fallback.asset.meta │ │ ├── LiberationSans SDF - Outline.mat │ │ ├── LiberationSans SDF - Outline.mat.meta │ │ ├── LiberationSans SDF.asset │ │ └── LiberationSans SDF.asset.meta │ ├── LineBreaking Following Characters.txt │ ├── LineBreaking Following Characters.txt.meta │ ├── LineBreaking Leading Characters.txt │ ├── LineBreaking Leading Characters.txt.meta │ ├── Sprite Assets.meta │ ├── Sprite Assets │ │ ├── EmojiOne.asset │ │ └── EmojiOne.asset.meta │ ├── Style Sheets.meta │ ├── Style Sheets │ │ ├── Default Style Sheet.asset │ │ └── Default Style Sheet.asset.meta │ ├── TMP Settings.asset │ └── TMP Settings.asset.meta │ ├── Shaders.meta │ ├── Shaders │ ├── TMP_Bitmap-Custom-Atlas.shader │ ├── TMP_Bitmap-Custom-Atlas.shader.meta │ ├── TMP_Bitmap-Mobile.shader │ ├── TMP_Bitmap-Mobile.shader.meta │ ├── TMP_Bitmap.shader │ ├── TMP_Bitmap.shader.meta │ ├── TMP_SDF Overlay.shader │ ├── TMP_SDF Overlay.shader.meta │ ├── TMP_SDF SSD.shader │ ├── TMP_SDF SSD.shader.meta │ ├── TMP_SDF-Mobile Masking.shader │ ├── TMP_SDF-Mobile Masking.shader.meta │ ├── TMP_SDF-Mobile Overlay.shader │ ├── TMP_SDF-Mobile Overlay.shader.meta │ ├── TMP_SDF-Mobile SSD.shader │ ├── TMP_SDF-Mobile SSD.shader.meta │ ├── TMP_SDF-Mobile.shader │ ├── TMP_SDF-Mobile.shader.meta │ ├── TMP_SDF-Surface-Mobile.shader │ ├── TMP_SDF-Surface-Mobile.shader.meta │ ├── TMP_SDF-Surface.shader │ ├── TMP_SDF-Surface.shader.meta │ ├── TMP_SDF.shader │ ├── TMP_SDF.shader.meta │ ├── TMP_Sprite.shader │ ├── TMP_Sprite.shader.meta │ ├── TMPro.cginc │ ├── TMPro.cginc.meta │ ├── TMPro_Mobile.cginc │ ├── TMPro_Mobile.cginc.meta │ ├── TMPro_Properties.cginc │ ├── TMPro_Properties.cginc.meta │ ├── TMPro_Surface.cginc │ └── TMPro_Surface.cginc.meta │ ├── Sprites.meta │ └── Sprites │ ├── EmojiOne Attribution.txt │ ├── EmojiOne Attribution.txt.meta │ ├── EmojiOne.json │ ├── EmojiOne.json.meta │ ├── EmojiOne.png │ └── EmojiOne.png.meta ├── Logs ├── ApiUpdaterCheck.txt ├── AssetImportWorker0-prev.log ├── AssetImportWorker0.log └── Packages-Update.log ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset ├── README.md └── UserSettings └── EditorUserSettings.asset /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | Assets/AssetStoreTools* 7 | 8 | # Visual Studio cache directory 9 | .vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | *.opendb 26 | *.VC.db 27 | 28 | # Unity3D generated meta files 29 | *.pidb.meta 30 | *.pdb.meta 31 | 32 | # Unity3D Generated File On Crash Reports 33 | sysinfo.txt 34 | 35 | # Builds 36 | *.apk 37 | *.unitypackage 38 | -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Workload.ManagedGame" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2279636669c37743a9c0cc82b3df543 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/NPC1.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: NPC1 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0, g: 1, b: 0.16816235, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Assets/Materials/NPC1.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a65dcbdb9a2c5de42b74583b0a65e612 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/NPC2.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: NPC2 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 0.55313706, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Assets/Materials/NPC2.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a9a9526a98a06049873b9e385b966de 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Player.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Player 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0, g: 0.019954205, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Assets/Materials/Player.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce93d45a59415b6479003bd3a36eb457 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 76ccfa00944f1944e85062b8f2a7c620 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 784229862c01f9e419b3c11f58b9f785 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/UI/Dialogues.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 320b5f9337cd95843ab061ecaaf3198d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/UI/Dialogues/DialogueChoiceButton.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9182d879243c8d746a71e684f8820a8a 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 490eeba5f39bce847bc17eb660ec8e17 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/DialogueZoo.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2cda990e2423bbf4892e6590ba056729 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e93d3c804a9e007469ef619d0f64bf73 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Flow.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 49227b187c3302542b2eb371a8a1150c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Flow/FlowChannel.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 9055caee3469e734784b46f2c7a304da, type: 3} 13 | m_Name: FlowChannel 14 | m_EditorClassIdentifier: 15 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Flow/FlowChannel.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7aae17d0bd7e5145b35ad6fe17a9daf 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Flow/States.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4821870adc5e94439f1e5aeb18ede79 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Flow/States/FlowState_InDialogue.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: a48a47842a781df47829fffaafd291b1, type: 3} 13 | m_Name: FlowState_InDialogue 14 | m_EditorClassIdentifier: 15 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Flow/States/FlowState_InDialogue.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c4263701789c59409802948224b5d2c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Flow/States/FlowState_InGame.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: a48a47842a781df47829fffaafd291b1, type: 3} 13 | m_Name: FlowState_InGame 14 | m_EditorClassIdentifier: 15 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Flow/States/FlowState_InGame.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7da33e06cd55d4446848cf9c6396bf62 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e946a99f397de5a49b728c8f33d9ab6a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Characters.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46c2a4c1cf33ed942a71b8505b682a33 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Characters/NarrationCharacter_FluffyGameDev.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: ef05b76e572951a4d89ef26cf4fe6996, type: 3} 13 | m_Name: NarrationCharacter_FluffyGameDev 14 | m_EditorClassIdentifier: 15 | m_CharacterName: Fluffy GameDev 16 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Characters/NarrationCharacter_FluffyGameDev.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9dd3082631238414f8db3e72be080f21 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Characters/NarrationCharacter_NPC1.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: ef05b76e572951a4d89ef26cf4fe6996, type: 3} 13 | m_Name: NarrationCharacter_NPC1 14 | m_EditorClassIdentifier: 15 | m_CharacterName: NPC 1 16 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Characters/NarrationCharacter_NPC1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3e8b9ff5442d904a98d7a76ce18e83b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a48f9974ef7c7554aa9b8b228cabb31d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bfc2199ba1f1e6043a91b89f230141ed 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/Dialogue1.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d150190ca6408f1418b81dcb81e9f740, type: 3} 13 | m_Name: Dialogue1 14 | m_EditorClassIdentifier: 15 | m_FirstNode: {fileID: 11400000, guid: 52c4061cd688a5240bb4c4bafc2fd499, type: 2} 16 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/Dialogue1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd7293c9ddb438d40a5a94baaa2b74e3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/Dialogue1Node1.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: abaa1d01ebe65f6469c9f7f9cd89f2dc, type: 3} 13 | m_Name: Dialogue1Node1 14 | m_EditorClassIdentifier: 15 | m_DialogueLine: {fileID: 11400000, guid: ca71ffef1a9b4d3438fee923f9fbf46e, type: 2} 16 | m_NextNode: {fileID: 11400000, guid: 7fa286906464c5049a4e28145f465a32, type: 2} 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/Dialogue1Node1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52c4061cd688a5240bb4c4bafc2fd499 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/Dialogue1Node2.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: abaa1d01ebe65f6469c9f7f9cd89f2dc, type: 3} 13 | m_Name: Dialogue1Node2 14 | m_EditorClassIdentifier: 15 | m_DialogueLine: {fileID: 11400000, guid: f2d52b67891a4a84eada44e36190ea4b, type: 2} 16 | m_NextNode: {fileID: 11400000, guid: 6e576de104d00ce458c651913c7fcdc0, type: 2} 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/Dialogue1Node2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fa286906464c5049a4e28145f465a32 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/Dialogue1Node3.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: abaa1d01ebe65f6469c9f7f9cd89f2dc, type: 3} 13 | m_Name: Dialogue1Node3 14 | m_EditorClassIdentifier: 15 | m_DialogueLine: {fileID: 11400000, guid: 31f78a07556f40c4ebc0ddd69196f679, type: 2} 16 | m_NextNode: {fileID: 0} 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/Dialogue1Node3.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e576de104d00ce458c651913c7fcdc0 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/NarrationLine_Dialogue1_1.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bbd2c1887a808da4b8f0a6cec8d8b890, type: 3} 13 | m_Name: NarrationLine_Dialogue1_1 14 | m_EditorClassIdentifier: 15 | m_Speaker: {fileID: 11400000, guid: 9dd3082631238414f8db3e72be080f21, type: 2} 16 | m_Text: Hello World! 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/NarrationLine_Dialogue1_1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca71ffef1a9b4d3438fee923f9fbf46e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/NarrationLine_Dialogue1_2.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bbd2c1887a808da4b8f0a6cec8d8b890, type: 3} 13 | m_Name: NarrationLine_Dialogue1_2 14 | m_EditorClassIdentifier: 15 | m_Speaker: {fileID: 11400000, guid: 9dd3082631238414f8db3e72be080f21, type: 2} 16 | m_Text: Test number 2 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/NarrationLine_Dialogue1_2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2d52b67891a4a84eada44e36190ea4b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/NarrationLine_Dialogue1_3.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bbd2c1887a808da4b8f0a6cec8d8b890, type: 3} 13 | m_Name: NarrationLine_Dialogue1_3 14 | m_EditorClassIdentifier: 15 | m_Speaker: {fileID: 11400000, guid: 9dd3082631238414f8db3e72be080f21, type: 2} 16 | m_Text: This is a dialogue text. 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue1/NarrationLine_Dialogue1_3.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 31f78a07556f40c4ebc0ddd69196f679 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b13d2352f390cea42a0c793580bf2c96 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/Dialogue2.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d150190ca6408f1418b81dcb81e9f740, type: 3} 13 | m_Name: Dialogue2 14 | m_EditorClassIdentifier: 15 | m_FirstNode: {fileID: 11400000, guid: e55947b0efa2f0b49a665fec9a445132, type: 2} 16 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/Dialogue2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c266af96f268bed46b18c23032877791 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/Dialogue2_Node1.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 676f063305c2bae4a997b5004ec9d858, type: 3} 13 | m_Name: Dialogue2_Node1 14 | m_EditorClassIdentifier: 15 | m_DialogueLine: {fileID: 11400000, guid: 1b721f09a1dd97645859fbbd42b5b5ab, type: 2} 16 | m_Choices: 17 | - m_ChoicePreview: Number 1 18 | m_ChoiceNode: {fileID: 11400000, guid: 4d145510f1870944fa2b815f3cdeeb53, type: 2} 19 | - m_ChoicePreview: Number 2 20 | m_ChoiceNode: {fileID: 11400000, guid: c99374d4d00eeb64db976d7d262cb1b6, type: 2} 21 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/Dialogue2_Node1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e55947b0efa2f0b49a665fec9a445132 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/Dialogue2_Node2.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: abaa1d01ebe65f6469c9f7f9cd89f2dc, type: 3} 13 | m_Name: Dialogue2_Node2 14 | m_EditorClassIdentifier: 15 | m_DialogueLine: {fileID: 11400000, guid: 909d5e6af8ade26419f86a8b26ea71ce, type: 2} 16 | m_NextNode: {fileID: 0} 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/Dialogue2_Node2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d145510f1870944fa2b815f3cdeeb53 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/Dialogue2_Node3.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: abaa1d01ebe65f6469c9f7f9cd89f2dc, type: 3} 13 | m_Name: Dialogue2_Node3 14 | m_EditorClassIdentifier: 15 | m_DialogueLine: {fileID: 11400000, guid: 5072cf2adee7a7c44bfcbc19ecf94fd6, type: 2} 16 | m_NextNode: {fileID: 0} 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/Dialogue2_Node3.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c99374d4d00eeb64db976d7d262cb1b6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/NarrationLine_Dialogue2_1.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bbd2c1887a808da4b8f0a6cec8d8b890, type: 3} 13 | m_Name: NarrationLine_Dialogue2_1 14 | m_EditorClassIdentifier: 15 | m_Speaker: {fileID: 11400000, guid: f3e8b9ff5442d904a98d7a76ce18e83b, type: 2} 16 | m_Text: What do you choose ? 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/NarrationLine_Dialogue2_1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1b721f09a1dd97645859fbbd42b5b5ab 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/NarrationLine_Dialogue2_2.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bbd2c1887a808da4b8f0a6cec8d8b890, type: 3} 13 | m_Name: NarrationLine_Dialogue2_2 14 | m_EditorClassIdentifier: 15 | m_Speaker: {fileID: 11400000, guid: 9dd3082631238414f8db3e72be080f21, type: 2} 16 | m_Text: I choose number 1! 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/NarrationLine_Dialogue2_2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 909d5e6af8ade26419f86a8b26ea71ce 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/NarrationLine_Dialogue2_3.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bbd2c1887a808da4b8f0a6cec8d8b890, type: 3} 13 | m_Name: NarrationLine_Dialogue2_3 14 | m_EditorClassIdentifier: 15 | m_Speaker: {fileID: 11400000, guid: 9dd3082631238414f8db3e72be080f21, type: 2} 16 | m_Text: Without a doubt, I choose number 2. 17 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/Dialogue2/NarrationLine_Dialogue2_3.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5072cf2adee7a7c44bfcbc19ecf94fd6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/DialogueChannel.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 6de1d7046a72f264d974eebc27fbd105, type: 3} 13 | m_Name: DialogueChannel 14 | m_EditorClassIdentifier: 15 | -------------------------------------------------------------------------------- /Assets/ScriptableObjects/Narration/Dialogue/DialogueChannel.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 20e76ab5c4289f240b52438dbb95e083 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2f8f4773a0aa864493b8441dd81a7fd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/3C.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 217b0225d8a3d3c40a1bd9f57df4ea81 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/3C/CharacterMovement.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class CharacterMovement : MonoBehaviour 4 | { 5 | [SerializeField] 6 | private float m_MovementSpeed = 1.0f; 7 | [SerializeField] 8 | private Transform m_CameraTransform; 9 | 10 | private CharacterController m_CharacterController; 11 | 12 | private void Start() 13 | { 14 | m_CharacterController = GetComponent(); 15 | } 16 | 17 | private void Update() 18 | { 19 | Vector3 forward = (transform.position - m_CameraTransform.position).normalized; 20 | forward.y = 0; 21 | Vector3 right = Vector3.Cross(Vector3.up, forward).normalized; 22 | 23 | float moveAxisX = m_MovementSpeed * Input.GetAxis("Horizontal"); 24 | float moveAxisY = m_MovementSpeed * Input.GetAxis("Vertical"); 25 | Vector3 movement = forward * moveAxisY + right * moveAxisX; 26 | 27 | m_CharacterController.Move(movement); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Assets/Scripts/3C/CharacterMovement.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bf6999757eee264ea4ac0d0c66772a6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/3C/Interaction.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb726051f35c69a4c85fb9b2c84e7721 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/3C/Interaction/Interactable.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Events; 3 | 4 | public class Interactable : MonoBehaviour 5 | { 6 | [SerializeField] 7 | UnityEvent m_OnInteraction; 8 | 9 | public void DoInteraction() 10 | { 11 | m_OnInteraction.Invoke(); 12 | } 13 | } -------------------------------------------------------------------------------- /Assets/Scripts/3C/Interaction/Interactable.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d2c6473a185a744fbada757c0d2bb3b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/3C/Interaction/InteractionInstigator.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | public class InteractionInstigator : MonoBehaviour 5 | { 6 | private List m_NearbyInteractables = new List(); 7 | 8 | public bool HasNearbyInteractables() 9 | { 10 | return m_NearbyInteractables.Count != 0; 11 | } 12 | 13 | private void Update() 14 | { 15 | if (HasNearbyInteractables() && Input.GetButtonDown("Submit")) 16 | { 17 | //Ideally, we'd want to find the best possible interaction (ex: by distance & orientation). 18 | m_NearbyInteractables[0].DoInteraction(); 19 | } 20 | } 21 | 22 | private void OnTriggerEnter(Collider other) 23 | { 24 | Interactable interactable = other.GetComponent(); 25 | if (interactable != null) 26 | { 27 | m_NearbyInteractables.Add(interactable); 28 | } 29 | } 30 | 31 | private void OnTriggerExit(Collider other) 32 | { 33 | Interactable interactable = other.GetComponent(); 34 | if (interactable != null) 35 | { 36 | m_NearbyInteractables.Remove(interactable); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /Assets/Scripts/3C/Interaction/InteractionInstigator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7ae9d9fc03417e847aa62f94bb608722 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Flow.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eeeea9a48a1c57444b8f2670ed0c3d48 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Flow/FlowChannel.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [CreateAssetMenu(menuName = "Scriptable Objects/Flow/Flow Channel")] 4 | public class FlowChannel : ScriptableObject 5 | { 6 | public delegate void FlowStateCallback(FlowState state); 7 | public FlowStateCallback OnFlowStateRequested; 8 | public FlowStateCallback OnFlowStateChanged; 9 | 10 | public void RaiseFlowStateRequest(FlowState state) 11 | { 12 | OnFlowStateRequested?.Invoke(state); 13 | } 14 | 15 | public void RaiseFlowStateChanged(FlowState state) 16 | { 17 | OnFlowStateChanged?.Invoke(state); 18 | } 19 | } -------------------------------------------------------------------------------- /Assets/Scripts/Flow/FlowChannel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9055caee3469e734784b46f2c7a304da 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Flow/FlowListener.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using UnityEngine.Events; 4 | 5 | [Serializable] 6 | public class FlowListenerEntry 7 | { 8 | public FlowState m_State; 9 | public UnityEvent m_Event; 10 | } 11 | 12 | public class FlowListener : MonoBehaviour 13 | { 14 | [SerializeField] 15 | private FlowChannel m_Channel; 16 | [SerializeField] 17 | private FlowListenerEntry[] m_Entries; 18 | 19 | private void Awake() 20 | { 21 | m_Channel.OnFlowStateChanged += OnFlowStateChanged; 22 | } 23 | 24 | private void OnDestroy() 25 | { 26 | m_Channel.OnFlowStateChanged -= OnFlowStateChanged; 27 | } 28 | 29 | private void OnFlowStateChanged(FlowState state) 30 | { 31 | FlowListenerEntry foundEntry = Array.Find(m_Entries, x => x.m_State == state); 32 | if (foundEntry != null) 33 | { 34 | foundEntry.m_Event.Invoke(); 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /Assets/Scripts/Flow/FlowListener.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb6055e082740f94ca0ccc442cf2e1e9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Flow/FlowState.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [CreateAssetMenu(menuName = "Scriptable Objects/Flow/Flow State")] 4 | public class FlowState : ScriptableObject 5 | { 6 | } -------------------------------------------------------------------------------- /Assets/Scripts/Flow/FlowState.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a48a47842a781df47829fffaafd291b1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Flow/FlowStateMachine.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class FlowStateMachine : MonoBehaviour 4 | { 5 | [SerializeField] 6 | private FlowChannel m_Channel; 7 | [SerializeField] 8 | private FlowState m_StartupState; 9 | 10 | private FlowState m_CurrentState; 11 | public FlowState CurrentState => m_CurrentState; 12 | 13 | private static FlowStateMachine ms_Instance; 14 | public static FlowStateMachine Instance => ms_Instance; 15 | 16 | private void Awake() 17 | { 18 | ms_Instance = this; 19 | 20 | m_Channel.OnFlowStateRequested += SetFlowState; 21 | } 22 | 23 | private void Start() 24 | { 25 | SetFlowState(m_StartupState); 26 | } 27 | 28 | private void OnDestroy() 29 | { 30 | m_Channel.OnFlowStateRequested -= SetFlowState; 31 | 32 | ms_Instance = null; 33 | } 34 | 35 | private void SetFlowState(FlowState state) 36 | { 37 | if (m_CurrentState != state) 38 | { 39 | m_CurrentState = state; 40 | m_Channel.RaiseFlowStateChanged(m_CurrentState); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Assets/Scripts/Flow/FlowStateMachine.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee93c21a294e0024d8ad344e5815fe9c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7b9828e718906440bc70c9fa2de8ab3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a3dd770e10269014399f94510364a9ff 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Components.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e64931812dfefa4f8a44371a782715e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Components/DialogueInstigator.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class DialogueInstigator : MonoBehaviour 4 | { 5 | [SerializeField] 6 | private DialogueChannel m_DialogueChannel; 7 | [SerializeField] 8 | private FlowChannel m_FlowChannel; 9 | [SerializeField] 10 | private FlowState m_DialogueState; 11 | 12 | private DialogueSequencer m_DialogueSequencer; 13 | private FlowState m_CachedFlowState; 14 | 15 | private void Awake() 16 | { 17 | m_DialogueSequencer = new DialogueSequencer(); 18 | 19 | m_DialogueSequencer.OnDialogueStart += OnDialogueStart; 20 | m_DialogueSequencer.OnDialogueEnd += OnDialogueEnd; 21 | m_DialogueSequencer.OnDialogueNodeStart += m_DialogueChannel.RaiseDialogueNodeStart; 22 | m_DialogueSequencer.OnDialogueNodeEnd += m_DialogueChannel.RaiseDialogueNodeEnd; 23 | 24 | m_DialogueChannel.OnDialogueRequested += m_DialogueSequencer.StartDialogue; 25 | m_DialogueChannel.OnDialogueNodeRequested += m_DialogueSequencer.StartDialogueNode; 26 | } 27 | 28 | private void OnDestroy() 29 | { 30 | m_DialogueChannel.OnDialogueNodeRequested -= m_DialogueSequencer.StartDialogueNode; 31 | m_DialogueChannel.OnDialogueRequested -= m_DialogueSequencer.StartDialogue; 32 | 33 | m_DialogueSequencer.OnDialogueNodeEnd -= m_DialogueChannel.RaiseDialogueNodeEnd; 34 | m_DialogueSequencer.OnDialogueNodeStart -= m_DialogueChannel.RaiseDialogueNodeStart; 35 | m_DialogueSequencer.OnDialogueEnd -= OnDialogueEnd; 36 | m_DialogueSequencer.OnDialogueStart -= OnDialogueStart; 37 | 38 | m_DialogueSequencer = null; 39 | } 40 | 41 | private void OnDialogueStart(Dialogue dialogue) 42 | { 43 | m_DialogueChannel.RaiseDialogueStart(dialogue); 44 | 45 | m_CachedFlowState = FlowStateMachine.Instance.CurrentState; 46 | m_FlowChannel.RaiseFlowStateRequest(m_DialogueState); 47 | } 48 | 49 | private void OnDialogueEnd(Dialogue dialogue) 50 | { 51 | m_FlowChannel.RaiseFlowStateRequest(m_CachedFlowState); 52 | m_CachedFlowState = null; 53 | 54 | m_DialogueChannel.RaiseDialogueEnd(dialogue); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Components/DialogueInstigator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c07d05f2c613e434ebff6b126811065c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 709ecad3a55fc3040a7c38551aaa8d03 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Dialogue.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [CreateAssetMenu(menuName = "Scriptable Objects/Narration/Dialogue/Dialogue")] 4 | public class Dialogue : ScriptableObject 5 | { 6 | [SerializeField] 7 | private DialogueNode m_FirstNode; 8 | public DialogueNode FirstNode => m_FirstNode; 9 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Dialogue.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d150190ca6408f1418b81dcb81e9f740 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/DialogueNodeVisitor.cs: -------------------------------------------------------------------------------- 1 | 2 | public interface DialogueNodeVisitor 3 | { 4 | void Visit(BasicDialogueNode node); 5 | void Visit(ChoiceDialogueNode node); 6 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/DialogueNodeVisitor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c6049a8eb842e6f4f9bc9f056bd1de6e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Nodes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b6e0816b5c1e45a42a689a464e23729a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Nodes/BasicDialogueNode.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [CreateAssetMenu(menuName = "Scriptable Objects/Narration/Dialogue/Node/Basic")] 4 | public class BasicDialogueNode : DialogueNode 5 | { 6 | [SerializeField] 7 | private DialogueNode m_NextNode; 8 | public DialogueNode NextNode => m_NextNode; 9 | 10 | 11 | public override bool CanBeFollowedByNode(DialogueNode node) 12 | { 13 | return m_NextNode == node; 14 | } 15 | 16 | public override void Accept(DialogueNodeVisitor visitor) 17 | { 18 | visitor.Visit(this); 19 | } 20 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Nodes/BasicDialogueNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: abaa1d01ebe65f6469c9f7f9cd89f2dc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Nodes/ChoiceDialogueNode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using UnityEngine; 4 | 5 | [Serializable] 6 | public class DialogueChoice 7 | { 8 | [SerializeField] 9 | private string m_ChoicePreview; 10 | [SerializeField] 11 | private DialogueNode m_ChoiceNode; 12 | 13 | public string ChoicePreview => m_ChoicePreview; 14 | public DialogueNode ChoiceNode => m_ChoiceNode; 15 | } 16 | 17 | 18 | [CreateAssetMenu(menuName = "Scriptable Objects/Narration/Dialogue/Node/Choice")] 19 | public class ChoiceDialogueNode : DialogueNode 20 | { 21 | [SerializeField] 22 | private DialogueChoice[] m_Choices; 23 | public DialogueChoice[] Choices => m_Choices; 24 | 25 | 26 | public override bool CanBeFollowedByNode(DialogueNode node) 27 | { 28 | return m_Choices.Any(x => x.ChoiceNode == node); 29 | } 30 | 31 | public override void Accept(DialogueNodeVisitor visitor) 32 | { 33 | visitor.Visit(this); 34 | } 35 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Nodes/ChoiceDialogueNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 676f063305c2bae4a997b5004ec9d858 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Nodes/DialogueNode.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public abstract class DialogueNode : ScriptableObject 4 | { 5 | [SerializeField] 6 | private NarrationLine m_DialogueLine; 7 | 8 | public NarrationLine DialogueLine => m_DialogueLine; 9 | 10 | public abstract bool CanBeFollowedByNode(DialogueNode node); 11 | public abstract void Accept(DialogueNodeVisitor visitor); 12 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Data/Nodes/DialogueNode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ca56abe1bf2ef340ba102be58c1f8c9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/DialogueChannel.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [CreateAssetMenu(menuName = "Scriptable Objects/Narration/Dialogue/Dialogue Channel")] 4 | public class DialogueChannel : ScriptableObject 5 | { 6 | public delegate void DialogueCallback(Dialogue dialogue); 7 | public DialogueCallback OnDialogueRequested; 8 | public DialogueCallback OnDialogueStart; 9 | public DialogueCallback OnDialogueEnd; 10 | 11 | public delegate void DialogueNodeCallback(DialogueNode node); 12 | public DialogueNodeCallback OnDialogueNodeRequested; 13 | public DialogueNodeCallback OnDialogueNodeStart; 14 | public DialogueNodeCallback OnDialogueNodeEnd; 15 | 16 | public void RaiseRequestDialogue(Dialogue dialogue) 17 | { 18 | OnDialogueRequested?.Invoke(dialogue); 19 | } 20 | 21 | public void RaiseDialogueStart(Dialogue dialogue) 22 | { 23 | OnDialogueStart?.Invoke(dialogue); 24 | } 25 | 26 | public void RaiseDialogueEnd(Dialogue dialogue) 27 | { 28 | OnDialogueEnd?.Invoke(dialogue); 29 | } 30 | 31 | public void RaiseRequestDialogueNode(DialogueNode node) 32 | { 33 | OnDialogueNodeRequested?.Invoke(node); 34 | } 35 | 36 | public void RaiseDialogueNodeStart(DialogueNode node) 37 | { 38 | OnDialogueNodeStart?.Invoke(node); 39 | } 40 | 41 | public void RaiseDialogueNodeEnd(DialogueNode node) 42 | { 43 | OnDialogueNodeEnd?.Invoke(node); 44 | } 45 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/DialogueChannel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6de1d7046a72f264d974eebc27fbd105 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Logic.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0b68db29b2129a41ada55c5bfb60019 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Logic/DialogueSequencer.cs: -------------------------------------------------------------------------------- 1 | 2 | public class DialogueException : System.Exception 3 | { 4 | public DialogueException(string message) 5 | : base(message) 6 | { 7 | } 8 | } 9 | 10 | public class DialogueSequencer 11 | { 12 | public delegate void DialogueCallback(Dialogue dialogue); 13 | public delegate void DialogueNodeCallback(DialogueNode node); 14 | 15 | public DialogueCallback OnDialogueStart; 16 | public DialogueCallback OnDialogueEnd; 17 | public DialogueNodeCallback OnDialogueNodeStart; 18 | public DialogueNodeCallback OnDialogueNodeEnd; 19 | 20 | private Dialogue m_CurrentDialogue; 21 | private DialogueNode m_CurrentNode; 22 | 23 | public void StartDialogue(Dialogue dialogue) 24 | { 25 | if (m_CurrentDialogue == null) 26 | { 27 | m_CurrentDialogue = dialogue; 28 | OnDialogueStart?.Invoke(m_CurrentDialogue); 29 | StartDialogueNode(dialogue.FirstNode); 30 | } 31 | else 32 | { 33 | throw new DialogueException("Can't start a dialogue when another is already running."); 34 | } 35 | } 36 | 37 | public void EndDialogue(Dialogue dialogue) 38 | { 39 | if (m_CurrentDialogue == dialogue) 40 | { 41 | StopDialogueNode(m_CurrentNode); 42 | OnDialogueEnd?.Invoke(m_CurrentDialogue); 43 | m_CurrentDialogue = null; 44 | } 45 | else 46 | { 47 | throw new DialogueException("Trying to stop a dialogue that ins't running."); 48 | } 49 | } 50 | 51 | private bool CanStartNode(DialogueNode node) 52 | { 53 | return (m_CurrentNode == null || node == null || m_CurrentNode.CanBeFollowedByNode(node)); 54 | } 55 | 56 | public void StartDialogueNode(DialogueNode node) 57 | { 58 | if (CanStartNode(node)) 59 | { 60 | StopDialogueNode(m_CurrentNode); 61 | 62 | m_CurrentNode = node; 63 | 64 | if (m_CurrentNode != null) 65 | { 66 | OnDialogueNodeStart?.Invoke(m_CurrentNode); 67 | } 68 | else 69 | { 70 | EndDialogue(m_CurrentDialogue); 71 | } 72 | } 73 | else 74 | { 75 | throw new DialogueException("Failed to start dialogue node."); 76 | } 77 | } 78 | 79 | private void StopDialogueNode(DialogueNode node) 80 | { 81 | if (m_CurrentNode == node) 82 | { 83 | OnDialogueNodeEnd?.Invoke(m_CurrentNode); 84 | m_CurrentNode = null; 85 | } 86 | else 87 | { 88 | throw new DialogueException("Trying to stop a dialogue node that ins't running."); 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/Dialogue/Logic/DialogueSequencer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 32cb7c7d5c93d6248bdc4c981935fd09 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/NarrationCharacter.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [CreateAssetMenu(menuName = "Scriptable Objects/Narration/Character")] 4 | public class NarrationCharacter : ScriptableObject 5 | { 6 | [SerializeField] 7 | private string m_CharacterName; 8 | 9 | public string CharacterName => m_CharacterName; 10 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/NarrationCharacter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef05b76e572951a4d89ef26cf4fe6996 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Narration/NarrationLine.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | [CreateAssetMenu(menuName = "Scriptable Objects/Narration/Line")] 4 | public class NarrationLine : ScriptableObject 5 | { 6 | [SerializeField] 7 | private NarrationCharacter m_Speaker; 8 | [SerializeField] 9 | private string m_Text; 10 | 11 | public NarrationCharacter Speaker => m_Speaker; 12 | public string Text => m_Text; 13 | } -------------------------------------------------------------------------------- /Assets/Scripts/Narration/NarrationLine.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bbd2c1887a808da4b8f0a6cec8d8b890 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 32ee37578612353438e80f75595012a0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/UI/3C.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60127463a7b3d6c478070f498984ff4d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/UI/3C/Interaction.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c287188747fea9c48aa84ee0740187be 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/UI/3C/Interaction/UIInteractionTextController.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using TMPro; 3 | 4 | public class UIInteractionTextController : MonoBehaviour 5 | { 6 | [SerializeField] 7 | private TextMeshProUGUI m_Text; 8 | [SerializeField] 9 | private InteractionInstigator m_WatchedInteractionInstigator; 10 | 11 | void Update() 12 | { 13 | //This is overkill it could be handled with events. 14 | m_Text.enabled = m_WatchedInteractionInstigator.enabled && m_WatchedInteractionInstigator.HasNearbyInteractables(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Assets/Scripts/UI/3C/Interaction/UIInteractionTextController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9b223cebc86248469110f27b405eada 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/UI/Dialogue.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 14e358a85def3e64fb3714ddcd85aa91 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/UI/Dialogue/UIDialogueChoiceController.cs: -------------------------------------------------------------------------------- 1 | using TMPro; 2 | using UnityEngine; 3 | using UnityEngine.UI; 4 | 5 | public class UIDialogueChoiceController : MonoBehaviour 6 | { 7 | [SerializeField] 8 | private TextMeshProUGUI m_Choice; 9 | [SerializeField] 10 | private DialogueChannel m_DialogueChannel; 11 | 12 | private DialogueNode m_ChoiceNextNode; 13 | 14 | public DialogueChoice Choice 15 | { 16 | set 17 | { 18 | m_Choice.text = value.ChoicePreview; 19 | m_ChoiceNextNode = value.ChoiceNode; 20 | } 21 | } 22 | 23 | private void Start() 24 | { 25 | GetComponent