├── .github └── workflows │ └── documentation.yml ├── .gitignore ├── .vscode └── settings.json ├── Assets ├── NPCEngine.meta ├── NPCEngine │ ├── Demo.meta │ ├── Demo │ │ ├── AdvancedDemo.meta │ │ ├── AdvancedDemo │ │ │ ├── AdvancedDemo.unity │ │ │ ├── AdvancedDemo.unity.meta │ │ │ ├── AdvancedDemoLightingSettings.lighting │ │ │ ├── AdvancedDemoLightingSettings.lighting.meta │ │ │ ├── Characters.meta │ │ │ ├── Characters │ │ │ │ ├── Guard1.asset │ │ │ │ ├── Guard1.asset.meta │ │ │ │ ├── Guard2.asset │ │ │ │ ├── Guard2.asset.meta │ │ │ │ ├── Poorman.asset │ │ │ │ ├── Poorman.asset.meta │ │ │ │ ├── Tavernkeeper.asset │ │ │ │ ├── Tavernkeeper.asset.meta │ │ │ │ ├── Traveller.asset │ │ │ │ ├── Traveller.asset.meta │ │ │ │ ├── VillageElder.asset │ │ │ │ ├── VillageElder.asset.meta │ │ │ │ ├── VillageElderSon.asset │ │ │ │ ├── VillageElderSon.asset.meta │ │ │ │ ├── VillageElderSon2.asset │ │ │ │ └── VillageElderSon2.asset.meta │ │ │ ├── Locations.meta │ │ │ ├── Locations │ │ │ │ ├── MournsteadVillage.asset │ │ │ │ └── MournsteadVillage.asset.meta │ │ │ ├── Prefabs.meta │ │ │ ├── Prefabs │ │ │ │ ├── DialogueUI.prefab │ │ │ │ ├── DialogueUI.prefab.meta │ │ │ │ ├── NPC.prefab │ │ │ │ └── NPC.prefab.meta │ │ │ ├── README.md │ │ │ ├── README.md.meta │ │ │ ├── Resources.meta │ │ │ ├── Resources │ │ │ │ ├── Dialogues.meta │ │ │ │ └── Dialogues │ │ │ │ │ ├── Guard.json │ │ │ │ │ ├── Guard.json.meta │ │ │ │ │ ├── Placeholder.json │ │ │ │ │ ├── Placeholder.json.meta │ │ │ │ │ ├── Tavernkeeper.json │ │ │ │ │ ├── Tavernkeeper.json.meta │ │ │ │ │ ├── VillageElder.json │ │ │ │ │ └── VillageElder.json.meta │ │ │ ├── Scripts.meta │ │ │ └── Scripts │ │ │ │ ├── LerpRotate.cs │ │ │ │ └── LerpRotate.cs.meta │ │ ├── BasicDemo.meta │ │ └── BasicDemo │ │ │ ├── Basic.unity │ │ │ ├── Basic.unity.meta │ │ │ ├── Scripts.meta │ │ │ └── Scripts │ │ │ ├── ButtonDisableEnable.cs │ │ │ ├── ButtonDisableEnable.cs.meta │ │ │ ├── ChatbotCaller.cs │ │ │ ├── ChatbotCaller.cs.meta │ │ │ ├── SemanticSimilarityCaller.cs │ │ │ ├── SemanticSimilarityCaller.cs.meta │ │ │ ├── StatusChecker.cs │ │ │ ├── StatusChecker.cs.meta │ │ │ ├── TextToSpeechCaller.cs │ │ │ └── TextToSpeechCaller.cs.meta │ ├── Documentation_api.pdf │ ├── Documentation_api.pdf.meta │ ├── Documentation_tutorials.pdf │ ├── Documentation_tutorials.pdf.meta │ ├── Integrations.meta │ ├── Integrations │ │ ├── VIDEIntegration.meta │ │ ├── VIDEIntegration.unitypackage.meta │ │ └── VIDEIntegration │ │ │ ├── VIDEDialogueSystem.cs │ │ │ └── VIDEDialogueSystem.cs.meta │ ├── Lib.meta │ ├── Lib │ │ ├── AsyncIO.dll │ │ ├── AsyncIO.dll.meta │ │ ├── ICSharpCode.SharpZipLib.dll │ │ ├── ICSharpCode.SharpZipLib.dll.meta │ │ ├── NetMQ.dll │ │ ├── NetMQ.dll.meta │ │ ├── System.Buffers.dll │ │ ├── System.Buffers.dll.meta │ │ ├── System.Memory.dll │ │ ├── System.Memory.dll.meta │ │ ├── System.Runtime.CompilerServices.Unsafe.dll │ │ └── System.Runtime.CompilerServices.Unsafe.dll.meta │ ├── Prefabs.meta │ ├── Prefabs │ │ ├── NPCEngineManager.prefab │ │ └── NPCEngineManager.prefab.meta │ ├── Resources.meta │ ├── Resources │ │ ├── discord.png │ │ ├── discord.png.meta │ │ ├── file-text.png │ │ ├── file-text.png.meta │ │ ├── github.png │ │ ├── github.png.meta │ │ ├── settings.png │ │ └── settings.png.meta │ ├── Scripts.meta │ └── Scripts │ │ ├── API.meta │ │ ├── API │ │ ├── Classification.cs │ │ ├── Classification.cs.meta │ │ ├── Control.cs │ │ ├── Control.cs.meta │ │ ├── PersonaDialogue.cs │ │ ├── PersonaDialogue.cs.meta │ │ ├── SemanticQuery.cs │ │ ├── SemanticQuery.cs.meta │ │ ├── SpeechToText.cs │ │ ├── SpeechToText.cs.meta │ │ ├── TextGeneration.cs │ │ ├── TextGeneration.cs.meta │ │ ├── TextToSpeech.cs │ │ └── TextToSpeech.cs.meta │ │ ├── Components.meta │ │ ├── Components │ │ ├── AbstractDialogueSystem.cs │ │ ├── AbstractDialogueSystem.cs.meta │ │ ├── AbstractSpeechToText.cs │ │ ├── AbstractSpeechToText.cs.meta │ │ ├── Character.cs │ │ ├── Character.cs.meta │ │ ├── ChatbotContexts.meta │ │ ├── ChatbotContexts │ │ │ ├── FantasyChatbotContext.cs │ │ │ ├── FantasyChatbotContext.cs.meta │ │ │ ├── FantasyChatbotTextGeneration.cs │ │ │ └── FantasyChatbotTextGeneration.cs.meta │ │ ├── ColliderLocationTrigger.cs │ │ ├── ColliderLocationTrigger.cs.meta │ │ ├── DialogueUI.cs │ │ ├── DialogueUI.cs.meta │ │ ├── DictationRecognizerSTT.cs │ │ ├── DictationRecognizerSTT.cs.meta │ │ ├── Location.cs │ │ ├── Location.cs.meta │ │ ├── NPCEngineManager.cs │ │ ├── NPCEngineManager.cs.meta │ │ ├── NPCEngineSTT.cs │ │ ├── NPCEngineSTT.cs.meta │ │ ├── NonPlayerCharacter.cs │ │ ├── NonPlayerCharacter.cs.meta │ │ ├── PlayerCharacter.cs │ │ ├── PlayerCharacter.cs.meta │ │ ├── TTSGenerator.cs │ │ └── TTSGenerator.cs.meta │ │ ├── Editor.meta │ │ ├── Editor │ │ ├── NPCEngineConfigEditor.cs │ │ ├── NPCEngineConfigEditor.cs.meta │ │ ├── NPCEngineManagerEditor.cs │ │ ├── NPCEngineManagerEditor.cs.meta │ │ ├── NPCEngineWelcomeWindow.cs │ │ ├── NPCEngineWelcomeWindow.cs.meta │ │ ├── NonPlayerCharacterEditor.cs │ │ ├── NonPlayerCharacterEditor.cs.meta │ │ ├── TTSGeneratorEditor.cs │ │ └── TTSGeneratorEditor.cs.meta │ │ ├── NPCEngineConfig.cs │ │ ├── NPCEngineConfig.cs.meta │ │ ├── RPC.meta │ │ ├── RPC │ │ ├── RPCBase.cs │ │ ├── RPCBase.cs.meta │ │ ├── RPCImpl.cs │ │ ├── RPCImpl.cs.meta │ │ ├── RPCTypes.cs │ │ └── RPCTypes.cs.meta │ │ ├── Utilities.meta │ │ └── Utilities │ │ ├── AudioSourceQueue.cs │ │ ├── AudioSourceQueue.cs.meta │ │ ├── ChildProcessTracker.cs │ │ ├── ChildProcessTracker.cs.meta │ │ ├── CoroutineUtility.cs │ │ ├── CoroutineUtility.cs.meta │ │ ├── SavWav.cs │ │ ├── SavWav.cs.meta │ │ ├── Singleton.cs │ │ └── Singleton.cs.meta └── StreamingAssets.meta ├── Documentation ├── api │ ├── .manifest │ ├── NPCEngine.API.Classification.yml │ ├── NPCEngine.API.Control.yml │ ├── NPCEngine.API.PersonaDialogue.yml │ ├── NPCEngine.API.SemanticQuery.yml │ ├── NPCEngine.API.ServiceMetadata.yml │ ├── NPCEngine.API.ServiceStatus.yml │ ├── NPCEngine.API.SpeechToText.yml │ ├── NPCEngine.API.TextGeneration-1.yml │ ├── NPCEngine.API.TextToSpeech.yml │ ├── NPCEngine.API.yml │ ├── NPCEngine.Components.AbstractDialogueSystem.yml │ ├── NPCEngine.Components.AbstractSpeechToText.yml │ ├── NPCEngine.Components.Character.yml │ ├── NPCEngine.Components.ChatLine.yml │ ├── NPCEngine.Components.ColliderLocationTrigger.yml │ ├── NPCEngine.Components.DialogueUI.yml │ ├── NPCEngine.Components.DictationRecognizerSTT.yml │ ├── NPCEngine.Components.FantasyChatbotContext.yml │ ├── NPCEngine.Components.FantasyChatbotTextGeneration.yml │ ├── NPCEngine.Components.Location.yml │ ├── NPCEngine.Components.NPCEngineManager.yml │ ├── NPCEngine.Components.NPCEngineSTT.yml │ ├── NPCEngine.Components.NonPlayerCharacter.yml │ ├── NPCEngine.Components.PlayerCharacter.yml │ ├── NPCEngine.Components.TTSGenerator.yml │ ├── NPCEngine.Components.yml │ ├── NPCEngine.NPCEngineConfig.yml │ ├── NPCEngine.NPCEngineConfigEditor.yml │ ├── NPCEngine.NPCEngineException.yml │ ├── NPCEngine.NonPlayerCharacterEditor.yml │ ├── NPCEngine.RPC.APICommunicatorHTTPImpl.yml │ ├── NPCEngine.RPC.APICommunicatorZMQImpl.yml │ ├── NPCEngine.RPC.RPCBase.yml │ ├── NPCEngine.RPC.RPCRequestMessage-1.yml │ ├── NPCEngine.RPC.RPCResponseError.yml │ ├── NPCEngine.RPC.RPCResponseErrorData.yml │ ├── NPCEngine.RPC.RPCResponseMessage-1.yml │ ├── NPCEngine.RPC.Request.yml │ ├── NPCEngine.RPC.RequestDispatcherImpl.yml │ ├── NPCEngine.RPC.ServerType.yml │ ├── NPCEngine.RPC.yml │ ├── NPCEngine.ServiceConfigDescriptor.yml │ ├── NPCEngine.TTSGeneratorEditor.yml │ ├── NPCEngine.Utility.AudioSourceQueue.yml │ ├── NPCEngine.Utility.CoroutineUtility.yml │ ├── NPCEngine.Utility.Singleton-1.yml │ ├── NPCEngine.Utility.yml │ ├── NPCEngine.yml │ └── toc.yml ├── docfx.json ├── filterConfig.yml ├── index.md ├── resources │ ├── basic_scene_first.png │ ├── callbacks.png │ ├── chatbot_chat.png │ ├── chatbot_context.png │ ├── fav.svg │ ├── favicon.ico │ ├── logo.svg │ ├── npc_engine_console.png │ ├── npc_engine_server_script.png │ ├── player_character.png │ ├── scene-setup-audio-source.PNG │ ├── scene-setup-cube.png │ ├── scene-setup-how-it-should-look.png │ ├── scene-setup-npc-component.PNG │ ├── scene-setup-player.png │ ├── scene-setup-result.png │ ├── scene-setup-stt.png │ ├── scene-setup-testing.png │ ├── scene-setup-ui.png │ ├── semantic_sim_caller.png │ ├── semantic_similarity.png │ ├── settings.svg │ ├── setup-scene-cube-character.png │ ├── setup-scene-cube-persona.png │ ├── setup-scene-cube-test-objects.PNG │ ├── setup-scene-cube-testing.PNG │ ├── setup-scene-manager-start.PNG │ ├── setup-scene-manager-started.PNG │ ├── speech_to_text.png │ ├── text_to_speech.png │ ├── threshold.png │ └── topics.png ├── toc.yml └── tutorials │ ├── advanced_demo.md │ ├── basic_demo.md │ ├── scene_setup.md │ └── toc.yml ├── LICENSE ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset └── README.md /.github/workflows/documentation.yml: -------------------------------------------------------------------------------- 1 | name: Example documentation 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | # Build the documentation 10 | build: 11 | runs-on: windows-latest # Required by DocFX 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v2 15 | # with: 16 | # submodules: true 17 | 18 | - name: Install DocFX 19 | run: choco install -y docfx 20 | 21 | - name: Install wkhtmltopdf 22 | run: choco install -y wkhtmltopdf 23 | 24 | - name: Use README.md as index.md 25 | run: cp README.md Documentation/index.md 26 | 27 | - name: Build 28 | run: docfx Documentation/docfx.json 29 | 30 | # Upload the generated documentation 31 | - name: Upload site artifact 32 | uses: actions/upload-artifact@v1 33 | with: 34 | name: _site 35 | path: _site # Must equals the 'build.dest' value on your docfx.json 36 | 37 | # Deploy the generated documentation to the gh-pages branch 38 | deploy: 39 | needs: build 40 | runs-on: ubuntu-latest 41 | steps: 42 | - name: Checkout 43 | uses: actions/checkout@v2 44 | # with: 45 | # submodules: true 46 | 47 | # Download the generated documentation 48 | - name: Download site artifact 49 | uses: actions/download-artifact@v1 50 | with: 51 | name: _site 52 | 53 | - name: Deploy 54 | uses: peaceiris/actions-gh-pages@v3 55 | with: 56 | github_token: ${{ secrets.GITHUB_TOKEN }} 57 | publish_branch: gh-pages 58 | publish_dir: _site 59 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Uu]ser[Ss]ettings/ 12 | 13 | # MemoryCaptures can get excessive in size. 14 | # They also could contain extremely sensitive data 15 | /[Mm]emoryCaptures/ 16 | 17 | # Asset meta data should only be ignored when the corresponding asset is also ignored 18 | !/[Aa]ssets/**/*.meta 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | /[Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Idea 30 | .idea/ 31 | 32 | # Gradle cache directory 33 | .gradle/ 34 | 35 | # Autogenerated VS/MD/Consulo solution and project files 36 | ExportedObj/ 37 | .consulo/ 38 | *.csproj 39 | *.unityproj 40 | *.sln 41 | *.suo 42 | *.tmp 43 | *.user 44 | *.userprefs 45 | *.pidb 46 | *.booproj 47 | *.svd 48 | *.pdb 49 | *.mdb 50 | *.opendb 51 | *.VC.db 52 | 53 | # Unity3D generated meta files 54 | *.pidb.meta 55 | *.pdb.meta 56 | *.mdb.meta 57 | 58 | # Unity3D generated file on crash reports 59 | sysinfo.txt 60 | 61 | # Builds 62 | *.apk 63 | *.aab 64 | *.unitypackage 65 | 66 | # Crashlytics generated file 67 | crashlytics-build.properties 68 | 69 | # Packed Addressables 70 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 71 | 72 | /[Aa]ssets/[Ss]treamingAssets/* 73 | /[Aa]ssets/VIDE 74 | /[Aa]ssets/RPGPP_LT 75 | /[Aa]ssets/Polytope\ Studio 76 | /[Aa]ssets/ModularFirstPersonController 77 | /[Aa]ssets/VIDE.meta 78 | /[Aa]ssets/RPGPP_LT.meta 79 | /[Aa]ssets/Polytope\ Studio.meta 80 | /[Aa]ssets/ModularFirstPersonController.meta 81 | 82 | # Packaged modules 83 | 84 | /[Aa]ssets/NPCEngine/Demo/AdvancedDemo/AdvancedDemo.unitypackage* 85 | /[Aa]ssets/NPCEngine/Integrations/VIDE Dialogues Integration.unitypackage* 86 | 87 | # Docs 88 | _site/** 89 | Documentation/_site_pdf/** 90 | **/.cache/** 91 | Documentation/obj/** 92 | /[Aa]ssets/* 93 | !/[Aa]ssets/NPCEngine 94 | /Packages/packages-lock.json 95 | /ProjectSettings/ProjectVersion.txt 96 | 97 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": 3 | { 4 | "**/.DS_Store":true, 5 | "**/.git":true, 6 | "**/.gitignore":true, 7 | "**/.gitmodules":true, 8 | "**/*.booproj":true, 9 | "**/*.pidb":true, 10 | "**/*.suo":true, 11 | "**/*.user":true, 12 | "**/*.userprefs":true, 13 | "**/*.unityproj":true, 14 | "**/*.dll":true, 15 | "**/*.exe":true, 16 | "**/*.pdf":true, 17 | "**/*.mid":true, 18 | "**/*.midi":true, 19 | "**/*.wav":true, 20 | "**/*.gif":true, 21 | "**/*.ico":true, 22 | "**/*.jpg":true, 23 | "**/*.jpeg":true, 24 | "**/*.png":true, 25 | "**/*.psd":true, 26 | "**/*.tga":true, 27 | "**/*.tif":true, 28 | "**/*.tiff":true, 29 | "**/*.3ds":true, 30 | "**/*.3DS":true, 31 | "**/*.fbx":true, 32 | "**/*.FBX":true, 33 | "**/*.lxo":true, 34 | "**/*.LXO":true, 35 | "**/*.ma":true, 36 | "**/*.MA":true, 37 | "**/*.obj":true, 38 | "**/*.OBJ":true, 39 | "**/*.asset":true, 40 | "**/*.cubemap":true, 41 | "**/*.flare":true, 42 | "**/*.mat":true, 43 | "**/*.meta":true, 44 | "**/*.prefab":true, 45 | "**/*.unity":true, 46 | "build/":true, 47 | "Build/":true, 48 | "Library/":true, 49 | "library/":true, 50 | "obj/":true, 51 | "Obj/":true, 52 | "ProjectSettings/":true, 53 | "temp/":true, 54 | "Temp/":true 55 | } 56 | } -------------------------------------------------------------------------------- /Assets/NPCEngine.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 37415cb51094b0349be754ff8a3c157b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6b1a8747a74d0741b08d923f0e4cff4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b705b8dcb6d8704ab82d2f6f4514cbd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/AdvancedDemo.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d2809ab9b90eea7419d8d90d4c505d35 3 | timeCreated: 1560250850 4 | licenseType: Store 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/AdvancedDemoLightingSettings.lighting: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!850595691 &4890085278179872738 4 | LightingSettings: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: AdvancedDemoLightingSettings 10 | serializedVersion: 3 11 | m_GIWorkflowMode: 1 12 | m_EnableBakedLightmaps: 1 13 | m_EnableRealtimeLightmaps: 1 14 | m_RealtimeEnvironmentLighting: 1 15 | m_BounceScale: 1 16 | m_AlbedoBoost: 1 17 | m_IndirectOutputScale: 1 18 | m_UsingShadowmask: 1 19 | m_BakeBackend: 2 20 | m_LightmapMaxSize: 1024 21 | m_BakeResolution: 40 22 | m_Padding: 2 23 | m_TextureCompression: 1 24 | m_AO: 0 25 | m_AOMaxDistance: 1 26 | m_CompAOExponent: 1 27 | m_CompAOExponentDirect: 0 28 | m_ExtractAO: 0 29 | m_MixedBakeMode: 2 30 | m_LightmapsBakeMode: 1 31 | m_FilterMode: 1 32 | m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} 33 | m_ExportTrainingData: 0 34 | m_TrainingDataDestination: TrainingData 35 | m_RealtimeResolution: 2 36 | m_ForceWhiteAlbedo: 0 37 | m_ForceUpdates: 0 38 | m_FinalGather: 0 39 | m_FinalGatherRayCount: 256 40 | m_FinalGatherFiltering: 1 41 | m_PVRCulling: 1 42 | m_PVRSampling: 1 43 | m_PVRDirectSampleCount: 32 44 | m_PVRSampleCount: 512 45 | m_PVREnvironmentSampleCount: 256 46 | m_PVREnvironmentReferencePointCount: 2048 47 | m_LightProbeSampleCountMultiplier: 4 48 | m_PVRBounces: 2 49 | m_PVRMinBounces: 1 50 | m_PVREnvironmentMIS: 1 51 | m_PVRFilteringMode: 1 52 | m_PVRDenoiserTypeDirect: 1 53 | m_PVRDenoiserTypeIndirect: 1 54 | m_PVRDenoiserTypeAO: 1 55 | m_PVRFilterTypeDirect: 0 56 | m_PVRFilterTypeIndirect: 0 57 | m_PVRFilterTypeAO: 0 58 | m_PVRFilteringGaussRadiusDirect: 1 59 | m_PVRFilteringGaussRadiusIndirect: 5 60 | m_PVRFilteringGaussRadiusAO: 2 61 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 62 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 63 | m_PVRFilteringAtrousPositionSigmaAO: 1 64 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/AdvancedDemoLightingSettings.lighting.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e44cb3a0a7bf3ca40b606fe9fd2123b6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 4890085278179872738 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80e8bb51c59c62b4d84d53de6aad6925 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Guard1.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: f5cd5916f5a50814e8db8fb86e73b2c9, type: 3} 13 | m_Name: Guard1 14 | m_EditorClassIdentifier: 15 | Name: Village guard Idwal 16 | voiceId: 110 17 | Persona: 'I like being a guard in a small village because its safe. 18 | 19 | I like 20 | drinking a lot. 21 | 22 | I don''t like to do work.' 23 | testLocation: {fileID: 0} 24 | testCharacter: {fileID: 0} 25 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Guard1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 41bd9c791edf3514c894875cad46693c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Guard2.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: f5cd5916f5a50814e8db8fb86e73b2c9, type: 3} 13 | m_Name: Guard2 14 | m_EditorClassIdentifier: 15 | Name: Village guard Mael 16 | voiceId: 111 17 | Persona: 'I like being a guard in a small village because its safe. 18 | 19 | I like 20 | drinking a lot. 21 | 22 | I don''t like to do work.' 23 | testLocation: {fileID: 0} 24 | testCharacter: {fileID: 0} 25 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Guard2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a927f41f844df5e48b8001d70a61efc9 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Poorman.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: f5cd5916f5a50814e8db8fb86e73b2c9, type: 3} 13 | m_Name: Poorman 14 | m_EditorClassIdentifier: 15 | Name: Poorman Teilo 16 | voiceId: 109 17 | Persona: 'I am a drunkard. 18 | 19 | I barely have money to survive. 20 | 21 | I do any work 22 | just to get a drink. 23 | 24 | Sometimes I steal to get a drink.' 25 | testLocation: {fileID: 0} 26 | testCharacter: {fileID: 0} 27 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Poorman.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4b43d847cf921e5459421bf917490cbb 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Tavernkeeper.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: f5cd5916f5a50814e8db8fb86e73b2c9, type: 3} 13 | m_Name: Tavernkeeper 14 | m_EditorClassIdentifier: 15 | Name: Tavernkeeper Gawain 16 | voiceId: 107 17 | Persona: 'I own a tavern called "Windy Place". 18 | 19 | I am rude with customers. 20 | 21 | I 22 | sell beer and food.' 23 | testLocation: {fileID: 0} 24 | testCharacter: {fileID: 0} 25 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Tavernkeeper.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 745a07649277b644caa66d17eaade8bc 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Traveller.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: f5cd5916f5a50814e8db8fb86e73b2c9, type: 3} 13 | m_Name: Traveller 14 | m_EditorClassIdentifier: 15 | Name: Traveller 16 | Persona: 'I travel the world 17 | 18 | Nobody knows me 19 | 20 | My clothes are dirty and 21 | rough' 22 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/Traveller.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b6c1ac40264439408a38a25b085aa0f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/VillageElder.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: f5cd5916f5a50814e8db8fb86e73b2c9, type: 3} 13 | m_Name: VillageElder 14 | m_EditorClassIdentifier: 15 | Name: Village Elder Crowford 16 | voiceId: 23 17 | Persona: 'I am an elder of Mournstead village. 18 | 19 | I have two sons and a loving 20 | wife. 21 | 22 | I am old and wise. 23 | 24 | I don''t want my younger son to go on the 25 | adventure.' 26 | testLocation: {fileID: 0} 27 | testCharacter: {fileID: 0} 28 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/VillageElder.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3eed93491ea63254b9058b384e0be5d4 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/VillageElderSon.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: f5cd5916f5a50814e8db8fb86e73b2c9, type: 3} 13 | m_Name: VillageElderSon 14 | m_EditorClassIdentifier: 15 | Name: Village Elder's son Brice 16 | voiceId: 114 17 | Persona: 'I am an older son of a village elder. 18 | 19 | I like to use my fathers power. 20 | 21 | I 22 | like it here.' 23 | testLocation: {fileID: 0} 24 | testCharacter: {fileID: 0} 25 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/VillageElderSon.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c81071cedf2b1e443bf29325ef28c630 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/VillageElderSon2.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: f5cd5916f5a50814e8db8fb86e73b2c9, type: 3} 13 | m_Name: VillageElderSon2 14 | m_EditorClassIdentifier: 15 | Name: Village Elder's son Conwy 16 | voiceId: 34 17 | Persona: 'I am a younger son of a village elder. 18 | 19 | I hate this village. 20 | 21 | I 22 | want to go on an adventure.' 23 | testLocation: {fileID: 0} 24 | testCharacter: {fileID: 0} 25 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Characters/VillageElderSon2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e84153344d993674f9aebdf76b2bee03 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Locations.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53ecfeeeb4c28e547961f527b92adb9c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Locations/MournsteadVillage.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: e8769e9e1ba015c4fa2866e19690d115, type: 3} 13 | m_Name: MournsteadVillage 14 | m_EditorClassIdentifier: 15 | Name: Mournstead village 16 | Description: "A small mountain village. \nThe air is fresh, birds are chirping 17 | and the weather is great." 18 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Locations/MournsteadVillage.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ada7c2e7e18fec47b92a5a5d54c19d3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc0759105624f9d4799c28b4eaf2825b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Prefabs/DialogueUI.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b53d5867f2e10e045bd57e62a3fa7b1c 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Prefabs/NPC.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 578a280f62951e64aa6f6c2923d79162 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/README.md: -------------------------------------------------------------------------------- 1 | # Advanced Demo 2 | 3 | [Advanced Demo](https://npc-engine.github.io/npc-engine-unity/tutorials/advanced_demo.html) shows how higher-level components work and how to integrate NPC Engine into your game. 4 | 5 | ## Dependencies 6 | - Advanced demo scene requires these free asset store packages: 7 | - [VIDE dialogues](https://assetstore.unity.com/packages/tools/ai/vide-dialogues-69932) 8 | - [Modular First Person Controller](https://assetstore.unity.com/packages/3d/characters/modular-first-person-controller-189884) 9 | - [Low Poly Modular Armours](https://assetstore.unity.com/packages/3d/characters/lowpoly-modular-armors-free-pack-199890) 10 | - [RPG Poly Pack - Lite](https://assetstore.unity.com/packages/3d/environments/landscapes/rpg-poly-pack-lite-148410) 11 | - You also need to import VIDE Dialogues Integration from `NPC Engine/Integrations` folder 12 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4bba4c74e74502748950ddfd93f6bd68 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7485ef9255a89a8438c06a72503b4c57 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources/Dialogues.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 375c4ae078415a3488dfb9f4e3288d1f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources/Dialogues/Guard.json: -------------------------------------------------------------------------------- 1 | {"dID":15627,"playerDiags":5,"actionNodes":0,"startPoint":0,"loadTag":"","previewPanning":false,"autosave":true,"locEdit":false,"showSettings":true,"pd_isp_0":false,"pd_rect_0":[-1050,160],"pd_comSize_0":1,"pd_ID_0":0,"pd_pTag_0":"","pd_sprite_0":"","pd_expand_0":false,"pd_vars0":0,"pd_0_com_0iSet":0,"pd_0_com_0oAns":1,"pd_0_com_0oAct":-1,"pd_0_com_0text":"Huh, what do you want?","pd_0_com_0extraD":"ExtraData","pd_0_com_0showmore":false,"pd_0_com_0visible":true,"pd_0_com_0audio":"","pd_0_com_0sprite":"","pd_isp_1":true,"pd_rect_1":[-670,100],"pd_comSize_1":11,"pd_ID_1":1,"pd_pTag_1":"","pd_sprite_1":"","pd_expand_1":false,"pd_vars1":0,"pd_1_com_0iSet":1,"pd_1_com_0oAns":2,"pd_1_com_0oAct":-1,"pd_1_com_0text":"[Bandits on the road]Is there any bandits?","pd_1_com_0extraD":"ExtraData","pd_1_com_0showmore":false,"pd_1_com_0visible":true,"pd_1_com_0audio":"","pd_1_com_0sprite":"","pd_1_com_1iSet":1,"pd_1_com_1oAns":2,"pd_1_com_1oAct":-1,"pd_1_com_1text":"[Bandits on the road]Is it safe to travel?","pd_1_com_1extraD":"ExtraData","pd_1_com_1showmore":false,"pd_1_com_1visible":true,"pd_1_com_1audio":"","pd_1_com_1sprite":"","pd_1_com_2iSet":1,"pd_1_com_2oAns":2,"pd_1_com_2oAct":-1,"pd_1_com_2text":"[Bandits on the road]Are these roads safe?","pd_1_com_2extraD":"ExtraData","pd_1_com_2showmore":false,"pd_1_com_2visible":true,"pd_1_com_2audio":"","pd_1_com_2sprite":"","pd_1_com_3iSet":1,"pd_1_com_3oAns":4,"pd_1_com_3oAct":-1,"pd_1_com_3text":"[Job]I am looking for work","pd_1_com_3extraD":"ExtraData","pd_1_com_3showmore":false,"pd_1_com_3visible":true,"pd_1_com_3audio":"","pd_1_com_3sprite":"","pd_1_com_4iSet":1,"pd_1_com_4oAns":4,"pd_1_com_4oAct":-1,"pd_1_com_4text":"[Job]Does anyone need help around here?","pd_1_com_4extraD":"ExtraData","pd_1_com_4showmore":false,"pd_1_com_4visible":true,"pd_1_com_4audio":"","pd_1_com_4sprite":"","pd_1_com_5iSet":1,"pd_1_com_5oAns":4,"pd_1_com_5oAct":-1,"pd_1_com_5text":"[Job]Is there any jobs here?","pd_1_com_5extraD":"ExtraData","pd_1_com_5showmore":false,"pd_1_com_5visible":true,"pd_1_com_5audio":"","pd_1_com_5sprite":"","pd_1_com_6iSet":1,"pd_1_com_6oAns":-1,"pd_1_com_6oAct":-1,"pd_1_com_6text":"[]Bye","pd_1_com_6extraD":"ExtraData","pd_1_com_6showmore":false,"pd_1_com_6visible":true,"pd_1_com_6audio":"","pd_1_com_6sprite":"","pd_1_com_7iSet":1,"pd_1_com_7oAns":-1,"pd_1_com_7oAct":-1,"pd_1_com_7text":"[]See you later","pd_1_com_7extraD":"ExtraData","pd_1_com_7showmore":false,"pd_1_com_7visible":true,"pd_1_com_7audio":"","pd_1_com_7sprite":"","pd_1_com_8iSet":1,"pd_1_com_8oAns":3,"pd_1_com_8oAct":-1,"pd_1_com_8text":"[Villare Elder] Where can I find village elder","pd_1_com_8extraD":"ExtraData","pd_1_com_8showmore":false,"pd_1_com_8visible":true,"pd_1_com_8audio":"","pd_1_com_8sprite":"","pd_1_com_9iSet":1,"pd_1_com_9oAns":3,"pd_1_com_9oAct":-1,"pd_1_com_9text":"[Villare Elder] I am looking for the village elder","pd_1_com_9extraD":"ExtraData","pd_1_com_9showmore":false,"pd_1_com_9visible":true,"pd_1_com_9audio":"","pd_1_com_9sprite":"","pd_1_com_10iSet":1,"pd_1_com_10oAns":3,"pd_1_com_10oAct":-1,"pd_1_com_10text":"[Villare Elder] Where is the elder of this village","pd_1_com_10extraD":"ExtraData","pd_1_com_10showmore":false,"pd_1_com_10visible":true,"pd_1_com_10audio":"","pd_1_com_10sprite":"","pd_isp_2":false,"pd_rect_2":[-110,30],"pd_comSize_2":1,"pd_ID_2":2,"pd_pTag_2":"","pd_sprite_2":"","pd_expand_2":false,"pd_vars2":0,"pd_2_com_0iSet":2,"pd_2_com_0oAns":1,"pd_2_com_0oAct":-1,"pd_2_com_0text":"No bandits were seen around here","pd_2_com_0extraD":"ExtraData","pd_2_com_0showmore":false,"pd_2_com_0visible":true,"pd_2_com_0audio":"","pd_2_com_0sprite":"","pd_isp_3":false,"pd_rect_3":[-80,170],"pd_comSize_3":1,"pd_ID_3":3,"pd_pTag_3":"","pd_sprite_3":"","pd_expand_3":false,"pd_vars3":0,"pd_3_com_0iSet":3,"pd_3_com_0oAns":1,"pd_3_com_0oAct":-1,"pd_3_com_0text":"Village elder and his sons are infront of the house with a cart.","pd_3_com_0extraD":"ExtraData","pd_3_com_0showmore":false,"pd_3_com_0visible":true,"pd_3_com_0audio":"","pd_3_com_0sprite":"","pd_isp_4":false,"pd_rect_4":[-140,370],"pd_comSize_4":1,"pd_ID_4":4,"pd_pTag_4":"","pd_sprite_4":"","pd_expand_4":false,"pd_vars4":0,"pd_4_com_0iSet":4,"pd_4_com_0oAns":1,"pd_4_com_0oAct":-1,"pd_4_com_0text":"Village elder is looking for someone to travel to town for him.","pd_4_com_0extraD":"ExtraData","pd_4_com_0showmore":false,"pd_4_com_0visible":true,"pd_4_com_0audio":"","pd_4_com_0sprite":""} -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources/Dialogues/Guard.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d1724eefd4eef4d47a1b3fee9a452bb3 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources/Dialogues/Placeholder.json: -------------------------------------------------------------------------------- 1 | {"dID":84360,"playerDiags":1,"actionNodes":0,"startPoint":0,"loadTag":"","previewPanning":false,"autosave":true,"locEdit":false,"showSettings":true,"pd_isp_0":true,"pd_rect_0":[-850,190],"pd_comSize_0":1,"pd_ID_0":0,"pd_pTag_0":"","pd_sprite_0":"","pd_expand_0":false,"pd_vars0":0,"pd_0_com_0iSet":-1,"pd_0_com_0oAns":-1,"pd_0_com_0oAct":-1,"pd_0_com_0text":"","pd_0_com_0extraD":"ExtraData","pd_0_com_0showmore":false,"pd_0_com_0visible":true,"pd_0_com_0audio":"","pd_0_com_0sprite":""} -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources/Dialogues/Placeholder.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94132a107cad1784489415945b0ef09f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources/Dialogues/Tavernkeeper.json: -------------------------------------------------------------------------------- 1 | {"dID":437,"playerDiags":4,"actionNodes":0,"startPoint":0,"loadTag":"","previewPanning":false,"autosave":true,"locEdit":false,"showSettings":true,"pd_isp_0":false,"pd_rect_0":[-2670,-220],"pd_comSize_0":1,"pd_ID_0":0,"pd_pTag_0":"","pd_sprite_0":"","pd_expand_0":false,"pd_vars0":0,"pd_0_com_0iSet":0,"pd_0_com_0oAns":1,"pd_0_com_0oAct":-1,"pd_0_com_0text":"Yes? What do you want?","pd_0_com_0extraD":"ExtraData","pd_0_com_0showmore":false,"pd_0_com_0visible":true,"pd_0_com_0audio":"","pd_0_com_0sprite":"","pd_isp_1":true,"pd_rect_1":[-1720,-260],"pd_comSize_1":10,"pd_ID_1":1,"pd_pTag_1":"","pd_sprite_1":"","pd_expand_1":false,"pd_vars1":0,"pd_1_com_0iSet":1,"pd_1_com_0oAns":2,"pd_1_com_0oAct":-1,"pd_1_com_0text":"[Job]I am looking for work","pd_1_com_0extraD":"ExtraData","pd_1_com_0showmore":false,"pd_1_com_0visible":true,"pd_1_com_0audio":"","pd_1_com_0sprite":"","pd_1_com_1iSet":1,"pd_1_com_1oAns":2,"pd_1_com_1oAct":-1,"pd_1_com_1text":"[Job]Does anyone need help around here?","pd_1_com_1extraD":"ExtraData","pd_1_com_1showmore":false,"pd_1_com_1visible":true,"pd_1_com_1audio":"","pd_1_com_1sprite":"","pd_1_com_2iSet":1,"pd_1_com_2oAns":2,"pd_1_com_2oAct":-1,"pd_1_com_2text":"[Job]Is there any jobs here?","pd_1_com_2extraD":"ExtraData","pd_1_com_2showmore":false,"pd_1_com_2visible":true,"pd_1_com_2audio":"","pd_1_com_2sprite":"","pd_1_com_3iSet":1,"pd_1_com_3oAns":2,"pd_1_com_3oAct":-1,"pd_1_com_3text":"[Job]I am looking for work","pd_1_com_3extraD":"ExtraData","pd_1_com_3showmore":false,"pd_1_com_3visible":true,"pd_1_com_3audio":"","pd_1_com_3sprite":"","pd_1_com_4iSet":1,"pd_1_com_4oAns":2,"pd_1_com_4oAct":-1,"pd_1_com_4text":"[Job]Does anyone need help around here?","pd_1_com_4extraD":"ExtraData","pd_1_com_4showmore":false,"pd_1_com_4visible":true,"pd_1_com_4audio":"","pd_1_com_4sprite":"","pd_1_com_5iSet":1,"pd_1_com_5oAns":2,"pd_1_com_5oAct":-1,"pd_1_com_5text":"[Job]Is there any jobs here?","pd_1_com_5extraD":"ExtraData","pd_1_com_5showmore":false,"pd_1_com_5visible":true,"pd_1_com_5audio":"","pd_1_com_5sprite":"","pd_1_com_6iSet":1,"pd_1_com_6oAns":3,"pd_1_com_6oAct":-1,"pd_1_com_6text":"[Looking for village elder]I am looking for village elder","pd_1_com_6extraD":"ExtraData","pd_1_com_6showmore":false,"pd_1_com_6visible":true,"pd_1_com_6audio":"","pd_1_com_6sprite":"","pd_1_com_7iSet":1,"pd_1_com_7oAns":3,"pd_1_com_7oAct":-1,"pd_1_com_7text":"[Looking for village elder]Where can I find village elder","pd_1_com_7extraD":"ExtraData","pd_1_com_7showmore":false,"pd_1_com_7visible":true,"pd_1_com_7audio":"","pd_1_com_7sprite":"","pd_1_com_8iSet":1,"pd_1_com_8oAns":-1,"pd_1_com_8oAct":-1,"pd_1_com_8text":"[]Bye","pd_1_com_8extraD":"ExtraData","pd_1_com_8showmore":false,"pd_1_com_8visible":true,"pd_1_com_8audio":"","pd_1_com_8sprite":"","pd_1_com_9iSet":1,"pd_1_com_9oAns":-1,"pd_1_com_9oAct":-1,"pd_1_com_9text":"[]See you later","pd_1_com_9extraD":"ExtraData","pd_1_com_9showmore":false,"pd_1_com_9visible":true,"pd_1_com_9audio":"","pd_1_com_9sprite":"","pd_isp_2":false,"pd_rect_2":[-1800,-610],"pd_comSize_2":1,"pd_ID_2":2,"pd_pTag_2":"","pd_sprite_2":"","pd_expand_2":false,"pd_vars2":0,"pd_2_com_0iSet":2,"pd_2_com_0oAns":1,"pd_2_com_0oAct":-1,"pd_2_com_0text":"Village elder is looking for someone to travel to town for him.","pd_2_com_0extraD":"ExtraData","pd_2_com_0showmore":false,"pd_2_com_0visible":true,"pd_2_com_0audio":"","pd_2_com_0sprite":"","pd_isp_3":false,"pd_rect_3":[-1200,-320],"pd_comSize_3":1,"pd_ID_3":4,"pd_pTag_3":"","pd_sprite_3":"","pd_expand_3":false,"pd_vars3":0,"pd_3_com_0iSet":3,"pd_3_com_0oAns":1,"pd_3_com_0oAct":-1,"pd_3_com_0text":"He is standing with his sons there across the village square.","pd_3_com_0extraD":"ExtraData","pd_3_com_0showmore":false,"pd_3_com_0visible":true,"pd_3_com_0audio":"","pd_3_com_0sprite":""} -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources/Dialogues/Tavernkeeper.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0e78aa73893f55f48a9616cad674fc8e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Resources/Dialogues/VillageElder.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 11e10a9dfdf8b3a48b78c72d9c66a439 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c0542190a79afd34aa55c0049b371448 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Scripts/LerpRotate.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | /// 6 | /// This script is used to rotate characters towards the camera during dialogue. 7 | /// 8 | public class LerpRotate : MonoBehaviour 9 | { 10 | public Vector3 axis; 11 | public Vector3 forward; 12 | public Transform target; 13 | public float speed = 1; 14 | 15 | public float threshold = 0.1f; 16 | 17 | private bool rotate = false; 18 | 19 | private void Start() 20 | { 21 | target = Camera.main.transform; 22 | } 23 | 24 | public void StartRotate() 25 | { 26 | rotate = true; 27 | } 28 | 29 | public void StopRotate() 30 | { 31 | rotate = false; 32 | } 33 | 34 | 35 | // Update is called once per frame 36 | void Update() 37 | { 38 | if (rotate) 39 | { 40 | 41 | Vector3 currentVector = transform.TransformVector(forward); 42 | var targetVector = target.position - transform.position; 43 | // Rotation between current vector and target vector around axis 44 | var projectedCurrentVector = Vector3.ProjectOnPlane(currentVector, axis); 45 | var projectedTargetVector = Vector3.ProjectOnPlane(targetVector, axis); 46 | float fromToAngle = Vector3.SignedAngle(projectedCurrentVector, projectedTargetVector, axis); 47 | if (fromToAngle > threshold) 48 | { 49 | transform.RotateAround(transform.position, axis, fromToAngle * speed * Time.deltaTime); 50 | } 51 | else if (fromToAngle < -threshold) 52 | { 53 | transform.RotateAround(transform.position, axis, fromToAngle * speed * Time.deltaTime); 54 | } 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/AdvancedDemo/Scripts/LerpRotate.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 033d0a586d1f4cf4aad0cbc289704f73 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/BasicDemo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 319043a9a67e41c4c8266b554b61970f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/BasicDemo/Basic.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d70812f228915d24ca92ccf1deadef2e 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/BasicDemo/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3052401cee10f344a85b59fc17a949d5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/NPCEngine/Demo/BasicDemo/Scripts/ButtonDisableEnable.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Linq; 3 | using NPCEngine.API; 4 | using NPCEngine.Components; 5 | using NPCEngine.Utility; 6 | using UnityEngine; 7 | using UnityEngine.UI; 8 | 9 | public class ButtonDisableEnable : MonoBehaviour 10 | { 11 | private Button button; 12 | public string serviceName; 13 | void Start() 14 | { 15 | button = gameObject.GetComponent