diff --git a/Assets/OmniSDK.meta b/Assets/OmniSDK.meta new file mode 100644 index 0000000..fa28245 --- /dev/null +++ b/Assets/OmniSDK.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b3405f85171d5d049b1e88d877bf5e5f +folderAsset: yes +timeCreated: 1497495803 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Materials.meta b/Assets/OmniSDK/Materials.meta new file mode 100644 index 0000000..547ef61 --- /dev/null +++ b/Assets/OmniSDK/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b6a969af62f8456459fc3e229ad329bc +folderAsset: yes +timeCreated: 1459944434 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Materials/blueCylinder.mat b/Assets/OmniSDK/Materials/blueCylinder.mat new file mode 100644 index 0000000..28dc36e --- /dev/null +++ b/Assets/OmniSDK/Materials/blueCylinder.mat @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: blueCylinder + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 0.0068967342, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/OmniSDK/Materials/blueCylinder.mat.meta b/Assets/OmniSDK/Materials/blueCylinder.mat.meta new file mode 100644 index 0000000..d4b128f --- /dev/null +++ b/Assets/OmniSDK/Materials/blueCylinder.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e705d781b477d141a4ea1470438be7f +timeCreated: 1459944515 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Materials/greenCube.mat b/Assets/OmniSDK/Materials/greenCube.mat new file mode 100644 index 0000000..c013d0c --- /dev/null +++ b/Assets/OmniSDK/Materials/greenCube.mat @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: greenCube + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 1, b: 0.17241383, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/OmniSDK/Materials/greenCube.mat.meta b/Assets/OmniSDK/Materials/greenCube.mat.meta new file mode 100644 index 0000000..632b09c --- /dev/null +++ b/Assets/OmniSDK/Materials/greenCube.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2a3121ba16987641b46655eaef86c88 +timeCreated: 1459944518 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Materials/gridFloor.mat b/Assets/OmniSDK/Materials/gridFloor.mat new file mode 100644 index 0000000..42a1b7b --- /dev/null +++ b/Assets/OmniSDK/Materials/gridFloor.mat @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: gridFloor + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 10, y: 10} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 182fa9c20991bb64a873c30c3170549b, type: 3} + m_Scale: {x: 10, y: 10} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/OmniSDK/Materials/gridFloor.mat.meta b/Assets/OmniSDK/Materials/gridFloor.mat.meta new file mode 100644 index 0000000..52bcf43 --- /dev/null +++ b/Assets/OmniSDK/Materials/gridFloor.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00bbd658d0d73dd47a85c34c84b50ba3 +timeCreated: 1440516334 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Materials/purpleCapsule.mat b/Assets/OmniSDK/Materials/purpleCapsule.mat new file mode 100644 index 0000000..95576da --- /dev/null +++ b/Assets/OmniSDK/Materials/purpleCapsule.mat @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: purpleCapsule + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.51799965, g: 0, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/OmniSDK/Materials/purpleCapsule.mat.meta b/Assets/OmniSDK/Materials/purpleCapsule.mat.meta new file mode 100644 index 0000000..95cee36 --- /dev/null +++ b/Assets/OmniSDK/Materials/purpleCapsule.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 858e823dd3f9a15449ea6ea43ffec1b3 +timeCreated: 1459944522 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Materials/redSphere.mat b/Assets/OmniSDK/Materials/redSphere.mat new file mode 100644 index 0000000..b1744f9 --- /dev/null +++ b/Assets/OmniSDK/Materials/redSphere.mat @@ -0,0 +1,73 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: redSphere + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Glossiness: 0.5 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/OmniSDK/Materials/redSphere.mat.meta b/Assets/OmniSDK/Materials/redSphere.mat.meta new file mode 100644 index 0000000..4aefe64 --- /dev/null +++ b/Assets/OmniSDK/Materials/redSphere.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e33b59c060202e141b5d39e528998633 +timeCreated: 1459944499 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Plugins.meta b/Assets/OmniSDK/Plugins.meta new file mode 100644 index 0000000..8a38c34 --- /dev/null +++ b/Assets/OmniSDK/Plugins.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7ccf0e1125c4a66448d95c5a15e3eb3b +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Plugins/OmniCommon.dll b/Assets/OmniSDK/Plugins/OmniCommon.dll new file mode 100644 index 0000000..831bc45 Binary files /dev/null and b/Assets/OmniSDK/Plugins/OmniCommon.dll differ diff --git a/Assets/OmniSDK/Plugins/OmniCommon.dll.meta b/Assets/OmniSDK/Plugins/OmniCommon.dll.meta new file mode 100644 index 0000000..0ca88fe --- /dev/null +++ b/Assets/OmniSDK/Plugins/OmniCommon.dll.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: e8acc2fe1ea3bc5458b296c0d1eb5358 +timeCreated: 1497453920 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Plugins/hidapi.dll b/Assets/OmniSDK/Plugins/hidapi.dll new file mode 100644 index 0000000..61cfd10 Binary files /dev/null and b/Assets/OmniSDK/Plugins/hidapi.dll differ diff --git a/Assets/OmniSDK/Plugins/hidapi.dll.meta b/Assets/OmniSDK/Plugins/hidapi.dll.meta new file mode 100644 index 0000000..667034c --- /dev/null +++ b/Assets/OmniSDK/Plugins/hidapi.dll.meta @@ -0,0 +1,20 @@ +fileFormatVersion: 2 +guid: 6869f97e2f1fc2143a9c5104606b6e08 +timeCreated: 1497495852 +licenseType: Free +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Plugins/x64.meta b/Assets/OmniSDK/Plugins/x64.meta new file mode 100644 index 0000000..f751939 --- /dev/null +++ b/Assets/OmniSDK/Plugins/x64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8054d5b0c4bf9a747b9d738ea1bde351 +folderAsset: yes +timeCreated: 1471850818 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Plugins/x64/Omniverse.Functions.dll b/Assets/OmniSDK/Plugins/x64/Omniverse.Functions.dll new file mode 100644 index 0000000..410b350 Binary files /dev/null and b/Assets/OmniSDK/Plugins/x64/Omniverse.Functions.dll differ diff --git a/Assets/OmniSDK/Plugins/x64/Omniverse.Functions.dll.meta b/Assets/OmniSDK/Plugins/x64/Omniverse.Functions.dll.meta new file mode 100644 index 0000000..4e2342a --- /dev/null +++ b/Assets/OmniSDK/Plugins/x64/Omniverse.Functions.dll.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 51699a7f907ffe242ab4810b57255919 +timeCreated: 1498441537 +licenseType: Free +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + CPU: x86_64 + DefaultValueInitialized: true + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 1 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 1 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 1 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: x86_64 + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 1 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Prefabs.meta b/Assets/OmniSDK/Prefabs.meta new file mode 100644 index 0000000..b3880ab --- /dev/null +++ b/Assets/OmniSDK/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d7c8bf2044313a84f882df158a95783d +folderAsset: yes +timeCreated: 1440515699 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Prefabs/OmniCharacterController.prefab b/Assets/OmniSDK/Prefabs/OmniCharacterController.prefab new file mode 100644 index 0000000..f199acb --- /dev/null +++ b/Assets/OmniSDK/Prefabs/OmniCharacterController.prefab @@ -0,0 +1,584 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1000010745827638 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000011615638566} + m_Layer: 8 + m_Name: ForwardIndicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000011615638566 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010745827638} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 0.6300001, z: 0} + m_LocalScale: {x: 0.19953951, y: 0.21250719, z: 2.0859916} + m_Children: + - {fileID: 4000012198888954} + m_Father: {fileID: 4000012232001114} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1000011639520514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000012232001114} + - component: {fileID: 54000010204227658} + - component: {fileID: 143000013197982616} + - component: {fileID: 114000010963845762} + - component: {fileID: 114000011486231928} + m_Layer: 8 + m_Name: OmniCharacterController + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012232001114 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011639520514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000011615638566} + - {fileID: 4000011314157346} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &54000010204227658 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011639520514} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!143 &143000013197982616 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011639520514} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 1.8 + m_Radius: 0.5 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &114000010963845762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011639520514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4816de52c8590048a0c0dc7a647cbb2, type: 3} + m_Name: + m_EditorClassIdentifier: + maxSpeed: 7 + strafeSpeedMultiplier: 1 + backwardsSpeedMultiplier: 0.4 + gravityMultiplier: 0.8 + couplingPercentage: 1 + developerMode: 0 + hidInput: {x: 0, y: 0} + currentOmniYaw: 0 + currentStepCount: 0 + omniOffset: 0 + angleBetweenOmniAndCamera: 0 + omniFound: 0 + cameraReference: {fileID: 4000011557633224} + dummyObject: {fileID: 4000011615638566} +--- !u!114 &114000011486231928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011639520514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ee798ae13c81b874cb4936d55d659261, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1000012324955648 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224000011204668234} + - component: {fileID: 222000011434523264} + - component: {fileID: 114000012136671418} + - component: {fileID: 114000010731870442} + - component: {fileID: 114000013573299552} + m_Layer: 5 + m_Name: DebugText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224000011204668234 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012324955648} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -2.81} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_Children: [] + m_Father: {fileID: 224000010932287464} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1000, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222000011434523264 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012324955648} + m_CullTransparentMesh: 0 +--- !u!114 &114000012136671418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012324955648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 50 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 50 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Omni X: 1.0000 + + Omni Y: 1.0000 + + Omni Yaw: 500 + + Step Count: + 13249225902 + + Calibrated: ' +--- !u!114 &114000010731870442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012324955648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0.44117647, g: 0.44117647, b: 0.44117647, a: 0.5} + m_EffectDistance: {x: 2, y: 2} + m_UseGraphicAlpha: 1 +--- !u!114 &114000013573299552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012324955648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 4, y: -2} + m_UseGraphicAlpha: 1 +--- !u!1 &1000012517200622 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224000010932287464} + - component: {fileID: 223000013945533854} + - component: {fileID: 114000013872908850} + - component: {fileID: 114000012183324438} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &224000010932287464 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012517200622} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 12.04} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000011204668234} + m_Father: {fileID: 4000013786469220} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 394, y: 477} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &223000013945533854 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012517200622} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &114000013872908850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012517200622} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 1 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &114000012183324438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012517200622} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &1000013325373224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000011557633224} + - component: {fileID: 81000012959633612} + - component: {fileID: 20000012786038030} + m_Layer: 8 + m_Name: VR_Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000011557633224 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013325373224} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000013786469220} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!81 &81000012959633612 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013325373224} + m_Enabled: 1 +--- !u!20 &20000012786038030 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013325373224} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.01 + far clip plane: 400 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &1000013436857316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000013786469220} + m_Layer: 8 + m_Name: CameraSetupRootOffset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000013786469220 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013436857316} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000011557633224} + - {fileID: 224000010932287464} + m_Father: {fileID: 4000011314157346} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1000013635456490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000012198888954} + - component: {fileID: 33000014041854182} + - component: {fileID: 23000011279980360} + m_Layer: 8 + m_Name: Debug_ForwardIndicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &4000012198888954 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013635456490} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0.5} + m_LocalScale: {x: 0.25, y: 0.25, z: 1} + m_Children: [] + m_Father: {fileID: 4000011615638566} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33000014041854182 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013635456490} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000011279980360 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013635456490} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1000013858168224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000011314157346} + m_Layer: 8 + m_Name: CameraSetupParent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000011314157346 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013858168224} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000013786469220} + m_Father: {fileID: 4000012232001114} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/OmniSDK/Prefabs/OmniCharacterController.prefab.meta b/Assets/OmniSDK/Prefabs/OmniCharacterController.prefab.meta new file mode 100644 index 0000000..9995353 --- /dev/null +++ b/Assets/OmniSDK/Prefabs/OmniCharacterController.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 88c212ff2c682b548944fc43c2a387fb +timeCreated: 1498686736 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scenes.meta b/Assets/OmniSDK/Scenes.meta new file mode 100644 index 0000000..230ed13 --- /dev/null +++ b/Assets/OmniSDK/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f2250f03c44e28c4a8f9cbeb44a6185f +folderAsset: yes +timeCreated: 1440516319 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scenes/OmniTestScene.unity b/Assets/OmniSDK/Scenes/OmniTestScene.unity new file mode 100644 index 0000000..e9525e8 --- /dev/null +++ b/Assets/OmniSDK/Scenes/OmniTestScene.unity @@ -0,0 +1,760 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &315928642 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 315928644} + - component: {fileID: 315928643} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &315928643 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315928642} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &315928644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315928642} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &413110723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 413110727} + - component: {fileID: 413110726} + - component: {fileID: 413110725} + - component: {fileID: 413110724} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &413110724 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413110723} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e33b59c060202e141b5d39e528998633, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!135 &413110725 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413110723} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &413110726 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413110723} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &413110727 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 413110723} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 25, y: 1.5, z: 0} + m_LocalScale: {x: 3, y: 3, z: 3} + m_Children: [] + m_Father: {fileID: 2044030308} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &513774998 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 513775002} + - component: {fileID: 513775001} + - component: {fileID: 513775000} + - component: {fileID: 513774999} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &513774999 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 513774998} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 858e823dd3f9a15449ea6ea43ffec1b3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!136 &513775000 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 513774998} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &513775001 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 513774998} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &513775002 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 513774998} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -25, y: 1.5, z: 0} + m_LocalScale: {x: 3, y: 3, z: 3} + m_Children: [] + m_Father: {fileID: 2044030308} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &736008106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 736008110} + - component: {fileID: 736008109} + - component: {fileID: 736008108} + - component: {fileID: 736008107} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &736008107 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736008106} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5e705d781b477d141a4ea1470438be7f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!136 &736008108 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736008106} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &736008109 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736008106} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &736008110 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736008106} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.5, z: -25} + m_LocalScale: {x: 3, y: 3, z: 3} + m_Children: [] + m_Father: {fileID: 2044030308} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &858770709 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 858770713} + - component: {fileID: 858770712} + - component: {fileID: 858770711} + - component: {fileID: 858770710} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &858770710 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858770709} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e2a3121ba16987641b46655eaef86c88, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &858770711 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858770709} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &858770712 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858770709} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &858770713 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858770709} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.5, z: 25} + m_LocalScale: {x: 3, y: 3, z: 3} + m_Children: [] + m_Father: {fileID: 2044030308} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &881048882 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 881048886} + - component: {fileID: 881048885} + - component: {fileID: 881048884} + - component: {fileID: 881048883} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &881048883 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 881048882} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 00bbd658d0d73dd47a85c34c84b50ba3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!64 &881048884 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 881048882} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &881048885 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 881048882} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &881048886 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 881048882} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 25.83875, y: 25.83874, z: 25.83874} + m_Children: [] + m_Father: {fileID: 2044030308} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1796703798 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000012232001114, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012232001114, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000012232001114, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012232001114, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012232001114, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012232001114, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012232001114, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000012232001114, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 114000014200475062, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 88c212ff2c682b548944fc43c2a387fb, type: 3} +--- !u!1 &2044030307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2044030308} + m_Layer: 0 + m_Name: GridTestingLevel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2044030308 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2044030307} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 881048886} + - {fileID: 858770713} + - {fileID: 413110727} + - {fileID: 736008110} + - {fileID: 513775002} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/OmniSDK/Scenes/OmniTestScene.unity.meta b/Assets/OmniSDK/Scenes/OmniTestScene.unity.meta new file mode 100644 index 0000000..1bd50c3 --- /dev/null +++ b/Assets/OmniSDK/Scenes/OmniTestScene.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a83044e9aacb91b42adc275b1985ad72 +timeCreated: 1459339649 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts.meta b/Assets/OmniSDK/Scripts.meta new file mode 100644 index 0000000..5e64ef0 --- /dev/null +++ b/Assets/OmniSDK/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 76e0760eca614114f92851e09523163e +folderAsset: yes +timeCreated: 1440515560 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/OVSDK.cs b/Assets/OmniSDK/Scripts/OVSDK.cs new file mode 100644 index 0000000..2f0ab62 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OVSDK.cs @@ -0,0 +1,313 @@ +using UnityEngine; +using System.Runtime.InteropServices; +using System.IO; +using System; +using UnityEngine.UI; +using UnityEngine.VR; +using System.Xml; +using System.Collections.Generic; + +public class OVSDK : MonoBehaviour +{ + public static string _SDKVersion = "0.4.0"; + + public delegate void OVSDKEventCallback(int nMsgType, string sMsgContent); + public delegate void OVSDKBuyCallback(string sItem, string sOutTradeNo, string sInTradeNo, string sErr); + public delegate void OVSDKSaveGameDataCallback(int nError, string sMsg); + public delegate void OVSDKLoadGameDataCallback(int nError, string sMsg, IntPtr data, int len); + + static OVSDKEventCallback _DllEventCallback = null; + + [StructLayout(LayoutKind.Sequential)] + public struct DeviceInfo + { + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string sNo; //Omni serial-number; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string sUID; //Omni device UID in Omniverse backend. + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string sShopName; //Shop name + [MarshalAs(UnmanagedType.U4)] + public int nId; //for internal usage + [MarshalAs(UnmanagedType.U4)] + public int nShop; //Shop Id + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string sCategory;//for internal usage + } + + [StructLayout(LayoutKind.Sequential)] + public struct UserInfo + { + [MarshalAs(UnmanagedType.U4)] + public int nUserId; //The player's unique account id in Omniverse; + [MarshalAs(UnmanagedType.U4)] + public int nGameId; //GameID from OVSDK::Init + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] + string sCookies; //for internal usage + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)] + public string sGameSDKType; //Omniverse SDK type, "unty": unity-SDK, "ue4x": UE4-SDK; + [MarshalAs(UnmanagedType.U4)] + public int nGameSDKVersion; //Omniverse SDK version, version string 0xAAAA.0xBB.0xCC, format as uint32 0xAAAABBCC; + + [MarshalAs(UnmanagedType.U4)] + public int nGamePrepareLeft; //Game-prepare time left, use for single game ticket mode; + [MarshalAs(UnmanagedType.U4)] + public int nGameDurationLeft; //Game-play time left; + [MarshalAs(UnmanagedType.U4)] + public int nGamePrepare; //Game-prepare time, each game can config its own prepare time. The time is used to choose level, match game, but the duration is limited. + //If level or match start, you should call OVSDK.ConfirmPlayGame() to tell SDK countdown game-time now. + [MarshalAs(UnmanagedType.U4)] + public int nGameDuration; //Gameplay time; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string sBillingMode; //Ticket mode, "timing", "timingreal", "direct_game", "shiyu_coin", "game_auth", "timescount"; + [MarshalAs(UnmanagedType.U4)] + public int nUserProp; //for internal usage; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string sConsolePath; //for internal usage; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] + public char[] nCoupleRate; //Omni couple rate data of default + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] + public char[] nUserCoupleRate; //Omni couple rate setting about user + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)] + string sReserved; //for internal usage; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string sQrcode; //The omniverse trade number for this game ticket; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string sWeb2d; //for internal usage; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string sReserved2; //for internal usage; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string sUserName; //Player's nick game in Omniverse; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] + public string sUserPhone; //Player's phone number registered in Omniverse; (maybe masked, some character replaced by '*' for privacy) + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string sUserEmail; //Player's email registered in Omniverse; (maybe masked) + public double nUserBalance; //Player's balance in Omniverse; (In-game purchase costs this balance) + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)] + public string sUserIcon; //Player's portrait icon url; + [MarshalAs(UnmanagedType.U4)] + public int nDesktopDurationLeft;//for internal usage; + } + + // public interface for Game-developer + static bool _bIniting = false, _bInitDone = false, _bJustInitDone = false; + static string _sInitResult; + static int _nInitResultCode = 0; + static OVSDK _Instance = null; + public static OVSDK instance + { + get { + if (null == _Instance) + { + _Instance = GameObject.FindObjectOfType(); + if (null == _Instance) + { + GameObject go = new GameObject("OVSDK_GlobalInstance"); + _Instance = go.AddComponent(); + DontDestroyOnLoad(go); + } + } + + return _Instance; + } + } + public static void SetCallBackOnMsgFromSDK(OVSDKEventCallback cbHvMsg) + { + _DllEventCallback = cbHvMsg; + } + public static void Init(int nGameId, string sGameKey, string sParam) + { + if (null == OVSDK.instance) { + Debug.LogError("get OVSDK.instance failed."); + } + + //if (_bIniting || _bInitDone) { + // Debug.LogError("OVSDK should Init once only."); + //} + + _bIniting = true; + _bInitDone = _bJustInitDone = false; + + sParam = sParam + ";sdk_type=unty;sdk_version=" + _SDKVersion; + DllInit(nGameId, sGameKey, sParam, onEventFromSDK, IntPtr.Zero); + } + + public static bool HasInitialized() + { + return _bInitDone; + } + + public static bool JustInitialized() + { + return _bJustInitDone; + } + + public static int GetInitResultCode() + { + return _nInitResultCode; + } + + public static string GetInitResult() + { + return _sInitResult; + } + + public static DeviceInfo GetDeviceInfo() + { + DeviceInfo info = (DeviceInfo)Marshal.PtrToStructure(DllGetDeviceInfo(), typeof(DeviceInfo)); ; + return info; + } + + public static UserInfo GetUserInfo() + { + UserInfo info = (UserInfo)Marshal.PtrToStructure(DllGetUserInfo(), typeof(UserInfo)); + return info; + } + + public static bool IsGuest() + { + return DllIsGuest(); + } + + private static void onEventFromSDK(IntPtr sType, int nRetCode, IntPtr sRet, int nLen, IntPtr pUserData) + { + //string type = bytesToString(sType); + string type = Marshal.PtrToStringAnsi(sType); + string ret = ""; + + //ret = bytesToString(sRet, nLen); + ret = Marshal.PtrToStringAnsi(sRet, nLen); + Debug.Log("OVSDK.OnEventFromSDK(" + type + ", " + nRetCode + ",\n" + ret + ")"); + + if (type == "init") + { + _bInitDone = true; + _sInitResult = ret; + _nInitResultCode = nRetCode; + } + } + + + public static float GetOmniYawOffset() + { + return DllGetOmniYawOffset(); + } + + public static float GetOmniCoupleRate() + { + return DllGetOmniCoupleRate(); + } + + public static UInt32 GetUserOmniCoupleRate() + { + return DllGetUserOmniCoupleRate(); + } + + public static void SetOmniCoupleRate(float rate) + { + DllSetOmniCoupleRate(rate); + } + public static void SetOmniCoupleMode(bool useCoupleMode) + { + DllSetOmniCoupleMode(useCoupleMode); + } + + //---------------------------------------------------------------------------------------------------------------------------------- + // Omniverse.Functions.dll functions. + delegate void DllCallback(IntPtr sType, int nRetCode, IntPtr sRet, int nLen, IntPtr pUserData); + [DllImport("Omniverse.Functions")] + static extern bool DllInit(int nGameId, string sGameKey, string sParam, DllCallback cb, IntPtr pUserData); + + [DllImport("Omniverse.Functions")] + static extern void DllShutdown(); + + [DllImport("Omniverse.Functions")] + public static extern bool DllLaunchGame(string exe, string workdir, string cmdline, int game_id, int prepare_time); //启动游戏,传入参数 + + [DllImport("Omniverse.Functions")] + static extern bool DllIsDevMode(); + + [DllImport("Omniverse.Functions")] + static extern void DllDrive(); + + [DllImport("Omniverse.Functions")] + static extern void DllSendCommand(int nCmd, string sData, int nLen); + + [DllImport("Omniverse.Functions")] + static extern void DllBuy(string sItem, double nPrice, string sOutTradeNo); + + [DllImport("Omniverse.Functions")] + static extern IntPtr DllGetDeviceInfo(); + + [DllImport("Omniverse.Functions")] + static extern IntPtr DllGetUserInfo(); + + [DllImport("Omniverse.Functions")] + static extern float DllGetOmniYawOffset(); + + [DllImport("Omniverse.Functions")] + static extern float DllGetOmniCoupleRate(); + + [DllImport("Omniverse.Functions")] + static extern UInt32 DllGetUserOmniCoupleRate(); + + [DllImport("Omniverse.Functions")] + static extern void DllSetOmniCoupleRate(float coupleRate); + + [DllImport("Omniverse.Functions")] + static extern void DllSetOmniCoupleMode(bool useCoupleMode); + + [DllImport("Omniverse.Functions")] + static extern bool DllIsGuest(); + + [DllImport("Omniverse.Functions")] + static extern void DllSaveGameData(IntPtr data, int len); + + [DllImport("Omniverse.Functions")] + static extern void DllLoadGameData(); + + [DllImport("Omniverse.Functions")] + public static extern void DllTest(IntPtr param); + +#if UNITY_EDITOR + [DllImport("User32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)] + public static extern int MessageBox(IntPtr handle, String message, String title, int type); +#endif + + //---------------------------------------------------------------------------------------------------------------------------------- + // internal utility functions. + + void Start() + { + } + void Update() + { + DllDrive(); + + if (_bInitDone) + { + if (_bIniting) + { + _bIniting = false; + _bJustInitDone = true; + } + else if (_bJustInitDone) + { + _bJustInitDone = false; + } + } + } + void OnDestroy() + { + Debug.Log("OVSDK shutdown."); + DllShutdown(); + } +} \ No newline at end of file diff --git a/Assets/OmniSDK/Scripts/OVSDK.cs.meta b/Assets/OmniSDK/Scripts/OVSDK.cs.meta new file mode 100644 index 0000000..3c34ac3 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OVSDK.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1d235f39aecf8444699ab31ef3bdf0f6 +timeCreated: 1479458500 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/OmniConnectWebRequest.cs b/Assets/OmniSDK/Scripts/OmniConnectWebRequest.cs new file mode 100644 index 0000000..99724c9 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniConnectWebRequest.cs @@ -0,0 +1,54 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Text; +using UnityEngine.Networking; + +public class OmniConnectWebRequest : MonoBehaviour +{ + public static IEnumerator CoroutinePostRequest(string url, byte[] postRequest, System.Action result) + { + using (UnityWebRequest web = UnityWebRequest.Post(url, postRequest.ToString())) + { + yield return web.SendWebRequest(); + + if (web.isNetworkError || web.isHttpError) + { + Debug.LogError("OmniSDK: OmniConnectWebRequest failed post request at " + url + ": " + web.error + ". Ensure that Omni Connect is installed and running on your system."); + result("Error"); + } + else + { + Debug.Log("OmniSDK: SetOmniConnectGamepadMode Post Request Successful at " + url + web.downloadHandler.text); + result(web.downloadHandler.text); + } + } + } + + public static IEnumerator CoroutineGetRequest(string url, System.Action result) + { + using (UnityWebRequest web = UnityWebRequest.Get(url)) + { + yield return web.SendWebRequest(); + + if (web.isNetworkError || web.isHttpError) + { + Debug.LogError("OmniSDK: OmniConnectWebRequest failed get request at " + url + ": " + web.error + ". Ensure that Omni Connect is installed and running on your system."); + result("Error"); + } + else + { + Debug.Log("OmniSDK: OmniConnectWebRequest successful get request at " + url + ": " + web.downloadHandler.text); + result(web.downloadHandler.text); + } + + } + } + +} + +[Serializable] +public class OmniConnectMode +{ + public string Data; +} diff --git a/Assets/OmniSDK/Scripts/OmniConnectWebRequest.cs.meta b/Assets/OmniSDK/Scripts/OmniConnectWebRequest.cs.meta new file mode 100644 index 0000000..03b331f --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniConnectWebRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc7c9523ffb6f6f4784e37fb927397d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/OmniController_Example.cs b/Assets/OmniSDK/Scripts/OmniController_Example.cs new file mode 100644 index 0000000..f51c91a --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniController_Example.cs @@ -0,0 +1,78 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine.VR; +using UnityEngine; + +/* + + To add Omni Movement to an existing Character, follow the steps outlined below: + 1. Add the OmniMovementComponent Script to your Character. + 2. Inside of your Character Controller Script, create an OmniMovementComponent variable and get the Reference to the Component on Start(). + 3. Copy the UseOmniInputToMovePlayer() function to your Character Controller Script. + 4. Call the UseOmniInputToMovePlayer() function in your Character Controller Script's Update() function. + +*/ + +public class OmniController_Example : MonoBehaviour { + + protected OmniMovementComponent MovementComponent; + private CharacterController m_CharacterController; + private Camera cameraRef; + + private bool RotationCorrected = false; + + + // Use this for initialization + void Start () + { + MovementComponent = GetComponent(); + m_CharacterController = GetComponent(); + } + + void CorrectSpawnForward() + { + RotationCorrected = true; + + Vector3 resultRotation = new Vector3(0.0f, 0.0f, 0.0f); + Vector3 spawnRotation = transform.rotation.eulerAngles; + cameraRef = GameObject.FindGameObjectWithTag("MainCamera").GetComponent(); + Vector3 cameraRotation = cameraRef.transform.rotation.eulerAngles; + + float spawnRotationYaw = spawnRotation.y; + float cameraYaw = cameraRotation.y; + float difference = spawnRotationYaw - cameraYaw; + + resultRotation.y = difference; + + transform.Rotate(resultRotation); + } + + + // Update is called once per frame + void Update () + { + if(!RotationCorrected) + { + if(UnityEngine.XR.XRDevice.isPresent) + CorrectSpawnForward(); + } + + UseOmniInputToMovePlayer(); + } + + + // Gets Omni Movement Vectors from the OmniMovementComponent and uses them to Move the Player + void UseOmniInputToMovePlayer() + { + if (MovementComponent.omniFound) + MovementComponent.GetOmniInputForCharacterMovement(); + else if (MovementComponent.developerMode) + MovementComponent.DeveloperModeUpdate(); + + + if (MovementComponent.GetForwardMovement() != Vector3.zero) + m_CharacterController.Move(MovementComponent.GetForwardMovement()); + if (MovementComponent.GetStrafeMovement() != Vector3.zero) + m_CharacterController.Move(MovementComponent.GetStrafeMovement()); + } +} diff --git a/Assets/OmniSDK/Scripts/OmniController_Example.cs.meta b/Assets/OmniSDK/Scripts/OmniController_Example.cs.meta new file mode 100644 index 0000000..461f47d --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniController_Example.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ee798ae13c81b874cb4936d55d659261 +timeCreated: 1497453778 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/OmniHID.meta b/Assets/OmniSDK/Scripts/OmniHID.meta new file mode 100644 index 0000000..aea276d --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniHID.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cac0759786232554cac3c973b7959993 +folderAsset: yes +timeCreated: 1456163166 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/OmniHID/HIDapi.cs b/Assets/OmniSDK/Scripts/OmniHID/HIDapi.cs new file mode 100644 index 0000000..7d9383b --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniHID/HIDapi.cs @@ -0,0 +1,94 @@ +using UnityEngine; +using System.Runtime.InteropServices; +using System.Collections; +using System; +using System.Text; + +public class HIDapi +{ + + [DllImport("hidapi")] + public static extern int hid_init(); + + [DllImport("hidapi")] + public static extern int hid_exit(); + + [DllImport("hidapi")] + public static extern IntPtr hid_error(IntPtr device); + + [DllImport("hidapi")] + public static extern IntPtr hid_enumerate(ushort vendor_id, ushort product_id); + + [DllImport("hidapi")] + public static extern void hid_free_enumeration(IntPtr devs); + + [DllImport("hidapi")] + public static extern int hid_get_feature_report(IntPtr device, byte[] data, UIntPtr length); + + [DllImport("hidapi")] + public static extern int hid_get_indexed_string(IntPtr device, int string_index, StringBuilder str, UIntPtr maxlen); + + [DllImport("hidapi")] + public static extern int hid_get_manufacturer_string(IntPtr device, StringBuilder str, UIntPtr maxlen); + + [DllImport("hidapi")] + public static extern int hid_get_product_string(IntPtr device, StringBuilder str, UIntPtr maxlen); + + [DllImport("hidapi")] + public static extern int hid_get_serial_number_string(IntPtr device, StringBuilder str, UIntPtr maxlen); + + [DllImport("hidapi")] + public static extern IntPtr hid_open(ushort vendor_id, ushort product_id, string serial_number); + + [DllImport("hidapi")] + public static extern void hid_close(IntPtr device); + + [DllImport("hidapi")] + public static extern IntPtr hid_open_path(string path); + + [DllImport("hidapi")] + public static extern int hid_read(IntPtr device, byte[] data, UIntPtr length); + + [DllImport("hidapi")] + public static extern int hid_read_timeout(IntPtr dev, byte[] data, UIntPtr length, int milliseconds); + + [DllImport("hidapi")] + public static extern int hid_send_feature_report(IntPtr device, byte[] data, UIntPtr length); + + [DllImport("hidapi")] + public static extern int hid_set_nonblocking(IntPtr device, int nonblock); + + [DllImport("hidapi")] + public static extern int hid_write(IntPtr device, byte[] data, UIntPtr length); +} + +struct hid_device_info +{ + public string path; + public ushort vendor_id; + public ushort product_id; + public string serial_number; + public ushort release_number; + public string manufacturer_string; + public string product_string; + public ushort usage_page; + public ushort usage; + public int interface_number; + public IntPtr next; + + hid_device_info(int param = 0) + { + path = ""; + vendor_id = 0; + product_id = 0; + serial_number = ""; + release_number = 0; + manufacturer_string = ""; + product_string = ""; + usage_page = 0; + usage = 0; + interface_number = 0; + next = IntPtr.Zero; + } +} + diff --git a/Assets/OmniSDK/Scripts/OmniHID/HIDapi.cs.meta b/Assets/OmniSDK/Scripts/OmniHID/HIDapi.cs.meta new file mode 100644 index 0000000..b99d4e4 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniHID/HIDapi.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9867044fda4595044a0e8a7aa0c52dce +timeCreated: 1497453805 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/OmniHID/OmniManager.cs b/Assets/OmniSDK/Scripts/OmniHID/OmniManager.cs new file mode 100644 index 0000000..57d5550 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniHID/OmniManager.cs @@ -0,0 +1,109 @@ +using UnityEngine; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; + +public class OmniManager +{ + private const ushort vendor_id_omni = 0x29eb; + private const ushort product_id_omni = 0x00ff; + + private IntPtr hidapi_handle; + + private byte[] inputBuf = new byte[65]; + private byte[] outputBuf = new byte[65]; + + public bool omniDisconnected = true; + + + public bool FindOmni() + { + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniManager(FindOmni) - Trying to find the Omni"); + ushort vendor = 0; + ushort product = 0; + + vendor = vendor_id_omni; + product = product_id_omni; + + IntPtr ptr = HIDapi.hid_enumerate(vendor, product); + IntPtr cur_ptr = ptr; + + if (ptr == IntPtr.Zero) + return false; + + hid_device_info enumerate = (hid_device_info)Marshal.PtrToStructure(ptr, typeof(hid_device_info)); + + bool found = false; + + while (cur_ptr != IntPtr.Zero) + { + IntPtr handle = HIDapi.hid_open_path(enumerate.path); + + if (enumerate.path.Contains("mi_04")) + { + hidapi_handle = handle; + HIDapi.hid_set_nonblocking(hidapi_handle, 1); + found = true; + omniDisconnected = false; + break; + } + + if (enumerate.path.Contains("mi_00")) + { + hidapi_handle = handle; + HIDapi.hid_set_nonblocking(hidapi_handle, 1); + found = true; + omniDisconnected = false; + break; + } + + cur_ptr = enumerate.next; + if (cur_ptr != IntPtr.Zero) + enumerate = (hid_device_info)Marshal.PtrToStructure(cur_ptr, typeof(hid_device_info)); + } + HIDapi.hid_free_enumeration(ptr); + + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniManager(FindOmni) - Result of trying to find the Omni = " + found); + return found; + } + + public void Cleanup() + { + if (hidapi_handle != IntPtr.Zero) + { + HIDapi.hid_close(hidapi_handle); + hidapi_handle = IntPtr.Zero; + } + } + + public int ReadData(ref byte[] packet) + { + if (omniDisconnected) //if disconnected, don't do anything + return -2; + + if (hidapi_handle == IntPtr.Zero) return -2; + + Array.Clear(inputBuf, 0, 65); + + HIDapi.hid_read(hidapi_handle, inputBuf, new UIntPtr(Convert.ToUInt32(inputBuf.Length))); + + + if(inputBuf[0] != 0xEF) //Checking for invalid message + { + Debug.LogError(System.DateTime.Now.ToLongTimeString() + ": OmniManager(ReadData) - The Omni has been diconnected and is no longer being detected."); + omniDisconnected = true; + Cleanup(); + } + + if (inputBuf[2] == 169) // hex A9 + { + packet = new byte[inputBuf[1]]; + Buffer.BlockCopy(inputBuf, 0, packet, 0, inputBuf[1]); + } else + { + return -2; //pods off or write data + } + + return inputBuf[1]; + } +} diff --git a/Assets/OmniSDK/Scripts/OmniHID/OmniManager.cs.meta b/Assets/OmniSDK/Scripts/OmniHID/OmniManager.cs.meta new file mode 100644 index 0000000..dcb5f50 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniHID/OmniManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 136ac4fbc36a85d49af1ed135034593d +timeCreated: 1497453805 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/OmniMovementCalibration.cs b/Assets/OmniSDK/Scripts/OmniMovementCalibration.cs new file mode 100644 index 0000000..d089e10 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniMovementCalibration.cs @@ -0,0 +1,51 @@ +using UnityEngine; +using Microsoft.Win32; +using System; +using System.Collections; + +public class OmniMovementCalibration : MonoBehaviour { + + public static float GetCalibrationValue() + { + float consumerCalibrationValue; + + RegistryKey calibrationKey = Registry.CurrentUser.OpenSubKey(@"Software\HeroVR\SDK\OmniYawOffset", false); + if (calibrationKey == null) + { + Debug.LogError(System.DateTime.Now.ToLongTimeString() + ": OmniMovementCalibration(GetCalibrationValue) - You need to calibrate your Omni using the external calibration application"); + consumerCalibrationValue = 0.0f; + } + else + { + consumerCalibrationValue = Convert.ToSingle(calibrationKey.GetValue("")); + calibrationKey.Close(); + } + + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementCalibration(GetCalibrationValue) - Calibration Value = " + consumerCalibrationValue); + return consumerCalibrationValue; + } + + public static float GetCouplingPercentage() + { + float consumerCouplingPercentageValue; + + RegistryKey couplingPercentageKey = Registry.CurrentUser.OpenSubKey(@"Software\HeroVR\SDK\CouplingPercentage", false); + if (couplingPercentageKey == null) + { + RegistryKey newKey; + newKey = Registry.CurrentUser.CreateSubKey(@"Software\HeroVR\SDK\CouplingPercentage"); + newKey.SetValue("", 1.0f); + consumerCouplingPercentageValue = 1.0f; + newKey.Close(); + } + else + { + consumerCouplingPercentageValue = Convert.ToSingle(couplingPercentageKey.GetValue("")); + couplingPercentageKey.Close(); + } + + //Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementCalibration(GetCouplingPercentage) - Coupling Percentage = " + consumerCouplingPercentageValue); + return consumerCouplingPercentageValue; + + } +} diff --git a/Assets/OmniSDK/Scripts/OmniMovementCalibration.cs.meta b/Assets/OmniSDK/Scripts/OmniMovementCalibration.cs.meta new file mode 100644 index 0000000..d8bc107 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniMovementCalibration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9aec7aa2f7cfa8f49ab63331f8917527 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/OmniMovementComponent.cs b/Assets/OmniSDK/Scripts/OmniMovementComponent.cs new file mode 100644 index 0000000..176f634 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniMovementComponent.cs @@ -0,0 +1,699 @@ +using UnityEngine; +using System; +using System.IO; +using System.Threading; +using System.Runtime.InteropServices; +using System.Text; +using UnityEngine.VR; +using UnityEngine.UI; +using System.Collections; + +public delegate IntPtr WndProcDelegate(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); + +public class OmniMovementComponent : MonoBehaviour { + + [Header("-----Movement Options-----")] + + + [Tooltip("Affects overall speed forward, back, left, right.")] + public float maxSpeed = 10; + + [Range(0.0f, 1.0f)] + [Tooltip("Multiplier to reduce strafing speed (Strafing at full speed can feel too fast).")] + public float strafeSpeedMultiplier = 1.0f; + + [Range(0.0f, 1.0f)] + [Tooltip("Multiplier to reduce backwards speed (Moving backwards at full speed can feel too fast).")] + public float backwardsSpeedMultiplier = 1.0f; + + [Tooltip("Multiplier for gravity for character controller.")] + public float gravityMultiplier = 1; + + [HideInInspector] + [Range(0.0f, 1.0f)] + [Tooltip("Fully coupled to camera = 100%, Fully decoupled (follows torso/ring angle = 0%.")] + public float couplingPercentage = 1.0f; + + [Tooltip("Set to True if you want to use a joystick or WASD for testing instead of the Omni and no HMD. Please uncheck when you do a full build for release.")] + public bool developerMode = false; + + [Header("Output and Calculated Variables. Can be used to debug or poll during game.")] + [HideInInspector] + public Vector2 hidInput; // holds x and y values for movement from the controller + [HideInInspector] + public float currentOmniYaw; + [HideInInspector] + public int currentStepCount; + [HideInInspector] + public float omniOffset = 0f; + [HideInInspector] + public float angleBetweenOmniAndCamera; + + + //Has the Omni been found + [HideInInspector] + public bool omniFound = false; + + + [Header("-----GameObject References-----")] + public Transform cameraReference; + public Transform dummyObject; + + protected Vector3 dummyForward; + + protected CharacterController characterController; + protected bool hasCalibrated = false; + protected int startingStepCount; + protected bool hasSetCouplingPercentage = false; + + protected OmniManager omniManager; + + private const int SOP = (int)OmniCommon.packet_start_end.OMNI_SOP; + private const int EOP = (int)OmniCommon.packet_start_end.OMNI_EOP; + + /* Disable unused variable warnings */ +#pragma warning disable 0414 + protected static OmniCommon.Messages.OmniRawData rawData; + protected static OmniCommon.Messages.OmniMotionData motionData; +#pragma warning restore 0414 + + protected byte rawX = 0; + protected byte rawY = 0; + protected float omniX = 0; + protected float omniY = 0; + + protected bool hasFullyInitialized = false; + + //private int debugCounterForDataMessages = 0; + private bool debugNotReceivingData = false; + private bool hasReceivedOmniData = false; + private float joystickDeadzone = 0.05f; + + private Vector3 forwardMovement; + private Vector3 strafeMovement; + private enum SecureAuthenticationProtocolState { SAPEnabled, SAPDisabled, SAPError }; + private SecureAuthenticationProtocolState mySAPStatus = SecureAuthenticationProtocolState.SAPError; + private int SAPErrorChecks = 0; + + + #region reconnecting logic + IntPtr hMainWindow; + IntPtr oldWndProcPtr; + IntPtr newWndProcPtr; + WndProcDelegate newWndProc; + bool isrunning = false; + + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] + public static extern System.IntPtr GetForegroundWindow(); + + [DllImport("user32.dll")] + static extern IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong); + + [DllImport("user32.dll")] + static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); + + IntPtr wndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) + { + if (msg == 0x0219) + { + //Debug.LogError("Event Triggered; " + wParam.ToInt32());// + "; " + lParam.ToInt32()); + switch (wParam.ToInt32()) + { + case 0x8000: // DBT_DEVICEARRIVAL + //case 0x8004: // DBT_DEVICEREMOVECOMPLETE + //case 0x0007: // DBT_DEVNODES_CHANGED: + AttemptToReconnectTheOmni(); + break; + } + } + return CallWindowProc(oldWndProcPtr, hWnd, msg, wParam, lParam); + } + #endregion + + void Start() + { + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent- Omni/SecureOmni SDK Version 2.3"); + + if (!Application.isEditor) + { + developerMode = false; + } + + OmniInitialize(); + + Start_TryingtoReconnect(); + + } + + + void Start_TryingtoReconnect() + { + if (isrunning) return; + + hMainWindow = GetForegroundWindow(); + newWndProc = new WndProcDelegate(wndProc); + newWndProcPtr = Marshal.GetFunctionPointerForDelegate(newWndProc); + oldWndProcPtr = SetWindowLongPtr(hMainWindow, -4, newWndProcPtr); + isrunning = true; + } + + private IEnumerator ConfigureOmniConnect() + { + yield return new WaitForSeconds(3f); + StartCoroutine(SetGameMode()); + SAPErrorChecks = 0; + mySAPStatus = SecureAuthenticationProtocolState.SAPError; + StartCoroutine(VerifySAP()); + yield return new WaitForSeconds(10f); + string systemReadyCheckUrl = "http://localhost:8085/systemReady"; + string systemReadyWebResponse = "-1"; + yield return StartCoroutine(OmniConnectWebRequest.CoroutineGetRequest(systemReadyCheckUrl, value => systemReadyWebResponse = value)); + if (systemReadyWebResponse.Contains("OK;Secure;MotionDisabled")) + { + Debug.LogError("Authentication Protocol Failed. Your Omni is not registered and therefore cannot be enabled. Please contact your Omni provider to register your Omni."); + } + } + + private IEnumerator VerifySAP() + { + SecureAuthenticationProtocolState SAPGetResponse = SecureAuthenticationProtocolState.SAPError; + yield return StartCoroutine(GetSecureAuthentication(value => SAPGetResponse = value)); + mySAPStatus = SAPGetResponse; + if (mySAPStatus == SecureAuthenticationProtocolState.SAPEnabled) + { + Debug.Log("SAP Enabled. Initializing SDK."); + /* For Initialization to work, you must create a developer account, and register your game with Virtuix by + * emailing your Omni provider. Please provide the serial number for any Omnis that you wish to use for development.*/ + OVSDK.Init(1000, "01ec17dac7140c0fbe936ee128310000", "omni=1"); + hasSetCouplingPercentage = false; + } + else if (mySAPStatus == SecureAuthenticationProtocolState.SAPDisabled) + { + Debug.Log("SAP Disabled."); + hasSetCouplingPercentage = false; + } + else + { + if (SAPErrorChecks < 3) + { + SAPErrorChecks++; + yield return new WaitForSeconds(2f); + StartCoroutine(VerifySAP()); + } + else + { + Debug.LogError("There is an error with your configuration in Omni Connect. Ensure that Omni Connect is installed and running on your system. " + + "Verify that it is updated to the latest version and that the PODs are connected and on."); + } + } + + } + + private IEnumerator SetGameMode() + { + //Check the Game Mode to see if it is already set to "Gamepad" + string coroutineUrl = "http://localhost:8085/gamemode"; + string GameModeGetResponse = "-1"; + yield return StartCoroutine(OmniConnectWebRequest.CoroutineGetRequest(coroutineUrl, value => GameModeGetResponse = value)); + + //Set Game mode to "Gamepad" if it is not already. + if (!GameModeGetResponse.Contains("Gamepad") && GameModeGetResponse != "Error") + { + OmniConnectMode omniConnectMode = new OmniConnectMode + { + Data = "Gamepad" + }; + string json = JsonUtility.ToJson(omniConnectMode); + byte[] pData = Encoding.ASCII.GetBytes(json.ToCharArray()); + string webPostResponse = "-1"; + yield return StartCoroutine(OmniConnectWebRequest.CoroutinePostRequest(coroutineUrl, pData, value => webPostResponse = value)); + } + } + + private IEnumerator GetSecureAuthentication(Action result) + { + string versionCheckUrl = "http://localhost:8085/version"; + string versionWebResponse = "-1"; + yield return StartCoroutine(OmniConnectWebRequest.CoroutineGetRequest(versionCheckUrl, value => versionWebResponse = value)); + + string v1 = versionWebResponse[23].ToString() + versionWebResponse[24].ToString() + versionWebResponse[25].ToString() + versionWebResponse[26].ToString() + versionWebResponse[27].ToString() + versionWebResponse[28].ToString() + versionWebResponse[29].ToString(); + string v2 = "1.3.4.0"; + var version1 = new Version(v1); + var version2 = new Version(v2); + var versionComparisonResult = version1.CompareTo(version2); + + //If 1.3.4.0 or newer, use the new healthcheck endpoint. + if (versionComparisonResult >= 0) + { + string healthCheckUrl = "http://localhost:8085/healthcheck"; + string SACWebResponse = "-1"; + yield return StartCoroutine(OmniConnectWebRequest.CoroutineGetRequest(healthCheckUrl, value => SACWebResponse = value)); + + if (SACWebResponse != "Error") + { + switch (SACWebResponse[10]) + { + case 'B': + Debug.Log("Secure Authentication Protocol Enabled"); + result(SecureAuthenticationProtocolState.SAPEnabled); + break; + case 'U': + Debug.Log("Secure Authentication Protocol Disabled"); + result(SecureAuthenticationProtocolState.SAPDisabled); + break; + case '-': + Debug.Log("Omni Not Connected: Please Connect Omni"); + result(SecureAuthenticationProtocolState.SAPError); + break; + default: + Debug.Log("Secure Authentication Protocol check failed. Returned Default."); + result(SecureAuthenticationProtocolState.SAPError); + break; + } + } + } + + //If older than 1.3.4.0, use the old methods. + if (versionComparisonResult < 0) + { + string systemReadyCheckUrl = "http://localhost:8085/systemReady"; + string systemReadyWebResponse = "-1"; + yield return StartCoroutine(OmniConnectWebRequest.CoroutineGetRequest(systemReadyCheckUrl, value => systemReadyWebResponse = value)); + + if (systemReadyWebResponse.Contains("OK;Unsecure")) + { + result(SecureAuthenticationProtocolState.SAPDisabled); + } + else if (systemReadyWebResponse.Contains("OK;Secure")) + { + result(SecureAuthenticationProtocolState.SAPEnabled); + } + else + { + result(SecureAuthenticationProtocolState.SAPError); + } + } + } + + public Vector3 GetForwardMovement() + { + return forwardMovement; + } + + public Vector3 GetStrafeMovement() + { + return strafeMovement; + } + + //angle difference between camera and omni angle, used for decoupled effect + protected float ComputeAngleBetweenControllerAndCamera() + { + float cameraYaw = cameraReference.rotation.eulerAngles.y; + float adjustedOmniYaw = currentOmniYaw - omniOffset + transform.rotation.eulerAngles.y; + float angleBetweenControllerAndCamera = 0f; + angleBetweenControllerAndCamera = Mathf.Abs(cameraYaw - adjustedOmniYaw) % 360; + angleBetweenControllerAndCamera = angleBetweenControllerAndCamera > 180 ? 360 - angleBetweenControllerAndCamera : angleBetweenControllerAndCamera; + + //calculate sign + float angleForSignCalculation = (cameraYaw - adjustedOmniYaw) % 360; + + float sign = (angleForSignCalculation >= 0 && angleForSignCalculation <= 180) || + (angleForSignCalculation <= -180 && angleForSignCalculation >= -360) ? 1 : -1; + + angleBetweenControllerAndCamera *= sign; + + return angleBetweenControllerAndCamera; + } + + //called on exit + void OnApplicationQuit() + { + StopOmni(); + } + + //called on scene change + void OnDisable() + { + StopOmni(); + + // Disable the reconnect attempting + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(OnDisable) - Uninstall Hook"); + if (!isrunning) return; + SetWindowLongPtr(hMainWindow, -4, oldWndProcPtr); + hMainWindow = IntPtr.Zero; + oldWndProcPtr = IntPtr.Zero; + newWndProcPtr = IntPtr.Zero; + newWndProc = null; + isrunning = false; + } + + void StopOmni() + { + if (omniManager != null) + { + omniManager.Cleanup(); + omniManager = null; + } + } + + /// + /// Finds the Omni so we can start reading data. + /// + public virtual void OmniInitialize() + { + if (developerMode) + { + if (cameraReference == null) + { + Debug.LogError(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(OmniInitialize) - Attempted to Initialize the Omni - developer mode is true and Camera Reference not set in prefab."); + return; + } + + if (!UnityEngine.XR.XRDevice.isPresent) + { + cameraReference.gameObject.AddComponent(); + Vector3 adjustedCameraPosition = cameraReference.localPosition; + adjustedCameraPosition.y = 1.5f; + cameraReference.localPosition = adjustedCameraPosition; + } + return; + } + + // Create a new OmniManager and see if we can find the Omni + omniManager = new OmniManager(); + + if (omniManager.FindOmni()) + { + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(OmniInitialize) - Successfully found the Omni."); + omniFound = true; + } + else + { + Debug.LogError(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(OmniInitialize) - Attempted to Initialize the Omni, but Omni not found."); + omniFound = false; + return; + } + + } + + + + void AttemptToReconnectTheOmni() + { + if (omniManager == null) + omniManager = new OmniManager(); + + if (!omniManager.omniDisconnected) + return; + + if (omniManager.FindOmni()) + { + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(AttemptToReconnectTheOmni) - Successfully found the Omni for reconnect."); + omniFound = true; + } + else + { + Debug.LogError(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(AttemptToReconnectTheOmni) - Attempted to Reconnect the Omni, but Omni not found."); + omniFound = false; + return; + } + } + + + /// + /// Pulls packets from the Omni and decodes them to populate the class variables and motiondata. + /// + void ReadOmniData() + { + byte[] packet = null; + + if (omniManager.ReadData(ref packet) > 0) + { + OmniCommon.Messages.OmniBaseMessage obm = OmniCommon.OmniPacketBuilder.decodePacket(packet); + + if (debugNotReceivingData == true || hasReceivedOmniData == false) + { + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(ReadOmniData) - During this frame, the Omni started reading data from the Omni data packet."); + debugNotReceivingData = false; + StartCoroutine(ConfigureOmniConnect()); + + } + hasReceivedOmniData = true; + + if (obm != null) + { + switch (obm.MsgType) + { + case OmniCommon.Messages.MessageType.OmniMotionAndRawDataMessage: + OmniCommon.Messages.OmniMotionAndRawDataMessage OmniMotionAndRawData = new OmniCommon.Messages.OmniMotionAndRawDataMessage(obm); + motionData = OmniMotionAndRawData.GetMotionData(); + break; + default: + break; + } + } + } + else + { + motionData = null; + if (debugNotReceivingData == false) + { + Debug.LogError(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(ReadOmniData) - During this frame, the Omni stopped receiving valid data from the Omni data packet."); + debugNotReceivingData = true; + } + } + + if (motionData != null) + { + /* + debugCounterForDataMessages++; + if (debugCounterForDataMessages > 30) + { + Debug.Log(System.DateTime.Now.ToLongTimeString() + + ": Timestamp = " + motionData.Timestamp + + "; Step count = " + motionData.StepCount + + "; Ring Angle = " + motionData.RingAngle + + "; Ring Delta = " + motionData.RingDelta + + "; joy x = " + motionData.GamePad_X + + "; joy y = " + motionData.GamePad_Y); + debugCounterForDataMessages = 0; + }*/ + + currentOmniYaw = motionData.RingAngle; + + rawX = motionData.GamePad_X; + rawY = motionData.GamePad_Y; + omniX = motionData.GamePad_X; + omniY = motionData.GamePad_Y; + + if (omniX > 0) + { + omniX = (omniX / 255.0f) * 2f - 1f; + } + else + omniX = -1f; + + if (omniY > 0) + { + omniY = (omniY / 255.0f) * 2f - 1f; + } + else + omniY = -1; + + //clamp '0' + if (rawX == 127) + { + omniX = 0f; + } + if (rawY == 127) + { + omniY = 0f; + } + //@TODO - may need to change this for fully coupled mode... + omniY *= -1f; + hidInput = new Vector2(omniX, omniY); + + + if (hasFullyInitialized) UpdateStepCountFromMotionData(); + } + else + { + hidInput = Vector2.zero; + } + } + + + /// + /// Checks joystick or WASD for input if in developer mode + /// + void CheckInputForMovementTesting() + { + //Get values from joystick or WASD. + float inputX = Input.GetAxis("Horizontal"); + float inputY = Input.GetAxis("Vertical"); + + //Clamp to deadzone + + if (inputY < joystickDeadzone && inputY > 0 || inputY > -joystickDeadzone && inputY < 0) + { + inputY = 0; + } + + if (inputX < joystickDeadzone && inputX > 0 || inputX > -joystickDeadzone && inputX < 0) + { + inputX = 0; + } + + hidInput.y = inputY; + hidInput.x = inputX; + } + + + /// + /// Updates step count from motion data after getting the initial step count in the align. + /// + protected void UpdateStepCountFromMotionData() + { + if (motionData == null) return; + currentStepCount = (int)motionData.StepCount - startingStepCount; + } + + /// + /// Resets step counter to 0. Call at anytime you want to reset the step count. + /// + public void ResetStepCount() + { + if (motionData == null) return; + startingStepCount = (int)motionData.StepCount; + currentStepCount = 0; + } + + /// + /// Calibration Function. Sets up proper alignment between Omni and HMD based on Omni input data and HMD orientation. + /// + public virtual void CalibrateOmni() + { + if (!hasCalibrated) + { + //set offset to be current ring angle + if (motionData != null) + { + if ((cameraReference.transform.position.x != 0) && (cameraReference.transform.position.y != 0) && (cameraReference.transform.position.z != 0) && + (cameraReference.rotation.eulerAngles.x != 0) && (cameraReference.rotation.eulerAngles.y != 0) && (cameraReference.rotation.eulerAngles.z != 0)) + { + if (mySAPStatus == SecureAuthenticationProtocolState.SAPEnabled) + { + //omniOffset = OVSDK.GetOmniYawOffset(); + omniOffset = OmniMovementCalibration.GetCalibrationValue(); + } + else + { + omniOffset = OmniMovementCalibration.GetCalibrationValue(); + } + hasCalibrated = true; + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(CalibrateOmni) - Successfully calibrated Omni."); + } + if (!hasFullyInitialized) + { + //grab initial step count here + ResetStepCount(); + hasFullyInitialized = true; + + } + } + } + } + + + public void GetOmniInputForCharacterMovement() + { + if (cameraReference == null) + { + Debug.LogError("OmniMovementComponent(GetOmniInputForCharacterMovement) - Camera Reference not set in prefab."); + return; + } + + forwardMovement = new Vector3(0.0f, 0.0f, 0.0f); + strafeMovement = forwardMovement; + + //calculate angle between camera and omni + angleBetweenOmniAndCamera = ComputeAngleBetweenControllerAndCamera(); + + float forwardRotation = 0f; + + //keep within bounds (0, 360) + if (currentOmniYaw > 360f) currentOmniYaw -= 360f; + if (currentOmniYaw < 0f) currentOmniYaw += 360f; + + //Get the coupling percentage from Omniverse + if (hasSetCouplingPercentage == false) + { + if (mySAPStatus == SecureAuthenticationProtocolState.SAPEnabled) + { + //couplingPercentage = developerMode ? 1.0f : OVSDK.GetOmniCoupleRate(); + couplingPercentage = developerMode ? 1.0f : OmniMovementCalibration.GetCouplingPercentage(); + hasSetCouplingPercentage = true; + } + else + { + couplingPercentage = developerMode ? 1.0f : OmniMovementCalibration.GetCouplingPercentage(); + hasSetCouplingPercentage = true; + } + Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniMovementComponent(GetOmniInputForCharacterMovement) - Coupling Percentage = " + couplingPercentage); + } + + + //calculate forward rotation + forwardRotation = (currentOmniYaw - omniOffset + transform.rotation.eulerAngles.y) + (angleBetweenOmniAndCamera * couplingPercentage); + + //display forward rotation defined by our coupling percentage + dummyObject.rotation = Quaternion.Euler(0, forwardRotation, 0); + dummyForward = dummyObject.forward; + + //calculate forward movement + Vector3 movementInputVector = new Vector3(hidInput.y * dummyForward.x, 0, hidInput.y * dummyForward.z); + + //apply multiplier to reduce backwards movement speed by a given percentage + if (hidInput.y < 0) { movementInputVector *= backwardsSpeedMultiplier; } + + //display rounded values + if (dummyForward.x != 0) + dummyForward.x = Mathf.Round(dummyForward.x * 100) / 100; + if (dummyForward.z != 0) + dummyForward.z = Mathf.Round(dummyForward.z * 100) / 100; + + //apply gravity + movementInputVector += Physics.gravity * gravityMultiplier; + //perform forward movement + forwardMovement = (movementInputVector * maxSpeed * Time.deltaTime); + + + //check if there is strafe input + if (hidInput.x != 0) + { + //calculate strafe movement + movementInputVector = new Vector3(hidInput.x * dummyObject.right.x, 0, hidInput.x * dummyObject.right.z); + //apply modifier to reduce strafe movement by a given percentage + movementInputVector *= strafeSpeedMultiplier; + //apply gravity + movementInputVector += Physics.gravity * gravityMultiplier; + //perform strafe movement + strafeMovement = (movementInputVector * maxSpeed * Time.deltaTime); + } + } + + void Update() + { + if (!developerMode) + { + ReadOmniData(); + CalibrateOmni(); + } + } + + public virtual void DeveloperModeUpdate() + { + CheckInputForMovementTesting(); + GetOmniInputForCharacterMovement(); + } +} \ No newline at end of file diff --git a/Assets/OmniSDK/Scripts/OmniMovementComponent.cs.meta b/Assets/OmniSDK/Scripts/OmniMovementComponent.cs.meta new file mode 100644 index 0000000..20ce6d1 --- /dev/null +++ b/Assets/OmniSDK/Scripts/OmniMovementComponent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b4816de52c8590048a0c0dc7a647cbb2 +timeCreated: 1497453778 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Scripts/SmoothMouseLook.cs b/Assets/OmniSDK/Scripts/SmoothMouseLook.cs new file mode 100644 index 0000000..dcd6071 --- /dev/null +++ b/Assets/OmniSDK/Scripts/SmoothMouseLook.cs @@ -0,0 +1,149 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +[AddComponentMenu("Camera-Control/Smooth Mouse Look")] +public class SmoothMouseLook : MonoBehaviour +{ + + public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } + public RotationAxes axes = RotationAxes.MouseXAndY; + public float sensitivityX = 2.8F; + public float sensitivityY = 2.8F; + + public float minimumX = -360F; + public float maximumX = 360F; + + public float minimumY = -60F; + public float maximumY = 60F; + + float rotationX = 0F; + float rotationY = 0F; + + private List rotArrayX = new List(); + float rotAverageX = 0F; + + private List rotArrayY = new List(); + float rotAverageY = 0F; + + public float frameCounter = 3; + + Quaternion originalRotation; + + void Update() + { + if (axes == RotationAxes.MouseXAndY) + { + rotAverageY = 0f; + rotAverageX = 0f; + + rotationY += Input.GetAxis("Mouse Y") * sensitivityY; + rotationX += Input.GetAxis("Mouse X") * sensitivityX; + + rotArrayY.Add(rotationY); + rotArrayX.Add(rotationX); + + if (rotArrayY.Count >= frameCounter) + { + rotArrayY.RemoveAt(0); + } + if (rotArrayX.Count >= frameCounter) + { + rotArrayX.RemoveAt(0); + } + + for (int j = 0; j < rotArrayY.Count; j++) + { + rotAverageY += rotArrayY[j]; + } + for (int i = 0; i < rotArrayX.Count; i++) + { + rotAverageX += rotArrayX[i]; + } + + rotAverageY /= rotArrayY.Count; + rotAverageX /= rotArrayX.Count; + + rotAverageY = ClampAngle(rotAverageY, minimumY, maximumY); + rotAverageX = ClampAngle(rotAverageX, minimumX, maximumX); + + Quaternion yQuaternion = Quaternion.AngleAxis(rotAverageY, Vector3.left); + Quaternion xQuaternion = Quaternion.AngleAxis(rotAverageX, Vector3.up); + + transform.localRotation = originalRotation * xQuaternion * yQuaternion; + } + else if (axes == RotationAxes.MouseX) + { + rotAverageX = 0f; + + rotationX += Input.GetAxis("Mouse X") * sensitivityX; + + rotArrayX.Add(rotationX); + + if (rotArrayX.Count >= frameCounter) + { + rotArrayX.RemoveAt(0); + } + for (int i = 0; i < rotArrayX.Count; i++) + { + rotAverageX += rotArrayX[i]; + } + rotAverageX /= rotArrayX.Count; + + rotAverageX = ClampAngle(rotAverageX, minimumX, maximumX); + + Quaternion xQuaternion = Quaternion.AngleAxis(rotAverageX, Vector3.up); + transform.localRotation = originalRotation * xQuaternion; + } + else + { + rotAverageY = 0f; + + rotationY += Input.GetAxis("Mouse Y") * sensitivityY; + + rotArrayY.Add(rotationY); + + if (rotArrayY.Count >= frameCounter) + { + rotArrayY.RemoveAt(0); + } + for (int j = 0; j < rotArrayY.Count; j++) + { + rotAverageY += rotArrayY[j]; + } + rotAverageY /= rotArrayY.Count; + + rotAverageY = ClampAngle(rotAverageY, minimumY, maximumY); + + Quaternion yQuaternion = Quaternion.AngleAxis(rotAverageY, Vector3.left); + transform.localRotation = originalRotation * yQuaternion; + } + transform.localEulerAngles = new Vector3(transform.localRotation.eulerAngles.x, transform.localRotation.eulerAngles.y, 0.0f); + } + + void Start() + { + Debug.Log("SmoothMouseLook(Start) - Smooth Mouse Look added to the Character"); + Rigidbody rb = GetComponent(); + if (rb) + rb.freezeRotation = true; + originalRotation = transform.localRotation; + } + + public static float ClampAngle(float angle, float min, float max) + { + angle = angle % 360; + if ((angle >= -360F) && (angle <= 360F)) + { + if (angle < -360F) + { + angle += 360F; + } + if (angle > 360F) + { + angle -= 360F; + } + } + return Mathf.Clamp(angle, min, max); + } +} \ No newline at end of file diff --git a/Assets/OmniSDK/Scripts/SmoothMouseLook.cs.meta b/Assets/OmniSDK/Scripts/SmoothMouseLook.cs.meta new file mode 100644 index 0000000..0303e48 --- /dev/null +++ b/Assets/OmniSDK/Scripts/SmoothMouseLook.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: afad5bfc7bb772d42a301521e3cee584 +timeCreated: 1461919201 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Textures.meta b/Assets/OmniSDK/Textures.meta new file mode 100644 index 0000000..8c65d7d --- /dev/null +++ b/Assets/OmniSDK/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 14b3d8265b09caa4b8709cf8990ef82a +folderAsset: yes +timeCreated: 1459944460 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/OmniSDK/Textures/grid200.png b/Assets/OmniSDK/Textures/grid200.png new file mode 100644 index 0000000..788e315 Binary files /dev/null and b/Assets/OmniSDK/Textures/grid200.png differ diff --git a/Assets/OmniSDK/Textures/grid200.png.meta b/Assets/OmniSDK/Textures/grid200.png.meta new file mode 100644 index 0000000..f9bda4f --- /dev/null +++ b/Assets/OmniSDK/Textures/grid200.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 182fa9c20991bb64a873c30c3170549b +timeCreated: 1440516328 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: 2 + aniso: 9 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: