├── Assets
├── SampleViewer
└── SampleViewer.meta
├── Build
├── Build
│ ├── Build.wasm
│ ├── Build.data.unityweb
│ └── Build.json
├── TemplateData
│ ├── favicon.ico
│ ├── fullscreen.png
│ ├── webgl-logo.png
│ ├── progressEmpty.Dark.png
│ ├── progressEmpty.Light.png
│ ├── progressFull.Dark.png
│ ├── progressFull.Light.png
│ ├── progressLogo.Dark.png
│ ├── progressLogo.Light.png
│ ├── UnityProgress.js
│ └── style.css
└── index.html
├── ProjectSettings
├── ProjectVersion.txt
├── CommonBurstAotSettings.json
├── ClusterInputManager.asset
├── PresetManager.asset
├── XRSettings.asset
├── TimeManager.asset
├── EditorBuildSettings.asset
├── VFXManager.asset
├── BurstAotSettings_WebGL.json
├── AudioManager.asset
├── TagManager.asset
├── UnityConnectSettings.asset
├── PackageManagerSettings.asset
├── EditorSettings.asset
├── DynamicsManager.asset
├── NavMeshAreas.asset
├── Physics2DSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── QualitySettings.asset
└── ProjectSettings.asset
├── Packages
├── webxr-input-profiles-loader
│ ├── LICENSE.md.meta
│ ├── README.md.meta
│ ├── CHANGELOG.md.meta
│ ├── package.json.meta
│ ├── Runtime.meta
│ ├── Runtime
│ │ ├── Scripts.meta
│ │ ├── ShaderVariants.meta
│ │ ├── Scripts
│ │ │ ├── WebXRInputProfile.asmdef.meta
│ │ │ ├── InputProfileLoader.cs.meta
│ │ │ ├── InputProfileModel.cs.meta
│ │ │ ├── WebGLDeferAgent.cs.meta
│ │ │ ├── InputProfileStructure.cs.meta
│ │ │ ├── WebXRInputProfile.asmdef
│ │ │ ├── WebGLDeferAgent.cs
│ │ │ ├── InputProfileStructure.cs
│ │ │ ├── InputProfileModel.cs
│ │ │ └── InputProfileLoader.cs
│ │ └── ShaderVariants
│ │ │ ├── glTFShaderVariantsBuiltInRP.shadervariants.meta
│ │ │ ├── glTFShaderVariantsURP.shadervariants.meta
│ │ │ ├── glTFShaderVariantsLegacyURP.shadervariants.meta
│ │ │ ├── glTFShaderVariantsLegacyURP.shadervariants
│ │ │ ├── glTFShaderVariantsURP.shadervariants
│ │ │ └── glTFShaderVariantsBuiltInRP.shadervariants
│ ├── Samples~
│ │ └── SampleViewer
│ │ │ ├── Scenes
│ │ │ └── SampleViewer.unity.meta
│ │ │ ├── Scenes.meta
│ │ │ ├── Scripts.meta
│ │ │ └── Scripts
│ │ │ ├── WebXRInputProfile.Viewer.asmdef.meta
│ │ │ ├── InputProfileViewer.cs.meta
│ │ │ ├── WebXRInputProfile.Viewer.asmdef
│ │ │ └── InputProfileViewer.cs
│ ├── package.json
│ ├── LICENSE.md
│ ├── README.md
│ └── CHANGELOG.md
├── manifest.json
└── packages-lock.json
├── index.html
├── LICENSE
├── .gitignore
└── README.md
/Assets/SampleViewer:
--------------------------------------------------------------------------------
1 | ../Packages/webxr-input-profiles-loader/Samples~/SampleViewer
--------------------------------------------------------------------------------
/Build/Build/Build.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/Build/Build.wasm
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2019.4.33f1
2 | m_EditorVersionWithRevision: 2019.4.33f1 (c9b2b02eeeef)
3 |
--------------------------------------------------------------------------------
/Build/Build/Build.data.unityweb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/Build/Build.data.unityweb
--------------------------------------------------------------------------------
/Build/TemplateData/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/favicon.ico
--------------------------------------------------------------------------------
/Build/TemplateData/fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/fullscreen.png
--------------------------------------------------------------------------------
/Build/TemplateData/webgl-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/webgl-logo.png
--------------------------------------------------------------------------------
/ProjectSettings/CommonBurstAotSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "MonoBehaviour": {
3 | "Version": 4,
4 | "DisabledWarnings": ""
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Build/TemplateData/progressEmpty.Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/progressEmpty.Dark.png
--------------------------------------------------------------------------------
/Build/TemplateData/progressEmpty.Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/progressEmpty.Light.png
--------------------------------------------------------------------------------
/Build/TemplateData/progressFull.Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/progressFull.Dark.png
--------------------------------------------------------------------------------
/Build/TemplateData/progressFull.Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/progressFull.Light.png
--------------------------------------------------------------------------------
/Build/TemplateData/progressLogo.Dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/progressLogo.Dark.png
--------------------------------------------------------------------------------
/Build/TemplateData/progressLogo.Light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/De-Panther/webxr-input-profiles-loader/HEAD/Build/TemplateData/progressLogo.Light.png
--------------------------------------------------------------------------------
/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_DefaultPresets: {}
8 |
--------------------------------------------------------------------------------
/Assets/SampleViewer.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b98003a7de758a54396bf5d1d5f31d95
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/LICENSE.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cdf25279ac9bb67458d7b8cdd0a89696
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/README.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 40b78e203ec94cb4fad290ce4ed87bc8
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ProjectSettings/XRSettings.asset:
--------------------------------------------------------------------------------
1 | {
2 | "m_SettingKeys": [
3 | "VR Device Disabled",
4 | "VR Device User Alert"
5 | ],
6 | "m_SettingValues": [
7 | "False",
8 | "False"
9 | ]
10 | }
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/CHANGELOG.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8021da51d74f5754885d3caf2fc64a51
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6a305e13deb54b740b94e99ce243a5cf
3 | PackageManifestImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d41be3709298f864ab69004043ccd01d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bc690ee845bb07b4781f963e4a7ae43e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/ShaderVariants.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 45ac04f20b6fe9b40b29b4bd2e8ec7a5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Samples~/SampleViewer/Scenes/SampleViewer.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7416a062a65ad2944ab4f216af691c25
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/WebXRInputProfile.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 84a2d09f0bb073f40922f5ea5362abe7
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Samples~/SampleViewer/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 840b6b4bc83600844ae95fbdbf6cbe3c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Samples~/SampleViewer/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fe5d5e68a71bc5c48b00f4347fa068ba
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Samples~/SampleViewer/Scripts/WebXRInputProfile.Viewer.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7b8480f899ef627498520d2ee460756c
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/ShaderVariants/glTFShaderVariantsBuiltInRP.shadervariants.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 14ec05db04ad028438150751d08d01df
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 0
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/ShaderVariants/glTFShaderVariantsURP.shadervariants.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ad92b098823e2e44db91f5880254a0d1
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 20000000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/ShaderVariants/glTFShaderVariantsLegacyURP.shadervariants.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cf3940676a8602e48b07f48bb467b20c
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 20000000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | WebXR Input Profiles Loader in Unity
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes:
8 | - enabled: 1
9 | path: Assets/SampleViewer/Scenes/SampleViewer.unity
10 | guid: 7416a062a65ad2944ab4f216af691c25
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/InputProfileLoader.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 85e281af6e2852048a8e9b08ecf090c1
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/InputProfileModel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ef75d5555a273dd44898e82a31b3fbb3
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/WebGLDeferAgent.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a15e897e180f94d4c85ea00ff7a85ca0
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/InputProfileStructure.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4150b9d52f537a544a6a9f3b93fe6ccd
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Samples~/SampleViewer/Scripts/InputProfileViewer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9a4ebdb12d6bf3142bf2f78d4fe64d35
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_StripUpdateShader: {fileID: 0}
10 | m_RenderPipeSettingsPath:
11 | m_FixedTimeStep: 0.016666668
12 | m_MaxDeltaTime: 0.05
13 |
--------------------------------------------------------------------------------
/ProjectSettings/BurstAotSettings_WebGL.json:
--------------------------------------------------------------------------------
1 | {
2 | "MonoBehaviour": {
3 | "Version": 4,
4 | "EnableBurstCompilation": true,
5 | "EnableOptimisations": true,
6 | "EnableSafetyChecks": false,
7 | "EnableDebugInAllBuilds": false,
8 | "CpuMinTargetX32": 0,
9 | "CpuMaxTargetX32": 0,
10 | "CpuMinTargetX64": 0,
11 | "CpuMaxTargetX64": 0,
12 | "OptimizeFor": 0
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/WebXRInputProfile.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "WebXRInputProfile",
3 | "references": [
4 | "GUID:a42927d1d4a3b4cda9b076a7adecb9cc"
5 | ],
6 | "includePlatforms": [],
7 | "excludePlatforms": [],
8 | "allowUnsafeCode": false,
9 | "overrideReferences": false,
10 | "precompiledReferences": [],
11 | "autoReferenced": false,
12 | "defineConstraints": [],
13 | "versionDefines": [],
14 | "noEngineReferences": false
15 | }
--------------------------------------------------------------------------------
/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Volume: 1
8 | Rolloff Scale: 1
9 | Doppler Factor: 1
10 | Default Speaker Mode: 2
11 | m_SampleRate: 0
12 | m_DSPBufferSize: 1024
13 | m_VirtualVoiceCount: 512
14 | m_RealVoiceCount: 32
15 | m_SpatializerPlugin:
16 | m_AmbisonicDecoderPlugin:
17 | m_DisableAudio: 0
18 | m_VirtualizeEffects: 1
19 | m_RequestedDSPBufferSize: 1024
20 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Samples~/SampleViewer/Scripts/WebXRInputProfile.Viewer.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "WebXRInputProfile.Viewer",
3 | "references": [
4 | "GUID:84a2d09f0bb073f40922f5ea5362abe7"
5 | ],
6 | "includePlatforms": [],
7 | "excludePlatforms": [],
8 | "allowUnsafeCode": false,
9 | "overrideReferences": false,
10 | "precompiledReferences": [],
11 | "autoReferenced": false,
12 | "defineConstraints": [],
13 | "versionDefines": [],
14 | "noEngineReferences": false
15 | }
--------------------------------------------------------------------------------
/Build/Build/Build.json:
--------------------------------------------------------------------------------
1 | {
2 | "companyName": "De-Panther",
3 | "productName": "WebXR Input Profiles Loader",
4 | "productVersion": "0.1",
5 | "dataUrl": "Build.data.unityweb",
6 | "wasmCodeUrl": "Build.wasm",
7 | "wasmFrameworkUrl": "Build.wasm.framework.unityweb",
8 | "graphicsAPI": ["WebGL 2.0","WebGL 1.0"],
9 | "webglContextAttributes": {"preserveDrawingBuffer": false},
10 | "splashScreenStyle": "Dark",
11 | "backgroundColor": "#231F20",
12 | "cacheControl": {"default": "must-revalidate"},
13 | "developmentBuild": false,
14 | "multithreading": false,
15 | "unityVersion": "2019.4.33f1"
16 | }
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/WebGLDeferAgent.cs:
--------------------------------------------------------------------------------
1 | using GLTFast;
2 | using System.Threading.Tasks;
3 | using UnityEngine;
4 |
5 | namespace WebXRInputProfile
6 | {
7 | public class WebGLDeferAgent : MonoBehaviour, IDeferAgent
8 | {
9 | public bool ShouldDefer()
10 | {
11 | return false;
12 | }
13 |
14 | public bool ShouldDefer(float duration)
15 | {
16 | return false;
17 | }
18 |
19 | public async Task BreakPoint()
20 | {
21 | await Task.Yield();
22 | }
23 |
24 | public async Task BreakPoint(float duration)
25 | {
26 | await Task.Yield();
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.de-panther.webxr-input-profiles-loader",
3 | "displayName": "WebXR Input Profiles Loader",
4 | "version": "0.6.2",
5 | "unity": "2019.4",
6 | "description": "Load WebXR Input Profiles in Unity",
7 | "keywords": [
8 | "webxr",
9 | "xr",
10 | "ar",
11 | "vr"
12 | ],
13 | "author": {
14 | "name": "De-Panther",
15 | "url": "https://github.com/De-Panther/webxr-input-profiles-loader"
16 | },
17 | "samples": [
18 | {
19 | "displayName": "Sample Viewer Scene",
20 | "description": "Sample Scene with Input Profiles Viewer",
21 | "path": "Samples~/SampleViewer"
22 | }
23 | ],
24 | "dependencies": {
25 | "com.unity.nuget.newtonsoft-json": "2.0.0",
26 | "com.unity.cloud.gltfast": "5.2.0"
27 | },
28 | "unityRelease": "33f1"
29 | }
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_TestInitMode: 0
13 | CrashReportingSettings:
14 | m_EventUrl: https://perf-events.cloud.unity3d.com
15 | m_Enabled: 0
16 | m_LogBufferSize: 10
17 | m_CaptureEditorExceptions: 1
18 | UnityPurchasingSettings:
19 | m_Enabled: 0
20 | m_TestMode: 0
21 | UnityAnalyticsSettings:
22 | m_Enabled: 0
23 | m_TestMode: 0
24 | m_InitializeOnStartup: 1
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
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: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_ScopedRegistriesSettingsExpanded: 1
16 | oneTimeWarningShown: 0
17 | m_Registries:
18 | - m_Id: main
19 | m_Name:
20 | m_Url: https://packages.unity.com
21 | m_Scopes: []
22 | m_IsDefault: 1
23 | m_UserSelectedRegistryName:
24 | m_UserAddingNewScopedRegistry: 0
25 | m_RegistryInfoDraft:
26 | m_ErrorMessage:
27 | m_Original:
28 | m_Id:
29 | m_Name:
30 | m_Url:
31 | m_Scopes: []
32 | m_IsDefault: 0
33 | m_Modified: 0
34 | m_Name:
35 | m_Url:
36 | m_Scopes:
37 | -
38 | m_SelectedScopeIndex: 0
39 |
--------------------------------------------------------------------------------
/Build/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Unity WebGL Player | WebXR Input Profiles Loader
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Oren Weizman
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Oren Weizman
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 9
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 0
10 | m_DefaultBehaviorMode: 0
11 | m_PrefabRegularEnvironment: {fileID: 0}
12 | m_PrefabUIEnvironment: {fileID: 0}
13 | m_SpritePackerMode: 0
14 | m_SpritePackerPaddingPower: 1
15 | m_EtcTextureCompressorBehavior: 1
16 | m_EtcTextureFastCompressor: 1
17 | m_EtcTextureNormalCompressor: 2
18 | m_EtcTextureBestCompressor: 4
19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
20 | m_ProjectGenerationRootNamespace:
21 | m_CollabEditorSettings:
22 | inProgressEnabled: 1
23 | m_EnableTextureStreamingInEditMode: 1
24 | m_EnableTextureStreamingInPlayMode: 1
25 | m_AsyncShaderCompilation: 1
26 | m_EnterPlayModeOptionsEnabled: 0
27 | m_EnterPlayModeOptions: 3
28 | m_ShowLightmapResolutionOverlay: 1
29 | m_UseLegacyProbeSampleCount: 0
30 | m_AssetPipelineMode: 1
31 | m_CacheServerMode: 0
32 | m_CacheServerEndpoint:
33 | m_CacheServerNamespacePrefix: default
34 | m_CacheServerEnableDownload: 1
35 | m_CacheServerEnableUpload: 1
36 |
--------------------------------------------------------------------------------
/.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]uilds/
9 | /[Ll]ogs/
10 | /[Mm]emoryCaptures/
11 |
12 | # Asset meta data should only be ignored when the corresponding asset is also ignored
13 | !/[Aa]ssets/**/*.meta
14 |
15 | # Uncomment this line if you wish to ignore the asset store tools plugin
16 | # /[Aa]ssets/AssetStoreTools*
17 |
18 | # Autogenerated Jetbrains Rider plugin
19 | [Aa]ssets/Plugins/Editor/JetBrains*
20 |
21 | # Visual Studio cache directory
22 | .vs/
23 |
24 | # Gradle cache directory
25 | .gradle/
26 |
27 | # Autogenerated VS/MD/Consulo solution and project files
28 | ExportedObj/
29 | .consulo/
30 | *.csproj
31 | *.unityproj
32 | *.sln
33 | *.suo
34 | *.tmp
35 | *.user
36 | *.userprefs
37 | *.pidb
38 | *.booproj
39 | *.svd
40 | *.pdb
41 | *.mdb
42 | *.opendb
43 | *.VC.db
44 |
45 | # Unity3D generated meta files
46 | *.pidb.meta
47 | *.pdb.meta
48 | *.mdb.meta
49 |
50 | # Unity3D generated file on crash reports
51 | sysinfo.txt
52 |
53 | # Builds
54 | *.apk
55 | *.unitypackage
56 |
57 | # Crashlytics generated file
58 | crashlytics-build.properties
59 |
60 | /.vscode
61 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/README.md:
--------------------------------------------------------------------------------
1 | # WebXR Input Profiles Loader
2 |
3 | WebXR Input Profiles Loader in Unity. Based on [WebXR Input Profiles](https://github.com/immersive-web/webxr-input-profiles)
4 |
5 | The package is intended to be used with WebXR exporters in general, and not only with [WebXR Export](https://github.com/De-Panther/unity-webxr-export)
6 |
7 | The package uses [glTFast](https://docs.unity3d.com/Packages/com.unity.cloud.gltfast@latest) to load the models, and Unity's package of Newtonsoft Json.NET to parse the profiles.
8 |
9 | You might need to add Shader Variants of the Input Profiles Models to the build for the shaders to work. More info about that can be found at the glTFast docs.
10 |
11 | You can use `glTFShaderVariantsURP`, `glTFShaderVariantsLegacyURP` or `glTFShaderVariantsBuiltInRP` in `Project Settings > Graphics > Preloaded Shaders` depending on the active render pipeline.
12 |
13 | ## Setting package using OpenUPM
14 |
15 | Set a `Scoped Registry` in `Project Settings > Package Manager` for OpenUPM.
16 |
17 | ```
18 | Name: OpenUPM
19 | URL: https://package.openupm.com
20 | Scope(s): com.de-panther
21 | ```
22 |
23 | Then in `Window > Package Manager` selecting `Packages: My Registries` and the WebXR Input Profiles Loader package would be available for install.
24 |
--------------------------------------------------------------------------------
/Build/TemplateData/UnityProgress.js:
--------------------------------------------------------------------------------
1 | function UnityProgress(unityInstance, progress) {
2 | if (!unityInstance.Module)
3 | return;
4 | if (!unityInstance.logo) {
5 | unityInstance.logo = document.createElement("div");
6 | unityInstance.logo.className = "logo " + unityInstance.Module.splashScreenStyle;
7 | unityInstance.container.appendChild(unityInstance.logo);
8 | }
9 | if (!unityInstance.progress) {
10 | unityInstance.progress = document.createElement("div");
11 | unityInstance.progress.className = "progress " + unityInstance.Module.splashScreenStyle;
12 | unityInstance.progress.empty = document.createElement("div");
13 | unityInstance.progress.empty.className = "empty";
14 | unityInstance.progress.appendChild(unityInstance.progress.empty);
15 | unityInstance.progress.full = document.createElement("div");
16 | unityInstance.progress.full.className = "full";
17 | unityInstance.progress.appendChild(unityInstance.progress.full);
18 | unityInstance.container.appendChild(unityInstance.progress);
19 | }
20 | unityInstance.progress.full.style.width = (100 * progress) + "%";
21 | unityInstance.progress.empty.style.width = (100 * (1 - progress)) + "%";
22 | if (progress == 1)
23 | unityInstance.logo.style.display = unityInstance.progress.style.display = "none";
24 | }
--------------------------------------------------------------------------------
/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 11
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 0
23 | m_ReuseCollisionCallbacks: 1
24 | m_ClothInterCollisionSettingsToggle: 0
25 | m_ContactPairsMode: 0
26 | m_BroadphaseType: 0
27 | m_WorldBounds:
28 | m_Center: {x: 0, y: 0, z: 0}
29 | m_Extent: {x: 250, y: 250, z: 250}
30 | m_WorldSubdivisions: 8
31 | m_FrictionType: 0
32 | m_EnableEnhancedDeterminism: 0
33 | m_EnableUnifiedHeightmaps: 1
34 | m_DefaultMaxAngluarSpeed: 7
35 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/ShaderVariants/glTFShaderVariantsLegacyURP.shadervariants:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!200 &20000000
4 | ShaderVariantCollection:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: glTFShaderVariantsLegacyURP
10 | m_Shaders:
11 | - first: {fileID: -6465566751694194690, guid: ba6d401c74b2c4f96af7edf0fe32241e,
12 | type: 3}
13 | second:
14 | variants:
15 | - keywords:
16 | passType: 8
17 | - keywords: _EMISSIVE
18 | passType: 8
19 | - keywords: _ADDITIONAL_LIGHTS_VERTEX
20 | passType: 13
21 | - keywords: _ADDITIONAL_LIGHTS_VERTEX _EMISSIVE
22 | passType: 13
23 | - first: {fileID: -6465566751694194690, guid: 90c26dfde11bf4ff69ef936c6e6b1ed1,
24 | type: 3}
25 | second:
26 | variants:
27 | - keywords:
28 | passType: 8
29 | - keywords: _OCCLUSION
30 | passType: 8
31 | - keywords: _EMISSIVE _OCCLUSION
32 | passType: 8
33 | - keywords: _ADDITIONAL_LIGHTS_VERTEX
34 | passType: 13
35 | - keywords: _ADDITIONAL_LIGHTS_VERTEX _OCCLUSION
36 | passType: 13
37 | - keywords: _ADDITIONAL_LIGHTS_VERTEX _EMISSIVE _OCCLUSION
38 | passType: 13
39 |
--------------------------------------------------------------------------------
/Build/TemplateData/style.css:
--------------------------------------------------------------------------------
1 | .webgl-content * {border: 0; margin: 0; padding: 0}
2 | .webgl-content {position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%);}
3 |
4 | .webgl-content .logo, .progress {position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%);}
5 | .webgl-content .logo {background: url('progressLogo.Light.png') no-repeat center / contain; width: 154px; height: 130px;}
6 | .webgl-content .progress {height: 18px; width: 141px; margin-top: 90px;}
7 | .webgl-content .progress .empty {background: url('progressEmpty.Light.png') no-repeat right / cover; float: right; width: 100%; height: 100%; display: inline-block;}
8 | .webgl-content .progress .full {background: url('progressFull.Light.png') no-repeat left / cover; float: left; width: 0%; height: 100%; display: inline-block;}
9 |
10 | .webgl-content .logo.Dark {background-image: url('progressLogo.Dark.png');}
11 | .webgl-content .progress.Dark .empty {background-image: url('progressEmpty.Dark.png');}
12 | .webgl-content .progress.Dark .full {background-image: url('progressFull.Dark.png');}
13 |
14 | .webgl-content .footer {margin-top: 5px; height: 38px; line-height: 38px; font-family: Helvetica, Verdana, Arial, sans-serif; font-size: 18px;}
15 | .webgl-content .footer .webgl-logo, .title, .fullscreen {height: 100%; display: inline-block; background: transparent center no-repeat;}
16 | .webgl-content .footer .webgl-logo {background-image: url('webgl-logo.png'); width: 204px; float: left;}
17 | .webgl-content .footer .title {margin-right: 10px; float: right;}
18 | .webgl-content .footer .fullscreen {background-image: url('fullscreen.png'); width: 38px; float: right;}
19 |
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # WebXR Input Profiles Loader
2 |
3 | WebXR Input Profiles Loader in Unity. Based on [WebXR Input Profiles](https://github.com/immersive-web/webxr-input-profiles).
4 |
5 | You can [try the demo here](https://de-panther.github.io/webxr-input-profiles-loader/).
6 |
7 | The package is intended to be used with WebXR exporters in general, and not only with [WebXR Export](https://github.com/De-Panther/unity-webxr-export).
8 |
9 | The package uses [glTFast](https://docs.unity3d.com/Packages/com.unity.cloud.gltfast@latest) to load the models, and Unity's package of [Newtonsoft Json.NET](https://docs.unity3d.com/Packages/com.unity.nuget.newtonsoft-json@latest) to parse the profiles.
10 |
11 | ## Downloads
12 |
13 | You can get the package from [](https://openupm.com/packages/com.de-panther.webxr-input-profiles-loader/).
14 |
15 | ### Setting package using OpenUPM
16 |
17 | Set a `Scoped Registry` in `Project Settings > Package Manager` for OpenUPM.
18 |
19 | ```
20 | Name: OpenUPM
21 | URL: https://package.openupm.com
22 | Scope(s): com.de-panther
23 | ```
24 |
25 | Then in `Window > Package Manager` selecting `Packages: My Registries` and the WebXR Input Profiles Loader package would be available for install.
26 |
27 | ## Troubleshooting
28 |
29 | You might need to add Shader Variants of the Input Profiles Models to the build for the shaders to work. More info about that can be found at the glTFast docs.
30 |
31 | You can use `glTFShaderVariantsURP`, `glTFShaderVariantsLegacyURP` or `glTFShaderVariantsBuiltInRP` in `Project Settings > Graphics > Preloaded Shaders` depending on the active render pipeline.
32 |
33 | ## Supported WebXR Exporters
34 |
35 | - [WebXR Export](https://github.com/De-Panther/unity-webxr-export).
36 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.cloud.gltfast": "5.2.0",
4 | "com.unity.collab-proxy": "1.14.1",
5 | "com.unity.ide.rider": "1.2.1",
6 | "com.unity.ide.visualstudio": "2.0.11",
7 | "com.unity.ide.vscode": "1.2.5",
8 | "com.unity.nuget.newtonsoft-json": "2.0.0",
9 | "com.unity.test-framework": "1.1.29",
10 | "com.unity.textmeshpro": "2.1.4",
11 | "com.unity.timeline": "1.2.18",
12 | "com.unity.ugui": "1.0.0",
13 | "com.unity.modules.ai": "1.0.0",
14 | "com.unity.modules.androidjni": "1.0.0",
15 | "com.unity.modules.animation": "1.0.0",
16 | "com.unity.modules.assetbundle": "1.0.0",
17 | "com.unity.modules.audio": "1.0.0",
18 | "com.unity.modules.cloth": "1.0.0",
19 | "com.unity.modules.director": "1.0.0",
20 | "com.unity.modules.imageconversion": "1.0.0",
21 | "com.unity.modules.imgui": "1.0.0",
22 | "com.unity.modules.jsonserialize": "1.0.0",
23 | "com.unity.modules.particlesystem": "1.0.0",
24 | "com.unity.modules.physics": "1.0.0",
25 | "com.unity.modules.physics2d": "1.0.0",
26 | "com.unity.modules.screencapture": "1.0.0",
27 | "com.unity.modules.terrain": "1.0.0",
28 | "com.unity.modules.terrainphysics": "1.0.0",
29 | "com.unity.modules.tilemap": "1.0.0",
30 | "com.unity.modules.ui": "1.0.0",
31 | "com.unity.modules.uielements": "1.0.0",
32 | "com.unity.modules.umbra": "1.0.0",
33 | "com.unity.modules.unityanalytics": "1.0.0",
34 | "com.unity.modules.unitywebrequest": "1.0.0",
35 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
36 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
37 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
38 | "com.unity.modules.unitywebrequestwww": "1.0.0",
39 | "com.unity.modules.vehicles": "1.0.0",
40 | "com.unity.modules.video": "1.0.0",
41 | "com.unity.modules.vr": "1.0.0",
42 | "com.unity.modules.wind": "1.0.0",
43 | "com.unity.modules.xr": "1.0.0"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/ShaderVariants/glTFShaderVariantsURP.shadervariants:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!200 &20000000
4 | ShaderVariantCollection:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: glTFShaderVariantsURP
10 | m_Shaders:
11 | - first: {fileID: -6465566751694194690, guid: b9d29dfa1474148e792ac720cbd45122,
12 | type: 3}
13 | second:
14 | variants:
15 | - keywords:
16 | passType: 8
17 | - keywords: _EMISSIVE
18 | passType: 8
19 | - keywords: _EMISSIVE _OCCLUSION
20 | passType: 8
21 | - keywords: _OCCLUSION
22 | passType: 8
23 | - keywords: STEREO_INSTANCING_ON _ADDITIONAL_LIGHTS_VERTEX
24 | passType: 13
25 | - keywords: STEREO_INSTANCING_ON _ADDITIONAL_LIGHTS_VERTEX _EMISSIVE
26 | passType: 13
27 | - keywords: STEREO_INSTANCING_ON _ADDITIONAL_LIGHTS_VERTEX _EMISSIVE _OCCLUSION
28 | passType: 13
29 | - keywords: STEREO_INSTANCING_ON _ADDITIONAL_LIGHTS_VERTEX _EMISSIVE _OCCLUSION
30 | _REFLECTION_PROBE_BLENDING _REFLECTION_PROBE_BOX_PROJECTION
31 | passType: 13
32 | - keywords: STEREO_INSTANCING_ON _ADDITIONAL_LIGHTS_VERTEX _EMISSIVE _REFLECTION_PROBE_BLENDING
33 | _REFLECTION_PROBE_BOX_PROJECTION
34 | passType: 13
35 | - keywords: STEREO_INSTANCING_ON _ADDITIONAL_LIGHTS_VERTEX _OCCLUSION
36 | passType: 13
37 | - keywords: STEREO_INSTANCING_ON _ADDITIONAL_LIGHTS_VERTEX _OCCLUSION _REFLECTION_PROBE_BLENDING
38 | _REFLECTION_PROBE_BOX_PROJECTION
39 | passType: 13
40 | - keywords: STEREO_INSTANCING_ON _ADDITIONAL_LIGHTS_VERTEX _REFLECTION_PROBE_BLENDING
41 | _REFLECTION_PROBE_BOX_PROJECTION
42 | passType: 13
43 | - keywords: _ADDITIONAL_LIGHTS_VERTEX _REFLECTION_PROBE_BLENDING _REFLECTION_PROBE_BOX_PROJECTION
44 | passType: 13
45 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/ShaderVariants/glTFShaderVariantsBuiltInRP.shadervariants:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!200 &20000000
4 | ShaderVariantCollection:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: glTFShaderVariantsBuiltInRP
10 | m_Shaders:
11 | - first: {fileID: 4800000, guid: 99fa998bbbed3408aafa652b466d261d, type: 3}
12 | second:
13 | variants:
14 | - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN
15 | passType: 4
16 | - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN _NORMALMAP
17 | passType: 4
18 | - keywords: DIRECTIONAL LIGHTPROBE_SH _METALLICGLOSSMAP
19 | passType: 4
20 | - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN _METALLICGLOSSMAP
21 | passType: 4
22 | - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN _EMISSION _METALLICGLOSSMAP
23 | passType: 4
24 | - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN
25 | SHADOWS_SOFT SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON UNITY_HDR_ON _METALLICGLOSSMAP
26 | passType: 4
27 | - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN _METALLICGLOSSMAP _NORMALMAP
28 | _OCCLUSION
29 | passType: 4
30 | - keywords: DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN _EMISSION _METALLICGLOSSMAP
31 | _NORMALMAP _OCCLUSION
32 | passType: 4
33 | - keywords: BILLBOARD_FACE_CAMERA_POS DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN
34 | SHADOWS_SOFT SHADOWS_SPLIT_SPHERES SOFTPARTICLES_ON UNITY_HDR_ON _METALLICGLOSSMAP
35 | _NORMALMAP _OCCLUSION
36 | passType: 4
37 | - keywords: DIRECTIONAL _METALLICGLOSSMAP
38 | passType: 5
39 | - keywords:
40 | passType: 8
41 | - keywords: SHADOWS_DEPTH
42 | passType: 8
43 | - keywords: _METALLICGLOSSMAP
44 | passType: 8
45 | - keywords: SHADOWS_DEPTH _METALLICGLOSSMAP
46 | passType: 8
47 | - keywords: SHADOWS_DEPTH _METALLICGLOSSMAP _OCCLUSION
48 | passType: 8
49 | - keywords: _METALLICGLOSSMAP _NORMALMAP _OCCLUSION
50 | passType: 8
51 |
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_JobOptions:
23 | serializedVersion: 2
24 | useMultithreading: 0
25 | useConsistencySorting: 0
26 | m_InterpolationPosesPerJob: 100
27 | m_NewContactsPerJob: 30
28 | m_CollideContactsPerJob: 100
29 | m_ClearFlagsPerJob: 200
30 | m_ClearBodyForcesPerJob: 200
31 | m_SyncDiscreteFixturesPerJob: 50
32 | m_SyncContinuousFixturesPerJob: 50
33 | m_FindNearestContactsPerJob: 100
34 | m_UpdateTriggerContactsPerJob: 100
35 | m_IslandSolverCostThreshold: 100
36 | m_IslandSolverBodyCostScale: 1
37 | m_IslandSolverContactCostScale: 10
38 | m_IslandSolverJointCostScale: 10
39 | m_IslandSolverBodiesPerJob: 50
40 | m_IslandSolverContactsPerJob: 50
41 | m_AutoSimulation: 1
42 | m_QueriesHitTriggers: 1
43 | m_QueriesStartInColliders: 1
44 | m_CallbacksOnDisable: 1
45 | m_ReuseCollisionCallbacks: 1
46 | m_AutoSyncTransforms: 0
47 | m_AlwaysShowColliders: 0
48 | m_ShowColliderSleep: 1
49 | m_ShowColliderContacts: 0
50 | m_ShowColliderAABB: 0
51 | m_ContactArrowScale: 0.2
52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
57 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 | All notable changes to this project will be documented in this file.
3 |
4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6 |
7 | ## [Unreleased]
8 |
9 | ## [0.6.2] - 2024-01-17
10 | ### Fixed
11 | - Pose error after latest glTFast updates.
12 |
13 | ## [0.6.1] - 2024-01-17
14 | ### Added
15 | - glTFShaderVariantsURP and glTFShaderVariantsLegacyURP to the ShaderVariants folder.
16 |
17 | ### Changed
18 | - Renamed GLTFShaderVariants to glTFShaderVariantsBuiltInRP.
19 |
20 | ## [0.6.0] - 2024-01-15
21 | ### Changed
22 | - Use glTFast package from Unity registry.
23 | - Updated glTFast package to 5.2.0.
24 |
25 | ## [0.5.0] - 2024-01-11
26 | ### Changed
27 | - Updated glTFast package to 5.1.0.
28 |
29 | ## [0.4.0] - 2021-12-12
30 | ### Changed
31 | - Updated glTFast package to 4.4.8.
32 | - Minimum Unity version 2019.4.33f1.
33 |
34 | ## [0.3.7] - 2021-06-19
35 | ### Changed
36 | - Updated glTFast package to 4.0.1.
37 |
38 | ## [0.3.6] - 2021-05-06
39 | ### Added
40 | - GetChildTransform to InputProfileModel for WebXR Hands API support.
41 |
42 | ### Changed
43 | - Updated glTFast package to 3.2.1.
44 |
45 | ## [0.3.5] - 2021-02-13
46 | ### Fixed
47 | - Warning in DeferAgent file.
48 |
49 | ### Changed
50 | - Updated glTFast package to 3.0.2.
51 | - TimeBudgetDeferAgent to WebGLDeferAgent.
52 | - Sample scene lighting settings.
53 |
54 | ## [0.3.4] - 2021-02-07
55 | ### Fixed
56 | - More issues with loading models.
57 |
58 | ## [0.3.3] - 2021-02-06
59 | ### Fixed
60 | - Issues with loading models.
61 |
62 | ## [0.3.2] - 2021-02-06
63 | ### Changed
64 | - Updated glTFast package to 3.0.1.
65 |
66 | ## [0.3.1] - 2020-12-19
67 | ### Changed
68 | - Increment version due to error.
69 |
70 | ## [0.3.0] - 2020-12-19
71 | ### Changed
72 | - InputProfileLoader - Can set profilesUrl only on LoadProfilesList.
73 | - Moved ShaderVariants folder to package Runtime folder from Samples folder.
74 | - Use custom DeferAgent for loading gLTF models, for better loading performance.
75 | - Make sure to download a profile only once.
76 | - Updated glTFast package to 2.5.0.
77 |
78 | ## [0.2.0] - 2020-12-06
79 | ### Added
80 | - Support profilesList.json file.
81 |
82 | ## [0.1.0] - 2020-11-21
83 | ### Added
84 | - This package.
85 |
--------------------------------------------------------------------------------
/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 13
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
39 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}
40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
41 | m_PreloadedShaders:
42 | - {fileID: 20000000, guid: 14ec05db04ad028438150751d08d01df, type: 2}
43 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
44 | type: 0}
45 | m_CustomRenderPipeline: {fileID: 0}
46 | m_TransparencySortMode: 0
47 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
48 | m_DefaultRenderingPath: 1
49 | m_DefaultMobileRenderingPath: 1
50 | m_TierSettings: []
51 | m_LightmapStripping: 0
52 | m_FogStripping: 0
53 | m_InstancingStripping: 0
54 | m_LightmapKeepPlain: 1
55 | m_LightmapKeepDirCombined: 1
56 | m_LightmapKeepDynamicPlain: 1
57 | m_LightmapKeepDynamicDirCombined: 1
58 | m_LightmapKeepShadowMask: 1
59 | m_LightmapKeepSubtractive: 1
60 | m_FogKeepLinear: 1
61 | m_FogKeepExp: 1
62 | m_FogKeepExp2: 1
63 | m_AlbedoSwatchInfos: []
64 | m_LightsUseLinearIntensity: 0
65 | m_LightsUseColorTemperature: 0
66 | m_LogWhenShaderIsCompiled: 0
67 | m_AllowEnlightenSupportForUpgradedProject: 0
68 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/InputProfileStructure.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using UnityEngine;
5 | using Newtonsoft.Json;
6 |
7 | namespace WebXRInputProfile
8 | {
9 | [Serializable]
10 | public class Profile
11 | {
12 | public string profileId = string.Empty;
13 | public string[] fallbackProfileIds = new string[0];
14 | public Layouts layouts;
15 | }
16 |
17 | [Serializable]
18 | public class Layouts
19 | {
20 | public Layout none;
21 | public Layout left;
22 | public Layout right;
23 | [JsonProperty("left-right")]
24 | public Layout left_right;
25 | [JsonProperty("left-right-none")]
26 | public Layout left_right_none;
27 | }
28 |
29 | [Serializable]
30 | public class Layout
31 | {
32 | public string selectComponentId;
33 | public Dictionary components;
34 | public string rootNodeName;
35 | public string assetPath;
36 | }
37 |
38 | [Serializable]
39 | public class Component
40 | {
41 | public GamepadIndices gamepadIndices;
42 | public string rootNodeName;
43 | public Dictionary visualResponses;
44 | }
45 |
46 | [Serializable]
47 | public class GamepadIndices
48 | {
49 | public int? button;
50 | public int? xAxis;
51 | public int? yAxis;
52 | }
53 |
54 | [Serializable]
55 | public class VisualResponse
56 | {
57 | public ComponentPropertyTypes componentProperty;
58 | public ValueNodePropertyTypes valueNodeProperty;
59 | public string valueNodeName;
60 | public string minNodeName;
61 | public string maxNodeName;
62 | }
63 |
64 | public enum ComponentPropertyTypes
65 | {
66 | button,
67 | xAxis,
68 | yAxis,
69 | state
70 | }
71 |
72 | public enum ValueNodePropertyTypes
73 | {
74 | transform,
75 | visibility
76 | }
77 |
78 | [Serializable]
79 | public class LayoutRouting
80 | {
81 | public string rootNodeName;
82 | public string assetPath;
83 | public VisualResponse[] buttons = new VisualResponse[7];
84 | public VisualResponse[] axes = new VisualResponse[4];
85 | }
86 |
87 | [Serializable]
88 | public class LayoutTransforms
89 | {
90 | public LayoutTransform[] buttons = new LayoutTransform[7];
91 | public LayoutTransform[] axes = new LayoutTransform[4];
92 | }
93 |
94 | [Serializable]
95 | public class LayoutTransform
96 | {
97 | public Transform valueNode;
98 | public Transform minNode;
99 | public Transform maxNode;
100 | }
101 |
102 | [Serializable]
103 | public class ProfileInfo
104 | {
105 | public string path = string.Empty;
106 | public bool deprecated = false;
107 | }
108 | }
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Samples~/SampleViewer/Scripts/InputProfileViewer.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 | using UnityEngine.UI;
5 |
6 | namespace WebXRInputProfile.Viewer
7 | {
8 | public class InputProfileViewer : MonoBehaviour
9 | {
10 | public InputProfileModel inputProfileModel;
11 | public InputProfileLoader inputProfileLoader;
12 | public Dropdown profileNameDropdown;
13 | public Button loadProfile;
14 | public Button loadNone;
15 | public Button loadLeft;
16 | public Button loadRight;
17 | public Slider[] buttonsSliders;
18 | public Slider[] axesSliders;
19 | public Slider[] rotationsSliders;
20 | private string lastDownloadedProfile;
21 |
22 | void Start()
23 | {
24 | profileNameDropdown.ClearOptions();
25 | var profilesPaths = inputProfileLoader.GetProfilesPaths();
26 | if (profilesPaths == null || profilesPaths.Count == 0)
27 | {
28 |
29 | inputProfileLoader.LoadProfilesList(HandleProfilesList);
30 | }
31 | else
32 | {
33 | HandleProfilesList(profilesPaths);
34 | }
35 | }
36 |
37 | void HandleProfilesList(Dictionary profilesPaths)
38 | {
39 | if (profilesPaths == null || profilesPaths.Count == 0)
40 | {
41 | return;
42 | }
43 | List profileNames = new List();
44 | foreach (var keyValPair in profilesPaths)
45 | {
46 | profileNames.Add(keyValPair.Key);
47 | }
48 | profileNameDropdown.AddOptions(profileNames);
49 | loadProfile.interactable = true;
50 | }
51 |
52 | public void LoadProfile()
53 | {
54 | lastDownloadedProfile = profileNameDropdown.options[profileNameDropdown.value].text;
55 | loadNone.interactable = false;
56 | loadLeft.interactable = false;
57 | loadRight.interactable = false;
58 | inputProfileLoader.LoadProfile(new string[]{lastDownloadedProfile}, OnProfileLoaded);
59 | }
60 |
61 | private void OnProfileLoaded(bool success)
62 | {
63 | loadNone.interactable = inputProfileLoader.HasModelForHand(lastDownloadedProfile, InputProfileLoader.Handedness.none);
64 | loadLeft.interactable = inputProfileLoader.HasModelForHand(lastDownloadedProfile, InputProfileLoader.Handedness.left);
65 | loadRight.interactable = inputProfileLoader.HasModelForHand(lastDownloadedProfile, InputProfileLoader.Handedness.right);
66 | }
67 |
68 | public void LoadNone()
69 | {
70 | LoadModel(InputProfileLoader.Handedness.none);
71 | }
72 |
73 | public void LoadLeft()
74 | {
75 | LoadModel(InputProfileLoader.Handedness.left);
76 | }
77 |
78 | public void LoadRight()
79 | {
80 | LoadModel(InputProfileLoader.Handedness.right);
81 | }
82 |
83 | private void LoadModel(InputProfileLoader.Handedness handedness)
84 | {
85 | if (inputProfileModel != null)
86 | {
87 | Destroy(inputProfileModel.gameObject);
88 | }
89 | inputProfileModel = inputProfileLoader.LoadModelForHand(lastDownloadedProfile, handedness);
90 | UpdateModelRotations();
91 | for (int i = 0; i < buttonsSliders.Length; i++)
92 | {
93 | SetButtonValue(i);
94 | }
95 | for (int i = 0; i < axesSliders.Length; i++)
96 | {
97 | SetAxisValue(i);
98 | }
99 | }
100 |
101 | public void SetButtonValue(int index)
102 | {
103 | if (inputProfileModel)
104 | {
105 | inputProfileModel.SetButtonValue(index, buttonsSliders[index].value);
106 | }
107 | }
108 |
109 | public void SetAxisValue(int index)
110 | {
111 | if (inputProfileModel)
112 | {
113 | inputProfileModel.SetAxisValue(index, axesSliders[index].value);
114 | }
115 | }
116 |
117 | public void UpdateModelRotations()
118 | {
119 | if (inputProfileModel)
120 | {
121 | inputProfileModel.transform.localEulerAngles = new Vector3(rotationsSliders[0].value,
122 | rotationsSliders[1].value,
123 | rotationsSliders[2].value);
124 | }
125 | }
126 | }
127 | }
128 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/InputProfileModel.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using GLTFast;
3 |
4 | namespace WebXRInputProfile
5 | {
6 | public class InputProfileModel : MonoBehaviour
7 | {
8 | private System.Action onLoadCallback;
9 | private float[] buttons = new float[7];
10 | private float[] axes = new float[4];
11 |
12 | private LayoutRouting layoutRouting;
13 |
14 | private LayoutTransforms layoutTransforms;
15 |
16 | private GltfAsset gltfAsset;
17 | private WebGLDeferAgent deferAgent;
18 |
19 | private GameObject gltfChild;
20 | private Transform gltfTransform;
21 |
22 | public async void Init(LayoutRouting layoutRouting, string url, System.Action callback = null)
23 | {
24 | this.layoutRouting = layoutRouting;
25 | onLoadCallback = callback;
26 | if (gltfChild == null)
27 | {
28 | #if UNITY_EDITOR
29 | gltfChild = new GameObject("gltfChild");
30 | #else
31 | gltfChild = new GameObject();
32 | #endif
33 | gltfAsset = gltfChild.AddComponent();
34 | deferAgent = gltfChild.AddComponent();
35 | gltfTransform = gltfChild.transform;
36 | gltfTransform.parent = transform;
37 | gltfTransform.localPosition = Vector3.zero;
38 | gltfTransform.localEulerAngles = new Vector3(0, 180, 0);
39 | }
40 | gltfAsset.LoadOnStartup = false;
41 | gltfAsset.Url = url;
42 | var loadResult = await gltfAsset.Load(gltfAsset.Url, null, deferAgent);
43 | OnGltfLoaded(loadResult);
44 | }
45 |
46 | private void OnGltfLoaded(bool success)
47 | {
48 | if (!success)
49 | {
50 | onLoadCallback?.Invoke(false);
51 | return;
52 | }
53 | if (layoutRouting != null)
54 | {
55 | layoutTransforms = new LayoutTransforms();
56 | for (int i = 0; i < layoutRouting.buttons.Length; i++)
57 | {
58 | if (layoutRouting.buttons[i] != null)
59 | {
60 | layoutTransforms.buttons[i] = new LayoutTransform();
61 | layoutTransforms.buttons[i].valueNode = TransformFindRecursive(gltfTransform, layoutRouting.buttons[i].valueNodeName);
62 | layoutTransforms.buttons[i].minNode = TransformFindRecursive(gltfTransform, layoutRouting.buttons[i].minNodeName);
63 | layoutTransforms.buttons[i].maxNode = TransformFindRecursive(gltfTransform, layoutRouting.buttons[i].maxNodeName);
64 | SetButtonValue(i, buttons[i]);
65 | }
66 | }
67 | for (int i = 0; i < layoutRouting.axes.Length; i++)
68 | {
69 | if (layoutRouting.axes[i] != null)
70 | {
71 | layoutTransforms.axes[i] = new LayoutTransform();
72 | layoutTransforms.axes[i].valueNode = TransformFindRecursive(gltfTransform, layoutRouting.axes[i].valueNodeName);
73 | // In WebXR, yAxis is inverted. Not sure if here's the place to switch
74 | if (layoutRouting.axes[i].componentProperty == ComponentPropertyTypes.yAxis)
75 | {
76 | layoutTransforms.axes[i].minNode = TransformFindRecursive(gltfTransform, layoutRouting.axes[i].maxNodeName);
77 | layoutTransforms.axes[i].maxNode = TransformFindRecursive(gltfTransform, layoutRouting.axes[i].minNodeName);
78 | }
79 | else
80 | {
81 | layoutTransforms.axes[i].minNode = TransformFindRecursive(gltfTransform, layoutRouting.axes[i].minNodeName);
82 | layoutTransforms.axes[i].maxNode = TransformFindRecursive(gltfTransform, layoutRouting.axes[i].maxNodeName);
83 | }
84 | SetAxisValue(i, Mathf.Lerp(-1f, 1f, axes[i]));
85 | }
86 | }
87 | onLoadCallback?.Invoke(true);
88 | }
89 | else
90 | {
91 | onLoadCallback?.Invoke(false);
92 | }
93 | }
94 |
95 | private Transform TransformFindRecursive(Transform parent, string value)
96 | {
97 | Transform result = parent.Find(value);
98 | if (result != null)
99 | {
100 | return result;
101 | }
102 | foreach (Transform child in parent)
103 | {
104 | result = TransformFindRecursive(child, value);
105 | if (result != null)
106 | {
107 | break;
108 | }
109 | }
110 | return result;
111 | }
112 |
113 | public Transform GetChildTransform(string transformName)
114 | {
115 | return TransformFindRecursive(gltfTransform, transformName);
116 | }
117 |
118 | public bool SetButtonValue(int index, float value)
119 | {
120 | if (index < 0 || index >= buttons.Length)
121 | {
122 | Debug.LogError ("Index error");
123 | return false;
124 | }
125 | buttons[index] = Mathf.Clamp01(value);
126 | if (layoutTransforms == null
127 | || layoutTransforms.buttons[index] == null
128 | || layoutTransforms.buttons[index].valueNode == null
129 | || layoutTransforms.buttons[index].minNode == null
130 | || layoutTransforms.buttons[index].maxNode == null)
131 | {
132 | return false;
133 | }
134 | var position = Vector3.Lerp(layoutTransforms.buttons[index].minNode.localPosition,
135 | layoutTransforms.buttons[index].maxNode.localPosition,
136 | buttons[index]);
137 | layoutTransforms.buttons[index].valueNode.localPosition = position;
138 | var rotation = Quaternion.Lerp(layoutTransforms.buttons[index].minNode.localRotation,
139 | layoutTransforms.buttons[index].maxNode.localRotation,
140 | buttons[index]);
141 | layoutTransforms.buttons[index].valueNode.localRotation = rotation;
142 | return true;
143 | }
144 |
145 | public bool SetAxisValue(int index, float value)
146 | {
147 | if (index < 0 || index >= axes.Length)
148 | {
149 | Debug.LogError ("Index error");
150 | return false;
151 | }
152 | axes[index] = Mathf.Clamp(value, -1f, 1f);
153 | axes[index] = Mathf.InverseLerp(-1f, 1f, axes[index]);
154 | if (layoutTransforms == null
155 | || layoutTransforms.axes[index] == null
156 | || layoutTransforms.axes[index].valueNode == null
157 | || layoutTransforms.axes[index].minNode == null
158 | || layoutTransforms.axes[index].maxNode == null)
159 | {
160 | return false;
161 | }
162 | var position = Vector3.Lerp(layoutTransforms.axes[index].minNode.localPosition,
163 | layoutTransforms.axes[index].maxNode.localPosition,
164 | axes[index]);
165 | layoutTransforms.axes[index].valueNode.localPosition = position;
166 | var rotation = Quaternion.Lerp(layoutTransforms.axes[index].minNode.localRotation,
167 | layoutTransforms.axes[index].maxNode.localRotation,
168 | axes[index]);
169 | layoutTransforms.axes[index].valueNode.localRotation = rotation;
170 | return true;
171 | }
172 |
173 | }
174 | }
175 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 5
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | streamingMipmapsActive: 0
33 | streamingMipmapsAddAllCameras: 1
34 | streamingMipmapsMemoryBudget: 512
35 | streamingMipmapsRenderersPerFrame: 512
36 | streamingMipmapsMaxLevelReduction: 2
37 | streamingMipmapsMaxFileIORequests: 1024
38 | particleRaycastBudget: 4
39 | asyncUploadTimeSlice: 2
40 | asyncUploadBufferSize: 16
41 | asyncUploadPersistentBuffer: 1
42 | resolutionScalingFixedDPIFactor: 1
43 | excludedTargetPlatforms: []
44 | - serializedVersion: 2
45 | name: Low
46 | pixelLightCount: 0
47 | shadows: 0
48 | shadowResolution: 0
49 | shadowProjection: 1
50 | shadowCascades: 1
51 | shadowDistance: 20
52 | shadowNearPlaneOffset: 3
53 | shadowCascade2Split: 0.33333334
54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
55 | shadowmaskMode: 0
56 | blendWeights: 2
57 | textureQuality: 0
58 | anisotropicTextures: 0
59 | antiAliasing: 0
60 | softParticles: 0
61 | softVegetation: 0
62 | realtimeReflectionProbes: 0
63 | billboardsFaceCameraPosition: 0
64 | vSyncCount: 0
65 | lodBias: 0.4
66 | maximumLODLevel: 0
67 | streamingMipmapsActive: 0
68 | streamingMipmapsAddAllCameras: 1
69 | streamingMipmapsMemoryBudget: 512
70 | streamingMipmapsRenderersPerFrame: 512
71 | streamingMipmapsMaxLevelReduction: 2
72 | streamingMipmapsMaxFileIORequests: 1024
73 | particleRaycastBudget: 16
74 | asyncUploadTimeSlice: 2
75 | asyncUploadBufferSize: 16
76 | asyncUploadPersistentBuffer: 1
77 | resolutionScalingFixedDPIFactor: 1
78 | excludedTargetPlatforms: []
79 | - serializedVersion: 2
80 | name: Medium
81 | pixelLightCount: 1
82 | shadows: 1
83 | shadowResolution: 0
84 | shadowProjection: 1
85 | shadowCascades: 1
86 | shadowDistance: 20
87 | shadowNearPlaneOffset: 3
88 | shadowCascade2Split: 0.33333334
89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
90 | shadowmaskMode: 0
91 | blendWeights: 2
92 | textureQuality: 0
93 | anisotropicTextures: 1
94 | antiAliasing: 0
95 | softParticles: 0
96 | softVegetation: 0
97 | realtimeReflectionProbes: 0
98 | billboardsFaceCameraPosition: 0
99 | vSyncCount: 1
100 | lodBias: 0.7
101 | maximumLODLevel: 0
102 | streamingMipmapsActive: 0
103 | streamingMipmapsAddAllCameras: 1
104 | streamingMipmapsMemoryBudget: 512
105 | streamingMipmapsRenderersPerFrame: 512
106 | streamingMipmapsMaxLevelReduction: 2
107 | streamingMipmapsMaxFileIORequests: 1024
108 | particleRaycastBudget: 64
109 | asyncUploadTimeSlice: 2
110 | asyncUploadBufferSize: 16
111 | asyncUploadPersistentBuffer: 1
112 | resolutionScalingFixedDPIFactor: 1
113 | excludedTargetPlatforms: []
114 | - serializedVersion: 2
115 | name: High
116 | pixelLightCount: 2
117 | shadows: 2
118 | shadowResolution: 1
119 | shadowProjection: 1
120 | shadowCascades: 2
121 | shadowDistance: 40
122 | shadowNearPlaneOffset: 3
123 | shadowCascade2Split: 0.33333334
124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
125 | shadowmaskMode: 1
126 | blendWeights: 2
127 | textureQuality: 0
128 | anisotropicTextures: 1
129 | antiAliasing: 0
130 | softParticles: 0
131 | softVegetation: 1
132 | realtimeReflectionProbes: 1
133 | billboardsFaceCameraPosition: 1
134 | vSyncCount: 1
135 | lodBias: 1
136 | maximumLODLevel: 0
137 | streamingMipmapsActive: 0
138 | streamingMipmapsAddAllCameras: 1
139 | streamingMipmapsMemoryBudget: 512
140 | streamingMipmapsRenderersPerFrame: 512
141 | streamingMipmapsMaxLevelReduction: 2
142 | streamingMipmapsMaxFileIORequests: 1024
143 | particleRaycastBudget: 256
144 | asyncUploadTimeSlice: 2
145 | asyncUploadBufferSize: 16
146 | asyncUploadPersistentBuffer: 1
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Very High
151 | pixelLightCount: 3
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 2
156 | shadowDistance: 70
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 2
164 | antiAliasing: 2
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 1.5
171 | maximumLODLevel: 0
172 | streamingMipmapsActive: 0
173 | streamingMipmapsAddAllCameras: 1
174 | streamingMipmapsMemoryBudget: 512
175 | streamingMipmapsRenderersPerFrame: 512
176 | streamingMipmapsMaxLevelReduction: 2
177 | streamingMipmapsMaxFileIORequests: 1024
178 | particleRaycastBudget: 1024
179 | asyncUploadTimeSlice: 2
180 | asyncUploadBufferSize: 16
181 | asyncUploadPersistentBuffer: 1
182 | resolutionScalingFixedDPIFactor: 1
183 | excludedTargetPlatforms: []
184 | - serializedVersion: 2
185 | name: Ultra
186 | pixelLightCount: 4
187 | shadows: 2
188 | shadowResolution: 2
189 | shadowProjection: 1
190 | shadowCascades: 4
191 | shadowDistance: 150
192 | shadowNearPlaneOffset: 3
193 | shadowCascade2Split: 0.33333334
194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
195 | shadowmaskMode: 1
196 | blendWeights: 4
197 | textureQuality: 0
198 | anisotropicTextures: 2
199 | antiAliasing: 2
200 | softParticles: 1
201 | softVegetation: 1
202 | realtimeReflectionProbes: 1
203 | billboardsFaceCameraPosition: 1
204 | vSyncCount: 1
205 | lodBias: 2
206 | maximumLODLevel: 0
207 | streamingMipmapsActive: 0
208 | streamingMipmapsAddAllCameras: 1
209 | streamingMipmapsMemoryBudget: 512
210 | streamingMipmapsRenderersPerFrame: 512
211 | streamingMipmapsMaxLevelReduction: 2
212 | streamingMipmapsMaxFileIORequests: 1024
213 | particleRaycastBudget: 4096
214 | asyncUploadTimeSlice: 2
215 | asyncUploadBufferSize: 16
216 | asyncUploadPersistentBuffer: 1
217 | resolutionScalingFixedDPIFactor: 1
218 | excludedTargetPlatforms: []
219 | m_PerPlatformDefaultQuality:
220 | Android: 2
221 | Lumin: 5
222 | Nintendo 3DS: 5
223 | Nintendo Switch: 5
224 | PS4: 5
225 | PSP2: 2
226 | Stadia: 5
227 | Standalone: 5
228 | WebGL: 3
229 | Windows Store Apps: 5
230 | XboxOne: 5
231 | iPhone: 2
232 | tvOS: 2
233 |
--------------------------------------------------------------------------------
/Packages/webxr-input-profiles-loader/Runtime/Scripts/InputProfileLoader.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 | using UnityEngine.Networking;
5 | using Newtonsoft.Json;
6 |
7 | namespace WebXRInputProfile
8 | {
9 | public class InputProfileLoader : MonoBehaviour
10 | {
11 | private const string DEFAULT_PROFILES_URL = "https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets/dist/profiles/";
12 |
13 | public enum Handedness
14 | {
15 | none = 0,
16 | left = 1,
17 | right = 2
18 | }
19 |
20 | // For cases where asked to download controllers separately
21 | private Dictionary downloadedProfiles = new Dictionary();
22 | private Dictionary cachedLayoutRoutings = new Dictionary();
23 | private Dictionary profilesPaths = null;
24 |
25 | public Dictionary GetProfilesPaths()
26 | {
27 | return profilesPaths;
28 | }
29 |
30 | private string profilesUrl = DEFAULT_PROFILES_URL;
31 |
32 | UnityWebRequest profilesListWebRequest = null;
33 | UnityWebRequest profileWebRequest = null;
34 |
35 | public void LoadProfilesList(System.Action> callback = null, string profilesUrl = null)
36 | {
37 | if (profilesPaths == null || profilesPaths.Count == 0 || (profilesUrl != null && profilesUrl != this.profilesUrl))
38 | {
39 | this.profilesUrl = !string.IsNullOrEmpty(profilesUrl) ? profilesUrl : DEFAULT_PROFILES_URL;
40 | StartCoroutine(DownloadProfilesList(callback));
41 | }
42 | else
43 | {
44 | callback(profilesPaths);
45 | }
46 | }
47 |
48 | IEnumerator DownloadProfilesList(System.Action> callback = null)
49 | {
50 | if (profilesListWebRequest == null)
51 | {
52 | profilesListWebRequest = UnityWebRequest.Get(profilesUrl + "profilesList.json");
53 | yield return profilesListWebRequest.SendWebRequest();
54 | }
55 | while (profilesListWebRequest != null && !profilesListWebRequest.isDone)
56 | {
57 | yield return null;
58 | }
59 |
60 | if (profilesListWebRequest != null)
61 | {
62 | if (!profilesListWebRequest.isNetworkError && !profilesListWebRequest.isHttpError)
63 | {
64 | var profilesList = JsonConvert.DeserializeObject>(profilesListWebRequest.downloadHandler.text);
65 | if (profilesList != null)
66 | {
67 | profilesPaths = new Dictionary();
68 | foreach (var keyValPair in profilesList)
69 | {
70 | profilesPaths.Add(keyValPair.Key, keyValPair.Value.path);
71 | }
72 | }
73 | }
74 | profilesListWebRequest.Dispose();
75 | profilesListWebRequest = null;
76 | }
77 |
78 | if (callback != null)
79 | {
80 | callback(profilesPaths);
81 | }
82 | }
83 |
84 | public void LoadProfile(string[] profileNames, System.Action callback = null)
85 | {
86 | if (profileNames == null || profileNames.Length == 0)
87 | {
88 | Debug.LogError("No profile name");
89 | callback?.Invoke(false);
90 | return;
91 | }
92 | if (DownloadedProfileExist(profileNames))
93 | {
94 | callback?.Invoke(true);
95 | return;
96 | }
97 | StartCoroutine(DownloadProfile(profileNames, callback));
98 | }
99 |
100 | IEnumerator DownloadProfile(string[] profileNames, System.Action callback)
101 | {
102 | if (profilesPaths == null)
103 | {
104 | yield return DownloadProfilesList();
105 | }
106 | string profilePath = string.Empty;
107 | string profileName = string.Empty;
108 | int profilesIndex = -1;
109 | if (profilesPaths != null)
110 | {
111 | for (int i = 0; i < profileNames.Length; i++)
112 | {
113 | if (profilesPaths.ContainsKey(profileNames[i]))
114 | {
115 | profileName = profileNames[i];
116 | profilePath = profilesPaths[profileName];
117 | profilesIndex = i;
118 | break;
119 | }
120 | }
121 | }
122 | if (profilesIndex == -1)
123 | {
124 | callback(false);
125 | yield break;
126 | }
127 | // if no path for profiles, group them together with the first profile that has path
128 | string[] similarProfiles = new string[profilesIndex + 1];
129 | for (int i = 0; i < similarProfiles.Length; i++)
130 | {
131 | similarProfiles[i] = profileNames[i];
132 | }
133 |
134 | if (profileWebRequest == null)
135 | {
136 | profileWebRequest = UnityWebRequest.Get(profilesUrl + profilePath);
137 | yield return profileWebRequest.SendWebRequest();
138 | }
139 |
140 | while (profileWebRequest != null && !profileWebRequest.isDone)
141 | {
142 | yield return null;
143 | }
144 |
145 | if (profileWebRequest != null)
146 | {
147 | if (!profileWebRequest.isNetworkError && !profileWebRequest.isHttpError)
148 | {
149 | HandleProfileText(similarProfiles, profileWebRequest.downloadHandler.text, callback);
150 | }
151 | else if (callback != null)
152 | {
153 | callback(false);
154 | }
155 | profileWebRequest.Dispose();
156 | profileWebRequest = null;
157 | }
158 | else
159 | {
160 | callback?.Invoke(DownloadedProfileExist(similarProfiles));
161 | }
162 | }
163 |
164 | private void HandleProfileText(string[] profileNames, string profileText, System.Action callback)
165 | {
166 | if (DownloadedProfileExist(profileNames))
167 | {
168 | callback?.Invoke(true);
169 | return;
170 | }
171 | var profile = JsonConvert.DeserializeObject(profileText);
172 | var layoutRoutings = CreateLayoutRoutings(profile);
173 | for (int i = 0; i < profileNames.Length; i++)
174 | {
175 | downloadedProfiles.Add(profileNames[i], profile);
176 | cachedLayoutRoutings.Add(profileNames[i], layoutRoutings);
177 | }
178 | callback?.Invoke(true);
179 | }
180 |
181 | private bool DownloadedProfileExist(string[] profileNames)
182 | {
183 | for (int i = 0; i < profileNames.Length; i++)
184 | {
185 | if (downloadedProfiles.ContainsKey(profileNames[i]))
186 | {
187 | for (int j = 0; j < i; j++)
188 | {
189 | downloadedProfiles.Add(profileNames[j], downloadedProfiles[profileNames[i]]);
190 | cachedLayoutRoutings.Add(profileNames[j], cachedLayoutRoutings[profileNames[i]]);
191 | }
192 | return true;
193 | }
194 | }
195 | return false;
196 | }
197 |
198 | private LayoutRouting[] CreateLayoutRoutings(Profile profile)
199 | {
200 | var layoutRoutings = new LayoutRouting[3];
201 | if (profile.layouts.left_right_none != null)
202 | {
203 | var layoutRouting = GetLayoutRouting(profile.layouts.left_right_none); ;
204 | layoutRoutings[(int)Handedness.none] = layoutRouting;
205 | layoutRoutings[(int)Handedness.left] = layoutRouting;
206 | layoutRoutings[(int)Handedness.right] = layoutRouting;
207 |
208 | }
209 | else if (profile.layouts.left_right != null)
210 | {
211 | var layoutRouting = GetLayoutRouting(profile.layouts.left_right); ;
212 | layoutRoutings[(int)Handedness.left] = layoutRouting;
213 | layoutRoutings[(int)Handedness.right] = layoutRouting;
214 | }
215 | else
216 | {
217 | if (profile.layouts.left != null)
218 | {
219 | layoutRoutings[(int)Handedness.left] = GetLayoutRouting(profile.layouts.left);
220 | }
221 | if (profile.layouts.right != null)
222 | {
223 | layoutRoutings[(int)Handedness.right] = GetLayoutRouting(profile.layouts.right);
224 | }
225 | }
226 |
227 | if (profile.layouts.none != null)
228 | {
229 | layoutRoutings[(int)Handedness.none] = GetLayoutRouting(profile.layouts.none);
230 | }
231 |
232 | return layoutRoutings;
233 | }
234 |
235 | private LayoutRouting GetLayoutRouting(Layout layout)
236 | {
237 | var layoutRouting = new LayoutRouting();
238 | layoutRouting.rootNodeName = layout.rootNodeName;
239 | layoutRouting.assetPath = layout.assetPath;
240 | foreach (var component in layout.components)
241 | {
242 | foreach (var visualResponse in component.Value.visualResponses)
243 | {
244 | switch (visualResponse.Value.componentProperty)
245 | {
246 | case ComponentPropertyTypes.button:
247 | layoutRouting.buttons[component.Value.gamepadIndices.button.Value] = visualResponse.Value;
248 | break;
249 | case ComponentPropertyTypes.xAxis:
250 | layoutRouting.axes[component.Value.gamepadIndices.xAxis.Value] = visualResponse.Value;
251 | break;
252 | case ComponentPropertyTypes.yAxis:
253 | layoutRouting.axes[component.Value.gamepadIndices.yAxis.Value] = visualResponse.Value;
254 | break;
255 | }
256 | }
257 | }
258 | return layoutRouting;
259 | }
260 |
261 | public InputProfileModel LoadModelForHand(string profileName, Handedness handedness, System.Action callback = null)
262 | {
263 | if (!downloadedProfiles.ContainsKey(profileName))
264 | {
265 | Debug.LogError("No profile");
266 | return null;
267 | }
268 | var layoutRoutings = cachedLayoutRoutings[profileName];
269 | if (layoutRoutings[(int)handedness] == null)
270 | {
271 | Debug.LogError("No model for hand");
272 | return null;
273 | }
274 | #if UNITY_EDITOR
275 | var modelObject = new GameObject(layoutRoutings[(int)handedness].rootNodeName);
276 | #else
277 | var modelObject = new GameObject();
278 | #endif
279 | var inputProfileModel = modelObject.AddComponent();
280 | string assetPath = profilesUrl + downloadedProfiles[profileName].profileId + "/" + layoutRoutings[(int)handedness].assetPath;
281 | inputProfileModel.Init(layoutRoutings[(int)handedness], assetPath, callback);
282 | return inputProfileModel;
283 | }
284 |
285 | public bool HasModelForHand(string profileName, Handedness handedness)
286 | {
287 | if (cachedLayoutRoutings.ContainsKey(profileName))
288 | {
289 | return cachedLayoutRoutings[profileName][(int)handedness] != null;
290 | }
291 | return false;
292 | }
293 | }
294 | }
295 |
--------------------------------------------------------------------------------
/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.de-panther.webxr-input-profiles-loader": {
4 | "version": "file:webxr-input-profiles-loader",
5 | "depth": 0,
6 | "source": "embedded",
7 | "dependencies": {
8 | "com.unity.nuget.newtonsoft-json": "2.0.0",
9 | "com.unity.cloud.gltfast": "5.2.0"
10 | }
11 | },
12 | "com.unity.burst": {
13 | "version": "1.6.6",
14 | "depth": 1,
15 | "source": "registry",
16 | "dependencies": {
17 | "com.unity.mathematics": "1.2.1"
18 | },
19 | "url": "https://packages.unity.com"
20 | },
21 | "com.unity.cloud.gltfast": {
22 | "version": "5.2.0",
23 | "depth": 0,
24 | "source": "registry",
25 | "dependencies": {
26 | "com.unity.modules.jsonserialize": "1.0.0",
27 | "com.unity.modules.unitywebrequest": "1.0.0",
28 | "com.unity.mathematics": "1.2.6",
29 | "com.unity.burst": "1.6.6"
30 | },
31 | "url": "https://packages.unity.com"
32 | },
33 | "com.unity.collab-proxy": {
34 | "version": "1.14.1",
35 | "depth": 0,
36 | "source": "registry",
37 | "dependencies": {},
38 | "url": "https://packages.unity.com"
39 | },
40 | "com.unity.ext.nunit": {
41 | "version": "1.0.6",
42 | "depth": 1,
43 | "source": "registry",
44 | "dependencies": {},
45 | "url": "https://packages.unity.com"
46 | },
47 | "com.unity.ide.rider": {
48 | "version": "1.2.1",
49 | "depth": 0,
50 | "source": "registry",
51 | "dependencies": {
52 | "com.unity.test-framework": "1.1.1"
53 | },
54 | "url": "https://packages.unity.com"
55 | },
56 | "com.unity.ide.visualstudio": {
57 | "version": "2.0.11",
58 | "depth": 0,
59 | "source": "registry",
60 | "dependencies": {
61 | "com.unity.test-framework": "1.1.9"
62 | },
63 | "url": "https://packages.unity.com"
64 | },
65 | "com.unity.ide.vscode": {
66 | "version": "1.2.5",
67 | "depth": 0,
68 | "source": "registry",
69 | "dependencies": {},
70 | "url": "https://packages.unity.com"
71 | },
72 | "com.unity.mathematics": {
73 | "version": "1.2.6",
74 | "depth": 1,
75 | "source": "registry",
76 | "dependencies": {},
77 | "url": "https://packages.unity.com"
78 | },
79 | "com.unity.nuget.newtonsoft-json": {
80 | "version": "2.0.0",
81 | "depth": 0,
82 | "source": "registry",
83 | "dependencies": {},
84 | "url": "https://packages.unity.com"
85 | },
86 | "com.unity.test-framework": {
87 | "version": "1.1.29",
88 | "depth": 0,
89 | "source": "registry",
90 | "dependencies": {
91 | "com.unity.ext.nunit": "1.0.6",
92 | "com.unity.modules.imgui": "1.0.0",
93 | "com.unity.modules.jsonserialize": "1.0.0"
94 | },
95 | "url": "https://packages.unity.com"
96 | },
97 | "com.unity.textmeshpro": {
98 | "version": "2.1.4",
99 | "depth": 0,
100 | "source": "registry",
101 | "dependencies": {
102 | "com.unity.ugui": "1.0.0"
103 | },
104 | "url": "https://packages.unity.com"
105 | },
106 | "com.unity.timeline": {
107 | "version": "1.2.18",
108 | "depth": 0,
109 | "source": "registry",
110 | "dependencies": {
111 | "com.unity.modules.director": "1.0.0",
112 | "com.unity.modules.animation": "1.0.0",
113 | "com.unity.modules.audio": "1.0.0",
114 | "com.unity.modules.particlesystem": "1.0.0"
115 | },
116 | "url": "https://packages.unity.com"
117 | },
118 | "com.unity.ugui": {
119 | "version": "1.0.0",
120 | "depth": 0,
121 | "source": "builtin",
122 | "dependencies": {
123 | "com.unity.modules.ui": "1.0.0",
124 | "com.unity.modules.imgui": "1.0.0"
125 | }
126 | },
127 | "com.unity.modules.ai": {
128 | "version": "1.0.0",
129 | "depth": 0,
130 | "source": "builtin",
131 | "dependencies": {}
132 | },
133 | "com.unity.modules.androidjni": {
134 | "version": "1.0.0",
135 | "depth": 0,
136 | "source": "builtin",
137 | "dependencies": {}
138 | },
139 | "com.unity.modules.animation": {
140 | "version": "1.0.0",
141 | "depth": 0,
142 | "source": "builtin",
143 | "dependencies": {}
144 | },
145 | "com.unity.modules.assetbundle": {
146 | "version": "1.0.0",
147 | "depth": 0,
148 | "source": "builtin",
149 | "dependencies": {}
150 | },
151 | "com.unity.modules.audio": {
152 | "version": "1.0.0",
153 | "depth": 0,
154 | "source": "builtin",
155 | "dependencies": {}
156 | },
157 | "com.unity.modules.cloth": {
158 | "version": "1.0.0",
159 | "depth": 0,
160 | "source": "builtin",
161 | "dependencies": {
162 | "com.unity.modules.physics": "1.0.0"
163 | }
164 | },
165 | "com.unity.modules.director": {
166 | "version": "1.0.0",
167 | "depth": 0,
168 | "source": "builtin",
169 | "dependencies": {
170 | "com.unity.modules.audio": "1.0.0",
171 | "com.unity.modules.animation": "1.0.0"
172 | }
173 | },
174 | "com.unity.modules.imageconversion": {
175 | "version": "1.0.0",
176 | "depth": 0,
177 | "source": "builtin",
178 | "dependencies": {}
179 | },
180 | "com.unity.modules.imgui": {
181 | "version": "1.0.0",
182 | "depth": 0,
183 | "source": "builtin",
184 | "dependencies": {}
185 | },
186 | "com.unity.modules.jsonserialize": {
187 | "version": "1.0.0",
188 | "depth": 0,
189 | "source": "builtin",
190 | "dependencies": {}
191 | },
192 | "com.unity.modules.particlesystem": {
193 | "version": "1.0.0",
194 | "depth": 0,
195 | "source": "builtin",
196 | "dependencies": {}
197 | },
198 | "com.unity.modules.physics": {
199 | "version": "1.0.0",
200 | "depth": 0,
201 | "source": "builtin",
202 | "dependencies": {}
203 | },
204 | "com.unity.modules.physics2d": {
205 | "version": "1.0.0",
206 | "depth": 0,
207 | "source": "builtin",
208 | "dependencies": {}
209 | },
210 | "com.unity.modules.screencapture": {
211 | "version": "1.0.0",
212 | "depth": 0,
213 | "source": "builtin",
214 | "dependencies": {
215 | "com.unity.modules.imageconversion": "1.0.0"
216 | }
217 | },
218 | "com.unity.modules.subsystems": {
219 | "version": "1.0.0",
220 | "depth": 1,
221 | "source": "builtin",
222 | "dependencies": {
223 | "com.unity.modules.jsonserialize": "1.0.0"
224 | }
225 | },
226 | "com.unity.modules.terrain": {
227 | "version": "1.0.0",
228 | "depth": 0,
229 | "source": "builtin",
230 | "dependencies": {}
231 | },
232 | "com.unity.modules.terrainphysics": {
233 | "version": "1.0.0",
234 | "depth": 0,
235 | "source": "builtin",
236 | "dependencies": {
237 | "com.unity.modules.physics": "1.0.0",
238 | "com.unity.modules.terrain": "1.0.0"
239 | }
240 | },
241 | "com.unity.modules.tilemap": {
242 | "version": "1.0.0",
243 | "depth": 0,
244 | "source": "builtin",
245 | "dependencies": {
246 | "com.unity.modules.physics2d": "1.0.0"
247 | }
248 | },
249 | "com.unity.modules.ui": {
250 | "version": "1.0.0",
251 | "depth": 0,
252 | "source": "builtin",
253 | "dependencies": {}
254 | },
255 | "com.unity.modules.uielements": {
256 | "version": "1.0.0",
257 | "depth": 0,
258 | "source": "builtin",
259 | "dependencies": {
260 | "com.unity.modules.imgui": "1.0.0",
261 | "com.unity.modules.jsonserialize": "1.0.0"
262 | }
263 | },
264 | "com.unity.modules.umbra": {
265 | "version": "1.0.0",
266 | "depth": 0,
267 | "source": "builtin",
268 | "dependencies": {}
269 | },
270 | "com.unity.modules.unityanalytics": {
271 | "version": "1.0.0",
272 | "depth": 0,
273 | "source": "builtin",
274 | "dependencies": {
275 | "com.unity.modules.unitywebrequest": "1.0.0",
276 | "com.unity.modules.jsonserialize": "1.0.0"
277 | }
278 | },
279 | "com.unity.modules.unitywebrequest": {
280 | "version": "1.0.0",
281 | "depth": 0,
282 | "source": "builtin",
283 | "dependencies": {}
284 | },
285 | "com.unity.modules.unitywebrequestassetbundle": {
286 | "version": "1.0.0",
287 | "depth": 0,
288 | "source": "builtin",
289 | "dependencies": {
290 | "com.unity.modules.assetbundle": "1.0.0",
291 | "com.unity.modules.unitywebrequest": "1.0.0"
292 | }
293 | },
294 | "com.unity.modules.unitywebrequestaudio": {
295 | "version": "1.0.0",
296 | "depth": 0,
297 | "source": "builtin",
298 | "dependencies": {
299 | "com.unity.modules.unitywebrequest": "1.0.0",
300 | "com.unity.modules.audio": "1.0.0"
301 | }
302 | },
303 | "com.unity.modules.unitywebrequesttexture": {
304 | "version": "1.0.0",
305 | "depth": 0,
306 | "source": "builtin",
307 | "dependencies": {
308 | "com.unity.modules.unitywebrequest": "1.0.0",
309 | "com.unity.modules.imageconversion": "1.0.0"
310 | }
311 | },
312 | "com.unity.modules.unitywebrequestwww": {
313 | "version": "1.0.0",
314 | "depth": 0,
315 | "source": "builtin",
316 | "dependencies": {
317 | "com.unity.modules.unitywebrequest": "1.0.0",
318 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
319 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
320 | "com.unity.modules.audio": "1.0.0",
321 | "com.unity.modules.assetbundle": "1.0.0",
322 | "com.unity.modules.imageconversion": "1.0.0"
323 | }
324 | },
325 | "com.unity.modules.vehicles": {
326 | "version": "1.0.0",
327 | "depth": 0,
328 | "source": "builtin",
329 | "dependencies": {
330 | "com.unity.modules.physics": "1.0.0"
331 | }
332 | },
333 | "com.unity.modules.video": {
334 | "version": "1.0.0",
335 | "depth": 0,
336 | "source": "builtin",
337 | "dependencies": {
338 | "com.unity.modules.audio": "1.0.0",
339 | "com.unity.modules.ui": "1.0.0",
340 | "com.unity.modules.unitywebrequest": "1.0.0"
341 | }
342 | },
343 | "com.unity.modules.vr": {
344 | "version": "1.0.0",
345 | "depth": 0,
346 | "source": "builtin",
347 | "dependencies": {
348 | "com.unity.modules.jsonserialize": "1.0.0",
349 | "com.unity.modules.physics": "1.0.0",
350 | "com.unity.modules.xr": "1.0.0"
351 | }
352 | },
353 | "com.unity.modules.wind": {
354 | "version": "1.0.0",
355 | "depth": 0,
356 | "source": "builtin",
357 | "dependencies": {}
358 | },
359 | "com.unity.modules.xr": {
360 | "version": "1.0.0",
361 | "depth": 0,
362 | "source": "builtin",
363 | "dependencies": {
364 | "com.unity.modules.physics": "1.0.0",
365 | "com.unity.modules.jsonserialize": "1.0.0",
366 | "com.unity.modules.subsystems": "1.0.0"
367 | }
368 | }
369 | }
370 | }
371 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 20
7 | productGUID: 137937ad47f6725448713d275af1a3d4
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: De-Panther
16 | productName: WebXR Input Profiles Loader
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1024
46 | defaultScreenHeight: 768
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 400
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_MTRendering: 1
52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
53 | iosShowActivityIndicatorOnLoading: -1
54 | androidShowActivityIndicatorOnLoading: -1
55 | iosUseCustomAppBackgroundBehavior: 0
56 | iosAllowHTTPDownload: 1
57 | allowedAutorotateToPortrait: 1
58 | allowedAutorotateToPortraitUpsideDown: 1
59 | allowedAutorotateToLandscapeRight: 1
60 | allowedAutorotateToLandscapeLeft: 1
61 | useOSAutorotation: 1
62 | use32BitDisplayBuffer: 1
63 | preserveFramebufferAlpha: 0
64 | disableDepthAndStencilBuffers: 0
65 | androidStartInFullscreen: 1
66 | androidRenderOutsideSafeArea: 1
67 | androidUseSwappy: 0
68 | androidBlitType: 0
69 | defaultIsNativeResolution: 1
70 | macRetinaSupport: 1
71 | runInBackground: 1
72 | captureSingleScreen: 0
73 | muteOtherAudioSources: 0
74 | Prepare IOS For Recording: 0
75 | Force IOS Speakers When Recording: 0
76 | deferSystemGesturesMode: 0
77 | hideHomeButton: 0
78 | submitAnalytics: 1
79 | usePlayerLog: 1
80 | bakeCollisionMeshes: 0
81 | forceSingleInstance: 0
82 | useFlipModelSwapchain: 1
83 | resizableWindow: 0
84 | useMacAppStoreValidation: 0
85 | macAppStoreCategory: public.app-category.games
86 | gpuSkinning: 1
87 | xboxPIXTextureCapture: 0
88 | xboxEnableAvatar: 0
89 | xboxEnableKinect: 0
90 | xboxEnableKinectAutoTracking: 0
91 | xboxEnableFitness: 0
92 | visibleInBackground: 1
93 | allowFullscreenSwitch: 1
94 | fullscreenMode: 1
95 | xboxSpeechDB: 0
96 | xboxEnableHeadOrientation: 0
97 | xboxEnableGuest: 0
98 | xboxEnablePIXSampling: 0
99 | metalFramebufferOnly: 0
100 | xboxOneResolution: 0
101 | xboxOneSResolution: 0
102 | xboxOneXResolution: 3
103 | xboxOneMonoLoggingLevel: 0
104 | xboxOneLoggingLevel: 1
105 | xboxOneDisableEsram: 0
106 | xboxOneEnableTypeOptimization: 0
107 | xboxOnePresentImmediateThreshold: 0
108 | switchQueueCommandMemory: 0
109 | switchQueueControlMemory: 16384
110 | switchQueueComputeMemory: 262144
111 | switchNVNShaderPoolsGranularity: 33554432
112 | switchNVNDefaultPoolsGranularity: 16777216
113 | switchNVNOtherPoolsGranularity: 16777216
114 | switchNVNMaxPublicTextureIDCount: 0
115 | switchNVNMaxPublicSamplerIDCount: 0
116 | stadiaPresentMode: 0
117 | stadiaTargetFramerate: 0
118 | vulkanNumSwapchainBuffers: 3
119 | vulkanEnableSetSRGBWrite: 0
120 | vulkanEnableLateAcquireNextImage: 0
121 | m_SupportedAspectRatios:
122 | 4:3: 1
123 | 5:4: 1
124 | 16:10: 1
125 | 16:9: 1
126 | Others: 1
127 | bundleVersion: 0.1
128 | preloadedAssets: []
129 | metroInputSource: 0
130 | wsaTransparentSwapchain: 0
131 | m_HolographicPauseOnTrackingLoss: 1
132 | xboxOneDisableKinectGpuReservation: 1
133 | xboxOneEnable7thCore: 1
134 | vrSettings:
135 | cardboard:
136 | depthFormat: 0
137 | enableTransitionView: 0
138 | daydream:
139 | depthFormat: 0
140 | useSustainedPerformanceMode: 0
141 | enableVideoLayer: 0
142 | useProtectedVideoMemory: 0
143 | minimumSupportedHeadTracking: 0
144 | maximumSupportedHeadTracking: 1
145 | hololens:
146 | depthFormat: 1
147 | depthBufferSharingEnabled: 1
148 | lumin:
149 | depthFormat: 0
150 | frameTiming: 2
151 | enableGLCache: 0
152 | glCacheMaxBlobSize: 524288
153 | glCacheMaxFileSize: 8388608
154 | oculus:
155 | sharedDepthBuffer: 1
156 | dashSupport: 1
157 | lowOverheadMode: 0
158 | protectedContext: 0
159 | v2Signing: 1
160 | enable360StereoCapture: 0
161 | isWsaHolographicRemotingEnabled: 0
162 | enableFrameTimingStats: 0
163 | useHDRDisplay: 0
164 | D3DHDRBitDepth: 0
165 | m_ColorGamuts: 00000000
166 | targetPixelDensity: 30
167 | resolutionScalingMode: 0
168 | androidSupportedAspectRatio: 1
169 | androidMaxAspectRatio: 2.1
170 | applicationIdentifier: {}
171 | buildNumber: {}
172 | AndroidBundleVersionCode: 1
173 | AndroidMinSdkVersion: 19
174 | AndroidTargetSdkVersion: 0
175 | AndroidPreferredInstallLocation: 1
176 | aotOptions:
177 | stripEngineCode: 1
178 | iPhoneStrippingLevel: 0
179 | iPhoneScriptCallOptimization: 0
180 | ForceInternetPermission: 0
181 | ForceSDCardPermission: 0
182 | CreateWallpaper: 0
183 | APKExpansionFiles: 0
184 | keepLoadedShadersAlive: 0
185 | StripUnusedMeshComponents: 1
186 | VertexChannelCompressionMask: 4054
187 | iPhoneSdkVersion: 988
188 | iOSTargetOSVersionString: 10.0
189 | tvOSSdkVersion: 0
190 | tvOSRequireExtendedGameController: 0
191 | tvOSTargetOSVersionString: 10.0
192 | uIPrerenderedIcon: 0
193 | uIRequiresPersistentWiFi: 0
194 | uIRequiresFullScreen: 1
195 | uIStatusBarHidden: 1
196 | uIExitOnSuspend: 0
197 | uIStatusBarStyle: 0
198 | appleTVSplashScreen: {fileID: 0}
199 | appleTVSplashScreen2x: {fileID: 0}
200 | tvOSSmallIconLayers: []
201 | tvOSSmallIconLayers2x: []
202 | tvOSLargeIconLayers: []
203 | tvOSLargeIconLayers2x: []
204 | tvOSTopShelfImageLayers: []
205 | tvOSTopShelfImageLayers2x: []
206 | tvOSTopShelfImageWideLayers: []
207 | tvOSTopShelfImageWideLayers2x: []
208 | iOSLaunchScreenType: 0
209 | iOSLaunchScreenPortrait: {fileID: 0}
210 | iOSLaunchScreenLandscape: {fileID: 0}
211 | iOSLaunchScreenBackgroundColor:
212 | serializedVersion: 2
213 | rgba: 0
214 | iOSLaunchScreenFillPct: 100
215 | iOSLaunchScreenSize: 100
216 | iOSLaunchScreenCustomXibPath:
217 | iOSLaunchScreeniPadType: 0
218 | iOSLaunchScreeniPadImage: {fileID: 0}
219 | iOSLaunchScreeniPadBackgroundColor:
220 | serializedVersion: 2
221 | rgba: 0
222 | iOSLaunchScreeniPadFillPct: 100
223 | iOSLaunchScreeniPadSize: 100
224 | iOSLaunchScreeniPadCustomXibPath:
225 | iOSUseLaunchScreenStoryboard: 0
226 | iOSLaunchScreenCustomStoryboardPath:
227 | iOSDeviceRequirements: []
228 | iOSURLSchemes: []
229 | iOSBackgroundModes: 0
230 | iOSMetalForceHardShadows: 0
231 | metalEditorSupport: 1
232 | metalAPIValidation: 1
233 | iOSRenderExtraFrameOnPause: 0
234 | appleDeveloperTeamID:
235 | iOSManualSigningProvisioningProfileID:
236 | tvOSManualSigningProvisioningProfileID:
237 | iOSManualSigningProvisioningProfileType: 0
238 | tvOSManualSigningProvisioningProfileType: 0
239 | appleEnableAutomaticSigning: 0
240 | iOSRequireARKit: 0
241 | iOSAutomaticallyDetectAndAddCapabilities: 1
242 | appleEnableProMotion: 0
243 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
244 | templatePackageId: com.unity.template.3d@4.2.8
245 | templateDefaultScene: Assets/Scenes/SampleScene.unity
246 | AndroidTargetArchitectures: 1
247 | AndroidSplashScreenScale: 0
248 | androidSplashScreen: {fileID: 0}
249 | AndroidKeystoreName:
250 | AndroidKeyaliasName:
251 | AndroidBuildApkPerCpuArchitecture: 0
252 | AndroidTVCompatibility: 0
253 | AndroidIsGame: 1
254 | AndroidEnableTango: 0
255 | androidEnableBanner: 1
256 | androidUseLowAccuracyLocation: 0
257 | androidUseCustomKeystore: 0
258 | m_AndroidBanners:
259 | - width: 320
260 | height: 180
261 | banner: {fileID: 0}
262 | androidGamepadSupportLevel: 0
263 | AndroidValidateAppBundleSize: 1
264 | AndroidAppBundleSizeToValidate: 150
265 | m_BuildTargetIcons: []
266 | m_BuildTargetPlatformIcons: []
267 | m_BuildTargetBatching:
268 | - m_BuildTarget: Standalone
269 | m_StaticBatching: 1
270 | m_DynamicBatching: 0
271 | - m_BuildTarget: tvOS
272 | m_StaticBatching: 1
273 | m_DynamicBatching: 0
274 | - m_BuildTarget: Android
275 | m_StaticBatching: 1
276 | m_DynamicBatching: 0
277 | - m_BuildTarget: iPhone
278 | m_StaticBatching: 1
279 | m_DynamicBatching: 0
280 | - m_BuildTarget: WebGL
281 | m_StaticBatching: 0
282 | m_DynamicBatching: 0
283 | m_BuildTargetGraphicsJobs:
284 | - m_BuildTarget: MacStandaloneSupport
285 | m_GraphicsJobs: 0
286 | - m_BuildTarget: Switch
287 | m_GraphicsJobs: 1
288 | - m_BuildTarget: MetroSupport
289 | m_GraphicsJobs: 1
290 | - m_BuildTarget: AppleTVSupport
291 | m_GraphicsJobs: 0
292 | - m_BuildTarget: BJMSupport
293 | m_GraphicsJobs: 1
294 | - m_BuildTarget: LinuxStandaloneSupport
295 | m_GraphicsJobs: 1
296 | - m_BuildTarget: PS4Player
297 | m_GraphicsJobs: 1
298 | - m_BuildTarget: iOSSupport
299 | m_GraphicsJobs: 0
300 | - m_BuildTarget: WindowsStandaloneSupport
301 | m_GraphicsJobs: 1
302 | - m_BuildTarget: XboxOnePlayer
303 | m_GraphicsJobs: 1
304 | - m_BuildTarget: LuminSupport
305 | m_GraphicsJobs: 0
306 | - m_BuildTarget: AndroidPlayer
307 | m_GraphicsJobs: 0
308 | - m_BuildTarget: WebGLSupport
309 | m_GraphicsJobs: 0
310 | m_BuildTargetGraphicsJobMode:
311 | - m_BuildTarget: PS4Player
312 | m_GraphicsJobMode: 0
313 | - m_BuildTarget: XboxOnePlayer
314 | m_GraphicsJobMode: 0
315 | m_BuildTargetGraphicsAPIs:
316 | - m_BuildTarget: AndroidPlayer
317 | m_APIs: 150000000b000000
318 | m_Automatic: 0
319 | - m_BuildTarget: iOSSupport
320 | m_APIs: 10000000
321 | m_Automatic: 1
322 | - m_BuildTarget: AppleTVSupport
323 | m_APIs: 10000000
324 | m_Automatic: 0
325 | - m_BuildTarget: WebGLSupport
326 | m_APIs: 0b000000
327 | m_Automatic: 1
328 | m_BuildTargetVRSettings:
329 | - m_BuildTarget: Standalone
330 | m_Enabled: 0
331 | m_Devices:
332 | - Oculus
333 | - OpenVR
334 | openGLRequireES31: 0
335 | openGLRequireES31AEP: 0
336 | openGLRequireES32: 0
337 | m_TemplateCustomTags: {}
338 | mobileMTRendering:
339 | Android: 1
340 | iPhone: 1
341 | tvOS: 1
342 | m_BuildTargetGroupLightmapEncodingQuality: []
343 | m_BuildTargetGroupLightmapSettings: []
344 | playModeTestRunnerEnabled: 0
345 | runPlayModeTestAsEditModeTest: 0
346 | actionOnDotNetUnhandledException: 1
347 | enableInternalProfiler: 0
348 | logObjCUncaughtExceptions: 1
349 | enableCrashReportAPI: 0
350 | cameraUsageDescription:
351 | locationUsageDescription:
352 | microphoneUsageDescription:
353 | switchNetLibKey:
354 | switchSocketMemoryPoolSize: 6144
355 | switchSocketAllocatorPoolSize: 128
356 | switchSocketConcurrencyLimit: 14
357 | switchScreenResolutionBehavior: 2
358 | switchUseCPUProfiler: 0
359 | switchApplicationID: 0x01004b9000490000
360 | switchNSODependencies:
361 | switchTitleNames_0:
362 | switchTitleNames_1:
363 | switchTitleNames_2:
364 | switchTitleNames_3:
365 | switchTitleNames_4:
366 | switchTitleNames_5:
367 | switchTitleNames_6:
368 | switchTitleNames_7:
369 | switchTitleNames_8:
370 | switchTitleNames_9:
371 | switchTitleNames_10:
372 | switchTitleNames_11:
373 | switchTitleNames_12:
374 | switchTitleNames_13:
375 | switchTitleNames_14:
376 | switchPublisherNames_0:
377 | switchPublisherNames_1:
378 | switchPublisherNames_2:
379 | switchPublisherNames_3:
380 | switchPublisherNames_4:
381 | switchPublisherNames_5:
382 | switchPublisherNames_6:
383 | switchPublisherNames_7:
384 | switchPublisherNames_8:
385 | switchPublisherNames_9:
386 | switchPublisherNames_10:
387 | switchPublisherNames_11:
388 | switchPublisherNames_12:
389 | switchPublisherNames_13:
390 | switchPublisherNames_14:
391 | switchIcons_0: {fileID: 0}
392 | switchIcons_1: {fileID: 0}
393 | switchIcons_2: {fileID: 0}
394 | switchIcons_3: {fileID: 0}
395 | switchIcons_4: {fileID: 0}
396 | switchIcons_5: {fileID: 0}
397 | switchIcons_6: {fileID: 0}
398 | switchIcons_7: {fileID: 0}
399 | switchIcons_8: {fileID: 0}
400 | switchIcons_9: {fileID: 0}
401 | switchIcons_10: {fileID: 0}
402 | switchIcons_11: {fileID: 0}
403 | switchIcons_12: {fileID: 0}
404 | switchIcons_13: {fileID: 0}
405 | switchIcons_14: {fileID: 0}
406 | switchSmallIcons_0: {fileID: 0}
407 | switchSmallIcons_1: {fileID: 0}
408 | switchSmallIcons_2: {fileID: 0}
409 | switchSmallIcons_3: {fileID: 0}
410 | switchSmallIcons_4: {fileID: 0}
411 | switchSmallIcons_5: {fileID: 0}
412 | switchSmallIcons_6: {fileID: 0}
413 | switchSmallIcons_7: {fileID: 0}
414 | switchSmallIcons_8: {fileID: 0}
415 | switchSmallIcons_9: {fileID: 0}
416 | switchSmallIcons_10: {fileID: 0}
417 | switchSmallIcons_11: {fileID: 0}
418 | switchSmallIcons_12: {fileID: 0}
419 | switchSmallIcons_13: {fileID: 0}
420 | switchSmallIcons_14: {fileID: 0}
421 | switchManualHTML:
422 | switchAccessibleURLs:
423 | switchLegalInformation:
424 | switchMainThreadStackSize: 1048576
425 | switchPresenceGroupId:
426 | switchLogoHandling: 0
427 | switchReleaseVersion: 0
428 | switchDisplayVersion: 1.0.0
429 | switchStartupUserAccount: 0
430 | switchTouchScreenUsage: 0
431 | switchSupportedLanguagesMask: 0
432 | switchLogoType: 0
433 | switchApplicationErrorCodeCategory:
434 | switchUserAccountSaveDataSize: 0
435 | switchUserAccountSaveDataJournalSize: 0
436 | switchApplicationAttribute: 0
437 | switchCardSpecSize: -1
438 | switchCardSpecClock: -1
439 | switchRatingsMask: 0
440 | switchRatingsInt_0: 0
441 | switchRatingsInt_1: 0
442 | switchRatingsInt_2: 0
443 | switchRatingsInt_3: 0
444 | switchRatingsInt_4: 0
445 | switchRatingsInt_5: 0
446 | switchRatingsInt_6: 0
447 | switchRatingsInt_7: 0
448 | switchRatingsInt_8: 0
449 | switchRatingsInt_9: 0
450 | switchRatingsInt_10: 0
451 | switchRatingsInt_11: 0
452 | switchRatingsInt_12: 0
453 | switchLocalCommunicationIds_0:
454 | switchLocalCommunicationIds_1:
455 | switchLocalCommunicationIds_2:
456 | switchLocalCommunicationIds_3:
457 | switchLocalCommunicationIds_4:
458 | switchLocalCommunicationIds_5:
459 | switchLocalCommunicationIds_6:
460 | switchLocalCommunicationIds_7:
461 | switchParentalControl: 0
462 | switchAllowsScreenshot: 1
463 | switchAllowsVideoCapturing: 1
464 | switchAllowsRuntimeAddOnContentInstall: 0
465 | switchDataLossConfirmation: 0
466 | switchUserAccountLockEnabled: 0
467 | switchSystemResourceMemory: 16777216
468 | switchSupportedNpadStyles: 22
469 | switchNativeFsCacheSize: 32
470 | switchIsHoldTypeHorizontal: 0
471 | switchSupportedNpadCount: 8
472 | switchSocketConfigEnabled: 0
473 | switchTcpInitialSendBufferSize: 32
474 | switchTcpInitialReceiveBufferSize: 64
475 | switchTcpAutoSendBufferSizeMax: 256
476 | switchTcpAutoReceiveBufferSizeMax: 256
477 | switchUdpSendBufferSize: 9
478 | switchUdpReceiveBufferSize: 42
479 | switchSocketBufferEfficiency: 4
480 | switchSocketInitializeEnabled: 1
481 | switchNetworkInterfaceManagerInitializeEnabled: 1
482 | switchPlayerConnectionEnabled: 1
483 | ps4NPAgeRating: 12
484 | ps4NPTitleSecret:
485 | ps4NPTrophyPackPath:
486 | ps4ParentalLevel: 11
487 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
488 | ps4Category: 0
489 | ps4MasterVersion: 01.00
490 | ps4AppVersion: 01.00
491 | ps4AppType: 0
492 | ps4ParamSfxPath:
493 | ps4VideoOutPixelFormat: 0
494 | ps4VideoOutInitialWidth: 1920
495 | ps4VideoOutBaseModeInitialWidth: 1920
496 | ps4VideoOutReprojectionRate: 60
497 | ps4PronunciationXMLPath:
498 | ps4PronunciationSIGPath:
499 | ps4BackgroundImagePath:
500 | ps4StartupImagePath:
501 | ps4StartupImagesFolder:
502 | ps4IconImagesFolder:
503 | ps4SaveDataImagePath:
504 | ps4SdkOverride:
505 | ps4BGMPath:
506 | ps4ShareFilePath:
507 | ps4ShareOverlayImagePath:
508 | ps4PrivacyGuardImagePath:
509 | ps4NPtitleDatPath:
510 | ps4RemotePlayKeyAssignment: -1
511 | ps4RemotePlayKeyMappingDir:
512 | ps4PlayTogetherPlayerCount: 0
513 | ps4EnterButtonAssignment: 1
514 | ps4ApplicationParam1: 0
515 | ps4ApplicationParam2: 0
516 | ps4ApplicationParam3: 0
517 | ps4ApplicationParam4: 0
518 | ps4DownloadDataSize: 0
519 | ps4GarlicHeapSize: 2048
520 | ps4ProGarlicHeapSize: 2560
521 | playerPrefsMaxSize: 32768
522 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
523 | ps4pnSessions: 1
524 | ps4pnPresence: 1
525 | ps4pnFriends: 1
526 | ps4pnGameCustomData: 1
527 | playerPrefsSupport: 0
528 | enableApplicationExit: 0
529 | resetTempFolder: 1
530 | restrictedAudioUsageRights: 0
531 | ps4UseResolutionFallback: 0
532 | ps4ReprojectionSupport: 0
533 | ps4UseAudio3dBackend: 0
534 | ps4UseLowGarlicFragmentationMode: 1
535 | ps4SocialScreenEnabled: 0
536 | ps4ScriptOptimizationLevel: 0
537 | ps4Audio3dVirtualSpeakerCount: 14
538 | ps4attribCpuUsage: 0
539 | ps4PatchPkgPath:
540 | ps4PatchLatestPkgPath:
541 | ps4PatchChangeinfoPath:
542 | ps4PatchDayOne: 0
543 | ps4attribUserManagement: 0
544 | ps4attribMoveSupport: 0
545 | ps4attrib3DSupport: 0
546 | ps4attribShareSupport: 0
547 | ps4attribExclusiveVR: 0
548 | ps4disableAutoHideSplash: 0
549 | ps4videoRecordingFeaturesUsed: 0
550 | ps4contentSearchFeaturesUsed: 0
551 | ps4attribEyeToEyeDistanceSettingVR: 0
552 | ps4IncludedModules: []
553 | ps4attribVROutputEnabled: 0
554 | monoEnv:
555 | splashScreenBackgroundSourceLandscape: {fileID: 0}
556 | splashScreenBackgroundSourcePortrait: {fileID: 0}
557 | blurSplashScreenBackground: 1
558 | spritePackerPolicy:
559 | webGLMemorySize: 16
560 | webGLExceptionSupport: 1
561 | webGLNameFilesAsHashes: 0
562 | webGLDataCaching: 1
563 | webGLDebugSymbols: 0
564 | webGLEmscriptenArgs:
565 | webGLModulesDirectory:
566 | webGLTemplate: APPLICATION:Default
567 | webGLAnalyzeBuildSize: 0
568 | webGLUseEmbeddedResources: 0
569 | webGLCompressionFormat: 2
570 | webGLLinkerTarget: 1
571 | webGLThreadsSupport: 0
572 | webGLWasmStreaming: 1
573 | scriptingDefineSymbols: {}
574 | platformArchitecture: {}
575 | scriptingBackend: {}
576 | il2cppCompilerConfiguration: {}
577 | managedStrippingLevel: {}
578 | incrementalIl2cppBuild: {}
579 | allowUnsafeCode: 0
580 | additionalIl2CppArgs:
581 | scriptingRuntimeVersion: 1
582 | gcIncremental: 0
583 | gcWBarrierValidation: 0
584 | apiCompatibilityLevelPerPlatform: {}
585 | m_RenderingPath: 1
586 | m_MobileRenderingPath: 1
587 | metroPackageName: Template_3D
588 | metroPackageVersion:
589 | metroCertificatePath:
590 | metroCertificatePassword:
591 | metroCertificateSubject:
592 | metroCertificateIssuer:
593 | metroCertificateNotAfter: 0000000000000000
594 | metroApplicationDescription: Template_3D
595 | wsaImages: {}
596 | metroTileShortName:
597 | metroTileShowName: 0
598 | metroMediumTileShowName: 0
599 | metroLargeTileShowName: 0
600 | metroWideTileShowName: 0
601 | metroSupportStreamingInstall: 0
602 | metroLastRequiredScene: 0
603 | metroDefaultTileSize: 1
604 | metroTileForegroundText: 2
605 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
606 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
607 | a: 1}
608 | metroSplashScreenUseBackgroundColor: 0
609 | platformCapabilities: {}
610 | metroTargetDeviceFamilies: {}
611 | metroFTAName:
612 | metroFTAFileTypes: []
613 | metroProtocolName:
614 | XboxOneProductId:
615 | XboxOneUpdateKey:
616 | XboxOneSandboxId:
617 | XboxOneContentId:
618 | XboxOneTitleId:
619 | XboxOneSCId:
620 | XboxOneGameOsOverridePath:
621 | XboxOnePackagingOverridePath:
622 | XboxOneAppManifestOverridePath:
623 | XboxOneVersion: 1.0.0.0
624 | XboxOnePackageEncryption: 0
625 | XboxOnePackageUpdateGranularity: 2
626 | XboxOneDescription:
627 | XboxOneLanguage:
628 | - enus
629 | XboxOneCapability: []
630 | XboxOneGameRating: {}
631 | XboxOneIsContentPackage: 0
632 | XboxOneEnableGPUVariability: 1
633 | XboxOneSockets: {}
634 | XboxOneSplashScreen: {fileID: 0}
635 | XboxOneAllowedProductIds: []
636 | XboxOnePersistentLocalStorageSize: 0
637 | XboxOneXTitleMemory: 8
638 | XboxOneOverrideIdentityName:
639 | XboxOneOverrideIdentityPublisher:
640 | vrEditorSettings:
641 | daydream:
642 | daydreamIconForeground: {fileID: 0}
643 | daydreamIconBackground: {fileID: 0}
644 | cloudServicesEnabled:
645 | UNet: 1
646 | luminIcon:
647 | m_Name:
648 | m_ModelFolderPath:
649 | m_PortalFolderPath:
650 | luminCert:
651 | m_CertPath:
652 | m_SignPackage: 1
653 | luminIsChannelApp: 0
654 | luminVersion:
655 | m_VersionCode: 1
656 | m_VersionName:
657 | apiCompatibilityLevel: 6
658 | cloudProjectId:
659 | framebufferDepthMemorylessMode: 0
660 | projectName:
661 | organizationId:
662 | cloudEnabled: 0
663 | enableNativePlatformBackendsForNewInputSystem: 0
664 | disableOldInputManagerSupport: 0
665 | legacyClampBlendShapeWeights: 0
666 |
--------------------------------------------------------------------------------