diff --git a/.gitignore b/.gitignore index 55835228153..158198f8c51 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ [Aa]pp/ UWP/ WindowsStoreApp/ +WSA/ UnityGenerated/ UnityPackageManager/ .out/ @@ -74,10 +75,19 @@ Assets/StreamingAssets.meta # =============== # doc/ +# This is only needed because docfx chooses the first alphabetically occurring +# .cs file's folder to create an obj/xdoc cache folder inside. +# When https://github.com/dotnet/docfx/issues/1156 is addressed, it should be +# possible to remove the rule on the following line and update our docfx +# configuration to place its cache in a deterministic folder. +[Oo]bj.meta + # ============================= # # NuGet Build Process Generated # # ============================= # -/NuGet/ +/NuGet/* +!/NuGet/BuildSource.proj /MRTKBuild/ /MSBuild/ -/PackagesCopy/ \ No newline at end of file +/PackagesCopy/ +!/scripts/Packaging/NuGetRestoreProject.csproj diff --git a/Assets/MixedReality.Toolkit.Foundation.nuspec b/Assets/MixedReality.Toolkit.Foundation.nuspec index 2cef8656564..7e2af747087 100644 --- a/Assets/MixedReality.Toolkit.Foundation.nuspec +++ b/Assets/MixedReality.Toolkit.Foundation.nuspec @@ -12,31 +12,39 @@ © Microsoft Corporation. All rights reserved. $releaseNotes$ Unity MixedReality + + + - - - - + + + + - + - + + + - + + - + + - + + + \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/Coffee.mat b/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/Coffee.mat index 0a7de261f52..8c94f6f8eba 100644 --- a/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/Coffee.mat +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/Coffee.mat @@ -45,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} - _MainTex: m_Texture: {fileID: 2800000, guid: 659a33cb4a7138343ae519b13efd2375, type: 3} m_Scale: {x: 1, y: 1} @@ -69,12 +73,17 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -92,25 +101,38 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 1 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 1 - _Refraction: 0 - _RefractiveIndex: 0 @@ -123,6 +145,7 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 - _Stencil: 0 - _StencilComparison: 0 @@ -130,10 +153,17 @@ Material: - _StencilReference: 0 - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} @@ -144,4 +174,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/ExampleHubCube.mat b/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/ExampleHubCube.mat new file mode 100644 index 00000000000..bd30388c0e0 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/ExampleHubCube.mat @@ -0,0 +1,136 @@ +%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: ExampleHubCube + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _BORDER_LIGHT _BORDER_LIGHT_USES_HOVER_COLOR _DISABLE_ALBEDO_MAP + _HOVER_LIGHT _NEAR_LIGHT_FADE _NEAR_PLANE_FADE _NEAR_PLANE_FADE_REVERSE _PROXIMITY_LIGHT + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _ChannelMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 1 + - _BorderMinValue: 1 + - _BorderWidth: 0.02 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DirectionalLight: 0 + - _DstBlend: 1 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.06 + - _FadeCompleteDistance: 0.1 + - _FadeMinValue: 0.06 + - _FluentLightIntensity: 1 + - _HoverLight: 1 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 14.8 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 4 + - _NearLightFade: 1 + - _NearPlaneFade: 1 + - _NearPlaneFadeReverse: 1 + - _NormalMapScale: 1 + - _ProximityLight: 1 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0.66226417, g: 0.66226417, b: 0.66226417, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 0.3962264, g: 0.3962264, b: 0.3962264, a: 1} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/ExampleHubCube.mat.meta b/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/ExampleHubCube.mat.meta new file mode 100644 index 00000000000..12a2076cb4b --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/ExampleHubCube.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f113c86f1a963d47bdc2d07049d272d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/PianoKeys.mat b/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/PianoKeys.mat index 2f9e8e27c69..6aaa70b64c8 100644 --- a/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/PianoKeys.mat +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Materials/PianoKeys.mat @@ -72,6 +72,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -98,16 +99,20 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 1 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 1 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -123,6 +128,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 1 - _Refraction: 0 @@ -145,6 +151,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -157,4 +168,7 @@ Material: - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Models/EarthCore.fbm/MaterialEarth.mat b/Assets/MixedRealityToolkit.Examples/StandardAssets/Models/EarthCore.fbm/MaterialEarth.mat index 57968290f01..3e25d7ec396 100644 --- a/Assets/MixedRealityToolkit.Examples/StandardAssets/Models/EarthCore.fbm/MaterialEarth.mat +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Models/EarthCore.fbm/MaterialEarth.mat @@ -72,6 +72,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -98,16 +99,20 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 1 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -123,6 +128,8 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 0 @@ -144,6 +151,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -156,4 +168,7 @@ Material: - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Models/Materials/Cheese2.mat b/Assets/MixedRealityToolkit.Examples/StandardAssets/Models/Materials/Cheese2.mat index 2a8b87085e7..35f5a70c5b6 100644 --- a/Assets/MixedRealityToolkit.Examples/StandardAssets/Models/Materials/Cheese2.mat +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Models/Materials/Cheese2.mat @@ -72,6 +72,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -98,16 +99,20 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 1 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -123,6 +128,8 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 1 - _Refraction: 0 - _RefractiveIndex: 0 @@ -144,6 +151,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -156,4 +168,7 @@ Material: - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Cheese.prefab b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Cheese.prefab index 2dc46ba5d93..cd59c3dd3e1 100644 --- a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Cheese.prefab +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Cheese.prefab @@ -206,7 +206,7 @@ MonoBehaviour: oneHandRotationModeNear: 5 oneHandRotationModeFar: 5 releaseBehavior: 3 - constraintOnRotation: 0 + constraintOnRotation: 2 constraintOnMovement: 0 smoothingActive: 1 smoothingAmountOneHandManip: 0.001 diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus.meta b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus.meta new file mode 100644 index 00000000000..339405d8577 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d722e77d29e60349b2d1f9cd9edc68c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x1.prefab b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x1.prefab new file mode 100644 index 00000000000..0524ffd3f94 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x1.prefab @@ -0,0 +1,241 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &6377029234736188893 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3515418990045158255, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Name + value: MenuExample3x1 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.1826 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0289 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548483, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318640, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481018, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233728, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2903483535519064383, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: e28b3473906c8764a948650d42b975c1, type: 2} + - target: {fileID: 1211877100676093704, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: e28b3473906c8764a948650d42b975c1, type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 40b588bd40632eb41a0af374d91c4fc9, type: 3} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x1.prefab.meta b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x1.prefab.meta new file mode 100644 index 00000000000..8ca5dad2de6 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x1.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9a7c24f281a2c3d45a9b8befe608bf77 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x2.prefab b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x2.prefab new file mode 100644 index 00000000000..ade3d86b7e5 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x2.prefab @@ -0,0 +1,740 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &1305021998768734079 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7545364183608891058, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Name + value: NearMenuExample3x2 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0279 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.0628 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6497819335467242799, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8195971257274765725, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.116 + objectReference: {fileID: 0} + - target: {fileID: 8195971257274765725, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.04735 + objectReference: {fileID: 0} + - target: {fileID: 1697582316351518837, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalScale.x + value: 0.128 + objectReference: {fileID: 0} + - target: {fileID: 1697582316351518837, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalScale.y + value: 0.096 + objectReference: {fileID: 0} + - target: {fileID: 5486559457699078303, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: rows + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5486559457699078303, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: sortType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 765132141809081969, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.031999998 + objectReference: {fileID: 0} + - target: {fileID: 765132141809081969, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 765132142816463134, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 765132142816463200, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 765132142816463200, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 765132142816463200, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 765132142816463200, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 765132142816463200, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2110343544553890915, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Name + value: ButtonFour + objectReference: {fileID: 0} + - target: {fileID: 2110343543999718018, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.031999998 + objectReference: {fileID: 0} + - target: {fileID: 2110343543999718018, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 2110343545006650861, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2110343545006650771, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 2110343545006650771, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2110343545006650771, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2110343545006650771, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2110343545006650771, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2110343545006650771, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_text + value: Menu Four + objectReference: {fileID: 0} + - target: {fileID: 8927709778025061097, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Name + value: ButtonTwo + objectReference: {fileID: 0} + - target: {fileID: 8927709776431750152, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0000000018626451 + objectReference: {fileID: 0} + - target: {fileID: 8927709776431750152, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 8927709777571842919, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 8927709777571842841, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8927709777571842841, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8927709777571842841, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8927709777571842841, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8927709777571842841, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8927709777571842841, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_text + value: Menu Two + objectReference: {fileID: 0} + - target: {fileID: 1724012943537014227, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1724012942983889714, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0000000018626451 + objectReference: {fileID: 0} + - target: {fileID: 1724012942983889714, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 1724012943990297693, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 1724012943990297635, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_text + value: Menu Five + objectReference: {fileID: 0} + - target: {fileID: 1724012943990297635, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 1724012942949067129, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 23b680d6c13ccad4ba5004f1b6a22462, type: 2} + - target: {fileID: 8318523732878419829, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.02 + objectReference: {fileID: 0} + - target: {fileID: 8318523732878419829, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalScale.y + value: 0.045 + objectReference: {fileID: 0} + - target: {fileID: 4428800054153513564, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 15c4e4b880f2be34790dce1a74139d27, type: 2} + - target: {fileID: 1405010526223381333, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0912 + objectReference: {fileID: 0} + - target: {fileID: 1405010526223381333, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalScale.y + value: 0.045 + objectReference: {fileID: 0} + - target: {fileID: 2616990973746753615, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 15c4e4b880f2be34790dce1a74139d27, type: 2} + - target: {fileID: 9031692146085159010, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.0523 + objectReference: {fileID: 0} + - target: {fileID: 3780678651424202612, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0267 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9a7c24f281a2c3d45a9b8befe608bf77, type: 3} +--- !u!4 &7883149401895181706 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 9185878736382567157, guid: 9a7c24f281a2c3d45a9b8befe608bf77, + type: 3} + m_PrefabInstance: {fileID: 1305021998768734079} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2638714683172248581 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7883149401895181706} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonThree + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.032000005 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleRecording + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SaveRecordedInput + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: c3ec3f87c678f3d48bc51f5625647104, type: 2} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Three + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!1001 &7581267722130571106 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7883149401895181706} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonSix + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.032000005 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleRecording + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SaveRecordedInput + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 5a9ff3bf27bd2f14eb87222e2d2761b8, type: 2} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Six + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x2.prefab.meta b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x2.prefab.meta new file mode 100644 index 00000000000..32fca7a7b03 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x2.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e969038e4d67d9b498de2ef538969506 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x3.prefab b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x3.prefab new file mode 100644 index 00000000000..2d461ca17ac --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x3.prefab @@ -0,0 +1,1006 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2014175836473893122 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4187654251277012703} + - component: {fileID: 4368828526413463362} + - component: {fileID: 537805699084123880} + m_Layer: 0 + m_Name: GrabVisualCueHorizontalTop (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4187654251277012703 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2014175836473893122} + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0.0745, y: -0.0202, z: -0.001} + m_LocalScale: {x: 0.074928366, y: 0.003631132, z: 0.009433999} + m_Children: [] + m_Father: {fileID: 3432580279223920010} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!33 &4368828526413463362 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2014175836473893122} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &537805699084123880 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2014175836473893122} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 13a6bafb89ca6414895d965b2fdb2041, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &5041026673607867330 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6535572241115846799} + - component: {fileID: 7214590449798827232} + - component: {fileID: 7096623161688875146} + m_Layer: 0 + m_Name: GrabVisualCueHorizontalTop (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6535572241115846799 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5041026673607867330} + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.037, y: -0.0202, z: -0.001} + m_LocalScale: {x: 0.074928366, y: 0.003631132, z: 0.009433999} + m_Children: [] + m_Father: {fileID: 3432580279223920010} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!33 &7214590449798827232 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5041026673607867330} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7096623161688875146 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5041026673607867330} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 13a6bafb89ca6414895d965b2fdb2041, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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!1001 &3172113211659197008 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1333129552543361702, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Name + value: MenuExample3x3 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.11524798 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.1231 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2313261133033253179, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8118008112290837770, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 8118008112290837876, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8118008112290837876, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8118008112290837876, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8118008112290837876, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8118008112290837876, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537529, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537415, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537415, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537415, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537415, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537415, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537415, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_text + value: Menu Four + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537415, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7457904604369537415, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 131490876616161139, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 131490876616161037, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 131490876616161037, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 131490876616161037, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 131490876616161037, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 131490876616161037, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 131490876616161037, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_text + value: Menu Seven + objectReference: {fileID: 0} + - target: {fileID: 131490876616161037, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 131490876616161037, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665481, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665463, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665463, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665463, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665463, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665463, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665463, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_text + value: Menu Two + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665463, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7915729866667665463, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1630636061323851062, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 1630636061323851080, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 1630636061323851080, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1630636061323851080, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1630636061323851080, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1630636061323851080, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075085, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075187, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075187, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075187, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075187, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075187, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075187, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_text + value: Menu Five + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075187, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3015033265155075187, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602512, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602478, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602478, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602478, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602478, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602478, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602478, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_text + value: Menu Eight + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602478, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5684875915651602478, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687537, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687439, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687439, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687439, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687439, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687439, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687439, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_text + value: Menu Six + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687439, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6475768286833687439, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 831844951614958985, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0995 + objectReference: {fileID: 0} + - target: {fileID: 381806469407776481, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0196 + objectReference: {fileID: 0} + - target: {fileID: 381806469407776481, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.019 + objectReference: {fileID: 0} + - target: {fileID: 3015033264147626850, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0000000018626451 + objectReference: {fileID: 0} + - target: {fileID: 3015033264147626850, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000000018626451 + objectReference: {fileID: 0} + - target: {fileID: 531911681204149366, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.019199997 + objectReference: {fileID: 0} + - target: {fileID: 131490875475075100, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.031999998 + objectReference: {fileID: 0} + - target: {fileID: 131490875475075100, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.032000005 + objectReference: {fileID: 0} + - target: {fileID: 1630636062464991833, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.032000005 + objectReference: {fileID: 0} + - target: {fileID: 1630636062464991833, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.031999998 + objectReference: {fileID: 0} + - target: {fileID: 7906553909899379809, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0187 + objectReference: {fileID: 0} + - target: {fileID: 7906553909899379809, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0192 + objectReference: {fileID: 0} + - target: {fileID: 7906553909899379809, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalScale.x + value: 0.128 + objectReference: {fileID: 0} + - target: {fileID: 7906553909899379809, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalScale.y + value: 0.128 + objectReference: {fileID: 0} + - target: {fileID: 7915729865660284710, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0000000018626451 + objectReference: {fileID: 0} + - target: {fileID: 7915729865660284710, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.031999998 + objectReference: {fileID: 0} + - target: {fileID: 7457904603363729046, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.031999998 + objectReference: {fileID: 0} + - target: {fileID: 7457904603363729046, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000000018626451 + objectReference: {fileID: 0} + - target: {fileID: 8118008111284429413, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.031999998 + objectReference: {fileID: 0} + - target: {fileID: 8118008111284429413, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.031999998 + objectReference: {fileID: 0} + - target: {fileID: 5638812189093552992, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0192 + objectReference: {fileID: 0} + - target: {fileID: 5638812189093552992, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.074 + objectReference: {fileID: 0} + - target: {fileID: 5684875916792745791, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0000000018626451 + objectReference: {fileID: 0} + - target: {fileID: 5684875916792745791, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.032000005 + objectReference: {fileID: 0} + - target: {fileID: 6475768285827345566, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.032000005 + objectReference: {fileID: 0} + - target: {fileID: 6475768285827345566, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0000000018626451 + objectReference: {fileID: 0} + - target: {fileID: 3015033265741987203, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Name + value: ButtonFive + objectReference: {fileID: 0} + - target: {fileID: 3896337419547188363, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: rows + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 131490875995694845, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Name + value: ButtonSeven + objectReference: {fileID: 0} + - target: {fileID: 1630636060837078200, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Name + value: ButtonThree + objectReference: {fileID: 0} + - target: {fileID: 1236209809734304333, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7915729867288197575, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Name + value: ButtonTwo + objectReference: {fileID: 0} + - target: {fileID: 7457904604990593143, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Name + value: ButtonFour + objectReference: {fileID: 0} + - target: {fileID: 7459335863129266358, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5684875916272126430, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Name + value: ButtonEight + objectReference: {fileID: 0} + - target: {fileID: 6475768286380468863, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Name + value: ButtonSix + objectReference: {fileID: 0} + - target: {fileID: 908485784614504773, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 908485784614504773, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 1d3d3b8b33373be4ba8d3b1676d2b5ba, type: 2} + - target: {fileID: 3033285473209203161, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.05 + objectReference: {fileID: 0} + - target: {fileID: 3033285473209203161, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.012429999 + objectReference: {fileID: 0} + - target: {fileID: 1781641201505502866, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.01243 + objectReference: {fileID: 0} + - target: {fileID: 7823404504485184496, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0067000007 + objectReference: {fileID: 0} + - target: {fileID: 7823404504485184496, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0324 + objectReference: {fileID: 0} + - target: {fileID: 8323502268126346333, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0067 + objectReference: {fileID: 0} + - target: {fileID: 2058207710863321824, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0192 + objectReference: {fileID: 0} + - target: {fileID: 2058207710863321824, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0745 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, type: 3} +--- !u!4 &2975171669690811569 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 381806469407776481, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + m_PrefabInstance: {fileID: 3172113211659197008} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3432580279223920010 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 263290957567508442, guid: 6dfc5f0a5fe04f94ab15177720f4bf05, + type: 3} + m_PrefabInstance: {fileID: 3172113211659197008} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &4972606301337347178 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2975171669690811569} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonNine + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.032000005 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.032000005 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleRecording + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SaveRecordedInput + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Nine + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: e6ab953dc933471489f5ebff6791a886, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x3.prefab.meta b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x3.prefab.meta new file mode 100644 index 00000000000..b33d4810276 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample3x3.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d82e2f09994ad2f4fb43359bfb977f64 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x1.prefab b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x1.prefab new file mode 100644 index 00000000000..4df0c1cc278 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x1.prefab @@ -0,0 +1,1960 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!65 &8730868853488533197 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712153382927011348} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 0.99999994, z: 1} + m_Center: {x: 0.00000004856583, y: 0, z: 3.0616168e-17} +--- !u!114 &864135512269338377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712153382927011348} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5afd5316c63705643b3daba5a6e923bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTetherWhenManipulating: 1 +--- !u!114 &2152278905257414432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712153382927011348} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5afd5316c63705643b3daba5a6e923bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTetherWhenManipulating: 1 +--- !u!114 &7460458928787289386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712153382927011348} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 03daa81ea5f685f4ebf6e32038d058ca, type: 3} + m_Name: + m_EditorClassIdentifier: + hostTransform: {fileID: 167519458813532402} + manipulationType: 2 + twoHandedManipulationType: 5 + allowFarManipulation: 1 + oneHandRotationModeNear: 6 + oneHandRotationModeFar: 6 + releaseBehavior: 3 + constraintOnRotation: 2 + constraintOnMovement: 0 + smoothingActive: 1 + smoothingAmountOneHandManip: 0.001 + OnManipulationStarted: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3374018212467406988} + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 2100000, guid: 16526572b35ecaa4ba781a0bff18ab12, + type: 2} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 6376582067664713665} + m_MethodName: set_enabled + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 5656867131449373698} + m_MethodName: SetToggled + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + - m_Target: {fileID: 6191257353991019938} + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 72d90092d0f1a734eb1cfcf71b8fa2e4, + type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: Microsoft.MixedReality.Toolkit.UI.ManipulationEvent, Microsoft.MixedReality.Toolkit.SDK, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + OnManipulationEnded: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3374018212467406988} + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 2100000, guid: ec72a3a105768f746b556a8dfdae61a8, + type: 2} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 6191257353991019938} + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: ec33d8a6027c1574390812966f8aef94, + type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: Microsoft.MixedReality.Toolkit.UI.ManipulationEvent, Microsoft.MixedReality.Toolkit.SDK, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + OnHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Microsoft.MixedReality.Toolkit.UI.ManipulationEvent, Microsoft.MixedReality.Toolkit.SDK, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Microsoft.MixedReality.Toolkit.UI.ManipulationEvent, Microsoft.MixedReality.Toolkit.SDK, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!1 &2827255906976489158 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2444919182723370515} + m_Layer: 0 + m_Name: GravVisualCue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2444919182723370515 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2827255906976489158} + 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: 3102583286860655272} + - {fileID: 5404420624087121544} + - {fileID: 2677608141246180799} + - {fileID: 7784587948190700201} + m_Father: {fileID: 167519458813532402} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3515418990045158255 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 167519458813532402} + - component: {fileID: 8727868426842763079} + - component: {fileID: 6376582067664713665} + - component: {fileID: 6379754230260484954} + - component: {fileID: 6191257353991019938} + m_Layer: 0 + m_Name: NearMenuExample4x1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &167519458813532402 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3515418990045158255} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.114347965, y: 0.067, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3009022624284531776} + - {fileID: 8159790426146837936} + - {fileID: 2811669244316413736} + - {fileID: 2444919182723370515} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8727868426842763079 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3515418990045158255} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + trackedTargetType: 0 + trackedHandness: 3 + trackedHandJoint: 2 + transformOverride: {fileID: 0} + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + updateSolvers: 1 +--- !u!114 &6376582067664713665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3515418990045158255} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.5 + rotateLerpTime: 0.5 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + referenceDirection: 1 + minDistance: 0.3 + maxDistance: 0.6 + minViewDegrees: 0 + maxViewDegrees: 20 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + useFixedVerticalPosition: 1 + fixedVerticalPosition: -0.4 + orientToReferenceDirection: 0 +--- !u!114 &6379754230260484954 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3515418990045158255} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d1fea68463e4e84b86c395b654f950d, type: 3} + m_Name: + m_EditorClassIdentifier: + visualizationObject: {fileID: 0} + interactableObject: {fileID: 0} + autoFollowAtDistance: 0 + autoFollowDistance: 2 + autoFollowTransformTarget: {fileID: 0} +--- !u!82 &6191257353991019938 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3515418990045158255} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &3706069917505745796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3102583286860655272} + - component: {fileID: 7789604522273328862} + - component: {fileID: 7280491432823375745} + m_Layer: 0 + m_Name: GrabVisualCueVerticalLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3102583286860655272 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3706069917505745796} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.03571999, y: 0.012699999, z: -0.001} + m_LocalScale: {x: 0.0034266084, y: 0.023154724, z: 0.0039000595} + m_Children: [] + m_Father: {fileID: 2444919182723370515} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7789604522273328862 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3706069917505745796} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7280491432823375745 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3706069917505745796} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e28b3473906c8764a948650d42b975c1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &5029850922931923327 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5404420624087121544} + - component: {fileID: 5950183910367845185} + - component: {fileID: 8948275471115582866} + m_Layer: 0 + m_Name: GrabVisualCueVerticalRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5404420624087121544 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5029850922931923327} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.1075, y: 0.012699999, z: -0.001} + m_LocalScale: {x: 0.0034266084, y: 0.023154724, z: 0.0039000595} + m_Children: [] + m_Father: {fileID: 2444919182723370515} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5950183910367845185 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5029850922931923327} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8948275471115582866 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5029850922931923327} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e28b3473906c8764a948650d42b975c1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &5783768059060930389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7784587948190700201} + - component: {fileID: 9121616848755800026} + - component: {fileID: 2315532816781448867} + m_Layer: 0 + m_Name: GrabVisualCueHorizontalBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7784587948190700201 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783768059060930389} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0355, y: -0.0111, z: -0.001} + m_LocalScale: {x: 0.074928366, y: 0.0036311317, z: 0.009433999} + m_Children: [] + m_Father: {fileID: 2444919182723370515} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &9121616848755800026 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783768059060930389} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2315532816781448867 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783768059060930389} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 13a6bafb89ca6414895d965b2fdb2041, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &6006386279615139285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2677608141246180799} + - component: {fileID: 9093237781593506467} + - component: {fileID: 8498958383991768906} + m_Layer: 0 + m_Name: GrabVisualCueHorizontalTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2677608141246180799 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6006386279615139285} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0355, y: 0.0362, z: -0.001} + m_LocalScale: {x: 0.074928366, y: 0.0036311317, z: 0.009433999} + m_Children: [] + m_Father: {fileID: 2444919182723370515} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &9093237781593506467 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6006386279615139285} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8498958383991768906 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6006386279615139285} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 13a6bafb89ca6414895d965b2fdb2041, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &6583616640145107801 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2811669244316413736} + - component: {fileID: 1467028391546711362} + m_Layer: 0 + m_Name: ButtonCollection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2811669244316413736 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6583616640145107801} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0356, y: 0.0126, z: -1.0104} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 5972206229126697900} + - {fileID: 4987367190003920735} + - {fileID: 2565462927989821909} + - {fileID: 5733978352390262511} + m_Father: {fileID: 167519458813532402} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1467028391546711362 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6583616640145107801} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf12ee76e7e00a44a9a84256760020e6, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreInactiveTransforms: 1 + sortType: 0 + surfaceType: 1 + orientType: 0 + layout: 0 + radius: 2 + radialRange: 180 + distance: 1 + rows: 1 + cellWidth: 0.032 + cellHeight: 0.032 +--- !u!1001 &4398951770875455511 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2811669244316413736} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonThree + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnToggleHandJoint + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Three + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: fa419ab56051229449e3b813df8f295f, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!4 &2565462927989821909 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + m_PrefabInstance: {fileID: 4398951770875455511} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5510123669686839918 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2811669244316413736} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonOne + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.048 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleProfiler + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu One + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 85b164de2cfcb854cbbcb9c82670749d, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!4 &5972206229126697900 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + m_PrefabInstance: {fileID: 5510123669686839918} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5838146479216097069 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2811669244316413736} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonFour + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.048 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleRecording + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SaveRecordedInput + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Four + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: e6ab953dc933471489f5ebff6791a886, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!4 &5733978352390262511 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + m_PrefabInstance: {fileID: 5838146479216097069} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &6602520784541849245 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2811669244316413736} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonTwo + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnToggleHandMesh + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Two + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 7344413e86980e943b39f9d8080ed99f, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!4 &4987367190003920735 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + m_PrefabInstance: {fileID: 6602520784541849245} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8381912901132042046 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 167519458813532402} + m_Modifications: + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.1324 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.0316 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.0082 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalScale.x + value: 0.8 + objectReference: {fileID: 0} + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_LocalScale.y + value: 0.8 + objectReference: {fileID: 0} + - target: {fileID: 6742094791252829599, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_Name + value: ButtonPin + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Name + value: OnSelect + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 6379754230260484954} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleFollowMeBehavior + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].ClassName + value: InteractableOnToggleReceiver + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].AssemblyQualifiedName + value: Microsoft.MixedReality.Toolkit.UI.InteractableOnToggleReceiver, Microsoft.MixedReality.Toolkit.SDK + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Type + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Label + value: On Deselect + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Name + value: OnDeselect + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Tooltip + value: The toggle is deselected + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 6376582067664713665} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_enabled + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: StartDimensionIndex + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleFollowMeBehavior + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 6379754230260484954} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: startDimensionIndex + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8495876841678131188, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6413889394266691908, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6742094791873819757, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6742094791873819759, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6742094791873819759, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6742094790700452149, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 983d124b2920b4e4499bfc42d1bee8d2, type: 2} + - target: {fileID: 2689703347428627497, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 416caa6b57bb22c40ab9f1a4c12b304e, type: 2} + - target: {fileID: 2521141002669455045, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2521141002669455045, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 64790b91b91094d49942373c4e83c237, type: 3} +--- !u!4 &3009022624284531776 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + m_PrefabInstance: {fileID: 8381912901132042046} + m_PrefabAsset: {fileID: 0} +--- !u!114 &5656867131449373698 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + m_PrefabInstance: {fileID: 8381912901132042046} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &8727868428328536033 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 167519458813532402} + m_Modifications: + - target: {fileID: 538639403742340272, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_Name + value: Backplate + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.0126 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.y + value: 0.064 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.x + value: 0.16 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.0358 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.z + value: 0.010599999 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9215a7c858170d74fb2257375d5feaf1, type: 3} +--- !u!4 &8159790426146837936 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + m_PrefabInstance: {fileID: 8727868428328536033} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1712153382927011348 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7988634196090784245, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + m_PrefabInstance: {fileID: 8727868428328536033} + m_PrefabAsset: {fileID: 0} +--- !u!23 &3374018212467406988 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 6326842415924641645, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + m_PrefabInstance: {fileID: 8727868428328536033} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x1.prefab.meta b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x1.prefab.meta new file mode 100644 index 00000000000..fbaadacd7fb --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x1.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 40b588bd40632eb41a0af374d91c4fc9 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x2.prefab b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x2.prefab new file mode 100644 index 00000000000..5d26762f699 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x2.prefab @@ -0,0 +1,1178 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &592016088786918299 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 381806469407776481} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonFour + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.048 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnToggleHandJoint + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Four + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: fa419ab56051229449e3b813df8f295f, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!1001 &2470642974009192905 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3515418990045158255, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Name + value: MenuExample4x2 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.11524798 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.068085335 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 167519458813532402, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548483, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5972206227985548477, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318640, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.characterCount + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4987367188862318670, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_text + value: Menu Five + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481018, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2565462926983481028, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_text + value: Menu Two + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233728, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.characterCount + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5733978351250233854, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_text + value: Menu Six + objectReference: {fileID: 0} + - target: {fileID: 3009022624284531776, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.0316 + objectReference: {fileID: 0} + - target: {fileID: 2811669244316413736, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.004 + objectReference: {fileID: 0} + - target: {fileID: 3102583286860655272, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.005 + objectReference: {fileID: 0} + - target: {fileID: 3102583286860655272, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalScale.y + value: 0.045 + objectReference: {fileID: 0} + - target: {fileID: 5404420624087121544, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.005 + objectReference: {fileID: 0} + - target: {fileID: 5404420624087121544, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalScale.y + value: 0.045 + objectReference: {fileID: 0} + - target: {fileID: 2677608141246180799, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.0357 + objectReference: {fileID: 0} + - target: {fileID: 2677608141246180799, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalScale.y + value: 0.003631132 + objectReference: {fileID: 0} + - target: {fileID: 7784587948190700201, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0437 + objectReference: {fileID: 0} + - target: {fileID: 5972206229126697900, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 4987367190003920735, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.048 + objectReference: {fileID: 0} + - target: {fileID: 4987367190003920735, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 2565462927989821909, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 2565462927989821909, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 5733978352390262511, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 5733978352390262511, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 5760319780102256040, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0037 + objectReference: {fileID: 0} + - target: {fileID: 5760319780102256040, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalScale.y + value: 0.096 + objectReference: {fileID: 0} + - target: {fileID: 5760319780102256040, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalScale.x + value: 0.16 + objectReference: {fileID: 0} + - target: {fileID: 1467028391546711362, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: rows + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 3374018212467406988, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3374018212467406988, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: 2100000, guid: 1d3d3b8b33373be4ba8d3b1676d2b5ba, type: 2} + - target: {fileID: 7280491432823375745, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 15c4e4b880f2be34790dce1a74139d27, type: 2} + - target: {fileID: 8948275471115582866, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 15c4e4b880f2be34790dce1a74139d27, type: 2} + - target: {fileID: 2565462927957621662, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 943fce092bd9aea49808ff09b520bf74, type: 2} + - target: {fileID: 5733978352425690276, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 23b680d6c13ccad4ba5004f1b6a22462, type: 2} + - target: {fileID: 4247129238707009371, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0060300003 + objectReference: {fileID: 0} + - target: {fileID: 599288404636420112, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.00603 + objectReference: {fileID: 0} + - target: {fileID: 5682184024230343225, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.02 + objectReference: {fileID: 0} + - target: {fileID: 8440988102217858020, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.02018 + objectReference: {fileID: 0} + - target: {fileID: 4096411482608858163, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.00528 + objectReference: {fileID: 0} + - target: {fileID: 8431916313651470639, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0052799988 + objectReference: {fileID: 0} + - target: {fileID: 4528727539549182761, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.0439 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 40b588bd40632eb41a0af374d91c4fc9, type: 3} +--- !u!4 &381806469407776481 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2811669244316413736, guid: 40b588bd40632eb41a0af374d91c4fc9, + type: 3} + m_PrefabInstance: {fileID: 2470642974009192905} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3981711362968404640 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 381806469407776481} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonOne (1) + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleProfiler + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Three + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 467ed030160339e4b8ec795630ed12aa, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!1001 &5136603138125829468 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 381806469407776481} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonEight + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.048 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ToggleRecording + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SaveRecordedInput + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Eight + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: c3ec3f87c678f3d48bc51f5625647104, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!1001 &5796925615156623101 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 381806469407776481} + m_Modifications: + - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Name + value: ButtonSeven + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.016 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnToggleHandMesh + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Menu Seven + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 57717538759a71948975aa7be8c2a3cb, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} diff --git a/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x2.prefab.meta b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x2.prefab.meta new file mode 100644 index 00000000000..d6ace575664 --- /dev/null +++ b/Assets/MixedRealityToolkit.Examples/StandardAssets/Prefabs/Menus/NearMenuExample4x2.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6dfc5f0a5fe04f94ab15177720f4bf05 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Examples/Version.txt b/Assets/MixedRealityToolkit.Examples/Version.txt index e670c2aeaab..4df313d1cc0 100644 --- a/Assets/MixedRealityToolkit.Examples/Version.txt +++ b/Assets/MixedRealityToolkit.Examples/Version.txt @@ -1 +1 @@ -Microsoft Mixed Reality Toolkit 2.0.0 \ No newline at end of file +Microsoft Mixed Reality Toolkit 2.1.0 \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Extensions/MRTK.Extensions.sentinel b/Assets/MixedRealityToolkit.Extensions/MRTK.Extensions.sentinel new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Assets/MixedRealityToolkit.Extensions/MRTK.Extensions.sentinel.meta b/Assets/MixedRealityToolkit.Extensions/MRTK.Extensions.sentinel.meta new file mode 100644 index 00000000000..a89b3c0d7a1 --- /dev/null +++ b/Assets/MixedRealityToolkit.Extensions/MRTK.Extensions.sentinel.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 354da3282d4f2d3449f6145955984ed5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Extensions/MixedReality.Toolkit.Extensions.nuspec b/Assets/MixedRealityToolkit.Extensions/MixedReality.Toolkit.Extensions.nuspec index a16927c21e7..020d85b4bfc 100644 --- a/Assets/MixedRealityToolkit.Extensions/MixedReality.Toolkit.Extensions.nuspec +++ b/Assets/MixedRealityToolkit.Extensions/MixedReality.Toolkit.Extensions.nuspec @@ -15,13 +15,18 @@ + + + - + + + \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/DefaultSceneTransitionServiceProfile.asset b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/DefaultSceneTransitionServiceProfile.asset index f58e9bccd7d..6bd20f139ad 100644 --- a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/DefaultSceneTransitionServiceProfile.asset +++ b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/DefaultSceneTransitionServiceProfile.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8d8965cb7573e04429e22a5a476b4703, type: 3} m_Name: DefaultSceneTransitionServiceProfile m_EditorClassIdentifier: - isCustomProfile: 1 + isCustomProfile: 0 useDefaultProgressIndicator: 1 defaultProgressIndicatorPrefab: {fileID: 1993071269674472, guid: 57d2436112e7d424da7e9a8e41c608dc, type: 3} diff --git a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/ISceneTransitionService.cs b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/ISceneTransitionService.cs index b6aaba7f4cc..881aeb2f2d2 100644 --- a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/ISceneTransitionService.cs +++ b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/ISceneTransitionService.cs @@ -65,16 +65,11 @@ public interface ISceneTransitionService : IMixedRealityExtensionService /// /// A set of tasks from the Scene System. /// If null, default progress indicator prefab will be used (or none if default is disabled in profile) - /// Task DoSceneTransition(IEnumerable> sceneOperations, IProgressIndicator progressIndicator = null); /// /// Fades out, enables progress indicator, executes scene op 1, executes scene op 2, disables progress indicator, fades back in /// - /// - /// - /// - /// Task DoSceneTransition(Func sceneOp1, Func sceneOp2, IProgressIndicator progressIndicator = null); /// @@ -82,31 +77,26 @@ public interface ISceneTransitionService : IMixedRealityExtensionService /// /// A set of tasks from the Scene System. /// If null, default progress indicator prefab will be used (or none if default is disabled in profile) - /// Task DoSceneTransition(Func sceneOperation, IProgressIndicator progressIndicator = null); /// /// If FadeTargets is set to custom, you will need to provide a custom set of cameras for fading using this function PRIOR to calling DoSceneTransition. /// - /// void SetCustomFadeTargetCameras(IEnumerable customFadeTargetCameras); /// /// Fades target cameras out to color. Can be used independently of scene transitions provided no transition is taking place. /// - /// Task FadeOut(); /// /// Fades target cameras in. Instant fade-out will occur if fade state is not opaque. Can be used independently of scene transitions provided no transition is taking place. /// - /// Task FadeIn(); /// /// Instantiates the default progress indicator and returns its main transform. Can be used independently of scene transitions provided no transition is taking place. /// - /// Transform ShowDefaultProgressIndicator(); /// @@ -117,13 +107,11 @@ public interface ISceneTransitionService : IMixedRealityExtensionService /// /// Sets progress to value from 0-1. If no progress indicator exists, has no effect. /// - /// void SetProgressValue(float progress); /// /// Sets the message on displayed progress indicator. If no progress indicator exists, has no effect. /// - /// void SetProgressMessage(string message); } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/SceneTransitionService.cs b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/SceneTransitionService.cs index 4a48f88e677..6a568a43484 100644 --- a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/SceneTransitionService.cs +++ b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/SceneTransitionService.cs @@ -393,14 +393,7 @@ private void CleanUpDefaultProgressIndicator() { if (progressIndicatorObject != null) { - if (Application.isPlaying) - { - GameObject.Destroy(progressIndicatorObject); - } - else - { - GameObject.DestroyImmediate(progressIndicatorObject); - } + GameObjectExtensions.DestroyGameObject(progressIndicatorObject); } } diff --git a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/SceneTransitionServiceProfile.cs b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/SceneTransitionServiceProfile.cs index b938991d4e8..54467e43471 100644 --- a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/SceneTransitionServiceProfile.cs +++ b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/SceneTransitionServiceProfile.cs @@ -2,7 +2,6 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Utilities; -using UnityEditor; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Extensions.SceneTransitions diff --git a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/CameraFaderQuad.cs b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/CameraFaderQuad.cs index f42c279f41d..6a0215bf5cf 100644 --- a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/CameraFaderQuad.cs +++ b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/CameraFaderQuad.cs @@ -13,7 +13,7 @@ namespace Microsoft.MixedReality.Toolkit.Extensions.SceneTransitions /// public class CameraFaderQuad : ICameraFader { - const string QuadMaterialShaderName = "UI/Unlit/Transparent"; + const string QuadMaterialShaderName = "Sprites/Default"; const string QuadMaterialColorName = "_Color"; /// diff --git a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/ICameraFader.cs b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/ICameraFader.cs index d5444dde618..77654de211b 100644 --- a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/ICameraFader.cs +++ b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/ICameraFader.cs @@ -20,14 +20,12 @@ public interface ICameraFader /// The duration of the fade /// The color of the fade /// Which cameras will receive the effect - /// Task FadeOutAsync(float fadeOutTime, Color color, IEnumerable targets); /// /// Applies a fade-in effect over time. Must be called after FadeOutAsync has completed. /// /// The duration of the fade - /// Task FadeInAsync(float fadeInTime); /// diff --git a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/LoadContentScene.cs b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/LoadContentScene.cs new file mode 100644 index 00000000000..a78aa13768a --- /dev/null +++ b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/LoadContentScene.cs @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Microsoft.MixedReality.Toolkit.SceneSystem; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace Microsoft.MixedReality.Toolkit.Extensions.SceneTransitions +{ + /// + /// Utility class to load scenes through MRTK Scene System using a scene transition. + /// Otherwise, it uses Scene System's LoadContent() + /// + public class LoadContentScene : MonoBehaviour + { + [SerializeField] + private LoadSceneMode loadSceneMode = LoadSceneMode.Single; + [SerializeField] + private SceneInfo contentScene = SceneInfo.Empty; + [SerializeField] + private bool loadOnStartup = false; + + private void Start() + { + if (loadOnStartup) + { + LoadContent(); + } + } + + /// + /// Load a scene with contentScene.Name + /// + public void LoadContent() + { + ISceneTransitionService transitions = MixedRealityToolkit.Instance.GetService(); + if (transitions.TransitionInProgress) + { + return; + } + transitions.DoSceneTransition(() => CoreServices.SceneSystem.LoadContent(contentScene.Name, loadSceneMode)); + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/LoadContentScene.cs.meta b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/LoadContentScene.cs.meta new file mode 100644 index 00000000000..a6b8e3537f2 --- /dev/null +++ b/Assets/MixedRealityToolkit.Extensions/SceneTransitionService/Scripts/LoadContentScene.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ae67cd8a02f7ce94e9565614536df803 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Extensions/Version.txt b/Assets/MixedRealityToolkit.Extensions/Version.txt index e670c2aeaab..4df313d1cc0 100644 --- a/Assets/MixedRealityToolkit.Extensions/Version.txt +++ b/Assets/MixedRealityToolkit.Extensions/Version.txt @@ -1 +1 @@ -Microsoft Mixed Reality Toolkit 2.0.0 \ No newline at end of file +Microsoft Mixed Reality Toolkit 2.1.0 \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Providers/MRTK.Providers.sentinel b/Assets/MixedRealityToolkit.Providers/MRTK.Providers.sentinel new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Assets/MixedRealityToolkit.Providers/MRTK.Providers.sentinel.meta b/Assets/MixedRealityToolkit.Providers/MRTK.Providers.sentinel.meta new file mode 100644 index 00000000000..a0f437b1580 --- /dev/null +++ b/Assets/MixedRealityToolkit.Providers/MRTK.Providers.sentinel.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: efc47659760747d4d80477aa049ee71e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/Profiles/DefaultObjectMeshObserverProfile.asset b/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/Profiles/DefaultObjectMeshObserverProfile.asset index c519fb6a8ab..688c13af04e 100644 --- a/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/Profiles/DefaultObjectMeshObserverProfile.asset +++ b/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/Profiles/DefaultObjectMeshObserverProfile.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e3c1af9621e40064b907d18085e21fb7, type: 3} m_Name: DefaultObjectMeshObserverProfile m_EditorClassIdentifier: - isCustomProfile: 1 + isCustomProfile: 0 startupBehavior: 0 isStationaryObserver: 0 observationExtents: {x: 3, y: 3, z: 3} diff --git a/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/SpatialObjectMeshObserver.cs b/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/SpatialObjectMeshObserver.cs index 9ce739cba45..7da3c0a0f15 100644 --- a/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/SpatialObjectMeshObserver.cs +++ b/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/SpatialObjectMeshObserver.cs @@ -2,7 +2,6 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using System.Collections.Generic; -using Boo.Lang; using Microsoft.MixedReality.Toolkit.SpatialAwareness; using Microsoft.MixedReality.Toolkit.Utilities; using UnityEngine; @@ -133,7 +132,7 @@ public override void Disable() // Remember if we are currently running when Disable is called. autoResume = IsRunning; - // If we are disbled while running... + // If we are disabled while running... if (IsRunning) { // Suspend the observer @@ -240,7 +239,6 @@ private void SendMeshObjects() /// /// Removes an observation. /// - /// private void RemoveMeshObject(int meshId) { SpatialAwarenessMeshObject meshObject = null; diff --git a/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/SpatialObjectMeshObserverProfileInspector.cs b/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/SpatialObjectMeshObserverProfileInspector.cs index 248a0dba911..63674141977 100644 --- a/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/SpatialObjectMeshObserverProfileInspector.cs +++ b/Assets/MixedRealityToolkit.Providers/ObjectMeshObserver/SpatialObjectMeshObserverProfileInspector.cs @@ -78,7 +78,8 @@ public override void OnInspectorGUI() serializedObject.Update(); EditorGUILayout.PropertyField(spatialMeshObject); - MeshFilter[] filters = (spatialMeshObject.objectReferenceValue as GameObject)?.GetComponentsInChildren(); + GameObject parent = spatialMeshObject.objectReferenceValue as GameObject; + MeshFilter[] filters = (parent != null) ? parent.GetComponentsInChildren() : null; if ((filters == null) || (filters.Length == 0)) { diff --git a/Assets/MixedRealityToolkit.Providers/OpenVR/GenericOpenVRController.cs b/Assets/MixedRealityToolkit.Providers/OpenVR/GenericOpenVRController.cs index c8c54b96ea5..053e7b890b2 100644 --- a/Assets/MixedRealityToolkit.Providers/OpenVR/GenericOpenVRController.cs +++ b/Assets/MixedRealityToolkit.Providers/OpenVR/GenericOpenVRController.cs @@ -47,7 +47,7 @@ public GenericOpenVRController(TrackingState trackingState, Handedness controlle // Oculus Touch Controller - Axis1D.PrimaryIndexTrigger // Valve Knuckles Controller - Left Controller Trigger // Windows Mixed Reality Controller - Left Trigger Press (Select) - new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton14), + new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, KeyCode.JoystickButton14), // HTC Vive Controller - Left Controller Trigger (7) // Oculus Touch Controller - Axis1D.PrimaryIndexTrigger // Valve Knuckles Controller - Left Controller Trigger @@ -98,7 +98,7 @@ public GenericOpenVRController(TrackingState trackingState, Handedness controlle // Oculus Touch Controller - Axis1D.SecondaryIndexTrigger // Valve Knuckles Controller - Right Controller Trigger // Windows Mixed Reality Controller - Right Trigger Press (Select) - new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton15), + new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, KeyCode.JoystickButton15), // HTC Vive Controller - Right Controller Trigger (7) // Oculus Touch Controller - Axis1D.SecondaryIndexTrigger // Valve Knuckles Controller - Right Controller Trigger @@ -168,7 +168,6 @@ public override void UpdateController() /// /// Update the "Controller" input from the device /// - /// protected void UpdateControllerData(XRNodeState state) { var lastState = TrackingState; diff --git a/Assets/MixedRealityToolkit.Providers/OpenVR/OculusRemoteController.cs b/Assets/MixedRealityToolkit.Providers/OpenVR/OculusRemoteController.cs index c55dee565cf..7c56b0bc0bc 100644 --- a/Assets/MixedRealityToolkit.Providers/OpenVR/OculusRemoteController.cs +++ b/Assets/MixedRealityToolkit.Providers/OpenVR/OculusRemoteController.cs @@ -16,10 +16,6 @@ public class OculusRemoteController : GenericOpenVRController /// /// Constructor. /// - /// - /// - /// - /// public OculusRemoteController(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) { diff --git a/Assets/MixedRealityToolkit.Providers/OpenVR/OculusTouchController.cs b/Assets/MixedRealityToolkit.Providers/OpenVR/OculusTouchController.cs index 54c0f816bc5..2d1c53e9bbc 100644 --- a/Assets/MixedRealityToolkit.Providers/OpenVR/OculusTouchController.cs +++ b/Assets/MixedRealityToolkit.Providers/OpenVR/OculusTouchController.cs @@ -16,10 +16,6 @@ public class OculusTouchController : GenericOpenVRController /// /// Constructor. /// - /// - /// - /// - /// public OculusTouchController(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) @@ -33,7 +29,7 @@ public OculusTouchController(TrackingState trackingState, Handedness controllerH new MixedRealityInteractionMapping(1, "Axis1D.PrimaryIndexTrigger", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_9), new MixedRealityInteractionMapping(2, "Axis1D.PrimaryIndexTrigger Touch", AxisType.Digital, DeviceInputType.TriggerTouch, KeyCode.JoystickButton14), new MixedRealityInteractionMapping(3, "Axis1D.PrimaryIndexTrigger Near Touch", AxisType.Digital, DeviceInputType.TriggerNearTouch, ControllerMappingLibrary.AXIS_13), - new MixedRealityInteractionMapping(4, "Axis1D.PrimaryIndexTrigger Press", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton14), + new MixedRealityInteractionMapping(4, "Axis1D.PrimaryIndexTrigger Press", AxisType.Digital, DeviceInputType.TriggerPress, ControllerMappingLibrary.AXIS_9), new MixedRealityInteractionMapping(5, "Axis1D.PrimaryHandTrigger Press", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_11), new MixedRealityInteractionMapping(6, "Axis2D.PrimaryThumbstick", AxisType.DualAxis, DeviceInputType.ThumbStick, ControllerMappingLibrary.AXIS_1, ControllerMappingLibrary.AXIS_2), new MixedRealityInteractionMapping(7, "Button.PrimaryThumbstick Touch", AxisType.Digital, DeviceInputType.ThumbStickTouch, KeyCode.JoystickButton16), @@ -41,7 +37,7 @@ public OculusTouchController(TrackingState trackingState, Handedness controllerH new MixedRealityInteractionMapping(9, "Button.PrimaryThumbstick Press", AxisType.Digital, DeviceInputType.ThumbStickPress, KeyCode.JoystickButton8), new MixedRealityInteractionMapping(10, "Button.Three Press", AxisType.Digital, DeviceInputType.ButtonPress, KeyCode.JoystickButton2), new MixedRealityInteractionMapping(11, "Button.Four Press", AxisType.Digital, DeviceInputType.ButtonPress, KeyCode.JoystickButton3), - new MixedRealityInteractionMapping(12, "Button.Start Press", AxisType.Digital, DeviceInputType.ButtonPress, KeyCode.JoystickButton7), + new MixedRealityInteractionMapping(12, "Button.Start Press", AxisType.Digital, DeviceInputType.ButtonPress, KeyCode.JoystickButton6), new MixedRealityInteractionMapping(13, "Button.Three Touch", AxisType.Digital, DeviceInputType.ButtonPress, KeyCode.JoystickButton12), new MixedRealityInteractionMapping(14, "Button.Four Touch", AxisType.Digital, DeviceInputType.ButtonPress, KeyCode.JoystickButton13), new MixedRealityInteractionMapping(15, "Touch.PrimaryThumbRest Touch", AxisType.Digital, DeviceInputType.ThumbTouch, KeyCode.JoystickButton18), @@ -55,7 +51,7 @@ public OculusTouchController(TrackingState trackingState, Handedness controllerH new MixedRealityInteractionMapping(1, "Axis1D.SecondaryIndexTrigger", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_10), new MixedRealityInteractionMapping(2, "Axis1D.SecondaryIndexTrigger Touch", AxisType.Digital, DeviceInputType.TriggerTouch, KeyCode.JoystickButton15), new MixedRealityInteractionMapping(3, "Axis1D.SecondaryIndexTrigger Near Touch", AxisType.Digital, DeviceInputType.TriggerNearTouch, ControllerMappingLibrary.AXIS_14), - new MixedRealityInteractionMapping(4, "Axis1D.SecondaryIndexTrigger Press", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton15), + new MixedRealityInteractionMapping(4, "Axis1D.SecondaryIndexTrigger Press", AxisType.Digital, DeviceInputType.TriggerPress, ControllerMappingLibrary.AXIS_10), new MixedRealityInteractionMapping(5, "Axis1D.SecondaryHandTrigger Press", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_12), new MixedRealityInteractionMapping(6, "Axis2D.SecondaryThumbstick", AxisType.DualAxis, DeviceInputType.ThumbStick, ControllerMappingLibrary.AXIS_4, ControllerMappingLibrary.AXIS_5), new MixedRealityInteractionMapping(7, "Button.SecondaryThumbstick Touch", AxisType.Digital, DeviceInputType.ThumbStickTouch, KeyCode.JoystickButton17), diff --git a/Assets/MixedRealityToolkit.Providers/OpenVR/ViveKnucklesController.cs b/Assets/MixedRealityToolkit.Providers/OpenVR/ViveKnucklesController.cs index b39a97a8f2a..b321ce91d38 100644 --- a/Assets/MixedRealityToolkit.Providers/OpenVR/ViveKnucklesController.cs +++ b/Assets/MixedRealityToolkit.Providers/OpenVR/ViveKnucklesController.cs @@ -15,10 +15,6 @@ public class ViveKnucklesController : GenericOpenVRController /// /// Constructor. /// - /// - /// - /// - /// public ViveKnucklesController(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) { @@ -29,7 +25,7 @@ public ViveKnucklesController(TrackingState trackingState, Handedness controller { new MixedRealityInteractionMapping(0, "Spatial Pointer", AxisType.SixDof, DeviceInputType.SpatialPointer, MixedRealityInputAction.None), new MixedRealityInteractionMapping(1, "Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_9), - new MixedRealityInteractionMapping(2, "Trigger Press", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton14), + new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, KeyCode.JoystickButton14), new MixedRealityInteractionMapping(3, "Trigger Touch", AxisType.Digital, DeviceInputType.TriggerTouch, ControllerMappingLibrary.AXIS_9), new MixedRealityInteractionMapping(4, "Grip Average", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_11), new MixedRealityInteractionMapping(5, "Trackpad Position", AxisType.DualAxis, DeviceInputType.Touchpad, ControllerMappingLibrary.AXIS_1, ControllerMappingLibrary.AXIS_2), @@ -49,7 +45,7 @@ public ViveKnucklesController(TrackingState trackingState, Handedness controller { new MixedRealityInteractionMapping(0, "Spatial Pointer", AxisType.SixDof, DeviceInputType.SpatialPointer, MixedRealityInputAction.None), new MixedRealityInteractionMapping(1, "Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_10), - new MixedRealityInteractionMapping(2, "Trigger Press", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton15), + new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, KeyCode.JoystickButton15), new MixedRealityInteractionMapping(3, "Trigger Touch", AxisType.Digital, DeviceInputType.TriggerTouch, ControllerMappingLibrary.AXIS_10), new MixedRealityInteractionMapping(4, "Grip Average", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_12), new MixedRealityInteractionMapping(5, "Trackpad Position", AxisType.DualAxis, DeviceInputType.Touchpad, ControllerMappingLibrary.AXIS_4, ControllerMappingLibrary.AXIS_5), diff --git a/Assets/MixedRealityToolkit.Providers/OpenVR/ViveWandController.cs b/Assets/MixedRealityToolkit.Providers/OpenVR/ViveWandController.cs index 2cc52a064a7..fe8d152f652 100644 --- a/Assets/MixedRealityToolkit.Providers/OpenVR/ViveWandController.cs +++ b/Assets/MixedRealityToolkit.Providers/OpenVR/ViveWandController.cs @@ -16,10 +16,6 @@ public class ViveWandController : GenericOpenVRController /// /// Constructor. /// - /// - /// - /// - /// public ViveWandController(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) { @@ -30,7 +26,7 @@ public ViveWandController(TrackingState trackingState, Handedness controllerHand { new MixedRealityInteractionMapping(0, "Spatial Pointer", AxisType.SixDof, DeviceInputType.SpatialPointer, MixedRealityInputAction.None), new MixedRealityInteractionMapping(1, "Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_9), - new MixedRealityInteractionMapping(2, "Trigger Press", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton14), + new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, KeyCode.JoystickButton14), new MixedRealityInteractionMapping(3, "Trigger Touch", AxisType.Digital, DeviceInputType.TriggerTouch, ControllerMappingLibrary.AXIS_9), new MixedRealityInteractionMapping(4, "Grip Press", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_11), new MixedRealityInteractionMapping(5, "Trackpad Position", AxisType.DualAxis, DeviceInputType.Touchpad, ControllerMappingLibrary.AXIS_1, ControllerMappingLibrary.AXIS_2), @@ -44,7 +40,7 @@ public ViveWandController(TrackingState trackingState, Handedness controllerHand { new MixedRealityInteractionMapping(0, "Spatial Pointer", AxisType.SixDof, DeviceInputType.SpatialPointer, MixedRealityInputAction.None), new MixedRealityInteractionMapping(1, "Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_10), - new MixedRealityInteractionMapping(2, "Trigger Press", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton15), + new MixedRealityInteractionMapping(2, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, KeyCode.JoystickButton15), new MixedRealityInteractionMapping(3, "Trigger Touch", AxisType.Digital, DeviceInputType.TriggerTouch, ControllerMappingLibrary.AXIS_10), new MixedRealityInteractionMapping(4, "Grip Press", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_12), new MixedRealityInteractionMapping(5, "Trackpad Position", AxisType.DualAxis, DeviceInputType.Touchpad, ControllerMappingLibrary.AXIS_4, ControllerMappingLibrary.AXIS_5), diff --git a/Assets/MixedRealityToolkit.Providers/OpenVR/WindowsMixedRealityOpenVRMotionController.cs b/Assets/MixedRealityToolkit.Providers/OpenVR/WindowsMixedRealityOpenVRMotionController.cs index 803ce07a627..68383b0e2c3 100644 --- a/Assets/MixedRealityToolkit.Providers/OpenVR/WindowsMixedRealityOpenVRMotionController.cs +++ b/Assets/MixedRealityToolkit.Providers/OpenVR/WindowsMixedRealityOpenVRMotionController.cs @@ -4,6 +4,7 @@ using Microsoft.MixedReality.Toolkit.Input; using Microsoft.MixedReality.Toolkit.Utilities; using UnityEngine; +using UnityEngine.Assertions; namespace Microsoft.MixedReality.Toolkit.OpenVR.Input { @@ -19,10 +20,6 @@ public class WindowsMixedRealityOpenVRMotionController : GenericOpenVRController /// /// Constructor. /// - /// - /// - /// - /// public WindowsMixedRealityOpenVRMotionController(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) { @@ -37,7 +34,7 @@ public WindowsMixedRealityOpenVRMotionController(TrackingState trackingState, Ha new MixedRealityInteractionMapping(2, "Grip Press", AxisType.SingleAxis, DeviceInputType.TriggerPress, ControllerMappingLibrary.AXIS_11), new MixedRealityInteractionMapping(3, "Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_9), new MixedRealityInteractionMapping(4, "Trigger Touch", AxisType.SingleAxis, DeviceInputType.TriggerTouch, ControllerMappingLibrary.AXIS_9), - new MixedRealityInteractionMapping(5, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton14), + new MixedRealityInteractionMapping(5, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, KeyCode.JoystickButton14), new MixedRealityInteractionMapping(6, "Touchpad Position", AxisType.DualAxis, DeviceInputType.Touchpad, ControllerMappingLibrary.AXIS_17, ControllerMappingLibrary.AXIS_18, false, true), new MixedRealityInteractionMapping(7, "Touchpad Touch", AxisType.Digital, DeviceInputType.TouchpadTouch, KeyCode.JoystickButton16), new MixedRealityInteractionMapping(8, "Touchpad Press", AxisType.Digital, DeviceInputType.TouchpadPress, KeyCode.JoystickButton8), @@ -51,10 +48,10 @@ public WindowsMixedRealityOpenVRMotionController(TrackingState trackingState, Ha { new MixedRealityInteractionMapping(0, "Spatial Pointer", AxisType.SixDof, DeviceInputType.SpatialPointer, MixedRealityInputAction.None), new MixedRealityInteractionMapping(1, "Spatial Grip", AxisType.SixDof, DeviceInputType.SpatialGrip, MixedRealityInputAction.None), - new MixedRealityInteractionMapping(2, "Grip Press", AxisType.SingleAxis, DeviceInputType.ButtonPress, ControllerMappingLibrary.AXIS_12), + new MixedRealityInteractionMapping(2, "Grip Press", AxisType.SingleAxis, DeviceInputType.TriggerPress, ControllerMappingLibrary.AXIS_12), new MixedRealityInteractionMapping(3, "Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger, ControllerMappingLibrary.AXIS_10), new MixedRealityInteractionMapping(4, "Trigger Touch", AxisType.SingleAxis, DeviceInputType.TriggerTouch, ControllerMappingLibrary.AXIS_10), - new MixedRealityInteractionMapping(5, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.TriggerPress, KeyCode.JoystickButton15), + new MixedRealityInteractionMapping(5, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, KeyCode.JoystickButton15), new MixedRealityInteractionMapping(6, "Touchpad Position", AxisType.DualAxis, DeviceInputType.Touchpad, ControllerMappingLibrary.AXIS_19, ControllerMappingLibrary.AXIS_20, false, true), new MixedRealityInteractionMapping(7, "Touchpad Touch", AxisType.Digital, DeviceInputType.TouchpadTouch, KeyCode.JoystickButton17), new MixedRealityInteractionMapping(8, "Touchpad Press", AxisType.Digital, DeviceInputType.TouchpadPress, KeyCode.JoystickButton9), @@ -63,10 +60,18 @@ public WindowsMixedRealityOpenVRMotionController(TrackingState trackingState, Ha new MixedRealityInteractionMapping(11, "Thumbstick Press", AxisType.Digital, DeviceInputType.ButtonPress, KeyCode.JoystickButton19), }; - /// + /// + /// Setup the default interactions, then update the spatial pointer rotation with the preconfigured offset angle. + /// public override void SetupDefaultInteractions(Handedness controllerHandedness) { - AssignControllerMappings(controllerHandedness == Handedness.Left ? DefaultLeftHandedInteractions : DefaultRightHandedInteractions); + base.SetupDefaultInteractions(controllerHandedness); + + Assert.AreEqual(Interactions[0].Description, "Spatial Pointer", "The first interaction mapping is no longer the Spatial Pointer. Please update."); + + MixedRealityPose startingRotation = MixedRealityPose.ZeroIdentity; + startingRotation.Rotation *= Quaternion.AngleAxis(PointerOffsetAngle, Vector3.left); + Interactions[0].PoseData = startingRotation; } } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Providers/Version.txt b/Assets/MixedRealityToolkit.Providers/Version.txt index e670c2aeaab..4df313d1cc0 100644 --- a/Assets/MixedRealityToolkit.Providers/Version.txt +++ b/Assets/MixedRealityToolkit.Providers/Version.txt @@ -1 +1 @@ -Microsoft Mixed Reality Toolkit 2.0.0 \ No newline at end of file +Microsoft Mixed Reality Toolkit 2.1.0 \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/BaseWindowsMixedRealitySource.cs b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/BaseWindowsMixedRealitySource.cs index 9ee907da426..0376c87b792 100644 --- a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/BaseWindowsMixedRealitySource.cs +++ b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/BaseWindowsMixedRealitySource.cs @@ -19,10 +19,6 @@ public abstract class BaseWindowsMixedRealitySource : BaseController /// /// Constructor. /// - /// - /// - /// - /// public BaseWindowsMixedRealitySource(TrackingState trackingState, Handedness sourceHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, sourceHandedness, inputSource, interactions) { @@ -190,7 +186,6 @@ private void UpdateSourceData(InteractionSourceState interactionSourceState) /// Update the spatial pointer input from the device. /// /// The InteractionSourceState retrieved from the platform. - /// private void UpdatePointerData(InteractionSourceState interactionSourceState, MixedRealityInteractionMapping interactionMapping) { if (interactionSourceState.source.supportsPointing) @@ -219,7 +214,6 @@ private void UpdatePointerData(InteractionSourceState interactionSourceState, Mi /// Update the spatial grip input from the device. /// /// The InteractionSourceState retrieved from the platform. - /// private void UpdateGripData(InteractionSourceState interactionSourceState, MixedRealityInteractionMapping interactionMapping) { switch (interactionMapping.AxisType) @@ -249,7 +243,6 @@ private void UpdateGripData(InteractionSourceState interactionSourceState, Mixed /// Update the trigger and grasped input from the device. /// /// The InteractionSourceState retrieved from the platform. - /// private void UpdateTriggerData(InteractionSourceState interactionSourceState, MixedRealityInteractionMapping interactionMapping) { switch (interactionMapping.InputType) @@ -344,6 +337,10 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi private bool GetSelectPressedWorkaround(InteractionSourceState interactionSourceState) { bool selectPressed = interactionSourceState.selectPressed; + // Only do this workaround inside the Unity editor (in holographic remoting scenarios). + // When this is invoked on device, this will display an error attempting to load the + // remoting binaries. +#if UNITY_EDITOR if (interactionSourceState.source.kind == InteractionSourceKind.Hand && UnityEngine.XR.WSA.HolographicRemoting.ConnectionState == UnityEngine.XR.WSA.HolographicStreamerConnectionState.Connected) { @@ -357,6 +354,7 @@ private bool GetSelectPressedWorkaround(InteractionSourceState interactionSource selectPressed = interactionSourceState.anyPressed; } +#endif // UNITY_EDITOR return selectPressed; } diff --git a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityArticulatedHand.cs b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityArticulatedHand.cs index 99c01382ce9..ad2e108d6ab 100644 --- a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityArticulatedHand.cs +++ b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityArticulatedHand.cs @@ -28,22 +28,12 @@ namespace Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input new[] { Handedness.Left, Handedness.Right })] public class WindowsMixedRealityArticulatedHand : BaseWindowsMixedRealitySource, IMixedRealityHand { - /// + /// /// Constructor. /// - /// - /// - /// - /// public WindowsMixedRealityArticulatedHand(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) { -#if WINDOWS_UWP - UnityEngine.WSA.Application.InvokeOnUIThread(() => - { - spatialInteractionManager = SpatialInteractionManager.GetForCurrentView(); - }, true); -#endif // WINDOWS_UWP } /// @@ -107,6 +97,22 @@ public override bool IsInPointingPose private readonly HandRay handRay = new HandRay(); #if WINDOWS_UWP + private SpatialInteractionManager SpatialInteractionManager + { + get + { + if (spatialInteractionManager == null) + { + UnityEngine.WSA.Application.InvokeOnUIThread(() => + { + spatialInteractionManager = SpatialInteractionManager.GetForCurrentView(); + }, true); + } + + return spatialInteractionManager; + } + } + private SpatialInteractionManager spatialInteractionManager = null; private HandMeshObserver handMeshObserver = null; private int[] handMeshTriangleIndices = null; @@ -206,7 +212,7 @@ private void UpdateHandData(InteractionSourceState interactionSourceState) } PerceptionTimestamp perceptionTimestamp = PerceptionTimestampHelper.FromHistoricalTargetTime(DateTimeOffset.Now); - IReadOnlyList sources = spatialInteractionManager?.GetDetectedSourcesAtTimestamp(perceptionTimestamp); + IReadOnlyList sources = SpatialInteractionManager?.GetDetectedSourcesAtTimestamp(perceptionTimestamp); foreach (SpatialInteractionSourceState sourceState in sources) { if (sourceState.Source.Id.Equals(interactionSourceState.source.id)) diff --git a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityController.cs b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityController.cs index 87f6e3b055d..1bcb4ca02e0 100644 --- a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityController.cs +++ b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityController.cs @@ -32,10 +32,6 @@ public class WindowsMixedRealityController : BaseWindowsMixedRealitySource /// /// Constructor. /// - /// - /// - /// - /// public WindowsMixedRealityController(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) { @@ -106,7 +102,6 @@ public override void UpdateController(InteractionSourceState interactionSourceSt /// Update the touchpad input from the device. /// /// The InteractionSourceState retrieved from the platform. - /// private void UpdateTouchpadData(InteractionSourceState interactionSourceState, MixedRealityInteractionMapping interactionMapping) { switch (interactionMapping.InputType) @@ -171,7 +166,6 @@ private void UpdateTouchpadData(InteractionSourceState interactionSourceState, M /// Update the thumbstick input from the device. /// /// The InteractionSourceState retrieved from the platform. - /// private void UpdateThumbstickData(InteractionSourceState interactionSourceState, MixedRealityInteractionMapping interactionMapping) { switch (interactionMapping.InputType) @@ -216,7 +210,6 @@ private void UpdateThumbstickData(InteractionSourceState interactionSourceState, /// Update the menu button state. /// /// The InteractionSourceState retrieved from the platform. - /// private void UpdateMenuData(InteractionSourceState interactionSourceState, MixedRealityInteractionMapping interactionMapping) { // Update the interaction data source diff --git a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityDeviceManager.cs b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityDeviceManager.cs index 169d01d3b6a..5a877d6623c 100644 --- a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityDeviceManager.cs +++ b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealityDeviceManager.cs @@ -235,7 +235,7 @@ public static WindowsGestureSettings NavigationSettings { navigationSettings = value; - if (Application.isPlaying) + if (Application.isPlaying && !useRailsNavigation) { navigationGestureRecognizer?.UpdateAndResetGestures(WSANavigationSettings); } @@ -254,7 +254,7 @@ public static WindowsGestureSettings RailsNavigationSettings { railsNavigationSettings = value; - if (Application.isPlaying) + if (Application.isPlaying && useRailsNavigation) { navigationGestureRecognizer?.UpdateAndResetGestures(WSARailsNavigationSettings); } @@ -275,7 +275,7 @@ public static bool UseRailsNavigation if (Application.isPlaying) { - navigationGestureRecognizer?.UpdateAndResetGestures(useRailsNavigation ? WSANavigationSettings : WSARailsNavigationSettings); + navigationGestureRecognizer?.UpdateAndResetGestures(useRailsNavigation ? WSARailsNavigationSettings : WSANavigationSettings); } } } @@ -283,6 +283,7 @@ public static bool UseRailsNavigation private MixedRealityInputAction holdAction = MixedRealityInputAction.None; private MixedRealityInputAction navigationAction = MixedRealityInputAction.None; private MixedRealityInputAction manipulationAction = MixedRealityInputAction.None; + private MixedRealityInputAction selectAction = MixedRealityInputAction.None; private static GestureRecognizer gestureRecognizer; private static WsaGestureSettings WSAGestureSettings => (WsaGestureSettings)gestureSettings; @@ -304,9 +305,6 @@ public override void Enable() IMixedRealityInputSystem inputSystem = Service as IMixedRealityInputSystem; - RegisterGestureEvents(); - RegisterNavigationEvents(); - if ((inputSystem != null) && InputSystemProfile.GesturesProfile != null) { @@ -331,10 +329,16 @@ public override void Enable() case GestureInputType.Navigation: navigationAction = gesture.Action; break; + case GestureInputType.Select: + selectAction = gesture.Action; + break; } } } + RegisterGestureEvents(); + RegisterNavigationEvents(); + InteractionManager.InteractionSourceDetected += InteractionManager_InteractionSourceDetected; InteractionManager.InteractionSourceLost += InteractionManager_InteractionSourceLost; InteractionManager.InteractionSourcePressed += InteractionManager_InteractionSourcePressed; @@ -386,64 +390,96 @@ public override void Update() private void RegisterGestureEvents() { - if (gestureRecognizer == null) + if (holdAction != MixedRealityInputAction.None || + manipulationAction != MixedRealityInputAction.None || + selectAction != MixedRealityInputAction.None) { - try + if (gestureRecognizer == null) { - gestureRecognizer = new GestureRecognizer(); + try + { + gestureRecognizer = new GestureRecognizer(); + } + catch (Exception ex) + { + Debug.LogWarning($"Failed to create gesture recognizer. OS version might not support it. Exception: {ex}"); + gestureRecognizer = null; + return; + } + gestureRecognizer.SetRecognizableGestures(WSAGestureSettings); } - catch (Exception ex) + + if (holdAction != MixedRealityInputAction.None) { - Debug.LogWarning($"Failed to create gesture recognizer. OS version might not support it. Exception: {ex}"); - gestureRecognizer = null; - return; + gestureRecognizer.HoldStarted += GestureRecognizer_HoldStarted; + gestureRecognizer.HoldCompleted += GestureRecognizer_HoldCompleted; + gestureRecognizer.HoldCanceled += GestureRecognizer_HoldCanceled; } - } - gestureRecognizer.HoldStarted += GestureRecognizer_HoldStarted; - gestureRecognizer.HoldCompleted += GestureRecognizer_HoldCompleted; - gestureRecognizer.HoldCanceled += GestureRecognizer_HoldCanceled; + if (manipulationAction != MixedRealityInputAction.None) + { + gestureRecognizer.ManipulationStarted += GestureRecognizer_ManipulationStarted; + gestureRecognizer.ManipulationUpdated += GestureRecognizer_ManipulationUpdated; + gestureRecognizer.ManipulationCompleted += GestureRecognizer_ManipulationCompleted; + gestureRecognizer.ManipulationCanceled += GestureRecognizer_ManipulationCanceled; + } - gestureRecognizer.ManipulationStarted += GestureRecognizer_ManipulationStarted; - gestureRecognizer.ManipulationUpdated += GestureRecognizer_ManipulationUpdated; - gestureRecognizer.ManipulationCompleted += GestureRecognizer_ManipulationCompleted; - gestureRecognizer.ManipulationCanceled += GestureRecognizer_ManipulationCanceled; + if (selectAction != MixedRealityInputAction.None) + { + gestureRecognizer.Tapped += GestureRecognizer_Tapped; + } + } } private void UnregisterGestureEvents() { if (gestureRecognizer == null) { return; } - gestureRecognizer.HoldStarted -= GestureRecognizer_HoldStarted; - gestureRecognizer.HoldCompleted -= GestureRecognizer_HoldCompleted; - gestureRecognizer.HoldCanceled -= GestureRecognizer_HoldCanceled; + if (holdAction != MixedRealityInputAction.None) + { + gestureRecognizer.HoldStarted -= GestureRecognizer_HoldStarted; + gestureRecognizer.HoldCompleted -= GestureRecognizer_HoldCompleted; + gestureRecognizer.HoldCanceled -= GestureRecognizer_HoldCanceled; + } - gestureRecognizer.ManipulationStarted -= GestureRecognizer_ManipulationStarted; - gestureRecognizer.ManipulationUpdated -= GestureRecognizer_ManipulationUpdated; - gestureRecognizer.ManipulationCompleted -= GestureRecognizer_ManipulationCompleted; - gestureRecognizer.ManipulationCanceled -= GestureRecognizer_ManipulationCanceled; + if (manipulationAction != MixedRealityInputAction.None) + { + gestureRecognizer.ManipulationStarted -= GestureRecognizer_ManipulationStarted; + gestureRecognizer.ManipulationUpdated -= GestureRecognizer_ManipulationUpdated; + gestureRecognizer.ManipulationCompleted -= GestureRecognizer_ManipulationCompleted; + gestureRecognizer.ManipulationCanceled -= GestureRecognizer_ManipulationCanceled; + } + + if (selectAction != MixedRealityInputAction.None) + { + gestureRecognizer.Tapped -= GestureRecognizer_Tapped; + } } private void RegisterNavigationEvents() { - if (navigationGestureRecognizer == null) + if (navigationAction != MixedRealityInputAction.None) { - try - { - navigationGestureRecognizer = new GestureRecognizer(); - } - catch (Exception ex) + if (navigationGestureRecognizer == null) { - Debug.LogWarning($"Failed to create gesture recognizer. OS version might not support it. Exception: {ex}"); - navigationGestureRecognizer = null; - return; + try + { + navigationGestureRecognizer = new GestureRecognizer(); + } + catch (Exception ex) + { + Debug.LogWarning($"Failed to create gesture recognizer. OS version might not support it. Exception: {ex}"); + navigationGestureRecognizer = null; + return; + } + navigationGestureRecognizer.SetRecognizableGestures(useRailsNavigation ? WSARailsNavigationSettings : WSANavigationSettings); } - } - navigationGestureRecognizer.NavigationStarted += NavigationGestureRecognizer_NavigationStarted; - navigationGestureRecognizer.NavigationUpdated += NavigationGestureRecognizer_NavigationUpdated; - navigationGestureRecognizer.NavigationCompleted += NavigationGestureRecognizer_NavigationCompleted; - navigationGestureRecognizer.NavigationCanceled += NavigationGestureRecognizer_NavigationCanceled; + navigationGestureRecognizer.NavigationStarted += NavigationGestureRecognizer_NavigationStarted; + navigationGestureRecognizer.NavigationUpdated += NavigationGestureRecognizer_NavigationUpdated; + navigationGestureRecognizer.NavigationCompleted += NavigationGestureRecognizer_NavigationCompleted; + navigationGestureRecognizer.NavigationCanceled += NavigationGestureRecognizer_NavigationCanceled; + } } private void UnregisterNavigationEvents() @@ -769,6 +805,16 @@ private void GestureRecognizer_ManipulationCanceled(ManipulationCanceledEventArg } } + private void GestureRecognizer_Tapped(TappedEventArgs args) + { + var controller = GetController(args.source, false); + if (controller != null) + { + IMixedRealityInputSystem inputSystem = Service as IMixedRealityInputSystem; + inputSystem.RaiseGestureCompleted(controller, selectAction); + } + } + #endregion Gesture Recognizer Events #region Navigation Recognizer Events @@ -860,4 +906,4 @@ private void UpdateInteractionManagerReading() #endif // UNITY_WSA } -} \ No newline at end of file +} diff --git a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealitySpatialMeshObserver.cs b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealitySpatialMeshObserver.cs index b4bed2ff3f8..911c621c133 100644 --- a/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealitySpatialMeshObserver.cs +++ b/Assets/MixedRealityToolkit.Providers/WindowsMixedReality/WindowsMixedRealitySpatialMeshObserver.cs @@ -5,11 +5,11 @@ using Microsoft.MixedReality.Toolkit.Utilities; using Microsoft.MixedReality.Toolkit.Windows.Utilities; using System.Collections.Generic; -using System.Globalization; using UnityEngine; using UnityEngine.EventSystems; #if UNITY_WSA +using UnityEngine.XR; using UnityEngine.XR.WSA; #endif // UNITY_WSA @@ -23,12 +23,12 @@ namespace Microsoft.MixedReality.Toolkit.WindowsMixedReality.SpatialAwareness typeof(IMixedRealitySpatialAwarenessSystem), SupportedPlatforms.WindowsUniversal, "Windows Mixed Reality Spatial Mesh Observer", - "Profiles/DefaultMixedRealitySpatialAwarenessMeshObserverProfile.asset", + "Profiles/DefaultMixedRealitySpatialAwarenessMeshObserverProfile.asset", "MixedRealityToolkit.SDK")] [HelpURL("https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/SpatialAwareness/SpatialAwarenessGettingStarted.html")] - public class WindowsMixedRealitySpatialMeshObserver : - BaseSpatialObserver, - IMixedRealitySpatialAwarenessMeshObserver, + public class WindowsMixedRealitySpatialMeshObserver : + BaseSpatialObserver, + IMixedRealitySpatialAwarenessMeshObserver, IMixedRealityCapabilityCheck { /// @@ -254,7 +254,7 @@ private int LookupTriangleDensity(SpatialAwarenessMeshLevelOfDetail levelOfDetai { int triangleDensity = 0; - switch(levelOfDetail) + switch (levelOfDetail) { case SpatialAwarenessMeshLevelOfDetail.Coarse: triangleDensity = 0; @@ -361,7 +361,7 @@ public override void Resume() Debug.LogWarning("The Windows Mixed Reality spatial observer is currently running."); return; } - + // We want the first update immediately. lastUpdated = 0; @@ -427,11 +427,6 @@ private void CleanupObservedObjects() { if (Application.isPlaying) { - // Cleanup the scene objects are managing - if (observedObjectParent != null) - { - observedObjectParent.transform.DetachChildren(); - } foreach (SpatialAwarenessMeshObject meshObject in meshes.Values) { @@ -478,10 +473,7 @@ private void DisposeObserver() /// private void UpdateObserver() { - if (SpatialAwarenessSystem == null) - { - return; - } + if (SpatialAwarenessSystem == null || HolographicSettings.IsDisplayOpaque || !XRDevice.isPresent) { return; } // Only update the observer if it is running. if (IsRunning && (outstandingMeshObject == null)) @@ -528,7 +520,6 @@ private class PlayspaceAdapter : MonoBehaviour /// /// Second transform to apply /// First transform to apply - /// private static Pose Concatenate(Pose lhs, Pose rhs) { return rhs.GetTransformedBy(lhs); @@ -561,9 +552,9 @@ private void RequestMesh(SurfaceId surfaceId) if (spareMeshObject == null) { newMesh = SpatialAwarenessMeshObject.Create( - null, - MeshPhysicsLayer, - meshName, + null, + MeshPhysicsLayer, + meshName, surfaceId.handle, ObservedObjectParent); @@ -652,7 +643,6 @@ protected void RemoveMeshObject(int id) /// /// Reclaims the to allow for later reuse. /// - /// protected void ReclaimMeshObject(SpatialAwarenessMeshObject availableMeshObject) { if (spareMeshObject == null) @@ -685,13 +675,16 @@ private void ConfigureObserverVolume() return; } + // If we aren't using a HoloLens or there isn't an XR device present, return. + if (observer == null || HolographicSettings.IsDisplayOpaque || !XRDevice.isPresent) { return; } + // The observer's origin is in world space, we need it in the camera's parent's space // to set the volume. The MixedRealityPlayspace provides that space that the camera/head moves around in. Vector3 observerOriginPlayspace = MixedRealityPlayspace.InverseTransformPoint(ObserverOrigin); Quaternion observerRotationPlayspace = Quaternion.Inverse(MixedRealityPlayspace.Rotation) * ObserverRotation; // Update the observer - switch(ObserverVolumeType) + switch (ObserverVolumeType) { case VolumeType.AxisAlignedCube: observer.SetVolumeAsAxisAlignedBox(observerOriginPlayspace, ObservationExtents); diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell.meta b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell.meta new file mode 100644 index 00000000000..933066edb05 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2ef06169bddeaa44db21595720bd89e2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellHandler.cs b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellHandler.cs new file mode 100644 index 00000000000..ddfe95ff1c9 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellHandler.cs @@ -0,0 +1,253 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Input; +using System; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Experimental.Dwell +{ + /// + /// Use this component to add a Dwell modality (https://docs.microsoft.com/en-us/windows/mixed-reality/gaze-and-dwell) to the UI target. + /// + public class DwellHandler : MonoBehaviour, IMixedRealityFocusHandler + { + /// + /// None = 0 - Default state + /// FocusGained - State reached when Focus enters target + /// DwellIntended - State reached when Focus stays on target for dwellIntentDelay seconds. Signifies user's intent to interact with the target. + /// DwellStarted - State reached when Focus stays on target for dwellIntentDelay + dwellStartDelay seconds. Typically tied to invoke feedback for dwell. + /// DwellCompleted - State reached when Focus stays on target for dwellIntentDelay + dwellStartDelay + timeToCompleteDwell seconds. Typically invokes the button clicked event. + /// DwellCanceled - State reached when DwellStarted state is reached but focus exits the target before timeToCompleteDwell. + /// + protected enum DwellStateType + { + None = 0, + FocusGained, + DwellIntended, + DwellStarted, + DwellCompleted, + DwellCanceled, + } + + [Header("Dwell Settings")] + [SerializeField] + protected DwellProfile dwellProfile = null; + + [Header("Dwell Events")] + [SerializeField] + private DwellUnityEvent DwellIntended = new DwellUnityEvent(); + + [SerializeField] + private DwellUnityEvent DwellStarted = new DwellUnityEvent(); + + [SerializeField] + private DwellUnityEvent DwellCompleted = new DwellUnityEvent(); + + [SerializeField] + private DwellUnityEvent DwellCanceled = new DwellUnityEvent(); + + /// + /// Property exposing the computation for what percentage of dwell has progressed. + /// + public virtual float DwellProgress + { + get + { + switch (CurrentDwellState) + { + case DwellStateType.None: + case DwellStateType.FocusGained: + return 0; + case DwellStateType.DwellStarted: + return GetCurrentDwellProgress(); + case DwellStateType.DwellCompleted: + return 1; + case DwellStateType.DwellCanceled: + if (dwellProfile.TimeToAllowDwellResume > TimeSpan.Zero) + { + return GetCurrentDwellProgress(); + } + break; + default: + return 0; + } + + return 0; + } + } + + /// + /// Cached pointer reference to track focus events maps to the same pointer id that initiated dwell + /// + private IMixedRealityPointer pointer; + + private DateTime focusEnterTime = DateTime.MaxValue; + private DateTime focusExitTime = DateTime.MaxValue; + + /// + /// Exposes whether the target has focus from the pointer type defined in dwell profile settings + /// + protected bool HasFocus { get; private set; } + + /// + /// Captures the dwell status + /// + protected DwellStateType CurrentDwellState = DwellStateType.None; + + /// + /// Abstracted value for the how long the dwelled object still needs to be focused to complete the dwell action + /// Value ranges from 0 to "TimeToCompleteDwell" setting in the dwellprofile. This picks up the same unit as TimeToCompleteDwell + /// + protected float FillTimer = 0; + + private void Awake() + { + Debug.Assert(dwellProfile != null, "DwellProfile is null, creating default profile."); + + if (dwellProfile == null) + { + dwellProfile = ScriptableObject.CreateInstance(); + } + } + + /// + /// Valid state transitions for default implementation + /// Current State | Valid Transitions | Condition (if any) + /// None | FocusGained + /// FocusGained | None + /// FocusGained | DwellIntended + /// DwellIntended | DwellStarted + /// DwellIntended | None + /// DwellCanceled | None + /// DwellCanceled | DwellStarted | dwellProfile.TimeToAllowDwellResume > 0 + /// DwellStarted | DwellCompleted + /// DwellStarted | DwellCanceled + /// + private void Update() + { + UpdateFillTimer(); + + if (HasFocus && CurrentDwellState != DwellStateType.DwellCompleted) + { + TimeSpan focusDuration = (DateTime.UtcNow - this.focusEnterTime); + + if (CurrentDwellState == DwellStateType.FocusGained && focusDuration >= dwellProfile.DwellIntentDelay) + { + CurrentDwellState = DwellStateType.DwellIntended; + DwellIntended.Invoke(pointer); + } + else if (CurrentDwellState == DwellStateType.DwellIntended && (focusDuration - dwellProfile.DwellIntentDelay) >= dwellProfile.DwellStartDelay) + { + CurrentDwellState = DwellStateType.DwellStarted; + DwellStarted.Invoke(pointer); + } + else if (CurrentDwellState == DwellStateType.DwellStarted && (focusDuration - dwellProfile.DwellIntentDelay - dwellProfile.DwellStartDelay) >= dwellProfile.TimeToCompleteDwell) + { + CurrentDwellState = DwellStateType.DwellCompleted; + DwellCompleted.Invoke(pointer); + } + } + } + + private float GetCurrentDwellProgress() + { + return Mathf.Clamp(FillTimer / (float)dwellProfile.TimeToCompleteDwell.TotalSeconds, 0f, 1f); + } + + /// + /// Default FillTimer computation based on profile settings + /// + protected virtual void UpdateFillTimer() + { + switch (CurrentDwellState) + { + case DwellStateType.None: + case DwellStateType.FocusGained: + case DwellStateType.DwellIntended: + FillTimer = 0; + break; + case DwellStateType.DwellStarted: + FillTimer += Time.deltaTime; + break; + case DwellStateType.DwellCompleted: + break; + case DwellStateType.DwellCanceled: + // this is a conditional state transition and can be overriden by the deriving class as per profile settings. + if ((DateTime.UtcNow - focusExitTime) > dwellProfile.TimeToAllowDwellResume) + { + FillTimer = 0; + CurrentDwellState = DwellStateType.None; + } + break; + default: + FillTimer = 0; + break; + } + } + + public void OnFocusEnter(FocusEventData eventData) + { + if (eventData.NewFocusedObject == gameObject + && eventData.Pointer.InputSourceParent.SourceType == dwellProfile.DwellPointerType) + { + HasFocus = true; + + // check intent to resume + if (CurrentDwellState == DwellStateType.DwellCanceled + && pointer.InputSourceParent.SourceId == eventData.Pointer.InputSourceParent.SourceId //make sure the returning pointer id is the same + && (DateTime.UtcNow - focusExitTime) <= dwellProfile.TimeToAllowDwellResume) + { + // Add the time duration focus was away since this is a dwell resume and we need to account for the time that focus was lost for the target. + // Assigning this the current time would restart computation for dwell progress. + focusEnterTime = focusEnterTime.AddSeconds((DateTime.UtcNow - focusExitTime).TotalSeconds); + CurrentDwellState = DwellStateType.DwellStarted; + DwellStarted.Invoke(pointer); + } + // dwell state machine re-starts + else if (CurrentDwellState <= DwellStateType.DwellIntended) + { + focusEnterTime = DateTime.UtcNow; + CurrentDwellState = DwellStateType.FocusGained; + pointer = eventData.Pointer; + FillTimer = 0; + } + } + } + + public void OnFocusExit(FocusEventData eventData) + { + if (eventData.OldFocusedObject == gameObject + && eventData.Pointer.InputSourceParent.SourceType == dwellProfile.DwellPointerType + && pointer.InputSourceParent.SourceId == eventData.Pointer.InputSourceParent.SourceId) + { + HasFocus = false; + + if (CurrentDwellState == DwellStateType.DwellStarted) + { + DwellCanceled.Invoke(eventData.Pointer); + CurrentDwellState = DwellStateType.DwellCanceled; + focusExitTime = DateTime.UtcNow; + } + else + { + CurrentDwellState = DwellStateType.None; + focusExitTime = DateTime.MaxValue; + } + } + } + + /// + /// Method that can be invoked if external factors (eg. alternate input modality pre-emptively invoked the target) force the dwell action to prematurely end + /// + public virtual void CancelDwell() + { + DwellCanceled.Invoke(pointer); + focusEnterTime = DateTime.MaxValue; + CurrentDwellState = DwellStateType.None; + focusExitTime = DateTime.MaxValue; + FillTimer = 0; + } + } +} + diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellHandler.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellHandler.cs.meta new file mode 100644 index 00000000000..d1f006bff0c --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54277e9e7b297324880fa818608ea979 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellProfile.cs b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellProfile.cs new file mode 100644 index 00000000000..9577e25dc4c --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellProfile.cs @@ -0,0 +1,79 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Input; +using System; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Experimental.Dwell +{ + [MixedRealityServiceProfile(typeof(DwellProfile))] + [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Profiles/Dwell Profile", fileName = "DwellProfile", order = 100)] + [Serializable] + public class DwellProfile : ScriptableObject + { + [Tooltip("Pointer type to use for triggering a dwell interaction")] + [SerializeField] + private InputSourceType dwellTriggerPointerType = InputSourceType.Head; + + [Tooltip("Delay in seconds until it is determined that the user intends to interact with the target.")] + [SerializeField] + [Range(0, 2)] + private float dwellIntentDelay = 0; + + [Tooltip("Delay in seconds until DwellStarted event is invoked.")] + [SerializeField] + [Range(0, 5)] + private float dwellStartDelay = 0.5f; + + [Tooltip("Additional time in seconds (not including the dwellStartDelay) the user needs to keep looking at the UI to trigger select on it. Raises DwellCompleted event.")] + [SerializeField] + [Range(0, 20)] + private float timeToCompleteDwell = 4; + + [Tooltip("Time in seconds when focus can fall off the target and come back to resume an ongoing dwell.This only comes into play after DwellStarted state but before DwellCompleted is invoked.")] + [SerializeField] + [Range(0, 20)] + private float timeToAllowDwellResume = 0; + + public InputSourceType DwellPointerType + { + get + { + return dwellTriggerPointerType; + } + } + + public TimeSpan DwellIntentDelay + { + get + { + return TimeSpan.FromSeconds(dwellIntentDelay); + } + } + + public TimeSpan DwellStartDelay + { + get + { + return TimeSpan.FromSeconds(dwellStartDelay); + } + } + + public TimeSpan TimeToCompleteDwell + { + get + { + return TimeSpan.FromSeconds(timeToCompleteDwell); + } + } + + public TimeSpan TimeToAllowDwellResume + { + get + { + return TimeSpan.FromSeconds(timeToAllowDwellResume); + } + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellProfile.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellProfile.cs.meta new file mode 100644 index 00000000000..1ced9bc4669 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellProfile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3db035c6526baa42b9beae76c31a814 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellUnityEvent.cs b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellUnityEvent.cs new file mode 100644 index 00000000000..e2ae1c80c5d --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellUnityEvent.cs @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Input; +using System; +using UnityEngine.Events; + +namespace Microsoft.MixedReality.Toolkit.Experimental.Dwell +{ + /// + /// Unity event for a dwell event. Contains the pointer reference. + /// + [Serializable] + public class DwellUnityEvent : UnityEvent { } +} diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellUnityEvent.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellUnityEvent.cs.meta new file mode 100644 index 00000000000..3aecf8ad772 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Experimental/Features/Dwell/DwellUnityEvent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be6eca3f0be3ba141934148a21147b5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers.meta new file mode 100644 index 00000000000..3f70e1c9b2d --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58560e123a1d4ad4ebf67fdaf141ac88 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Prefabs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Prefabs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Prefabs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Prefabs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Prefabs/BoundarySystem.prefab b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Prefabs/BoundarySystem.prefab similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Prefabs/BoundarySystem.prefab rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Prefabs/BoundarySystem.prefab diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Prefabs/BoundarySystem.prefab.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Prefabs/BoundarySystem.prefab.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Prefabs/BoundarySystem.prefab.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Prefabs/BoundarySystem.prefab.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Scripts.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Scripts.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Scripts.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Scripts.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Scripts/BoundarySystemManager.cs b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Scripts/BoundarySystemManager.cs similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Scripts/BoundarySystemManager.cs rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Scripts/BoundarySystemManager.cs diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Scripts/BoundarySystemManager.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Scripts/BoundarySystemManager.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Boundary/Scripts/BoundarySystemManager.cs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Boundary/Scripts/BoundarySystemManager.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Prefabs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Prefabs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Prefabs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Prefabs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Prefabs/CameraSystem.prefab b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Prefabs/CameraSystem.prefab similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Prefabs/CameraSystem.prefab rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Prefabs/CameraSystem.prefab diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Prefabs/CameraSystem.prefab.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Prefabs/CameraSystem.prefab.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Prefabs/CameraSystem.prefab.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Prefabs/CameraSystem.prefab.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Scripts.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Scripts.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Scripts.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Scripts.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Scripts/CameraSystemManager.cs b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Scripts/CameraSystemManager.cs similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Scripts/CameraSystemManager.cs rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Scripts/CameraSystemManager.cs diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Scripts/CameraSystemManager.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Scripts/CameraSystemManager.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Scripts/CameraSystemManager.cs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Scripts/CameraSystemManager.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Prefabs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Prefabs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Prefabs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Prefabs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Prefabs/DiagnosticsSystem.prefab b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Prefabs/DiagnosticsSystem.prefab similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Prefabs/DiagnosticsSystem.prefab rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Prefabs/DiagnosticsSystem.prefab diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Prefabs/DiagnosticsSystem.prefab.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Prefabs/DiagnosticsSystem.prefab.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Prefabs/DiagnosticsSystem.prefab.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Prefabs/DiagnosticsSystem.prefab.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Scripts.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Scripts.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Scripts.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Scripts.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Scripts/DiagnosticsSystemManager.cs b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Scripts/DiagnosticsSystemManager.cs similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Scripts/DiagnosticsSystemManager.cs rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Scripts/DiagnosticsSystemManager.cs diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Scripts/DiagnosticsSystemManager.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Scripts/DiagnosticsSystemManager.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Diagnostics/Scripts/DiagnosticsSystemManager.cs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Diagnostics/Scripts/DiagnosticsSystemManager.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Input.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Input.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Prefabs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Prefabs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Prefabs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Prefabs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Prefabs/InputSystem.prefab b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Prefabs/InputSystem.prefab similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Prefabs/InputSystem.prefab rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Prefabs/InputSystem.prefab diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Prefabs/InputSystem.prefab.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Prefabs/InputSystem.prefab.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Prefabs/InputSystem.prefab.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Prefabs/InputSystem.prefab.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Scripts.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Scripts.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Scripts.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Scripts.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Scripts/InputSystemManager.cs b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Scripts/InputSystemManager.cs similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Scripts/InputSystemManager.cs rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Scripts/InputSystemManager.cs diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Scripts/InputSystemManager.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Scripts/InputSystemManager.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Input/Scripts/InputSystemManager.cs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Input/Scripts/InputSystemManager.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Prefabs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Prefabs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Prefabs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Prefabs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Prefabs/SpatialAwarenessSystem.prefab b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Prefabs/SpatialAwarenessSystem.prefab similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Prefabs/SpatialAwarenessSystem.prefab rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Prefabs/SpatialAwarenessSystem.prefab diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Prefabs/SpatialAwarenessSystem.prefab.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Prefabs/SpatialAwarenessSystem.prefab.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Prefabs/SpatialAwarenessSystem.prefab.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Prefabs/SpatialAwarenessSystem.prefab.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Scripts.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Scripts.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Scripts.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Scripts.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Scripts/SpatialAwarenessSystemManager.cs b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Scripts/SpatialAwarenessSystemManager.cs similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Scripts/SpatialAwarenessSystemManager.cs rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Scripts/SpatialAwarenessSystemManager.cs diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Scripts/SpatialAwarenessSystemManager.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Scripts/SpatialAwarenessSystemManager.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/SpatialAwareness/Scripts/SpatialAwarenessSystemManager.cs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/SpatialAwareness/Scripts/SpatialAwarenessSystemManager.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Support.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Support.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Support.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Support.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Support/Scripts.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Support/Scripts.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Support/Scripts.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Support/Scripts.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Support/Scripts/BaseServiceManager.cs b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Support/Scripts/BaseServiceManager.cs similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Support/Scripts/BaseServiceManager.cs rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Support/Scripts/BaseServiceManager.cs diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Support/Scripts/BaseServiceManager.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Support/Scripts/BaseServiceManager.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Support/Scripts/BaseServiceManager.cs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Support/Scripts/BaseServiceManager.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Prefabs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Prefabs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Prefabs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Prefabs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Prefabs/TeleportSystem.prefab b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Prefabs/TeleportSystem.prefab similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Prefabs/TeleportSystem.prefab rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Prefabs/TeleportSystem.prefab diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Prefabs/TeleportSystem.prefab.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Prefabs/TeleportSystem.prefab.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Prefabs/TeleportSystem.prefab.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Prefabs/TeleportSystem.prefab.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Scripts.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Scripts.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Scripts.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Scripts.meta diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Scripts/TeleportSystemManager.cs b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Scripts/TeleportSystemManager.cs similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Scripts/TeleportSystemManager.cs rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Scripts/TeleportSystemManager.cs diff --git a/Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Scripts/TeleportSystemManager.cs.meta b/Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Scripts/TeleportSystemManager.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Experimental/Features/Teleport/Scripts/TeleportSystemManager.cs.meta rename to Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Teleport/Scripts/TeleportSystemManager.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/Audio/Influencers/AudioLoFiEffect.cs b/Assets/MixedRealityToolkit.SDK/Features/Audio/Influencers/AudioLoFiEffect.cs index 000f845f4ee..6bd44a95268 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Audio/Influencers/AudioLoFiEffect.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Audio/Influencers/AudioLoFiEffect.cs @@ -202,7 +202,6 @@ public bool Equals(AudioLoFiFilterSettings other) /// /// Generates a hash code representing this FilterSettings. /// - /// public override int GetHashCode() { string s = $"[{GetType().ToString()}] Low: {LowPassCutoff}, High: {HighPassCutoff}"; diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/ControllerPoseSynchronizer.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/ControllerPoseSynchronizer.cs index 9d75281e492..0c1ed7026fb 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/ControllerPoseSynchronizer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/ControllerPoseSynchronizer.cs @@ -89,11 +89,13 @@ public MixedRealityInputAction PoseAction #region InputSystemGlobalHandlerListener Implementation + /// protected override void RegisterHandlers() { InputSystem?.RegisterHandler(this); } + /// protected override void UnregisterHandlers() { InputSystem?.UnregisterHandler(this); @@ -117,14 +119,7 @@ public virtual void OnSourceLost(SourceStateEventData eventData) if (destroyOnSourceLost) { - if (!Application.isPlaying) - { - DestroyImmediate(gameObject); - } - else - { - Destroy(gameObject); - } + GameObjectExtensions.DestroyGameObject(gameObject); } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/DictationHandler.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/DictationHandler.cs index 06e46b41f33..39504c35caf 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/DictationHandler.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/DictationHandler.cs @@ -77,11 +77,13 @@ public void StopRecording() #region InputSystemGlobalHandlerListener Implementation + /// protected override void RegisterHandlers() { InputSystem?.RegisterHandler(this); } + /// protected override void UnregisterHandlers() { InputSystem?.UnregisterHandler(this); diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/EyeTrackingTarget.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/EyeTrackingTarget.cs index 3ed1cf129e9..707bffb3edb 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/EyeTrackingTarget.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/EyeTrackingTarget.cs @@ -186,12 +186,14 @@ protected override void OnDisable() OnEyeFocusStop(); } + /// protected override void RegisterHandlers() { InputSystem?.RegisterHandler(this); InputSystem?.RegisterHandler(this); } + /// protected override void UnregisterHandlers() { InputSystem?.UnregisterHandler(this); diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/FocusHandler.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/FocusHandler.cs new file mode 100644 index 00000000000..5b4b128e8ba --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/FocusHandler.cs @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEngine; +using UnityEngine.Events; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// Utility component to hook up Unity events to the OnFocusEnter and OnFocusExit events. + /// + public class FocusHandler : MonoBehaviour, IMixedRealityFocusHandler + { + [SerializeField] + [Tooltip("Whether input events should be marked as used after handling so other handlers in the same game object ignore them.")] + private bool markEventsAsUsed = false; + + /// + /// Whether input events should be marked as used after handling so other handlers in the same game object ignore them. + /// + public bool MarkEventsAsUsed + { + get { return markEventsAsUsed; } + set { markEventsAsUsed = value; } + } + + [SerializeField] + [Tooltip("Event which is triggered when focus begins.")] + private UnityEvent onFocusEnterEvent = new UnityEvent(); + + /// + /// Event which is triggered when focus begins. + /// + public UnityEvent OnFocusEnterEvent + { + get { return onFocusEnterEvent; } + set { onFocusEnterEvent = value; } + } + + [SerializeField] + [Tooltip("Event which is triggered when focus ends.")] + private UnityEvent onFocusExitEvent = new UnityEvent(); + + /// + /// Event which is triggered when focus ends. + /// + public UnityEvent OnFocusExitEvent + { + get { return onFocusExitEvent; } + set { onFocusExitEvent = value; } + } + + /// + public void OnFocusEnter(FocusEventData eventData) + { + if (!eventData.used) + { + onFocusEnterEvent.Invoke(); + + if (markEventsAsUsed) + { + eventData.Use(); + } + } + } + + /// + public void OnFocusExit(FocusEventData eventData) + { + if (!eventData.used) + { + onFocusExitEvent.Invoke(); + + if (markEventsAsUsed) + { + eventData.Use(); + } + } + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/FocusHandler.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/FocusHandler.cs.meta new file mode 100644 index 00000000000..85a35e3ea66 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/FocusHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69935ecfe76b9574b8576db8631a802e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/InputActionHandler.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/InputActionHandler.cs index ffa5fdf3cf9..a95d702c63c 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/InputActionHandler.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/InputActionHandler.cs @@ -33,11 +33,13 @@ public class InputActionHandler : BaseInputHandler, IMixedRealityInputActionHand #region InputSystemGlobalHandlerListener Implementation + /// protected override void RegisterHandlers() { InputSystem?.RegisterHandler(this); } + /// protected override void UnregisterHandlers() { InputSystem?.UnregisterHandler(this); diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/ManipulationHandler.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/ManipulationHandler.cs index a385c52615c..34badce833f 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/ManipulationHandler.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/ManipulationHandler.cs @@ -263,6 +263,10 @@ private void Start() scaleHandler = this.GetComponent(); } + private void OnDisable() + { + ForceEndManipulation(); + } #endregion MonoBehaviour Functions #region Private Methods diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/PointerClickHandler.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/PointerClickHandler.cs index 7c45805a9a2..53e05fbb9dc 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/PointerClickHandler.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/PointerClickHandler.cs @@ -31,11 +31,13 @@ private void Awake() #region InputSystemGlobalHandlerListener Implementation + /// protected override void RegisterHandlers() { InputSystem?.RegisterHandler(this); } + /// protected override void UnregisterHandlers() { InputSystem?.UnregisterHandler(this); diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/SpeechInputHandler.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/SpeechInputHandler.cs index eba16db40ab..b3265180dc2 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/SpeechInputHandler.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/Handlers/SpeechInputHandler.cs @@ -1,7 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using Microsoft.MixedReality.Toolkit.UI; +using System; using System.Collections.Generic; +using TMPro; using UnityEngine; using UnityEngine.Events; @@ -26,6 +29,21 @@ public class SpeechInputHandler : BaseInputHandler, IMixedRealitySpeechHandler [Tooltip("Keywords are persistent across all scenes. This Speech Input Handler instance will not be destroyed when loading a new scene.")] private bool persistentKeywords = false; + [SerializeField] + [Tooltip("Assign SpeechConfirmationTooltip.prefab here to display confirmation label. Optional.")] + private SpeechConfirmationTooltip speechConfirmationTooltipPrefab = null; + + /// + /// Tooltip prefab used to display confirmation label. Optional. + /// + public SpeechConfirmationTooltip SpeechConfirmationTooltipPrefab + { + get { return speechConfirmationTooltipPrefab; } + set { speechConfirmationTooltipPrefab = value; } + } + + private SpeechConfirmationTooltip speechConfirmationTooltipPrefabInstance = null; + private readonly Dictionary responses = new Dictionary(); #region MonoBehaviour Implementation @@ -108,9 +126,26 @@ void IMixedRealitySpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventD { keywordResponse.Invoke(); eventData.Use(); + + // Instantiate the Speech Confirmation Tooltip prefab if assigned + // Ignore "Select" keyword since OS will display the tooltip. + if (SpeechConfirmationTooltipPrefab != null + && speechConfirmationTooltipPrefabInstance == null + && !eventData.Command.Keyword.Equals("select", StringComparison.CurrentCultureIgnoreCase)) + { + speechConfirmationTooltipPrefabInstance = Instantiate(speechConfirmationTooltipPrefab); + + // Update the text label with recognized keyword + speechConfirmationTooltipPrefabInstance.SetText(eventData.Command.Keyword); + + // Trigger animation of the Speech Confirmation Tooltip prefab + speechConfirmationTooltipPrefabInstance.TriggerConfirmedAnimation(); + + // Tooltip prefab instance will be destroyed on animation complete + // by DestroyOnAnimationComplete.cs in the SpeechConfirmationTooltip.prefab + } } } - #endregion IMixedRealitySpeechHandler Implementation } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/InputSimulationIndicators.cs b/Assets/MixedRealityToolkit.SDK/Features/Input/InputSimulationIndicators.cs new file mode 100644 index 00000000000..1e62591261a --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/InputSimulationIndicators.cs @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// Input simulation service is only built on editor platforms + +using Microsoft.MixedReality.Toolkit.Utilities; +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// A row of indicator buttons to control input simulation features. + /// + [Serializable] + public class InputSimulationIndicators : MonoBehaviour + { + /// + /// Component displaying the left hand icon. + /// + public UnityEngine.UI.Image imageHandLeft = null; + /// + /// Component displaying the right hand icon. + /// + public UnityEngine.UI.Image imageHandRight = null; + + /// + /// Icon for left hand when under user control. + /// + public Sprite iconHandActiveLeft = null; + /// + /// Icon for right hand when under user control. + /// + public Sprite iconHandActiveRight = null; + /// + /// Icon for left hand when visible but not actively controlled. + /// + public Sprite iconHandIdleLeft = null; + /// + /// Icon for right hand when visible but not actively controlled. + /// + public Sprite iconHandIdleRight = null; + /// + /// Icon for left hand when untracked. + /// + public Sprite iconHandUntrackedLeft = null; + /// + /// Icon for right hand when untracked. + /// + public Sprite iconHandUntrackedRight = null; + +#if UNITY_EDITOR + + private IInputSimulationService inputSimService = null; + private IInputSimulationService InputSimService + { + get + { + if (inputSimService == null) + { + if (MixedRealityServiceRegistry.TryGetService(out IMixedRealityInputSystem inputSystem)) + { + inputSimService = (inputSystem as IMixedRealityDataProviderAccess).GetDataProvider(); + } + } + return inputSimService; + } + } + + /// + /// Updates the left and right hand images according to the tracked state + /// + void Update() + { + if (imageHandLeft) + { + Sprite iconHandLeft; + if (InputSimService.IsSimulatingHandLeft) + { + iconHandLeft = iconHandActiveLeft; + } + else if (InputSimService.HandDataLeft.IsTracked) + { + iconHandLeft = iconHandIdleLeft; + } + else + { + iconHandLeft = iconHandUntrackedLeft; + } + + imageHandLeft.sprite = iconHandLeft; + } + + if (imageHandRight) + { + Sprite iconHandRight; + if (InputSimService.IsSimulatingHandRight) + { + iconHandRight = iconHandActiveRight; + } + else if (InputSimService.HandDataRight.IsTracked) + { + iconHandRight = iconHandIdleRight; + } + else + { + iconHandRight = iconHandUntrackedRight; + } + + imageHandRight.sprite = iconHandRight; + } + } + + /// + /// Toggle permanent visibility of the left hand. + /// + public void ToggleLeftHand() + { + InputSimService.IsAlwaysVisibleHandLeft = !InputSimService.IsAlwaysVisibleHandLeft; + } + + /// + /// Toggle permanent visibility of the right hand. + /// + public void ToggleRightHand() + { + InputSimService.IsAlwaysVisibleHandRight = !InputSimService.IsAlwaysVisibleHandRight; + } + + /// + /// Reset the state of the left hand to default. + /// + public void ResetLeftHand() + { + InputSimService.ResetHandLeft(); + } + + /// + /// Reset the state of the right hand to default. + /// + public void ResetRightHand() + { + InputSimService.ResetHandRight(); + } +#endif + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/Input/InputSimulationIndicators.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/Input/InputSimulationIndicators.cs.meta new file mode 100644 index 00000000000..b3e621f6a34 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/Input/InputSimulationIndicators.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09d59cd26ba94244d98c1c39c5f79a87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel.meta new file mode 100644 index 00000000000..25ab3b401a3 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22df37575315cb649a045c5c69374dfb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.anim b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.anim new file mode 100644 index 00000000000..3adb4b0ea59 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.anim @@ -0,0 +1,789 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpeechConfirmationLabel + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: -0.0011, z: 0.001} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.25 + value: {x: 0, y: 0.0017, z: 0.001} + inSlope: {x: -0, y: 0.0112, z: -0} + outSlope: {x: 0, y: 0.023314286, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 2 + value: {x: 0, y: 0.0425, z: 0.001} + inSlope: {x: -0, y: 0.023314286, z: -0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: Pivot/ContentParent/TipBackground + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0.25, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 2 + value: {x: 0, y: 0.2908, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: Pivot + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 4 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 1 + inSlope: 4 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.a + path: Pivot/ContentParent/Label + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.0011000037 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 0.001699999 + inSlope: 0.011200011 + outSlope: 0.023314288 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0.042500004 + inSlope: 0.023314288 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_AnchoredPosition.y + path: Pivot/ContentParent/Label + classID: 224 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: -0.0069204154 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._Color.r + path: Pivot/ContentParent/TipBackground + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: -0.0069204154 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._Color.g + path: Pivot/ContentParent/TipBackground + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: -0.0069204154 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._Color.b + path: Pivot/ContentParent/TipBackground + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: -0.0069204154 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._Color.a + path: Pivot/ContentParent/TipBackground + classID: 23 + script: {fileID: 0} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 296289653 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1567512304 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1224958901 + attribute: 4185109675 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + typeID: 114 + customType: 0 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 1224958901 + attribute: 538195251 + script: {fileID: 0} + typeID: 224 + customType: 28 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 296289653 + attribute: 1303350129 + script: {fileID: 0} + typeID: 23 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 296289653 + attribute: 1571785585 + script: {fileID: 0} + typeID: 23 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 296289653 + attribute: 1840221041 + script: {fileID: 0} + typeID: 23 + customType: 22 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 296289653 + attribute: 2108656497 + script: {fileID: 0} + typeID: 23 + customType: 22 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 2 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 4 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 1 + inSlope: 4 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_fontColor.a + path: Pivot/ContentParent/Label + classID: 114 + script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: Pivot/ContentParent/TipBackground + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.0011 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 0.0017 + inSlope: 0.0112 + outSlope: 0.023314286 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0.0425 + inSlope: 0.023314286 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: Pivot/ContentParent/TipBackground + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.001 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 0.001 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0.001 + inSlope: -0 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: Pivot/ContentParent/TipBackground + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.0011000037 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 0.001699999 + inSlope: 0.011200011 + outSlope: 0.023314288 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0.042500004 + inSlope: 0.023314288 + outSlope: 0 + tangentMode: 69 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_AnchoredPosition.y + path: Pivot/ContentParent/Label + classID: 224 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: -0.0069204154 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._Color.r + path: Pivot/ContentParent/TipBackground + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: -0.0069204154 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._Color.g + path: Pivot/ContentParent/TipBackground + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: -0.0069204154 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._Color.b + path: Pivot/ContentParent/TipBackground + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: -0.0069204154 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: material._Color.a + path: Pivot/ContentParent/TipBackground + classID: 23 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: Pivot + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.25 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0.2908 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: Pivot + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: Pivot + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.anim.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.anim.meta new file mode 100644 index 00000000000..aa9014e0c17 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8fc037eb4002e014786880d426e30a3e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.controller b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.controller new file mode 100644 index 00000000000..e30ab9ed27f --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.controller @@ -0,0 +1,198 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpeechConfirmationLabel + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: Confirmed + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1107719379045675228} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &1101042331802134824 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102974063829595410} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101637969343362202 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: Confirmed + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102146739960886048} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 0 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &1102146739960886048 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SpeechConfirmationLabel + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101042331802134824} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 8fc037eb4002e014786880d426e30a3e, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102974063829595410 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New State + m_Speed: 5 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101637969343362202} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107719379045675228 +AnimatorStateMachine: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102146739960886048} + m_Position: {x: 264, y: 48, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102974063829595410} + m_Position: {x: 264, y: 180, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 492, y: 108, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102974063829595410} +--- !u!1109 &1109433786390056210 +AnimatorTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102974063829595410} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 1 +--- !u!1109 &1109812312464233522 +AnimatorTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102974063829595410} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 1 +--- !u!1109 &1109951497226031868 +AnimatorTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102974063829595410} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 1 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.controller.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.controller.meta new file mode 100644 index 00000000000..764b3a835fe --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Animations/SpeechConfirmationLabel/SpeechConfirmationLabel.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 393b0cc1083725f44837b3a1efc4e229 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/ColorButtonProximity.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/ColorButtonProximity.mat index 552d4b0d1e2..b7f2988a5e7 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/ColorButtonProximity.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/ColorButtonProximity.mat @@ -41,6 +41,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -65,13 +66,17 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _HoverLight: 1 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 6.9 - _InstancedColor: 0 @@ -81,9 +86,12 @@ Material: - _IridescenceThreshold: 0.05 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 - _NormalMapScale: 1 - _ProximityLight: 1 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 0 @@ -103,6 +111,11 @@ Material: - _StencilReference: 0 - _TriplanarMappingBlendSharpness: 4 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -114,4 +127,7 @@ Material: - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 0.8113208, g: 0.55612487, b: 0.057404764, a: 1} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlate.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlate.mat index 15b7e848e08..28a90725367 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlate.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlate.mat @@ -78,13 +78,14 @@ Material: - _AlbedoAlphaSmoothness: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 1 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 - _BorderLightReplacesAlbedo: 1 - _BorderLightUsesHoverColor: 0 - _BorderMinValue: 0.6 - - _BorderWidth: 0.12 + - _BorderWidth: 0.2 - _BorderWidthHorizontal: 0.1 - _BorderWidthVertical: 0.1 - _BumpScale: 1 @@ -124,6 +125,7 @@ Material: - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -163,6 +165,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateBorderOnly.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateBorderOnly.mat new file mode 100644 index 00000000000..4933e73f837 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateBorderOnly.mat @@ -0,0 +1,190 @@ +%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: HolographicBackPlateBorderOnly + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _BORDER_LIGHT _BORDER_LIGHT_OPAQUE _BORDER_LIGHT_REPLACES_ALBEDO + _DISABLE_ALBEDO_MAP _METALLIC_TEXTURE_ALBEDO_CHANNEL_A _NEAR_PLANE_FADE _ROUND_CORNERS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 2800000, guid: 86609bdc7f4c43d42991f96373fb8081, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LightMapTex: + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 1 + - _AlbedoAlphaSmoothness: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 1 + - _BorderLightOpaque: 1 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 1 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.42 + - _BorderWidth: 0.2 + - _BorderWidthHorizontal: 0.1 + - _BorderWidthVertical: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.0002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLightMap: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.75 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 1 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 5.83 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.1 + - _RoundCorners: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColor: {r: 1, g: 0, b: 0, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateBorderOnly.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateBorderOnly.mat.meta new file mode 100644 index 00000000000..26dce0b1044 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateBorderOnly.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 416caa6b57bb22c40ab9f1a4c12b304e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateCircular.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateCircular.mat index 096aee23caf..a842cb6ab84 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateCircular.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateCircular.mat @@ -165,6 +165,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbable.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbable.mat new file mode 100644 index 00000000000..2f5a38bd832 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbable.mat @@ -0,0 +1,191 @@ +%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: HolographicBackPlateGrabbable + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _BORDER_LIGHT _BORDER_LIGHT_REPLACES_ALBEDO _DISABLE_ALBEDO_MAP + _HOVER_LIGHT _IRIDESCENCE _METALLIC_TEXTURE_ALBEDO_CHANNEL_A _PROXIMITY_LIGHT + _ROUND_CORNERS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 2800000, guid: 86609bdc7f4c43d42991f96373fb8081, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LightMapTex: + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 1 + - _AlbedoAlphaSmoothness: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 1 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.6 + - _BorderWidth: 0.2 + - _BorderWidthHorizontal: 0.1 + - _BorderWidthVertical: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.0002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLightMap: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 1 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 1 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.75 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 0 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 1 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 5.83 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.5 + - _RoundCorners: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColor: {r: 1, g: 0, b: 0, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbable.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbable.mat.meta new file mode 100644 index 00000000000..708468689fd --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbable.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b422ff31060379342bb34bf8c22239e6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbableProximity.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbableProximity.mat new file mode 100644 index 00000000000..bad2daa0190 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbableProximity.mat @@ -0,0 +1,191 @@ +%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: HolographicBackPlateGrabbableProximity + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _BORDER_LIGHT _BORDER_LIGHT_REPLACES_ALBEDO _DISABLE_ALBEDO_MAP + _HOVER_LIGHT _IRIDESCENCE _METALLIC_TEXTURE_ALBEDO_CHANNEL_A _NEAR_LIGHT_FADE + _NEAR_PLANE_FADE _PROXIMITY_LIGHT _ROUND_CORNERS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 2800000, guid: 86609bdc7f4c43d42991f96373fb8081, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LightMapTex: + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 1 + - _AlbedoAlphaSmoothness: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 1 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.6 + - _BorderWidth: 0.2 + - _BorderWidthHorizontal: 0.1 + - _BorderWidthVertical: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.0002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLightMap: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0 + - _FadeCompleteDistance: 0.18 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 1 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 1 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.75 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 1 + - _NearPlaneFade: 1 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 1 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 5.83 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.5 + - _RoundCorners: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColor: {r: 1, g: 0, b: 0, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbableProximity.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbableProximity.mat.meta new file mode 100644 index 00000000000..aca4d03fb3e --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbableProximity.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7bb46fe0291383e41b1cd86f2a9b2479 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbed.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbed.mat new file mode 100644 index 00000000000..62b183ed630 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbed.mat @@ -0,0 +1,190 @@ +%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: HolographicBackPlateGrabbed + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _BORDER_LIGHT _BORDER_LIGHT_REPLACES_ALBEDO _DISABLE_ALBEDO_MAP + _IRIDESCENCE _METALLIC_TEXTURE_ALBEDO_CHANNEL_A _ROUND_CORNERS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 2800000, guid: 86609bdc7f4c43d42991f96373fb8081, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LightMapTex: + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 1 + - _AlbedoAlphaSmoothness: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 1 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 1 + - _BorderWidth: 0.25 + - _BorderWidthHorizontal: 0.1 + - _BorderWidthVertical: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.0002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLightMap: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 1 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.75 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 0 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 5.83 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.1 + - _RoundCorners: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0.095007114, g: 0.2125979, b: 0.3301887, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColor: {r: 1, g: 0, b: 0, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbed.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbed.mat.meta new file mode 100644 index 00000000000..52d5875d80a --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateGrabbed.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16526572b35ecaa4ba781a0bff18ab12 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateHover.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateHover.mat new file mode 100644 index 00000000000..87989706785 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateHover.mat @@ -0,0 +1,190 @@ +%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: HolographicBackPlateHover + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _BORDER_LIGHT _BORDER_LIGHT_REPLACES_ALBEDO _DISABLE_ALBEDO_MAP + _IRIDESCENCE _METALLIC_TEXTURE_ALBEDO_CHANNEL_A _ROUND_CORNERS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 2800000, guid: 86609bdc7f4c43d42991f96373fb8081, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LightMapTex: + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 1 + - _AlbedoAlphaSmoothness: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 1 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.6 + - _BorderWidth: 0.2 + - _BorderWidthHorizontal: 0.1 + - _BorderWidthVertical: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.0002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLightMap: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 1 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.75 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 0 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 5.83 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.1 + - _RoundCorners: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0.08499465, g: 0.08842018, b: 0.09433961, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColor: {r: 1, g: 0, b: 0, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateHover.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateHover.mat.meta new file mode 100644 index 00000000000..7229c81588a --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateHover.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c3faec7fe20fa049a963e86c6a92a3f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateLabel.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateLabel.mat new file mode 100644 index 00000000000..6c7a0af4427 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateLabel.mat @@ -0,0 +1,191 @@ +%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: HolographicBackPlateLabel + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _BORDER_LIGHT _BORDER_LIGHT_REPLACES_ALBEDO _DISABLE_ALBEDO_MAP + _IRIDESCENCE _METALLIC_TEXTURE_ALBEDO_CHANNEL_A _ROUND_CORNERS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 2800000, guid: 86609bdc7f4c43d42991f96373fb8081, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LightMapTex: + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 1 + - _AlbedoAlphaSmoothness: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 1 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.6 + - _BorderWidth: 0.12 + - _BorderWidthHorizontal: 0.1 + - _BorderWidthVertical: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.0002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLightMap: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 1 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.75 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 5 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 5.83 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.1 + - _RoundCorners: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColor: {r: 1, g: 0, b: 0, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateLabel.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateLabel.mat.meta new file mode 100644 index 00000000000..946c5f85546 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateLabel.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33bd7ed5b0c7fbf458af3e21dc58c192 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateNoBorder.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateNoBorder.mat new file mode 100644 index 00000000000..0dad5084b02 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateNoBorder.mat @@ -0,0 +1,190 @@ +%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: HolographicBackPlateNoBorder + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _BORDER_LIGHT_REPLACES_ALBEDO _DISABLE_ALBEDO_MAP _IRIDESCENCE + _METALLIC_TEXTURE_ALBEDO_CHANNEL_A + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 2800000, guid: 86609bdc7f4c43d42991f96373fb8081, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LightMapTex: + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 1 + - _AlbedoAlphaSmoothness: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 1 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.6 + - _BorderWidth: 0.2 + - _BorderWidthHorizontal: 0.1 + - _BorderWidthVertical: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.0002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLightMap: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 1 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.75 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 0 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 5.83 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.1 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColor: {r: 1, g: 0, b: 0, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateNoBorder.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateNoBorder.mat.meta new file mode 100644 index 00000000000..360d7e75c82 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateNoBorder.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40261cd01d861f241b945b4fb6609cff +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateThickBorder.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateThickBorder.mat new file mode 100644 index 00000000000..11080251353 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateThickBorder.mat @@ -0,0 +1,190 @@ +%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: HolographicBackPlateThickBorder + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _BORDER_LIGHT _BORDER_LIGHT_REPLACES_ALBEDO _DISABLE_ALBEDO_MAP + _IRIDESCENCE _METALLIC_TEXTURE_ALBEDO_CHANNEL_A _ROUND_CORNERS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 2800000, guid: 86609bdc7f4c43d42991f96373fb8081, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LightMapTex: + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 1 + - _AlbedoAlphaSmoothness: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 1 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.6 + - _BorderWidth: 0.12 + - _BorderWidthHorizontal: 0.1 + - _BorderWidthVertical: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ClippingSphere: 0 + - _ColorWriteMask: 15 + - _CullMode: 0 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.0002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableLightMap: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 1 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.75 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 0 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 5.83 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.1 + - _RoundCorners: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SphericalHarmonics: 0 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColor: {r: 1, g: 0, b: 0, a: 1} + - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateThickBorder.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateThickBorder.mat.meta new file mode 100644 index 00000000000..bbdf397538f --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicBackPlateThickBorder.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f9326c3bd04b792498b7ba61c1aaeeb9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCage.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCage.mat index 58770bf0889..968ea2f4bd7 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCage.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCage.mat @@ -125,6 +125,7 @@ Material: - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 1 - _InnerGlowPower: 9 - _InstancedColor: 0 @@ -164,6 +165,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCageProximity.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCageProximity.mat index 660776209a7..decce376b4c 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCageProximity.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCageProximity.mat @@ -126,6 +126,7 @@ Material: - _GlossyReflections: 1 - _HoverLight: 1 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 12 - _InstancedColor: 0 @@ -165,6 +166,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCageProximityCircular.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCageProximityCircular.mat index 42ee1679826..e01ed64b5ba 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCageProximityCircular.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonContentCageProximityCircular.mat @@ -110,6 +110,7 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconAdd.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconAdd.mat new file mode 100644 index 00000000000..92693fa69b9 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconAdd.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconAdd + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: d6a8d6d764af76740ad06383ee810941, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconAdd.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconAdd.mat.meta new file mode 100644 index 00000000000..4f4980bcb2c --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconAdd.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ccf34f78a6419584fa9cea97b5e46131 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconCamera.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconCamera.mat new file mode 100644 index 00000000000..96b18c321ae --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconCamera.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconCamera + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 114589bc5b891c3488cbb8607b6b9171, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconCamera.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconCamera.mat.meta new file mode 100644 index 00000000000..89a3275d09c --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconCamera.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 943fce092bd9aea49808ff09b520bf74 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconClose.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconClose.mat index ea769e107ed..83034c279b9 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconClose.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconClose.mat @@ -72,6 +72,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -100,6 +101,7 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 @@ -107,8 +109,10 @@ Material: - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _Glossiness: 0.5 - _HoverLight: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -124,6 +128,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -153,6 +158,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 @@ -168,4 +174,7 @@ Material: - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconFollowMe.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconFollowMe.mat index 914744ff16f..3f5f8f806e8 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconFollowMe.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconFollowMe.mat @@ -72,6 +72,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -100,6 +101,7 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 @@ -107,8 +109,10 @@ Material: - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _Glossiness: 0.5 - _HoverLight: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -124,6 +128,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -153,6 +158,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 @@ -168,4 +174,7 @@ Material: - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconFontMaterial.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconFontMaterial.mat index 2635c52986f..9d0c6747939 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconFontMaterial.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconFontMaterial.mat @@ -158,6 +158,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDouble.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDouble.mat new file mode 100644 index 00000000000..6b3050faa30 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDouble.mat @@ -0,0 +1,177 @@ +%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: HolographicButtonIconGrabAreaDouble + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _NEAR_LIGHT_FADE _SPECULAR_HIGHLIGHTS _USECOLOR_ON + _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ed822fedd9a3ed640a9a7aaedabcaef4, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0 + - _FadeCompleteDistance: 0.18 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 1 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDouble.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDouble.mat.meta new file mode 100644 index 00000000000..9de693d7287 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDouble.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 562472529ff7b124fb4142dc857bcda7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDoubleProximity.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDoubleProximity.mat new file mode 100644 index 00000000000..f29413605cb --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDoubleProximity.mat @@ -0,0 +1,177 @@ +%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: HolographicButtonIconGrabAreaDoubleProximity + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _NEAR_LIGHT_FADE _NEAR_PLANE_FADE _SPECULAR_HIGHLIGHTS + _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ed822fedd9a3ed640a9a7aaedabcaef4, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0 + - _FadeCompleteDistance: 0.18 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 1 + - _NearPlaneFade: 1 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDoubleProximity.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDoubleProximity.mat.meta new file mode 100644 index 00000000000..ce6487637dc --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaDoubleProximity.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6fa3adcc7cedfc8408bf18cf21ea68c0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaVertical.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaVertical.mat new file mode 100644 index 00000000000..072ee4157fd --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaVertical.mat @@ -0,0 +1,177 @@ +%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: HolographicButtonIconGrabAreaVertical + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _NEAR_LIGHT_FADE _NEAR_PLANE_FADE _SPECULAR_HIGHLIGHTS + _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: f1fd3fdd34a654947a68d8526ab133e5, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0 + - _FadeCompleteDistance: 0.18 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 1 + - _NearPlaneFade: 1 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaVertical.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaVertical.mat.meta new file mode 100644 index 00000000000..064615df947 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconGrabAreaVertical.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b491e50f6adf1ad4485d30f9d945271c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHandJoint.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHandJoint.mat index d588edb4815..0c5fcaa0a88 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHandJoint.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHandJoint.mat @@ -155,6 +155,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHandMesh.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHandMesh.mat index a7a76802c8c..eb766bd0afb 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHandMesh.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHandMesh.mat @@ -155,6 +155,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHome.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHome.mat new file mode 100644 index 00000000000..e929a8849dd --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHome.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconHome + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 85835ae0b6c3c1c418a57400fcbb788c, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHome.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHome.mat.meta new file mode 100644 index 00000000000..c0e7f777753 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconHome.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3ec6f10c2cd7564693e6e59ca3239be +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMRTKLogo.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMRTKLogo.mat new file mode 100644 index 00000000000..300f7da5498 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMRTKLogo.mat @@ -0,0 +1,176 @@ +%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: HolographicButtonIconMRTKLogo + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHATEST_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2450 + stringTagMap: + RenderType: TransparentCutout + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 74ebfa89af37aba43b08982d7f97eb7d, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 1 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMRTKLogo.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMRTKLogo.mat.meta new file mode 100644 index 00000000000..9a33898dc7a --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMRTKLogo.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a733cc411dc53cc4794e0f29c2ca990b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMessage.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMessage.mat new file mode 100644 index 00000000000..0c88841b250 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMessage.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconMessage + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 937867e9be7912d4a903cd401ee0a959, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMessage.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMessage.mat.meta new file mode 100644 index 00000000000..da18604e1e5 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMessage.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3ec3f87c678f3d48bc51f5625647104 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMicrophone.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMicrophone.mat new file mode 100644 index 00000000000..162989c058a --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMicrophone.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconMicrophone + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 49a59150fd8a7c1438828c262032e023, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMicrophone.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMicrophone.mat.meta new file mode 100644 index 00000000000..563283fdb7f --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconMicrophone.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23b680d6c13ccad4ba5004f1b6a22462 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconPin.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconPin.mat index 35507b597cb..45ef460ea3f 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconPin.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconPin.mat @@ -155,6 +155,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconProfiler.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconProfiler.mat index 713ad5d6434..a02de71a96b 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconProfiler.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconProfiler.mat @@ -155,6 +155,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconRefresh.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconRefresh.mat new file mode 100644 index 00000000000..d1179d79f73 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconRefresh.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconRefresh + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 559e1da0e65611c4f93ec931e1e6a8a2, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconRefresh.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconRefresh.mat.meta new file mode 100644 index 00000000000..f028c6022ec --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconRefresh.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 467ed030160339e4b8ec795630ed12aa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSearch.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSearch.mat new file mode 100644 index 00000000000..974a77a661e --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSearch.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconSearch + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ed2f699f32ec17f4cad3423d2c449119, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSearch.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSearch.mat.meta new file mode 100644 index 00000000000..e8577b2cf13 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSearch.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 57717538759a71948975aa7be8c2a3cb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSettings.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSettings.mat new file mode 100644 index 00000000000..78a9ea05a5f --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSettings.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconSettings + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ac8550a474419054d9621216812fd098, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSettings.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSettings.mat.meta new file mode 100644 index 00000000000..610aca5f2c9 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconSettings.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a9ff3bf27bd2f14eb87222e2d2761b8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconStar.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconStar.mat new file mode 100644 index 00000000000..d294782d7f5 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconStar.mat @@ -0,0 +1,179 @@ +%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: HolographicButtonIconStar + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _SPECULAR_HIGHLIGHTS _USECOLOR_ON _USEMAINTEX_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ea677436af9004848a7f20878e38257c, type: 3} + 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} + - _NormalMap: + 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: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ClippingBox: 0 + - _ClippingPlane: 0 + - _ClippingSphere: 0 + - _ColorMask: 15 + - _ColorWriteMask: 15 + - _Cull: 2 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _Glossiness: 0.5 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 0 + - _NearPlaneFade: 0 + - _NormalMapScale: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilComparison: 0 + - _StencilOp: 0 + - _StencilOperation: 0 + - _StencilReadMask: 255 + - _StencilReference: 0 + - _StencilWriteMask: 255 + - _TriplanarMappingBlendSharpness: 4 + - _UVSec: 0 + - _UseColor: 1 + - _UseMainTex: 1 + - _UseUIAlphaClip: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconStar.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconStar.mat.meta new file mode 100644 index 00000000000..7eaee08a194 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonIconStar.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f0c1af0718ce6d4abe8b90d6e2c283f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonPlate.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonPlate.mat index a8e72dcd193..5040cd983b7 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonPlate.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/HolographicButtonPlate.mat @@ -78,6 +78,7 @@ Material: - _AlbedoAlphaSmoothness: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -110,17 +111,21 @@ Material: - _EnableLightMap: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -136,6 +141,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 1 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -158,6 +164,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -174,4 +185,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 0.566} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.522} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots.mat new file mode 100644 index 00000000000..2fc25fde000 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots.mat @@ -0,0 +1,128 @@ +%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: MRTK_GrabbableDots + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _NEAR_LIGHT_FADE _NEAR_PLANE_FADE _SPECULAR_HIGHLIGHTS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _ChannelMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 2e264b2035e178e4dac9e40cfcf38662, type: 3} + m_Scale: {x: 100, y: 30} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.01 + - _FadeCompleteDistance: 0.04 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 1 + - _NearPlaneFade: 1 + - _NormalMapScale: 1 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots.mat.meta new file mode 100644 index 00000000000..c8ccc071192 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d3d3b8b33373be4ba8d3b1676d2b5ba +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsH.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsH.mat new file mode 100644 index 00000000000..b0dedea6aac --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsH.mat @@ -0,0 +1,128 @@ +%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: MRTK_GrabbableDots2RowsH + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _NEAR_LIGHT_FADE _NEAR_PLANE_FADE _SPECULAR_HIGHLIGHTS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _ChannelMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 2e264b2035e178e4dac9e40cfcf38662, type: 3} + m_Scale: {x: 40, y: 2} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.01 + - _FadeCompleteDistance: 0.08 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 1 + - _NearPlaneFade: 1 + - _NormalMapScale: 1 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsH.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsH.mat.meta new file mode 100644 index 00000000000..c052da66734 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsH.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13a6bafb89ca6414895d965b2fdb2041 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV1.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV1.mat new file mode 100644 index 00000000000..ecdbe59ead2 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV1.mat @@ -0,0 +1,128 @@ +%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: MRTK_GrabbableDots2RowsV1 + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _NEAR_LIGHT_FADE _NEAR_PLANE_FADE _SPECULAR_HIGHLIGHTS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _ChannelMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 2e264b2035e178e4dac9e40cfcf38662, type: 3} + m_Scale: {x: 2, y: 13} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.01 + - _FadeCompleteDistance: 0.08 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 1 + - _NearPlaneFade: 1 + - _NormalMapScale: 1 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV1.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV1.mat.meta new file mode 100644 index 00000000000..589257f5c7a --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e28b3473906c8764a948650d42b975c1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV2.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV2.mat new file mode 100644 index 00000000000..fff16f89dee --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV2.mat @@ -0,0 +1,128 @@ +%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: MRTK_GrabbableDots2RowsV2 + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _ALPHABLEND_ON _NEAR_LIGHT_FADE _NEAR_PLANE_FADE _SPECULAR_HIGHLIGHTS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _ChannelMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 2e264b2035e178e4dac9e40cfcf38662, type: 3} + m_Scale: {x: 2, y: 25} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 + - _BlendOp: 0 + - _BlendedClippingWidth: 1 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 + - _BorderLightUsesHoverColor: 0 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 2 + - _Cutoff: 0.5 + - _DirectionalLight: 0 + - _DstBlend: 10 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 + - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.01 + - _FadeCompleteDistance: 0.08 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 + - _HoverLight: 0 + - _IgnoreZScale: 0 + - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 + - _Metallic: 0 + - _Mode: 2 + - _NearLightFade: 1 + - _NearPlaneFade: 1 + - _NormalMapScale: 1 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0.01 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 + - _SrcBlend: 5 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 + - _ZWrite: 0 + m_Colors: + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvironmentColorX: {r: 1, g: 0, b: 0, a: 1} + - _EnvironmentColorY: {r: 0, g: 1, b: 0, a: 1} + - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} + - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} + - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV2.mat.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV2.mat.meta new file mode 100644 index 00000000000..8bf7a5bfd10 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Materials/MRTK_GrabbableDots2RowsV2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15c4e4b880f2be34790dce1a74139d27 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/AnimationButton.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/AnimationButton.prefab index 622ffba8541..45141ccd9ca 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/AnimationButton.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/AnimationButton.prefab @@ -352,7 +352,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 65169310230401214} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/Button.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/Button.prefab index 73e1dee0b9a..98a36076a09 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/Button.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/Button.prefab @@ -214,7 +214,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 65501967504898374} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ButtonHoloLens1.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ButtonHoloLens1.prefab index a0888d538f6..308c9a218a6 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ButtonHoloLens1.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ButtonHoloLens1.prefab @@ -181,7 +181,6 @@ MonoBehaviour: m_fontSizeMax: 72 m_fontStyle: 0 m_textAlignment: 514 - m_isAlignmentEnumConverted: 1 m_characterSpacing: 0 m_wordSpacing: 0 m_lineSpacing: 0 @@ -208,12 +207,13 @@ MonoBehaviour: m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} m_textInfo: - textComponent: {fileID: 0} + textComponent: {fileID: 114041511408948086} characterCount: 12 spriteCount: 0 spaceCount: 1 @@ -222,12 +222,9 @@ MonoBehaviour: lineCount: 1 pageCount: 1 materialCount: 1 - m_havePropertiesChanged: 0 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_spriteAnimator: {fileID: 0} - m_isInputParsingRequired: 0 - m_inputSource: 0 m_hasFontAssetChanged: 0 m_renderer: {fileID: 23944836463606822} m_subTextObjects: @@ -399,23 +396,19 @@ MonoBehaviour: - Target: {fileID: 1264397046495974} Themes: - {fileID: 11400000, guid: d37afabc007bf774d9431b9a7cbe6fba, type: 2} - HadDefaultTheme: 1 - Target: {fileID: 1447780916617028} Themes: - {fileID: 11400000, guid: cbde7890146c3024d928b7afc2e16065, type: 2} - HadDefaultTheme: 1 - Target: {fileID: 1078241679539432} Themes: - - {fileID: 11400000, guid: 0c4c73f326f602744bdcfff481fd6f20, type: 2} - HadDefaultTheme: 1 + - {fileID: 11400000, guid: 6a4ada4b285469047946e8662531da54, type: 2} OnClick: m_PersistentCalls: m_Calls: [] m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Events: - - Name: AudioEvent - Event: + - Event: m_PersistentCalls: m_Calls: [] m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, @@ -455,81 +448,6 @@ MonoBehaviour: m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Options: [] - HideUnityEvents: 1 - - Name: OnClick - Event: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - ClassName: InteractableOnClickEffect - AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableOnClickEffect, - Microsoft.MixedReality.Toolkit.SDK - Settings: - - Type: 7 - Label: Effect Prefab - Name: EffectPrefab - Tooltip: The effect prefab, should destroy itself - IntValue: 0 - StringValue: - FloatValue: 0 - BoolValue: 0 - GameObjectValue: {fileID: 7275193594166404570, guid: 2d4fa118014b9b1428c0ca3dda4d01b3, - type: 3} - ScriptableObjectValue: {fileID: 0} - ObjectValue: {fileID: 0} - MaterialValue: {fileID: 0} - TextureValue: {fileID: 0} - ColorValue: {r: 0, g: 0, b: 0, a: 0} - Vector2Value: {x: 0, y: 0} - Vector3Value: {x: 0, y: 0, z: 0} - Vector4Value: {x: 0, y: 0, z: 0, w: 0} - CurveValue: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 0 - m_PostInfinity: 0 - m_RotationOrder: 0 - AudioClipValue: {fileID: 0} - QuaternionValue: {x: 0, y: 0, z: 0, w: 0} - EventValue: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - Options: [] - - Type: 13 - Label: Offset Position - Name: EffectOffset - Tooltip: Spawn the prefab relative to the Interactive position - IntValue: 0 - StringValue: - FloatValue: 0 - BoolValue: 0 - GameObjectValue: {fileID: 0} - ScriptableObjectValue: {fileID: 0} - ObjectValue: {fileID: 0} - MaterialValue: {fileID: 0} - TextureValue: {fileID: 0} - ColorValue: {r: 0, g: 0, b: 0, a: 0} - Vector2Value: {x: 0, y: 0} - Vector3Value: {x: 0, y: 0, z: -0.01} - Vector4Value: {x: 0, y: 0, z: 0, w: 0} - CurveValue: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 0 - m_PostInfinity: 0 - m_RotationOrder: 0 - AudioClipValue: {fileID: 0} - QuaternionValue: {x: 0, y: 0, z: 0, w: 0} - EventValue: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - Options: [] - HideUnityEvents: 1 dimensionIndex: 0 --- !u!114 &5253365468919551739 MonoBehaviour: @@ -544,13 +462,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 - touchableCollider: {fileID: 65091470401894616} localForward: {x: 0, y: 0, z: -1} localUp: {x: 0, y: 1, z: 0} localCenter: {x: 0, y: 0, z: -0.01} bounds: {x: 0.12, y: 0.12} + touchableCollider: {fileID: 65091470401894616} --- !u!114 &4750325155802407204 MonoBehaviour: m_ObjectHideFlags: 0 @@ -980,7 +897,6 @@ MonoBehaviour: m_fontSizeMax: 72 m_fontStyle: 0 m_textAlignment: 514 - m_isAlignmentEnumConverted: 1 m_characterSpacing: 0 m_wordSpacing: 0 m_lineSpacing: 0 @@ -1007,12 +923,13 @@ MonoBehaviour: m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 m_margin: {x: 0, y: 0, z: 0, w: 0} m_textInfo: - textComponent: {fileID: 0} + textComponent: {fileID: 8113455685942058736} characterCount: 6 spriteCount: 0 spaceCount: 0 @@ -1021,12 +938,9 @@ MonoBehaviour: lineCount: 1 pageCount: 1 materialCount: 1 - m_havePropertiesChanged: 0 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_spriteAnimator: {fileID: 0} - m_isInputParsingRequired: 0 - m_inputSource: 0 m_hasFontAssetChanged: 0 m_renderer: {fileID: 4585359218178484297} m_subTextObjects: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ButtonHoloLens1Toggle.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ButtonHoloLens1Toggle.prefab index 959308989ac..df3fc1a48f2 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ButtonHoloLens1Toggle.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ButtonHoloLens1Toggle.prefab @@ -83,25 +83,21 @@ MonoBehaviour: Themes: - {fileID: 11400000, guid: d37afabc007bf774d9431b9a7cbe6fba, type: 2} - {fileID: 11400000, guid: 29b20ecfcc16eef4dad8989c360f2988, type: 2} - HadDefaultTheme: 1 - Target: {fileID: 1925978215027266} Themes: - {fileID: 11400000, guid: cbde7890146c3024d928b7afc2e16065, type: 2} - {fileID: 11400000, guid: cbde7890146c3024d928b7afc2e16065, type: 2} - HadDefaultTheme: 1 - Target: {fileID: 1687922239424002} Themes: - - {fileID: 11400000, guid: 0c4c73f326f602744bdcfff481fd6f20, type: 2} - - {fileID: 11400000, guid: 0c4c73f326f602744bdcfff481fd6f20, type: 2} - HadDefaultTheme: 1 + - {fileID: 11400000, guid: 6a4ada4b285469047946e8662531da54, type: 2} + - {fileID: 11400000, guid: 6a4ada4b285469047946e8662531da54, type: 2} OnClick: m_PersistentCalls: m_Calls: [] m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Events: - - Name: AudioEvent - Event: + - Event: m_PersistentCalls: m_Calls: [] m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, @@ -141,81 +137,6 @@ MonoBehaviour: m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null Options: [] - HideUnityEvents: 1 - - Name: OnClick - Event: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - ClassName: InteractableOnClickEffect - AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableOnClickEffect, - Microsoft.MixedReality.Toolkit.SDK - Settings: - - Type: 7 - Label: Effect Prefab - Name: EffectPrefab - Tooltip: The effect prefab, should destroy itself - IntValue: 0 - StringValue: - FloatValue: 0 - BoolValue: 0 - GameObjectValue: {fileID: 7275193594166404570, guid: 2d4fa118014b9b1428c0ca3dda4d01b3, - type: 3} - ScriptableObjectValue: {fileID: 0} - ObjectValue: {fileID: 0} - MaterialValue: {fileID: 0} - TextureValue: {fileID: 0} - ColorValue: {r: 0, g: 0, b: 0, a: 0} - Vector2Value: {x: 0, y: 0} - Vector3Value: {x: 0, y: 0, z: 0} - Vector4Value: {x: 0, y: 0, z: 0, w: 0} - CurveValue: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 0 - m_PostInfinity: 0 - m_RotationOrder: 0 - AudioClipValue: {fileID: 0} - QuaternionValue: {x: 0, y: 0, z: 0, w: 0} - EventValue: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - Options: [] - - Type: 13 - Label: Offset Position - Name: EffectOffset - Tooltip: Spawn the prefab relative to the Interactive position - IntValue: 0 - StringValue: - FloatValue: 0 - BoolValue: 0 - GameObjectValue: {fileID: 0} - ScriptableObjectValue: {fileID: 0} - ObjectValue: {fileID: 0} - MaterialValue: {fileID: 0} - TextureValue: {fileID: 0} - ColorValue: {r: 0, g: 0, b: 0, a: 0} - Vector2Value: {x: 0, y: 0} - Vector3Value: {x: 0, y: 0, z: -0.01} - Vector4Value: {x: 0, y: 0, z: 0, w: 0} - CurveValue: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 0 - m_PostInfinity: 0 - m_RotationOrder: 0 - AudioClipValue: {fileID: 0} - QuaternionValue: {x: 0, y: 0, z: 0, w: 0} - EventValue: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - Options: [] - HideUnityEvents: 1 dimensionIndex: 0 --- !u!114 &4389918657735180436 MonoBehaviour: @@ -230,13 +151,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 - touchableCollider: {fileID: 65155074209115082} localForward: {x: 0, y: 0, z: -1} localUp: {x: 0, y: 1, z: 0} localCenter: {x: 0, y: 0, z: -0.01} bounds: {x: 0.12, y: 0.12} + touchableCollider: {fileID: 65155074209115082} --- !u!114 &1576028632456365133 MonoBehaviour: m_ObjectHideFlags: 0 @@ -435,7 +355,6 @@ MonoBehaviour: m_fontSizeMax: 72 m_fontStyle: 0 m_textAlignment: 514 - m_isAlignmentEnumConverted: 1 m_characterSpacing: 0 m_wordSpacing: 0 m_lineSpacing: 0 @@ -462,6 +381,7 @@ MonoBehaviour: m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 @@ -476,12 +396,9 @@ MonoBehaviour: lineCount: 1 pageCount: 1 materialCount: 1 - m_havePropertiesChanged: 0 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_spriteAnimator: {fileID: 0} - m_isInputParsingRequired: 0 - m_inputSource: 0 m_hasFontAssetChanged: 0 m_renderer: {fileID: 23859773054077766} m_subTextObjects: @@ -983,7 +900,6 @@ MonoBehaviour: m_fontSizeMax: 72 m_fontStyle: 0 m_textAlignment: 514 - m_isAlignmentEnumConverted: 1 m_characterSpacing: 0 m_wordSpacing: 0 m_lineSpacing: 0 @@ -1010,6 +926,7 @@ MonoBehaviour: m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 @@ -1024,12 +941,9 @@ MonoBehaviour: lineCount: 1 pageCount: 1 materialCount: 1 - m_havePropertiesChanged: 0 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_spriteAnimator: {fileID: 0} - m_isInputParsingRequired: 0 - m_inputSource: 0 m_hasFontAssetChanged: 0 m_renderer: {fileID: 7620952272536114864} m_subTextObjects: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/CheckBox.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/CheckBox.prefab index 229216e30da..bacd6ff0ef7 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/CheckBox.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/CheckBox.prefab @@ -689,7 +689,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 65394494458541452} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/GrabHandle.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/GrabHandle.prefab index 99ea7a103e0..259ded8f3ae 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/GrabHandle.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/GrabHandle.prefab @@ -77,11 +77,9 @@ MonoBehaviour: - Target: {fileID: 6956884834071603112} Themes: - {fileID: 11400000, guid: d7354f15f868b394f9c15dc5c1209056, type: 2} - HadDefaultTheme: 1 - Target: {fileID: 6956884834527463984} Themes: - {fileID: 11400000, guid: d5acbeaf80ef1244bbf7ec3a5ab9de10, type: 2} - HadDefaultTheme: 1 OnClick: m_PersistentCalls: m_Calls: [] diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonCube.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonCube.prefab index d151f550dbc..fc2348f6b91 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonCube.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonCube.prefab @@ -147,7 +147,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 289694440342955798} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Toggle.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Toggle.prefab index b6d91a20e77..c77e48649c8 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Toggle.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Toggle.prefab @@ -187,6 +187,26 @@ PrefabInstance: propertyPath: Profiles.Array.data[2].Themes.Array.size value: 2 objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.data[0].Themes.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.data[1].Themes.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.data[2].Themes.Array.size + value: 2 + objectReference: {fileID: 0} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: Dimensions @@ -236,6 +256,35 @@ PrefabInstance: propertyPath: Profiles.Array.data[2].Target value: objectReference: {fileID: 265745453840856759} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.data[0].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: 0c4c73f326f602744bdcfff481fd6f20, + type: 2} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.data[1].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: 8f8cfb3041153fa45bccb6d664a563ec, + type: 2} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.data[2].Target + value: + objectReference: {fileID: 265745453840856759} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.data[2].Themes.Array.data[0] + value: + objectReference: {fileID: 11400000, guid: 452ab0b768e73aa45a65adeb08147cec, + type: 2} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: profiles.Array.data[2].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: c020ebf06513a084caa57aa68a245a6b, + type: 2} - target: {fileID: 4607504470098667674, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_Mesh diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Unplated.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Unplated.prefab index 4f7b366facf..46622632ecd 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Unplated.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Unplated.prefab @@ -507,7 +507,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 316800722} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHololens2UnityUI.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHololens2UnityUI.prefab new file mode 100644 index 00000000000..164865925b6 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHololens2UnityUI.prefab @@ -0,0 +1,793 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2882314507082225600 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 767361046734328591} + - component: {fileID: 5040708075129034592} + - component: {fileID: 2425490457390524329} + m_Layer: 5 + m_Name: UIButtonSquareIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &767361046734328591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2882314507082225600} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.000100000296, z: 0} + m_LocalScale: {x: 32, y: 32, z: 32} + m_Children: [] + m_Father: {fileID: 5171175689000978014} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5040708075129034592 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2882314507082225600} + m_Mesh: {fileID: 4300010, guid: b566bbce04d66f4428421e81a3af0299, type: 3} +--- !u!23 &2425490457390524329 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2882314507082225600} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fa419ab56051229449e3b813df8f295f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &4117306204827652223 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6015630713004859278} + m_Layer: 0 + m_Name: CompressableVisual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6015630713004859278 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4117306204827652223} + 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: 3294941786992218696} + m_Father: {fileID: 3223503683246946309} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4716031617915946492 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1914098639805987745} + - component: {fileID: 448654273136647793} + - component: {fileID: 3078934259714054176} + - component: {fileID: 6643496050371014491} + - component: {fileID: 7765793373352522057} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1914098639805987745 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4716031617915946492} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 32, y: 32, z: 32} + m_Children: [] + m_Father: {fileID: 3294941786992218696} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!33 &448654273136647793 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4716031617915946492} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3078934259714054176 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4716031617915946492} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 329cdefad4cf0f14e9b6767d0af094b0, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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!114 &6643496050371014491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4716031617915946492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4ea7dc4a5a95cb84584659cbc5279700, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &7765793373352522057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4716031617915946492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36065390e01a3cd40b87e4bf4acd02f9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7205869594250961695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3294941786992218696} + m_Layer: 0 + m_Name: CubeScaler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3294941786992218696 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7205869594250961695} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -7.6} + m_LocalScale: {x: 1, y: 1, z: 0.48} + m_Children: + - {fileID: 1914098639805987745} + m_Father: {fileID: 6015630713004859278} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1270314221950268463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3223503683246946314} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f98e7663599230e419addf153615c144, type: 3} + m_Name: + m_EditorClassIdentifier: + movingButtonVisuals: {fileID: 3223503683169235570} + distanceSpaceMode: 1 + startPushDistance: 0 + maxPushDistance: 14 + pressDistance: 8.5 + releaseDistanceDelta: 2 + returnSpeed: 25 + releaseOnTouchEnd: 1 + enforceFrontPush: 1 + TouchBegin: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + TouchEnd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + ButtonPressed: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1922179712112255870} + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 291bf9326e517b0489c2ee53d0a6a63f, + type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + ButtonReleased: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1922179712112255870} + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 40ae713ddf420714bbc1a3b5c3f2eac1, + type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 6229073104108989701} + m_MethodName: Submit + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + movingButtonIconText: {fileID: 7813901746064736085} + compressableButtonVisuals: {fileID: 4117306204827652223} + minCompressPercentage: 0.25 + highlightPlate: {fileID: 0} + highlightPlateAnimationTime: 0.25 +--- !u!1 &7813901746064736085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5171175689000978014} + m_Layer: 0 + m_Name: IconAndText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5171175689000978014 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7813901746064736085} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -3} + m_LocalScale: {x: 10, y: 10, z: 10} + m_Children: + - {fileID: 2761560060636545628} + - {fileID: 767361046734328591} + m_Father: {fileID: 3223503683246946309} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8530779549958272963 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2761560060636545628} + - component: {fileID: 395745670083757076} + - component: {fileID: 2887137240106937465} + - component: {fileID: 302805927429812628} + - component: {fileID: 6703145284943914786} + m_Layer: 0 + m_Name: TextMeshPro + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2761560060636545628 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8530779549958272963} + 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: 5171175689000978014} + 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.935} + m_SizeDelta: {x: 2.8, y: 0.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &395745670083757076 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8530779549958272963} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 21202819797275496, guid: 6a84f857bec7e7345843ae29404c57ce, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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!33 &2887137240106937465 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8530779549958272963} + m_Mesh: {fileID: 0} +--- !u!222 &302805927429812628 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8530779549958272963} + m_CullTransparentMesh: 0 +--- !u!114 &6703145284943914786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8530779549958272963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_text: Button + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 6a84f857bec7e7345843ae29404c57ce, type: 2} + m_sharedMaterial: {fileID: 21202819797275496, guid: 6a84f857bec7e7345843ae29404c57ce, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4 + m_fontSizeBase: 4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: -0.0022691963, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 6703145284943914786} + characterCount: 6 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 395745670083757076} + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_maskType: 0 +--- !u!1001 &7212590361910740038 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5234426576715676748, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Name + value: PressableButtonHololens2UnityUI + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_SizeDelta.x + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_SizeDelta.y + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5234426577712821803, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 5234426577528310583, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 2.02 + objectReference: {fileID: 0} + - target: {fileID: 5234426577712821812, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5234426577712821812, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Name + value: FrontPlate + objectReference: {fileID: 0} + - target: {fileID: 5234426577528310576, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6037486589368256570, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Name + value: BackPlate + objectReference: {fileID: 0} + - target: {fileID: 9130116940813133624, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5234426577528310582, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5234426577528310582, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_fontSize + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5234426577528310582, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_fontSizeBase + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5234426577528310582, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_margin.y + value: 22.371887 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676743, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Material + value: + objectReference: {fileID: 2100000, guid: ec72a3a105768f746b556a8dfdae61a8, type: 2} + m_RemovedComponents: + - {fileID: 5234426576715676738, guid: df89e360642c6fc46abbc1c2656856f6, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: df89e360642c6fc46abbc1c2656856f6, type: 3} +--- !u!1 &3223503683246946314 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5234426576715676748, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + m_PrefabInstance: {fileID: 7212590361910740038} + m_PrefabAsset: {fileID: 0} +--- !u!224 &3223503683246946309 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + m_PrefabInstance: {fileID: 7212590361910740038} + m_PrefabAsset: {fileID: 0} +--- !u!82 &1922179712112255870 stripped +AudioSource: + m_CorrespondingSourceObject: {fileID: 9130116940813133624, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + m_PrefabInstance: {fileID: 7212590361910740038} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6229073104108989701 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3632813099888912707, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + m_PrefabInstance: {fileID: 7212590361910740038} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3223503683246946314} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 724341da07c2e1742a82bcc156a2461d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &3223503683169235570 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5234426577712821812, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + m_PrefabInstance: {fileID: 7212590361910740038} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHololens2UnityUI.prefab.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHololens2UnityUI.prefab.meta new file mode 100644 index 00000000000..ffa028096ae --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHololens2UnityUI.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2f626628bde0879488068de0e9f25f8d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUI.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUI.prefab new file mode 100644 index 00000000000..1163c1cb2f8 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUI.prefab @@ -0,0 +1,626 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5234426576715676748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5234426576715676739} + - component: {fileID: 5234426576715676742} + - component: {fileID: 5234426576715676736} + - component: {fileID: 5234426576715676737} + - component: {fileID: 5234426576715676738} + - component: {fileID: 9130116940813133624} + - component: {fileID: 3632813099888912707} + m_Layer: 0 + m_Name: PressableButtonUnityUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5234426576715676739 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426576715676748} + 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: 5234426577528310583} + - {fileID: 4703832778049971774} + - {fileID: 5234426577712821803} + m_Father: {fileID: 0} + 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: 32, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5234426576715676742 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426576715676748} + m_CullTransparentMesh: 0 +--- !u!114 &5234426576715676736 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426576715676748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &5234426576715676737 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426576715676748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fcaf896491074042b7ed7684454a412, type: 3} + m_Name: + m_EditorClassIdentifier: + eventsToReceive: 0 + debounceThreshold: 0.01 +--- !u!114 &5234426576715676738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426576715676748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63c897c097799da4a900032ad3471c47, type: 3} + m_Name: + m_EditorClassIdentifier: + movingButtonVisuals: {fileID: 5234426577712821812} + distanceSpaceMode: 1 + startPushDistance: 0 + maxPushDistance: 14 + pressDistance: 8.5 + releaseDistanceDelta: 2 + returnSpeed: 25 + releaseOnTouchEnd: 1 + enforceFrontPush: 1 + TouchBegin: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + TouchEnd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + ButtonPressed: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 9130116940813133624} + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 291bf9326e517b0489c2ee53d0a6a63f, + type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + ButtonReleased: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 9130116940813133624} + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 40ae713ddf420714bbc1a3b5c3f2eac1, + type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 3632813099888912707} + m_MethodName: Submit + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!82 &9130116940813133624 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426576715676748} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &3632813099888912707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426576715676748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 724341da07c2e1742a82bcc156a2461d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &5234426577528310576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5234426577528310583} + - component: {fileID: 5234426577528310581} + - component: {fileID: 5234426577528310582} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5234426577528310583 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426577528310576} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -3.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 5234426576715676739} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5234426577528310581 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426577528310576} + m_CullTransparentMesh: 0 +--- !u!114 &5234426577528310582 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426577528310576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_text: Button + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: afc8299d5d5bbd440a0616c8ecbc7217, type: 2} + m_sharedMaterial: {fileID: 21340371490990018, guid: afc8299d5d5bbd440a0616c8ecbc7217, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 4 + m_fontSizeBase: 4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 5234426577528310582} + characterCount: 6 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5234426577712821812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5234426577712821803} + - component: {fileID: 5234426577712821801} + - component: {fileID: 5234426577712821802} + - component: {fileID: 7066721728451557091} + m_Layer: 0 + m_Name: Front Plate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5234426577712821803 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426577712821812} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -15.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 5234426576715676739} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5234426577712821801 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426577712821812} + m_CullTransparentMesh: 0 +--- !u!114 &5234426577712821802 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426577712821812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 329cdefad4cf0f14e9b6767d0af094b0, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &7066721728451557091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5234426577712821812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d5970893ef64ed4aa155d71e6c515ca, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &6037486589368256570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4703832778049971774} + - component: {fileID: 4782931143528438246} + - component: {fileID: 5215530967309281004} + - component: {fileID: 9062648910478887000} + m_Layer: 0 + m_Name: Back Plate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4703832778049971774 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6037486589368256570} + 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: 0.01} + m_Children: [] + m_Father: {fileID: 5234426576715676739} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4782931143528438246 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6037486589368256570} + m_CullTransparentMesh: 0 +--- !u!114 &5215530967309281004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6037486589368256570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: ec72a3a105768f746b556a8dfdae61a8, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &9062648910478887000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6037486589368256570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d5970893ef64ed4aa155d71e6c515ca, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUI.prefab.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUI.prefab.meta new file mode 100644 index 00000000000..06f69f7e82c --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUI.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: df89e360642c6fc46abbc1c2656856f6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUICircular.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUICircular.prefab new file mode 100644 index 00000000000..bbf8454eb08 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUICircular.prefab @@ -0,0 +1,146 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &2486209284698229024 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_SizeDelta.x + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_SizeDelta.y + value: 48 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676739, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676748, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Name + value: PressableButtonUnityUICircular + objectReference: {fileID: 0} + - target: {fileID: 5234426576715676743, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Material + value: + objectReference: {fileID: 2100000, guid: 68f0ad9fadae8b3438ebd66cdba2b20f, type: 2} + - target: {fileID: 5234426577712821803, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5234426577712821802, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Material + value: + objectReference: {fileID: 2100000, guid: ed88a1368a3ad7248b15504ada5915a6, type: 2} + - target: {fileID: 4703832778049971774, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5215530967309281004, guid: df89e360642c6fc46abbc1c2656856f6, + type: 3} + propertyPath: m_Material + value: + objectReference: {fileID: 2100000, guid: 68f0ad9fadae8b3438ebd66cdba2b20f, type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: df89e360642c6fc46abbc1c2656856f6, type: 3} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUICircular.prefab.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUICircular.prefab.meta new file mode 100644 index 00000000000..4868ce794ea --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUICircular.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c31734863d3bf254191878828a9e17e6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/RadialSet.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/RadialSet.prefab index 6921c6a4e40..ecae55292d8 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/RadialSet.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/RadialSet.prefab @@ -937,7 +937,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 65613013962320470} localForward: {x: 0, y: 0, z: -1} @@ -1108,7 +1107,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 65735667765749806} localForward: {x: 0, y: 0, z: -1} @@ -1461,7 +1459,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 65959922074838590} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ToggleButton.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ToggleButton.prefab index f85f6ee48ed..b5ee30442fa 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ToggleButton.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ToggleButton.prefab @@ -786,7 +786,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 65451765068380320} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ToggleSwitch.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ToggleSwitch.prefab index bbc3c689620..007efadc440 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ToggleSwitch.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/ToggleSwitch.prefab @@ -437,7 +437,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 65620022048249504} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/IInteractableHandler.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/IInteractableHandler.cs index 8b358674c98..9c77a9123ce 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/IInteractableHandler.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/IInteractableHandler.cs @@ -12,19 +12,11 @@ public interface IInteractableHandler /// /// A voice command was called /// - /// - /// - /// - /// - /// void OnVoiceCommand(InteractableStates state, Interactable source, string command, int index = 0, int length = 1); /// /// A click event happened /// - /// - /// - /// void OnClick(InteractableStates state, Interactable source, IMixedRealityPointer pointer = null); } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableAudioReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableAudioReceiver.cs index e004aa194b0..bcb74c24652 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableAudioReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableAudioReceiver.cs @@ -13,22 +13,27 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public class InteractableAudioReceiver : ReceiverBase { + /// + /// AudioClip to play when event is selected + /// [InspectorField(Type = InspectorField.FieldTypes.AudioClip, Label = "Audio Clip", Tooltip = "Assign an audioclip to play on click")] public AudioClip AudioClip; + /// + public override bool HideUnityEvents => true; + private State lastState; - - public InteractableAudioReceiver(UnityEvent ev) : base(ev) + + /// + /// Creates and AudioReceiver, which plays sounds on Click + /// + public InteractableAudioReceiver(UnityEvent ev) : base(ev, "AudioEvent") { - Name = "AudioEvent"; - HideUnityEvents = true; // hides Unity events in the receiver - meant to be code only } - + /// /// Called on update, check to see if the state has changed sense the last call /// - /// - /// public override void OnUpdate(InteractableStates state, Interactable source) { if (state.CurrentState() != lastState) @@ -41,7 +46,6 @@ public override void OnUpdate(InteractableStates state, Interactable source) /// /// assign the clip to the audio source and play /// - /// private void PlayAudio(Interactable source) { AudioSource audioSource = source.GetComponent(); @@ -57,9 +61,6 @@ private void PlayAudio(Interactable source) /// /// click happened /// - /// - /// - /// public override void OnClick(InteractableStates state, Interactable source, IMixedRealityPointer pointer = null) { base.OnClick(state, source); @@ -69,11 +70,6 @@ public override void OnClick(InteractableStates state, Interactable source, IMix /// /// voice command called /// - /// - /// - /// - /// - /// public override void OnVoiceCommand(InteractableStates state, Interactable source, string command, int index = 0, int length = 1) { base.OnVoiceCommand(state, source, command, index, length); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableEvent.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableEvent.cs index 543372686b1..abc4c72b9f4 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableEvent.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableEvent.cs @@ -1,10 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using Microsoft.MixedReality.Toolkit.Utilities; using Microsoft.MixedReality.Toolkit.Utilities.Editor; using System; using System.Collections.Generic; -using System.Reflection; +using System.Linq; +using UnityEngine; using UnityEngine.Events; namespace Microsoft.MixedReality.Toolkit.UI @@ -15,103 +17,81 @@ namespace Microsoft.MixedReality.Toolkit.UI [System.Serializable] public class InteractableEvent { - public string Name; - public UnityEvent Event; - public string ClassName; - public string AssemblyQualifiedName; - public ReceiverBase Receiver; - public List Settings; - public bool HideUnityEvents; - - public struct ReceiverData - { - public string Name; - public bool HideUnityEvents; - public List Fields; - } - /// - /// The list of base classes whose derived classes will be included in interactable event - /// selection dropdowns. + /// Base Event used to initialize EventReceiver class /// - private static readonly List candidateEventTypes = new List() { typeof(ReceiverBase) }; + public UnityEvent Event = new UnityEvent(); - public ReceiverData AddOnClick() - { - return AddReceiver(typeof(InteractableOnClickReceiver)); - } + /// + /// ReceiverBase instantiation for this InteractableEvent. Used at runtime by Interactable class + /// + [NonSerialized] + public ReceiverBase Receiver; /// - /// Add new events/receivers to the list and grab all the InspectorFields so we can render them in the inspector + /// Defines the type of Receiver to associate. Type must be a class that extends ReceiverBase /// - /// - /// - public ReceiverData AddReceiver(Type type) + public Type ReceiverType { - ReceiverBase receiver = (ReceiverBase)Activator.CreateInstance(type, Event); - // get the settings for the inspector - - List fields = new List(); - - Type myType = receiver.GetType(); - int index = 0; - - ReceiverData data = new ReceiverData(); - - foreach (PropertyInfo prop in myType.GetProperties()) + get { - var attrs = (InspectorField[])prop.GetCustomAttributes(typeof(InspectorField), false); - foreach (var attr in attrs) + if (receiverType == null) { - fields.Add(new InspectorFieldData() { Name = prop.Name, Attributes = attr, Value = prop.GetValue(receiver, null)}); + if (string.IsNullOrEmpty(AssemblyQualifiedName)) + { + return null; + } + + receiverType = Type.GetType(AssemblyQualifiedName); } - index++; + return receiverType; } - - index = 0; - foreach (FieldInfo field in myType.GetFields()) + set { - var attrs = (InspectorField[])field.GetCustomAttributes(typeof(InspectorField), false); - foreach (var attr in attrs) + if (!value.IsSubclassOf(typeof(ReceiverBase))) { - fields.Add(new InspectorFieldData() { Name = field.Name, Attributes = attr, Value = field.GetValue(receiver) }); + Debug.LogWarning($"Cannot assign type {value} that does not extend {typeof(ReceiverBase)} to ThemeDefinition"); + return; } - index++; + if (receiverType != value) + { + receiverType = value; + ClassName = receiverType.Name; + AssemblyQualifiedName = receiverType.AssemblyQualifiedName; + } } + } - data.Fields = fields; - data.Name = receiver.Name; - data.HideUnityEvents = receiver.HideUnityEvents; + // Unity cannot serialize System.Type, thus must save AssemblyQualifiedName + // Field here for Runtime use + [NonSerialized] + private Type receiverType; - return data; - } + [SerializeField] + private string ClassName; + + [SerializeField] + private string AssemblyQualifiedName; + + [SerializeField] + private List Settings = new List(); - /// - /// Get the recieverBase types that contain event logic - /// - /// - public static InteractableTypesContainer GetEventTypes() - { - return InteractableTypeFinder.Find(candidateEventTypes, TypeRestriction.DerivedOnly); - } - /// /// Create the event and setup the values from the inspector /// - /// - /// - public static ReceiverBase GetReceiver(InteractableEvent iEvent, InteractableTypesContainer interactableTypes) + public static ReceiverBase CreateReceiver(InteractableEvent iEvent) { -#if UNITY_EDITOR - int index = InspectorField.ReverseLookup(iEvent.ClassName, interactableTypes.ClassNames); - Type eventType = interactableTypes.Types[index]; -#else - Type eventType = Type.GetType(iEvent.AssemblyQualifiedName); -#endif - // apply the settings? - ReceiverBase newEvent = (ReceiverBase)Activator.CreateInstance(eventType, iEvent.Event); + // Temporary workaround + // This is to fix a bug in GA where the AssemblyQualifiedName was never actually saved. Functionality would work in editor...but never on device player + if (iEvent.ReceiverType == null) + { + var correctType = TypeCacheUtility.GetSubClasses().Where(s => s?.Name == iEvent.ClassName).First(); + iEvent.ReceiverType = correctType; + } + + ReceiverBase newEvent = (ReceiverBase)Activator.CreateInstance(iEvent.ReceiverType, iEvent.Event); InspectorGenericFields.LoadSettings(newEvent, iEvent.Settings); return newEvent; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnClickReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnClickReceiver.cs index 537d0e6aa92..00edca19a81 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnClickReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnClickReceiver.cs @@ -11,16 +11,23 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public class InteractableOnClickReceiver : ReceiverBase { - public InteractableOnClickReceiver(UnityEvent ev): base(ev) - { - Name = "OnClick"; - } + /// + /// Invoked on pointer clicked + /// + public UnityEvent OnClicked => uEvent; + + /// + /// Creates receiver for raising OnClick events + /// + public InteractableOnClickReceiver(UnityEvent ev): base(ev, "OnClick") { } + /// public override void OnUpdate(InteractableStates state, Interactable source) { // using onClick } + /// public override void OnClick(InteractableStates state, Interactable source, IMixedRealityPointer pointer = null) { uEvent.Invoke(); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnFocusReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnFocusReceiver.cs index a718b36ac89..a89f92b5f3c 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnFocusReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnFocusReceiver.cs @@ -11,24 +11,35 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public class InteractableOnFocusReceiver : ReceiverBase { + /// + /// Creates receiver that raises focus enter and exit unity events + /// + public InteractableOnFocusReceiver() : this(new UnityEvent()) { } + + /// + /// Creates receiver that raises focus enter and exit unity events + /// + public InteractableOnFocusReceiver(UnityEvent ev) : base(ev, "OnFocusOn") { } + + /// + /// Raised when focus has left the object + /// [InspectorField(Type = InspectorField.FieldTypes.Event, Label = "On Focus Off", Tooltip = "Focus has left the object")] public UnityEvent OnFocusOff = new UnityEvent(); - private bool hadFocus; - private State lastState; + /// + /// Raised when focus has entered the object + /// + public UnityEvent OnFocusOn => uEvent; - public InteractableOnFocusReceiver(UnityEvent ev) : base(ev) - { - Name = "OnFocus"; - } + private bool hadFocus; + /// public override void OnUpdate(InteractableStates state, Interactable source) { - bool changed = state.CurrentState() != lastState; - bool hasFocus = state.GetState(InteractableStates.InteractableStateEnum.Focus).Value > 0; - if (hadFocus != hasFocus && changed) + if (hadFocus != hasFocus) { if (hasFocus) { @@ -41,7 +52,6 @@ public override void OnUpdate(InteractableStates state, Interactable source) } hadFocus = hasFocus; - lastState = state.CurrentState(); } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnGrabReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnGrabReceiver.cs index c0b5a35f0d3..8e3601ede17 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnGrabReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnGrabReceiver.cs @@ -12,17 +12,30 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public class InteractableOnGrabReceiver : ReceiverBase { + /// + /// Invoked on grab release + /// [InspectorField(Type = InspectorField.FieldTypes.Event, Label = "On Release", Tooltip = "Grab was released")] public UnityEvent OnRelease = new UnityEvent(); + /// + /// Invoked on grab start + /// + public UnityEvent OnGrab => uEvent; + private bool hadGrab; - private State lastState; - public InteractableOnGrabReceiver(UnityEvent ev) : base(ev) - { - Name = "OnGrab"; - } + /// + /// Creates a receiver that raises grab start and end events. + /// + public InteractableOnGrabReceiver(UnityEvent ev) : base(ev, "OnGrab") { } + + /// + /// Creates a receiver that raises grab start and end events. + /// + public InteractableOnGrabReceiver() : this( new UnityEvent()) { } + /// public override void OnUpdate(InteractableStates state, Interactable source) { bool hasGrab = state.GetState(InteractableStates.InteractableStateEnum.Grab).Value > 0; @@ -40,7 +53,6 @@ public override void OnUpdate(InteractableStates state, Interactable source) } hadGrab = hasGrab; - lastState = state.CurrentState(); } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnHoldReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnHoldReceiver.cs index 85a04c2cb31..23288256d0a 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnHoldReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnHoldReceiver.cs @@ -12,6 +12,9 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public class InteractableOnHoldReceiver : ReceiverBase { + /// + /// The amount of time to press before triggering event + /// [InspectorField(Type = InspectorField.FieldTypes.Float, Label = "Hold Time", Tooltip = "The amount of time to press before triggering event")] public float HoldTime = 1f; @@ -19,11 +22,22 @@ public class InteractableOnHoldReceiver : ReceiverBase private bool hasDown; - public InteractableOnHoldReceiver(UnityEvent ev): base(ev) - { - Name = "OnHold"; - } + /// + /// Invoked when interactable has been pressed for HoldTime + /// + public UnityEvent OnHold => uEvent; + + /// + /// Creates receiver that raises OnHold events + /// + public InteractableOnHoldReceiver(UnityEvent ev): base(ev, "OnHold") { } + + /// + /// Creates receiver that raises OnHold events + /// + public InteractableOnHoldReceiver() : this(new UnityEvent()) { } + /// public override void OnUpdate(InteractableStates state, Interactable source) { if (state.GetState(InteractableStates.InteractableStateEnum.Pressed).Value > 0 && !hasDown) diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnPressReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnPressReceiver.cs index 91a691f118c..69a20787fd1 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnPressReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnPressReceiver.cs @@ -2,7 +2,6 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Utilities.Editor; -using UnityEngine; using UnityEngine.Events; namespace Microsoft.MixedReality.Toolkit.UI @@ -12,29 +11,57 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public class InteractableOnPressReceiver : ReceiverBase { - + /// + /// Invoked on pointer release + /// [InspectorField(Type = InspectorField.FieldTypes.Event, Label = "On Release", Tooltip = "The button is released")] public UnityEvent OnRelease = new UnityEvent(); + /// + /// Invoked on pointer press + /// + public UnityEvent OnPress => uEvent; + + /// + /// Type of valid interaction distances to fire press events + /// public enum InteractionType { + /// + /// Support Near and Far press interactions + /// NearAndFar = 0, + /// + /// Support Near press interactions only + /// NearOnly = 1, + /// + /// Support Far press interactions only + /// FarOnly = 2 } - [InspectorField(Label = "Interaction Filter", Tooltip = "Specify whether press event is for near or far interaction", Type = InspectorField.FieldTypes.DropdownInt, Options = new string[] { "Near and Far", "Near Only", "Far Only" })] + /// + /// Specify whether press event is for near or far interaction + /// + [InspectorField(Label = "Interaction Filter", + Tooltip = "Specify whether press event is for near or far interaction", + Type = InspectorField.FieldTypes.DropdownInt, Options = new string[] { "Near and Far", "Near Only", "Far Only" })] public int InteractionFilter = (int)InteractionType.NearAndFar; private bool hasDown; - private State lastState; private bool isNear = false; - public InteractableOnPressReceiver(UnityEvent ev) : base(ev) - { - Name = "OnPress"; - } + /// + /// Receiver that raises press and release unity events + /// + public InteractableOnPressReceiver(UnityEvent ev) : base(ev, "OnPress") { } + + /// + /// Receiver that raises press and release unity events + /// + public InteractableOnPressReceiver() : this(new UnityEvent()) { } /// /// checks if the received interactable state matches the press filter @@ -53,15 +80,15 @@ private bool IsFilterValid() } } + + /// public override void OnUpdate(InteractableStates state, Interactable source) { - bool changed = state.CurrentState() != lastState; - bool hadDown = hasDown; hasDown = state.GetState(InteractableStates.InteractableStateEnum.Pressed).Value > 0; - if (changed && hasDown != hadDown) + if (hasDown != hadDown) { if (hasDown) { @@ -79,8 +106,6 @@ public override void OnUpdate(InteractableStates state, Interactable source) } } } - - lastState = state.CurrentState(); } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnToggleReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnToggleReceiver.cs index 57cf426af88..077476f0d04 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnToggleReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnToggleReceiver.cs @@ -1,41 +1,57 @@ -using Microsoft.MixedReality.Toolkit.Input; -using Microsoft.MixedReality.Toolkit.Utilities.Editor; -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using Microsoft.MixedReality.Toolkit.Input; +using Microsoft.MixedReality.Toolkit.Utilities.Editor; using UnityEngine.Events; namespace Microsoft.MixedReality.Toolkit.UI { /// - /// a receiver that listens to toggle events + /// An event receiver that listens to toggle events /// public class InteractableOnToggleReceiver : ReceiverBase { + /// + /// Invoked when toggle is deselected + /// [InspectorField(Type = InspectorField.FieldTypes.Event, Label = "On Deselect", Tooltip = "The toggle is deselected")] public UnityEvent OnDeselect = new UnityEvent(); - public InteractableOnToggleReceiver(UnityEvent ev) : base(ev) - { - Name = "OnSelect"; - } + /// + /// Invoked when toggle is checked + /// + public UnityEvent OnSelect => uEvent; + /// + /// Creates a receiver that raises events for toggle button states + /// + public InteractableOnToggleReceiver(UnityEvent ev) : base(ev, "OnSelect") { } + + /// + /// Creates a receiver that raises events for toggle button states + /// + public InteractableOnToggleReceiver() : this(new UnityEvent()) { } + + /// public override void OnUpdate(InteractableStates state, Interactable source) { // using onClick } + /// public override void OnClick(InteractableStates state, Interactable source, IMixedRealityPointer pointer = null) { - int currentIndex = source.GetDimensionIndex(); - - if (currentIndex % 2 == 0) - { - OnDeselect.Invoke(); - } - else + if (source.ButtonMode == SelectionModes.Toggle) { - uEvent.Invoke(); + if (source.IsToggled) + { + OnSelect.Invoke(); + } + else + { + OnDeselect.Invoke(); + } } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnTouchReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnTouchReceiver.cs index 0b3f88d9b0d..1106e90950e 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnTouchReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableOnTouchReceiver.cs @@ -12,17 +12,30 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public class InteractableOnTouchReceiver : ReceiverBase { + /// + /// Invoked when touch has left the object + /// [InspectorField(Type = InspectorField.FieldTypes.Event, Label = "On Touch End", Tooltip = "Touch has left the object")] public UnityEvent OnTouchEnd = new UnityEvent(); + /// + /// Invoked when touch begins + /// + public UnityEvent OnTouchStart => uEvent; + private bool hadTouch; - private State lastState; - public InteractableOnTouchReceiver(UnityEvent ev) : base(ev) - { - Name = "OnTouch"; - } + /// + /// Receiver for raising touch begin and end events + /// + public InteractableOnTouchReceiver(UnityEvent ev) : base(ev, "OnTouch") { } + + /// + /// Receiver for raising touch begin and end events + /// + public InteractableOnTouchReceiver() : this(new UnityEvent()) { } + /// public override void OnUpdate(InteractableStates state, Interactable source) { bool hadTouch = state.GetState(InteractableStates.InteractableStateEnum.PhysicalTouch).Value > 0; @@ -40,7 +53,6 @@ public override void OnUpdate(InteractableStates state, Interactable source) } this.hadTouch = hadTouch; - lastState = state.CurrentState(); } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableReceiver.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableReceiver.cs index 356f8427d0d..9cfc72f824f 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableReceiver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableReceiver.cs @@ -28,8 +28,7 @@ protected virtual void SetupEvents() { if (Events.Count > 0) { - InteractableTypesContainer interactableTypes = InteractableEvent.GetEventTypes(); - Events[0].Receiver = InteractableEvent.GetReceiver(Events[0], interactableTypes); + Events[0].Receiver = InteractableEvent.CreateReceiver(Events[0]); Events[0].Receiver.Host = this; } } @@ -37,8 +36,6 @@ protected virtual void SetupEvents() /// /// A state has changed /// - /// - /// public override void OnStateChange(InteractableStates state, Interactable source) { base.OnStateChange(state, source); @@ -54,9 +51,6 @@ public override void OnStateChange(InteractableStates state, Interactable source /// /// click happened /// - /// - /// - /// public override void OnClick(InteractableStates state, Interactable source, IMixedRealityPointer pointer = null) { base.OnClick(state, source, pointer); @@ -73,11 +67,6 @@ public override void OnClick(InteractableStates state, Interactable source, IMix /// /// voice command happened /// - /// - /// - /// - /// - /// public override void OnVoiceCommand(InteractableStates state, Interactable source, string command, int index = 0, int length = 1) { base.OnVoiceCommand(state, source, command, index, length); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableReceiverList.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableReceiverList.cs index a9195732afd..ff39e0a01e6 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableReceiverList.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/InteractableReceiverList.cs @@ -9,11 +9,12 @@ namespace Microsoft.MixedReality.Toolkit.UI { /// /// An example of building an Interactable receiver that uses built-in receivers that extend ReceiverBase - /// This is a mono behavior, place on a gameObject and assign the Interactable /// public class InteractableReceiverList : ReceiverBaseMonoBehavior { - // list of events added to this interactable + /// + /// List of events added to this interactable + /// [HideInInspector] public List Events = new List(); @@ -27,11 +28,9 @@ protected virtual void Awake() /// protected virtual void SetupEvents() { - InteractableTypesContainer interactableTypes = InteractableEvent.GetEventTypes(); - for (int i = 0; i < Events.Count; i++) { - Events[i].Receiver = InteractableEvent.GetReceiver(Events[i], interactableTypes); + Events[i].Receiver = InteractableEvent.CreateReceiver(Events[i]); Events[i].Receiver.Host = this; } } @@ -39,8 +38,6 @@ protected virtual void SetupEvents() /// /// .A state has changed /// - /// - /// public override void OnStateChange(InteractableStates state, Interactable source) { base.OnStateChange(state, source); @@ -52,15 +49,11 @@ public override void OnStateChange(InteractableStates state, Interactable source Events[i].Receiver.OnUpdate(state, source); } } - } /// /// captures click events /// - /// - /// - /// public override void OnClick(InteractableStates state, Interactable source, IMixedRealityPointer pointer = null) { base.OnClick(state, source, pointer); @@ -77,9 +70,6 @@ public override void OnClick(InteractableStates state, Interactable source, IMix /// /// captures voice commands /// - /// - /// - /// /// index of the voice command /// voice command array length public override void OnVoiceCommand(InteractableStates state, Interactable source, string command, int index = 0, int length = 1) diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/ReceiverBase.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/ReceiverBase.cs index 6a471b0138a..f71f32df15c 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/ReceiverBase.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/ReceiverBase.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Input; +using System; using UnityEngine; using UnityEngine.Events; @@ -12,46 +13,55 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public abstract class ReceiverBase { - public string Name; + /// + /// Name of Event Receiver + /// + public string Name { get; protected set; } + + /// + /// Defines whether Unity Events should be hidden in inspector for this type of EventReceiver + /// + public virtual bool HideUnityEvents => false; - public bool HideUnityEvents; protected UnityEvent uEvent; - public MonoBehaviour Host; + /// + /// Each Receiver has a base Event it raises, (in addition to others). + /// + public UnityEvent Event { get => uEvent; set => uEvent = value; } + + /// + /// Targeted component for Event Receiver at runtime + /// + public MonoBehaviour Host { get; set; } - public ReceiverBase(UnityEvent ev) + /// + /// Constructs an interaction receiver that will raise unity event when triggered. + /// + /// Unity event to invoke. Add more events in deriving class. + /// Name of the unity event that will get invoked (visible in editor). + public ReceiverBase(UnityEvent ev, string name) { uEvent = ev; + Name = name; } /// /// The state has changed /// - /// - /// public abstract void OnUpdate(InteractableStates state, Interactable source); /// /// A voice command was called /// - /// - /// - /// - /// - /// public virtual void OnVoiceCommand(InteractableStates state, Interactable source, string command, int index = 0, int length = 1) { - // voice command called } /// /// A click event happened /// - /// - /// - /// public virtual void OnClick(InteractableStates state, Interactable source, IMixedRealityPointer pointer = null) { - // click called } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/ReceiverBaseMonoBehavior.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/ReceiverBaseMonoBehavior.cs index 09923a65051..0c4ad804781 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/ReceiverBaseMonoBehavior.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Events/ReceiverBaseMonoBehavior.cs @@ -14,9 +14,21 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public class ReceiverBaseMonoBehavior : MonoBehaviour, IInteractableHandler { + /// + /// Types of directions to search for Interactable component in transform heirachy + /// public enum SearchScopes { Self, Parent, Children }; + + /// + /// Interactable to target + /// public Interactable Interactable; + + /// + /// directions to search for Interactable component in transform heirachy if none assigned + /// public SearchScopes InteractableSearchScope; + protected State lastState; /// @@ -51,7 +63,6 @@ protected virtual void OnEnable() /// /// Add an interactable and add it as a handler /// - /// public void AddInteractable(Interactable interactable) { if (Interactable != null) @@ -90,8 +101,6 @@ protected virtual void Update() /// /// a state has changed /// - /// - /// public virtual void OnStateChange(InteractableStates state, Interactable source) { // the state has changed, do something new diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Interactable.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Interactable.cs index 24ef12526c4..53f4c228939 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Interactable.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Interactable.cs @@ -7,6 +7,8 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; +using UnityEngine.EventSystems; +using UnityEngine.Serialization; namespace Microsoft.MixedReality.Toolkit.UI { @@ -15,8 +17,6 @@ namespace Microsoft.MixedReality.Toolkit.UI /// Maintains a collection of themes that react to state changes and provide sensory feedback /// Passes state information and input data on to receivers that detect patterns and does stuff. /// - // TODO: Make sure all shader values are batched by theme - [System.Serializable] [HelpURL("https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_Interactable.html")] public class Interactable : @@ -30,74 +30,178 @@ public class Interactable : IMixedRealityInputHandler, IMixedRealityInputHandler { - /// - /// Setup the input system - /// - private static IMixedRealityInputSystem inputSystem = null; - protected static IMixedRealityInputSystem InputSystem - { - get - { - if (inputSystem == null) - { - MixedRealityServiceRegistry.TryGetService(out inputSystem); - } - return inputSystem; - } - } - - protected readonly List focusingPointers = new List(); - /// /// Pointers that are focusing the interactable /// public List FocusingPointers => focusingPointers; + protected readonly List focusingPointers = new List(); - protected readonly HashSet pressingInputSources = new HashSet(); /// /// Input sources that are pressing the interactable /// public HashSet PressingInputSources => pressingInputSources; - - /// - /// Is the interactable enabled? - /// - public bool Enabled = true; + protected readonly HashSet pressingInputSources = new HashSet(); + + [FormerlySerializedAs("States")] + [SerializeField] + private States states; /// /// A collection of states and basic state logic /// - public States States; + public States States + { + get { return states; } + set + { + states = value; + SetupStates(); + } + } /// /// The state logic for comparing state /// - public InteractableStates StateManager; + public InteractableStates StateManager { get; protected set; } /// /// Which action is this interactable listening for /// - public MixedRealityInputAction InputAction; + public MixedRealityInputAction InputAction { get; set; } - // the id of the selected inputAction, for serialization + /// + /// The id of the selected inputAction, for serialization + /// [HideInInspector] - public int InputActionId; + [SerializeField] + private int InputActionId = -1; + [FormerlySerializedAs("IsGlobal")] + [SerializeField] + protected bool isGlobal = false; /// /// Is the interactable listening to global events (input only) /// - public bool IsGlobal = false; + public bool IsGlobal + { + get { return isGlobal; } + set + { + if (isGlobal != value) + { + isGlobal = value; + + // If we are active, then register or unregister our the global input handler with the InputSystem + // If we are disabled, then we will re-register OnEnable() + if (gameObject.activeInHierarchy) + { + RegisterHandler(isGlobal); + } + } + } + } + /// + /// A way of adding more layers of states for controls like toggles. + /// This is capitalized and doesn't match conventions for backwards compatability + /// (to not break people using Interactable). We tried using FormerlySerializedAs("Dimensions) + /// and renaming to "dimensions", however Unity did not properly pick up the former serialization, + /// so we maintained the old value. See https://github.com/microsoft/MixedRealityToolkit-Unity/issues/6169 + /// + [SerializeField] + protected int Dimensions = 1; /// /// A way of adding more layers of states for controls like toggles /// - public int Dimensions = 1; + public int NumOfDimensions + { + get { return Dimensions; } + set + { + if (Dimensions != value) + { + // Value cannot be negative or zero + if (value > 0) + { + // If we are currently in Toggle mode, we are about to not be + // Auto-turn off state + if (ButtonMode == SelectionModes.Toggle) + { + IsToggled = false; + } + + Dimensions = value; + + CurrentDimension = Mathf.Clamp(CurrentDimension, 0, Dimensions - 1); + } + else + { + Debug.LogWarning($"Value {value} for Dimensions property setter cannot be negative or zero."); + } + } + } + } + + // cache of current dimension + [SerializeField] + protected int dimensionIndex = 0; + /// + /// Current Dimension index based zero and must be less than Dimensions + /// + public int CurrentDimension + { + get { return dimensionIndex; } + set + { + if (dimensionIndex != value) + { + // If valid value and not our current value, then update + if (value >= 0 && value < NumOfDimensions) + { + dimensionIndex = value; + + // If we are in toggle mode, update IsToggled state based on current dimension + // This needs to happen after updating dimensionIndex, since IsToggled.set will call CurrentDimension.set again + if (ButtonMode == SelectionModes.Toggle) + { + IsToggled = dimensionIndex > 0; + } + + UpdateActiveThemes(); + forceUpdate = true; + } + else + { + Debug.LogWarning($"Value {value} for property setter CurrentDimension cannot be less than 0 and cannot be greater than or equal to Dimensions={NumOfDimensions}"); + } + } + } + } + + /// + /// Returns the current selection mode of the Interactable based on the number of Dimensions available + /// + /// + /// Returns the following under the associated conditions: + /// SelectionModes.Invalid => Dimensions less than or equal to 0 + /// SelectionModes.Button => Dimensions == 1 + /// SelectionModes.Toggle => Dimensions == 2 + /// SelectionModes.MultiDimension => Dimensions > 2 + /// + public SelectionModes ButtonMode + { + get + { + return ConvertToSelectionMode(NumOfDimensions); + } + } /// /// The Dimension value to set on start /// + [FormerlySerializedAs("StartDimensionIndex")] [SerializeField] - private int StartDimensionIndex = 0; + private int startDimensionIndex = 0; /// /// Is the interactive selectable? @@ -116,394 +220,415 @@ protected static IMixedRealityInputSystem InputSystem /// public string VoiceCommand = ""; + [FormerlySerializedAs("RequiresFocus")] + [SerializeField] + public bool voiceRequiresFocus = true; /// /// Does the voice command require this to have focus? /// Registers as a global listener for speech commands, ignores input events /// - public bool RequiresFocus = true; + public bool VoiceRequiresFocus + { + get { return voiceRequiresFocus; } + set + { + if (voiceRequiresFocus != value) + { + voiceRequiresFocus = value; - /// - /// Does this interactable require focus - /// - public bool FocusEnabled { get { return !IsGlobal; } set { IsGlobal = !value; } } + // If we are active, then change global speech registeration. + // Register handle if we do not require focus, unregister otherwise + if (gameObject.activeInHierarchy) + { + RegisterHandler(!voiceRequiresFocus); + } + } + } + } + [FormerlySerializedAs("Profiles")] + [SerializeField] + private List profiles = new List(); /// - /// List of profiles can match themes with gameObjects + /// List of profile configurations that match Visual Themes with GameObjects targets + /// Setting at runtime will re-create the runtime Theme Engines (i.e ActiveThemes property) being used by this class /// - public List Profiles = new List(); + public List Profiles + { + get { return profiles; } + set + { + profiles = value; + SetupThemes(); + } + } /// /// Base onclick event /// public UnityEvent OnClick = new UnityEvent(); + [SerializeField] + private List Events = new List(); /// /// List of events added to this interactable /// - public List Events = new List(); + public List InteractableEvents + { + get { return Events; } + set + { + Events = value; + SetupEvents(); + } + } + + private List activeThemes = new List(); /// /// The list of running theme instances to receive state changes - /// When the dimension index changes, the list of themes that are updated changes to those assigned to that dimension. + /// When the dimension index changes, activeThemes updates to those assigned to that dimension. /// - public List runningThemesList = new List(); + public IReadOnlyList ActiveThemes => activeThemes.AsReadOnly(); - // the list of profile settings, so theme values are not directly effected - protected List runningProfileSettings = new List(); - // directly manipulate a theme value, skip blending - protected bool forceUpdate = false; + /// + /// List of (dimension index, InteractableThemeBase) pairs that describe all possible themes the + /// interactable can have. First element in the tuple represents dimension index for the theme. + /// This list gets initialized on startup, or whenever the profiles for the interactable changes. + /// The list of active themes inspects this list to determine which themes to use based on current dimension. + /// + private List> allThemeDimensionPairs = new List>(); - // - // States - // + /// + /// How many times this interactable was clicked + /// + /// + /// Useful for checking when a click event occurs. + /// + public int ClickCount { get; private set; } + + #region States + + // Field just used for serialization to save if the Interactable should start enabled or disabled + [FormerlySerializedAs("Enabled")] + [SerializeField] + private bool enabledOnStart = true; /// - /// Has focus + /// Defines whether the Interactable is enabled or not internally + /// This is different than the Enabled property at the GameObject/Component level + /// When false, Interactable will continue to run in Unity but not respond to Input. /// - public bool HasFocus { get; private set; } + /// + /// Property is useful for disabling UX, such as greying out a button, until a user completes some pre-mandatory step such as fill out their name, etc + /// + public virtual bool IsEnabled + { + // Note the inverse setting since targeting "Disable" state but property is concerning "Enabled" + get { return !(GetStateValue(InteractableStates.InteractableStateEnum.Disabled) > 0); } + set + { + if (IsEnabled != value) + { + // If we are disabling input, we should reset our base input tracking states since we will not be responding to input while disabled + if (!value) + { + ResetInputTrackingStates(); + } + + SetState(InteractableStates.InteractableStateEnum.Disabled, !value); + } + } + } /// - /// Currently being pressed + /// Has focus /// - public bool HasPress { get; private set; } + public virtual bool HasFocus + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Focus) > 0; } + set + { + if (HasFocus != value) + { + if (!value && HasPress) + { + rollOffTimer = 0; + } + else + { + rollOffTimer = rollOffTime; + } + + SetState(InteractableStates.InteractableStateEnum.Focus, value); + } + } + } /// - /// Is disabled + /// Currently being pressed /// - public bool IsDisabled { get; private set; } + public virtual bool HasPress + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Pressed) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Pressed, value); } + } - // advanced button states from InteractableStates.InteractableStateEnum /// - /// Has focus, finger up - custom: not set by Interactable + /// Targeted means the item has focus and finger is up + /// Currently not controlled by Interactable directly /// - public bool IsTargeted { get; private set; } + public virtual bool IsTargeted + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Targeted) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Targeted, value); } + } /// - /// No focus, finger is up - custom: not set by Interactable + /// State that corresponds to no focus,and finger is up. + /// Currently not controlled by Interactable directly /// - public bool IsInteractive { get; private set; } + public virtual bool IsInteractive + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Interactive) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Interactive, value); } + } /// - /// Has focus, finger down - custom: not set by Interactable + /// State that corresponds to has focus,and finger down. + /// Currently not controlled by Interactable directly /// - public bool HasObservationTargeted { get; private set; } + public virtual bool HasObservationTargeted + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.ObservationTargeted) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.ObservationTargeted, value); } + } /// - /// No focus, finger down - custom: not set by Interactable + /// State that corresponds to no focus,and finger is down. + /// Currently not controlled by Interactable directly /// - public bool HasObservation { get; private set; } + public virtual bool HasObservation + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Observation) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Observation, value); } + } /// /// The Interactable has been clicked /// - public bool IsVisited { get; private set; } + public virtual bool IsVisited + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Visited) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Visited, value); } + } /// - /// True if SelectionMode is "Toggle" (Dimensions == 2) and the dimension index is not zero. + /// Determines whether Interactable is toggled or not. If true, CurrentDimension should be 1 and if false, CurrentDimension should be 0 /// - public bool IsToggled { get { return Dimensions == 2 && dimensionIndex > 0; } } + /// + /// Only valid when ButtonMode == SelectionMode.Toggle (i.e Dimensions == 2) + /// + public virtual bool IsToggled + { + get + { + return GetStateValue(InteractableStates.InteractableStateEnum.Toggled) > 0; + } + set + { + if (IsToggled != value) + { + // We can only change Toggle state if we are in Toggle mode + if (ButtonMode == SelectionModes.Toggle) + { + SetState(InteractableStates.InteractableStateEnum.Toggled, value); + + CurrentDimension = value ? 1 : 0; + } + else + { + Debug.LogWarning($"SetToggled(bool) called, but SelectionMode is set to {ButtonMode}, so Current Dimension was unchanged."); + } + } + } + } /// /// Currently pressed and some movement has occurred /// - public bool HasGesture { get; private set; } + public virtual bool HasGesture + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Gesture) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Gesture, value); } + } /// - /// Gesture reached max threshold or limits - custom: not set by Interactable + /// State that corresponds to Gesture reaching max threshold or limits + /// Currently not controlled by Interactable directly /// - public bool HasGestureMax { get; private set; } + public virtual bool HasGestureMax + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.GestureMax) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.GestureMax, value); } + } /// - /// Interactable is touching another object - custom: not set by Interactable + /// State that corresponds to Interactable is touching another object + /// Currently not controlled by Interactable directly /// - public bool HasCollision { get; private set; } + public virtual bool HasCollision + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Collision) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Collision, value); } + } /// - /// A voice command has occurred, this does not automatically reset - /// Can be reset using the SetVoiceCommand(bool) method. + /// A voice command has just occurred /// - public bool HasVoiceCommand { get; private set; } + public virtual bool HasVoiceCommand + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.VoiceCommand) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.VoiceCommand, value); } + } /// /// A near interaction touchable is actively being touched /// - public bool HasPhysicalTouch { get; private set; } + public virtual bool HasPhysicalTouch + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.PhysicalTouch) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.PhysicalTouch, value); } + } /// - /// Misc - custom: not set by Interactable + /// State that corresponds to miscellaneous/custom use by consumers + /// Currently not controlled by Interactable directly /// - public bool HasCustom { get; private set; } + public virtual bool HasCustom + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Custom) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Custom, value); } + } /// - /// A near interaction grabbable is actively being grabbed/ + /// A near interaction grabbable is actively being grabbed /// - public bool HasGrab { get; private set; } + public virtual bool HasGrab + { + get { return GetStateValue(InteractableStates.InteractableStateEnum.Grab) > 0; } + set { SetState(InteractableStates.InteractableStateEnum.Grab, value); } + } - // internal cached states - protected State lastState; - protected bool wasDisabled = false; + #endregion - // check for isGlobal or RequiresFocus changes - protected bool requiresFocusValueCheck; - protected bool isGlobalValueCheck; + protected State lastState; - // cache of current dimension - [SerializeField] - protected int dimensionIndex = 0; + // directly manipulate a theme value, skip blending + protected bool forceUpdate = false; // allows for switching colliders without firing a lose focus immediately // for advanced controls like drop-downs protected float rollOffTime = 0.25f; protected float rollOffTimer = 0.25f; - // cache voice commands - protected string[] voiceCommands; - - // IInteractableEvents protected List handlers = new List(); - protected Coroutine globalTimer; - - // - // Clicking - // - - // A click must occur within this many seconds after an input down + /// + /// A click must occur within this many seconds after an input down + /// protected float clickTime = 1.5f; protected Coroutine clickValidTimer; - // how many clicks does it take? - protected int clickCount = 0; - protected float globalFeedbackClickTime = 0.3f; - + /// - /// how many times this interactable was clicked - /// good for checking when a click event occurs. + /// Amount of time to "simulate" press states for interactions that do not utilize input up/down such as voice command + /// This allows for visual feedbacks and other typical UX responsiveness and behavior to occur /// - public int ClickCount => clickCount; + protected const float globalFeedbackClickTime = 0.3f; + protected Coroutine globalTimer; - // - // Variables for determining gesture state - // + #region Gesture State Variables /// /// The position of the controller when input down occurs. /// Used to determine when controller has moved far enough to trigger gesture /// protected Vector3? dragStartPosition = null; + // Input must move at least this distance before a gesture is considered started, for 2D input like thumbstick static readonly float gestureStartThresholdVector2 = 0.1f; + // Input must move at least this distance before a gesture is considered started, for 3D input static readonly float gestureStartThresholdVector3 = 0.05f; + // Input must move at least this distance before a gesture is considered started, for // mixed reality pose input. This is the distance and hand or controller needs to move static readonly float gestureStartThresholdMixedRealityPose = 0.1f; - /// - /// Register OnClick extra handlers - /// - /// - public void AddHandler(IInteractableHandler handler) + #endregion + + #region MonoBehaviorImplementation + + protected virtual void Awake() { - if (!handlers.Contains(handler)) + if (States == null) { - handlers.Add(handler); + States = GetDefaultInteractableStates(); } + + IsEnabled = enabledOnStart; + + InputAction = ResolveInputAction(InputActionId); + + CurrentDimension = startDimensionIndex; + + RefreshSetup(); } - /// - /// Remove onClick handlers - /// - /// - public void RemoveHandler(IInteractableHandler handler) + protected virtual void OnEnable() { - if (handlers.Contains(handler)) + if (!VoiceRequiresFocus) { - handlers.Remove(handler); + RegisterHandler(true); } - } - #region InspectorHelpers - /// - /// Get a list of Mixed Reality Input Actions from the input actions profile. - /// - /// - /// - public static bool TryGetInputActions(out string[] descriptionsArray) - { - if (!MixedRealityToolkit.ConfirmInitialized() || !MixedRealityToolkit.Instance.HasActiveProfile) + if (IsGlobal) { - descriptionsArray = null; - return false; + RegisterHandler(true); } - MixedRealityInputAction[] actions = InputSystem.InputSystemProfile.InputActionsProfile.InputActions; + focusingPointers.RemoveAll((focusingPointer) => (focusingPointer.FocusTarget as Interactable) != this); - descriptionsArray = new string[actions.Length]; - for (int i = 0; i < actions.Length; i++) + if (focusingPointers.Count == 0) { - descriptionsArray[i] = actions[i].Description; + ResetInputTrackingStates(); } - - return true; } - /// - /// Try to get a list of speech commands from the MRTK/Input/SpeechCommands profile - /// - /// - /// - public static bool TryGetMixedRealitySpeechCommands(out SpeechCommands[] commands) + protected virtual void OnDisable() { - if (!MixedRealityToolkit.ConfirmInitialized() || !MixedRealityToolkit.Instance.HasActiveProfile) + // If we registered to receive global events, remove ourselves when disabled + if (!VoiceRequiresFocus) { - commands = null; - return false; + RegisterHandler(false); } - commands = InputSystem.InputSystemProfile.SpeechCommandsProfile?.SpeechCommands; - - if (commands == null || commands.Length < 1) + if (IsGlobal) { - commands = null; - return false; + RegisterHandler(false); } - return true; + ResetInputTrackingStates(); } - /// - /// Look for speech commands in the MRTK Speech Command profile - /// Adds a blank value at index zero so the developer can turn the feature off. - /// - /// - /// - public static bool TryGetSpeechKeywords(out string[] keywords) + protected virtual void Start() { - SpeechCommands[] commands; - if (!TryGetMixedRealitySpeechCommands(out commands)) - { - keywords = null; - return false; - } - - List keys = new List - { - "(No Selection)" - }; - - for (var i = 0; i < commands.Length; i++) - { - keys.Add(commands[i].Keyword); - } + InternalUpdate(); + } - keywords = keys.ToArray(); - return true; - } - - /// - /// Returns a list of states assigned to the Interactable - /// - /// - public State[] GetStates() - { - if (States != null) - { - return States.GetStates(); - } - - return new State[0]; - } - #endregion InspectorHelpers - - #region MonoBehaviorImplementation - - protected virtual void Awake() - { - - if (States == null) - { - States = States.GetDefaultInteractableStates(); - } - InputAction = ResolveInputAction(InputActionId); - SetupEvents(); - SetupThemes(); - SetupStates(); - - if(StartDimensionIndex > 0) - { - SetDimensionIndex(StartDimensionIndex); - } - } - - private void OnEnable() - { - if (!RequiresFocus) - { - RegisterGlobalSpeechHandler(true); - } - - if (IsGlobal) - { - RegisterGlobalInputHandler(true); - } - - requiresFocusValueCheck = RequiresFocus; - isGlobalValueCheck = IsGlobal; - - focusingPointers.RemoveAll((focusingPointer) => (Interactable)focusingPointer.FocusTarget != this); - - if (focusingPointers.Count == 0) - { - ResetBaseStates(); - ForceUpdateThemes(); - } - } - - private void OnDisable() - { - if (!RequiresFocus) - { - RegisterGlobalSpeechHandler(false); - } - - if (IsGlobal) - { - RegisterGlobalInputHandler(false); - } - } - - private void RegisterGlobalInputHandler(bool globalInput) - { - if (globalInput) - { - InputSystem.RegisterHandler(this); - } - else - { - InputSystem.UnregisterHandler(this); - } - } - - private void RegisterGlobalSpeechHandler(bool globalSpeech) - { - if (globalSpeech) - { - InputSystem.RegisterHandler(this); - } - else - { - InputSystem.UnregisterHandler(this); - } - } - - protected virtual void Start() - { - InternalUpdate(); - } - - protected virtual void Update() - { - InternalUpdate(); + protected virtual void Update() + { + InternalUpdate(); } private void InternalUpdate() @@ -514,23 +639,23 @@ private void InternalUpdate() if (rollOffTimer >= rollOffTime) { - SetPress(false); + HasPress = false; } } - for (int i = 0; i < Events.Count; i++) + for (int i = 0; i < InteractableEvents.Count; i++) { - if (Events[i].Receiver != null) + if (InteractableEvents[i].Receiver != null) { - Events[i].Receiver.OnUpdate(StateManager, this); + InteractableEvents[i].Receiver.OnUpdate(StateManager, this); } } - for (int i = 0; i < runningThemesList.Count; i++) + for (int i = 0; i < activeThemes.Count; i++) { - if (runningThemesList[i].Loaded) + if (activeThemes[i].Loaded) { - runningThemesList[i].OnUpdate(StateManager.CurrentState().ActiveIndex, this, forceUpdate); + activeThemes[i].OnUpdate(StateManager.CurrentState().ActiveIndex, forceUpdate); } } @@ -550,36 +675,34 @@ private void InternalUpdate() forceUpdate = false; } - if (IsDisabled == Enabled) - { - SetDisabled(!Enabled); - } - lastState = StateManager.CurrentState(); - - if (isGlobalValueCheck != IsGlobal) - { - isGlobalValueCheck = IsGlobal; - RegisterGlobalInputHandler(IsGlobal); - } - - if (requiresFocusValueCheck != RequiresFocus) - { - requiresFocusValueCheck = RequiresFocus; - RegisterGlobalSpeechHandler(!RequiresFocus); - } } - #endregion MonoBehaviorImplimentation + #endregion MonoBehavior Implimentation - #region InteractableInitiation + #region Interactable Initiation + + /// + /// Force re-initialization of Interactable from events, themes and state references + /// + public void RefreshSetup() + { + SetupEvents(); + SetupThemes(); + SetupStates(); + } /// /// starts the StateManager /// protected virtual void SetupStates() { - StateManager = States.SetupLogic(); + // Note that statemanager will clear states by allocating a new object + // But resetting states directly will call setters which may perform necessary steps to enter appropriate state + ResetAllStates(); + + Debug.Assert(typeof(InteractableStates).IsAssignableFrom(States.StateModelType), $"Invalid state model of type {States.StateModelType}. State model must extend from {typeof(InteractableStates)}"); + StateManager = (InteractableStates)States.CreateStateModel(); } /// @@ -587,66 +710,73 @@ protected virtual void SetupStates() /// protected virtual void SetupEvents() { - InteractableTypesContainer interactableTypes = InteractableEvent.GetEventTypes(); + for (int i = 0; i < InteractableEvents.Count; i++) + { + InteractableEvents[i].Receiver = InteractableEvent.CreateReceiver(InteractableEvents[i]); + InteractableEvents[i].Receiver.Host = this; + } + } + + /// + /// Updates the list of active themes based the current dimensions index + /// + protected virtual void UpdateActiveThemes() + { + activeThemes.Clear(); - for (int i = 0; i < Events.Count; i++) + for (int i = 0; i < allThemeDimensionPairs.Count; i++) { - Events[i].Receiver = InteractableEvent.GetReceiver(Events[i], interactableTypes); - Events[i].Receiver.Host = this; + if (allThemeDimensionPairs[i].Item1 == CurrentDimension) + { + activeThemes.Add(allThemeDimensionPairs[i].Item2); + } } } /// - /// Creates the list of theme instances based on all the theme settings + /// At startup or whenever a profile changes, creates all + /// possible themes that interactable can be in. We then update + /// the set of active themes by inspecting this list, looking for + /// only themes whose index matched CurrentDimensionIndex. /// - protected virtual void SetupThemes() + private void SetupThemes() { - runningThemesList = new List(); - runningProfileSettings = new List(); - for (int i = 0; i < Profiles.Count; i++) + allThemeDimensionPairs.Clear(); + // Profiles are one per GameObject/ThemeContainer + // ThemeContainers are one per dimension + // ThemeDefinitions are one per desired effect (i.e theme) + foreach (var profile in Profiles) { - ProfileSettings profileSettings = new ProfileSettings(); - List themeSettingsList = new List(); - for (int j = 0; j < Profiles[i].Themes.Count; j++) + if (profile.Target != null && profile.Themes != null) { - Theme theme = Profiles[i].Themes[j]; - ThemeSettings themeSettings = new ThemeSettings(); - if (Profiles[i].Target != null && theme != null) + for (int i = 0; i < profile.Themes.Count; i++) { - List tempSettings = new List(); - for (int n = 0; n < theme.Settings.Count; n++) + var themeContainer = profile.Themes[i]; + if (themeContainer.States.Equals(States)) { - InteractableThemePropertySettings settings = theme.Settings[n]; - settings.Theme = InteractableProfileItem.GetTheme(settings, Profiles[i].Target); - - // add themes to theme list based on dimension - if (j == dimensionIndex) + foreach (var themeDefinition in themeContainer.Definitions) { - runningThemesList.Add(settings.Theme); + allThemeDimensionPairs.Add(new System.Tuple( + i, + InteractableThemeBase.CreateAndInitTheme(themeDefinition, profile.Target))); } - - tempSettings.Add(settings); } - - themeSettings.Settings = tempSettings; - themeSettingsList.Add(themeSettings); + else + { + Debug.LogWarning($"Could not use {themeContainer.name} in Interactable on {gameObject.name} because Theme's States does not match {States.name}"); + } } } - - profileSettings.ThemeSettings = themeSettingsList; - runningProfileSettings.Add(profileSettings); } + UpdateActiveThemes(); } + #endregion Interactable Initiation - #endregion InteractableInitiation - - #region SetButtonStates + #region State Utilities /// - /// Grabs the state value index + /// Grabs the state value index, returns -1 if no StateManager available /// - /// - /// public int GetStateValue(InteractableStates.InteractableStateEnum state) { if (StateManager != null) @@ -654,338 +784,242 @@ public int GetStateValue(InteractableStates.InteractableStateEnum state) return StateManager.GetStateValue((int)state); } - return 0; + return -1; } /// - /// Handle focus state changes + /// a public way to set state directly /// - /// - public virtual void SetFocus(bool focus) + public void SetState(InteractableStates.InteractableStateEnum state, bool value) { - HasFocus = focus; - if (!focus && HasPress) - { - rollOffTimer = 0; - } - else + if (StateManager != null) { - rollOffTimer = rollOffTime; + StateManager.SetStateValue(state, value ? 1 : 0); + UpdateState(); } - - SetState(InteractableStates.InteractableStateEnum.Focus, focus); } /// - /// Change the press state + /// runs the state logic and sets state based on the current state values /// - /// - public virtual void SetPress(bool press) + protected virtual void UpdateState() { - HasPress = press; - SetState(InteractableStates.InteractableStateEnum.Pressed, press); + StateManager.CompareStates(); } /// - /// Change the disabled state, will override the Enabled property + /// Reset the input tracking states directly managed by Interactable such as whether the component has focus or is being grabbed + /// Useful for when needing to reset input interactions /// - /// - public virtual void SetDisabled(bool disabled) + public void ResetInputTrackingStates() { - IsDisabled = disabled; - Enabled = !disabled; - SetState(InteractableStates.InteractableStateEnum.Disabled, disabled); - } + HasFocus = false; + HasPress = false; + HasPhysicalTouch = false; + HasGrab = false; + HasGesture = false; + HasGestureMax = false; + HasVoiceCommand = false; - /// - /// Change the targeted state - /// - /// - public virtual void SetTargeted(bool targeted) - { - IsTargeted = targeted; - SetState(InteractableStates.InteractableStateEnum.Targeted, targeted); - } + if (globalTimer != null) + { + StopCoroutine(globalTimer); + globalTimer = null; + } - /// - /// Change the Interactive state - /// - /// - public virtual void SetInteractive(bool interactive) - { - IsInteractive = interactive; - SetState(InteractableStates.InteractableStateEnum.Interactive, interactive); + dragStartPosition = null; } /// - /// Change the observation targeted state + /// Reset all states in the Interactable and pointer information /// - /// - public virtual void SetObservationTargeted(bool targeted) + public void ResetAllStates() { - HasObservationTargeted = targeted; - SetState(InteractableStates.InteractableStateEnum.ObservationTargeted, targeted); + focusingPointers.Clear(); + pressingInputSources.Clear(); + + ResetInputTrackingStates(); + + IsEnabled = true; + HasObservation = false; + HasObservationTargeted = false; + IsInteractive = false; + IsTargeted = false; + IsToggled = false; + IsVisited = false; + HasCollision = false; + HasCustom = false; } + #endregion State Utilities + + #region Dimensions Utilities + /// - /// Change the observation state + /// Increases the Current Dimension by 1. If at end (i.e Dimensions - 1), then loop around to beginning (i.e 0) /// - /// - public virtual void SetObservation(bool observation) + public void IncreaseDimension() { - HasObservation = observation; - SetState(InteractableStates.InteractableStateEnum.Observation, observation); + if (CurrentDimension == NumOfDimensions - 1) + { + CurrentDimension = 0; + } + else + { + CurrentDimension++; + } } /// - /// Change the visited state + /// Decreases the Current Dimension by 1. If at zero, then loop around to end (i.e Dimensions - 1) /// - /// - public virtual void SetVisited(bool visited) + public void DecreaseDimension() { - IsVisited = visited; - SetState(InteractableStates.InteractableStateEnum.Visited, visited); + if (CurrentDimension == 0) + { + CurrentDimension = NumOfDimensions - 1; + } + else + { + CurrentDimension--; + } } /// - /// Change the toggled state + /// Helper method to convert number of dimensions to the appropriate SelectionModes /// - /// - public virtual void SetToggled(bool toggled) + /// number of dimensions + /// SelectionModes for corresponding number of dimensions + public static SelectionModes ConvertToSelectionMode(int dimensions) { - SetState(InteractableStates.InteractableStateEnum.Toggled, toggled); - - // if in toggle mode - if (Dimensions == 2) + if (dimensions <= 0) { - SetDimensionIndex(toggled ? 1 : 0); + return SelectionModes.Invalid; + } + else if (dimensions == 1) + { + return SelectionModes.Button; + } + else if (dimensions == 2) + { + return SelectionModes.Toggle; } else { - int selectedMode = Mathf.Clamp(Dimensions, 1, 3); - Debug.Log("SetToggled(bool) called, but SelectionMode is set to " + (SelectionModes)(selectedMode - 1) + ", so DimensionIndex was unchanged."); + return SelectionModes.MultiDimension; } } + #endregion Dimensions Utilities + + #region Events + /// - /// Change the gesture state + /// Register OnClick extra handlers /// - /// - public virtual void SetGesture(bool gesture) + public void AddHandler(IInteractableHandler handler) { - HasGesture = gesture; - SetState(InteractableStates.InteractableStateEnum.Gesture, gesture); + if (!handlers.Contains(handler)) + { + handlers.Add(handler); + } } /// - /// Change the gesture max state + /// Remove onClick handlers /// - /// - public virtual void SetGestureMax(bool gesture) + public void RemoveHandler(IInteractableHandler handler) { - HasGestureMax = gesture; - SetState(InteractableStates.InteractableStateEnum.GestureMax, gesture); + if (handlers.Contains(handler)) + { + handlers.Remove(handler); + } } /// - /// Change the collision state + /// Event receivers can be used to listen for different + /// events at runtime. This method allows receivers to be dynamically added at runtime. /// - /// - public virtual void SetCollision(bool collision) + /// The new event receiver + public T AddReceiver() where T : ReceiverBase, new() { - HasCollision = collision; - SetState(InteractableStates.InteractableStateEnum.Collision, collision); + var interactableEvent = new InteractableEvent(); + var result = new T(); + result.Event = interactableEvent.Event; + interactableEvent.Receiver = result; + InteractableEvents.Add(interactableEvent); + return result; } /// - /// Change the custom state + /// Returns the first receiver of type T on the interactable, + /// or null if nothing is found. /// - /// - public virtual void SetCustom(bool custom) + public T GetReceiver() where T : ReceiverBase { - HasCustom = custom; - SetState(InteractableStates.InteractableStateEnum.Custom, custom); + for (int i = 0; i < InteractableEvents.Count; i++) + { + if (InteractableEvents[i] != null && InteractableEvents[i].Receiver is T) + { + return (T)InteractableEvents[i].Receiver; + } + } + return null; } /// - /// Change the voice command state + /// Returns all receivers of type T on the interactable. + /// If nothing is found, returns empty list. /// - /// - public virtual void SetVoiceCommand(bool voice) + public List GetReceivers() where T : ReceiverBase { - HasVoiceCommand = voice; - SetState(InteractableStates.InteractableStateEnum.VoiceCommand, voice); + List result = new List(); + for (int i = 0; i < InteractableEvents.Count; i++) + { + if (InteractableEvents[i] != null && InteractableEvents[i].Receiver is T) + { + result.Add((T)InteractableEvents[i].Receiver); + } + } + return result; } + #endregion + + #region Input Timers + /// - /// Change the physical touch state + /// Starts a timer to check if input is in progress + /// - Make sure global pointer events are not double firing + /// - Make sure Global Input events are not double firing + /// - Make sure pointer events are not duplicating an input event /// - /// - public virtual void SetPhysicalTouch(bool touch) + protected void StartClickTimer(bool isFromInputDown = false) { - HasPhysicalTouch = touch; - SetState(InteractableStates.InteractableStateEnum.PhysicalTouch, touch); + if (IsGlobal || isFromInputDown) + { + if (clickValidTimer != null) + { + StopClickTimer(); + } + + clickValidTimer = StartCoroutine(InputDownTimer(clickTime)); + } } - /// - /// Change the grab state - /// - /// - public virtual void SetGrab(bool grab) + protected void StopClickTimer() { - HasGrab = grab; - SetState(InteractableStates.InteractableStateEnum.Grab, grab); + Debug.Assert(clickValidTimer != null, "StopClickTimer called but no click timer is running"); + StopCoroutine(clickValidTimer); + clickValidTimer = null; } /// - /// a public way to set state directly + /// A timer for the MixedRealityInputHandlers, clicks should occur within a certain time. /// - /// - /// - public void SetState(InteractableStates.InteractableStateEnum state, bool value) - { - if (StateManager != null) - { - StateManager.SetStateValue(state, value ? 1 : 0); - } - - UpdateState(); - } - - /// - /// runs the state logic and sets state based on the current state values - /// - protected virtual void UpdateState() - { - StateManager.CompareStates(); - } - - /// - /// Reset the basic interaction states - /// - public void ResetBaseStates() - { - // reset states - SetFocus(false); - SetPress(false); - SetPhysicalTouch(false); - SetGrab(false); - SetGesture(false); - SetGestureMax(false); - SetVoiceCommand(false); - - if (globalTimer != null) - { - StopCoroutine(globalTimer); - globalTimer = null; - } - - dragStartPosition = null; - } - - /// - /// Reset all states in the Interactable and pointer information - /// - public void ResetAllStates() - { - focusingPointers.Clear(); - pressingInputSources.Clear(); - ResetBaseStates(); - SetCollision(false); - SetCustom(false); - SetObservation(false); - SetObservationTargeted(false); - SetInteractive(false); - SetTargeted(false); - SetToggled(false); - SetVisited(false); - } - - #endregion SetButtonStates - - #region PointerManagement - - #endregion PointerManagement - - #region MixedRealityFocusChangedHandlers - - public void OnBeforeFocusChange(FocusEventData eventData) - { - if (!CanInteract()) - { - return; - } - - if (eventData.NewFocusedObject == null) - { - focusingPointers.Remove(eventData.Pointer); - } - else if (eventData.NewFocusedObject.transform.IsChildOf(gameObject.transform)) - { - if (!focusingPointers.Contains(eventData.Pointer)) - { - focusingPointers.Add(eventData.Pointer); - } - } - else if (eventData.OldFocusedObject.transform.IsChildOf(gameObject.transform)) - { - focusingPointers.Remove(eventData.Pointer); - } - } - - public void OnFocusChanged(FocusEventData eventData) { } - - #endregion MixedRealityFocusChangedHandlers - - #region MixedRealityFocusHandlers - - public void OnFocusEnter(FocusEventData eventData) - { - if (CanInteract()) - { - Debug.Assert(focusingPointers.Count > 0, - "OnFocusEnter called but focusingPointers == 0. Most likely caused by the presence of a child object " + - "that is handling IMixedRealityFocusChangedHandler"); - SetFocus(true); - } - } - - public void OnFocusExit(FocusEventData eventData) - { - if (!CanInteract() && !HasFocus) - { - return; - } - - SetFocus(focusingPointers.Count > 0); - } - - #endregion MixedRealityFocusHandlers - - /// - /// Starts a timer to check if input is in progress - /// - Make sure global pointer events are not double firing - /// - Make sure Global Input events are not double firing - /// - Make sure pointer events are not duplicating an input event - /// - /// - protected void StartClickTimer(bool isFromInputDown = false) - { - if (IsGlobal || isFromInputDown) - { - if (clickValidTimer != null) - { - StopClickTimer(); - } - - clickValidTimer = StartCoroutine(InputDownTimer(clickTime)); - } - } - - protected void StopClickTimer() + protected IEnumerator InputDownTimer(float time) { - Debug.Assert(clickValidTimer != null, "StopClickTimer called but no click timer is running"); - StopCoroutine(clickValidTimer); + yield return new WaitForSeconds(time); clickValidTimer = null; } @@ -993,146 +1027,40 @@ protected void StopClickTimer() /// Return true if the interactable can fire a click event. /// Clicks can only occur within a short duration of an input down firing. /// - /// private bool CanFireClick() { return clickValidTimer != null; } - #region MixedRealityInputHandlers - - public void OnPositionInputChanged(InputEventData eventData) - { - // ignore - } - - #endregion MixedRealityInputHandlers - - #region DimensionsUtilities - - /// - /// A public way to access the current dimension - /// - /// - public int GetDimensionIndex() - { - return dimensionIndex; - } - - /// - /// a public way to increase a dimension, for cycle button - /// - public void IncreaseDimension() - { - IncreaseDimensionIndex(); - } - - /// - /// a public way to decrease the dimension - /// - public void DecreaseDimension() - { - int index = dimensionIndex; - if (index > 0) - { - index--; - } - else - { - index = Dimensions - 1; - } - - SetDimensionIndex(index); - } - - /// - /// a public way to set the dimension index - /// - /// - public void SetDimensionIndex(int index) - { - int currentIndex = dimensionIndex; - if (index < Dimensions) - { - dimensionIndex = index; + #endregion - if (currentIndex != dimensionIndex) - { - FilterThemesByDimensions(); - forceUpdate = true; - } - } - } + #region Interactable Utilities - /// - /// internal dimension cycling - /// - protected void IncreaseDimensionIndex() + private void RegisterHandler(bool enable) where T : IEventSystemHandler { - int currentIndex = dimensionIndex; - - if (dimensionIndex < Dimensions - 1) + if (enable) { - dimensionIndex++; + CoreServices.InputSystem?.RegisterHandler(this); } else { - dimensionIndex = 0; + CoreServices.InputSystem?.UnregisterHandler(this); } - - if (currentIndex != dimensionIndex) - { - FilterThemesByDimensions(); - forceUpdate = true; - } - } - - public void ForceUpdateThemes() - { - SetupEvents(); - SetupThemes(); - SetupStates(); } - #endregion DimensionsUtilities - - #region InteractableUtilities - /// /// Assigns the InputAction based on the InputActionId /// - /// - /// public static MixedRealityInputAction ResolveInputAction(int index) { - MixedRealityInputAction[] actions = InputSystem.InputSystemProfile.InputActionsProfile.InputActions; + MixedRealityInputAction[] actions = CoreServices.InputSystem.InputSystemProfile.InputActionsProfile.InputActions; index = Mathf.Clamp(index, 0, actions.Length - 1); return actions[index]; } - /// - /// Get the themes based on the current dimesionIndex - /// - protected void FilterThemesByDimensions() - { - runningThemesList = new List(); - - for (int i = 0; i < runningProfileSettings.Count; i++) - { - ProfileSettings settings = runningProfileSettings[i]; - ThemeSettings themeSettings = settings.ThemeSettings[dimensionIndex]; - for (int j = 0; j < themeSettings.Settings.Count; j++) - { - runningThemesList.Add(themeSettings.Settings[j].Theme); - } - } - } - /// /// Based on inputAction and state, should interactable listen to this up/down event. /// - /// - /// protected virtual bool ShouldListenToUpDownEvent(InputEventData data) { if (!(HasFocus || IsGlobal)) @@ -1172,8 +1100,6 @@ protected virtual bool ShouldListenToUpDownEvent(InputEventData data) /// /// Returns true if the inputeventdata is being dispatched from a near pointer /// - /// - /// private bool IsInputFromNearInteraction(InputEventData eventData) { bool isAnyNearpointerFocusing = false; @@ -1191,20 +1117,14 @@ private bool IsInputFromNearInteraction(InputEventData eventData) /// /// Based on button settings and state, should this button listen to input? /// - /// protected virtual bool CanInteract() { - if (!Enabled) - { - return false; - } - - if (Dimensions > 1 && ((dimensionIndex != Dimensions - 1 && !CanSelect) || (dimensionIndex == Dimensions - 1 && !CanDeselect))) - { - return false; - } - - return true; + // Interactable can interact if we are enabled and we are not a toggle button + // If we are a toggle button, then we can only toggle if CanSelect (to turn on) or CanDeslect (to turn off) + return IsEnabled && + (ButtonMode != SelectionModes.Toggle + || (CurrentDimension == 0 && CanSelect) + || (CurrentDimension == 1 && CanDeselect)); } /// @@ -1212,32 +1132,26 @@ protected virtual bool CanInteract() /// public void TriggerOnClick() { - if(Dimensions == 2) - { - SetToggled(dimensionIndex % 2 == 0); - } - else - { - IncreaseDimensionIndex(); - } - + IncreaseDimension(); + SendOnClick(null); - SetVisited(true); + + IsVisited = true; } /// - /// call onClick methods on receivers or IInteractableHandlers + /// Call onClick methods on receivers or IInteractableHandlers /// protected void SendOnClick(IMixedRealityPointer pointer) { OnClick.Invoke(); - clickCount++; + ClickCount++; - for (int i = 0; i < Events.Count; i++) + for (int i = 0; i < InteractableEvents.Count; i++) { - if (Events[i].Receiver != null) + if (InteractableEvents[i].Receiver != null) { - Events[i].Receiver.OnClick(StateManager, this, pointer); + InteractableEvents[i].Receiver.OnClick(StateManager, this, pointer); } } @@ -1251,20 +1165,19 @@ protected void SendOnClick(IMixedRealityPointer pointer) } /// - /// sets some visual states for automating button events like clicks from a keyword + /// For input "clicks" that do not have corresponding input up/down tracking such as voice commands + /// Simulate pressed and start timer to reset states after some click time /// - /// protected void StartGlobalVisual(bool voiceCommand = false) { if (voiceCommand) { - StateManager.SetStateValue(InteractableStates.InteractableStateEnum.VoiceCommand, 1); + HasVoiceCommand = true; } - SetVisited(true); - StateManager.SetStateValue(InteractableStates.InteractableStateEnum.Focus, 1); - StateManager.SetStateValue(InteractableStates.InteractableStateEnum.Pressed, 1); - UpdateState(); + IsVisited = true; + HasFocus = true; + HasPress = true; if (globalTimer != null) { @@ -1277,128 +1190,278 @@ protected void StartGlobalVisual(bool voiceCommand = false) /// /// Clears up any automated visual states /// - /// - /// protected IEnumerator GlobalVisualReset(float time) { yield return new WaitForSeconds(time); - StateManager.SetStateValue(InteractableStates.InteractableStateEnum.VoiceCommand, 0); + HasVoiceCommand = false; if (!HasFocus) { - StateManager.SetStateValue(InteractableStates.InteractableStateEnum.Focus, 0); + HasFocus = false; } if (!HasPress) { - StateManager.SetStateValue(InteractableStates.InteractableStateEnum.Pressed, 0); + HasPress = false; } - UpdateState(); - globalTimer = null; } /// - /// A timer for the MixedRealityInputHandlers, clicks should occur within a certain time. + /// Public method that can be used to set state of interactable + /// corresponding to an input going down (select button, menu button, touch) /// - /// - /// - protected IEnumerator InputDownTimer(float time) + public void SetInputDown() { - yield return new WaitForSeconds(time); - clickValidTimer = null; - } + if (!CanInteract()) + { + return; + } - #endregion InteractableUtilities + dragStartPosition = null; - #region VoiceCommands + HasPress = true; - /// - /// Voice commands from MixedRealitySpeechCommandProfile, keyword recognized - /// requires isGlobal - /// - /// - public void OnSpeechKeywordRecognized(SpeechEventData eventData) - { - if (eventData.Command.Keyword == VoiceCommand && (!RequiresFocus || HasFocus) && Enabled) - { - StartGlobalVisual(true); - SetVoiceCommand(true); - SendVoiceCommands(VoiceCommand, 0, 1); - TriggerOnClick(); - eventData.Use(); - } + StartClickTimer(true); } /// - /// call OnVoinceCommand methods on receivers or IInteractableHandlers + /// Public method that can be used to set state of interactable + /// corresponding to an input going up. /// - protected void SendVoiceCommands(string command, int index, int length) + public void SetInputUp() { - for (int i = 0; i < Events.Count; i++) + if (!CanInteract()) { - if (Events[i].Receiver != null) - { - Events[i].Receiver.OnVoiceCommand(StateManager, this, command, index, length); - } + return; } - for (int i = 0; i < handlers.Count; i++) + HasPress = false; + HasGesture = false; + + if (CanFireClick()) { - if (handlers[i] != null) - { - handlers[i].OnVoiceCommand(StateManager, this, command, index, length); - } + StopClickTimer(); + + TriggerOnClick(); + IsVisited = true; } } - /// - /// checks the voiceCommand array for a keyword and returns it's index - /// - /// - /// - protected int GetVoiceCommandIndex(string command) + private void OnInputChangedHelper(InputEventData eventData, Vector3 inputPosition, float gestureDeadzoneThreshold) { - if (voiceCommands.Length > 1) + if (!CanInteract()) { - for (int i = 0; i < voiceCommands.Length; i++) - { - if (command == voiceCommands[i]) - { - return i; - } - } + return; } - return 0; + if (ShouldListenToMoveEvent(eventData)) + { + if (dragStartPosition == null) + { + dragStartPosition = inputPosition; + } + else if (!HasGesture) + { + if (Vector3.Distance(dragStartPosition.Value, inputPosition) > gestureStartThresholdVector2) + { + HasGesture = true; + } + } + } + } + + private bool ShouldListenToMoveEvent(InputEventData eventData) + { + if (!(HasFocus || IsGlobal)) + { + return false; + } + + if (!HasPress) + { + return false; + } + + // Ensure that this move event is from a pointer that is pressing the interactable + int matchingPointerCount = 0; + foreach (var pressingInputSource in pressingInputSources) + { + if (pressingInputSource == eventData.InputSource) + { + matchingPointerCount++; + } + } + + return matchingPointerCount > 0; + } + + /// + /// Creates the default States ScriptableObject configured for Interactable + /// + /// Default Interactable States asset + public static States GetDefaultInteractableStates() + { + States result = ScriptableObject.CreateInstance(); + InteractableStates allInteractableStates = new InteractableStates(); + result.StateModelType = typeof(InteractableStates); + result.StateList = allInteractableStates.GetDefaultStates(); + result.DefaultIndex = 0; + return result; + } + + /// + /// Helper function to create a new Theme asset using Default Interactable States and provided theme definitions + /// + /// List of Theme Definitions to associate with Theme asset + /// Theme ScriptableObject instance + public static Theme GetDefaultThemeAsset(List themeDefintions) + { + // Create the Theme configuration asset + Theme newTheme = ScriptableObject.CreateInstance(); + newTheme.States = GetDefaultInteractableStates(); + newTheme.Definitions = themeDefintions; + return newTheme; + } + + #endregion + + #region MixedRealityFocusChangedHandlers + + /// + public void OnBeforeFocusChange(FocusEventData eventData) + { + if (!CanInteract()) + { + return; + } + + if (eventData.NewFocusedObject == null) + { + focusingPointers.Remove(eventData.Pointer); + } + else if (eventData.NewFocusedObject.transform.IsChildOf(gameObject.transform)) + { + if (!focusingPointers.Contains(eventData.Pointer)) + { + focusingPointers.Add(eventData.Pointer); + } + } + else if (eventData.OldFocusedObject != null + && eventData.OldFocusedObject.transform.IsChildOf(gameObject.transform)) + { + focusingPointers.Remove(eventData.Pointer); + } + } + + /// + public void OnFocusChanged(FocusEventData eventData) { } + + #endregion MixedRealityFocusChangedHandlers + + #region MixedRealityFocusHandlers + + /// + public void OnFocusEnter(FocusEventData eventData) + { + if (CanInteract()) + { + Debug.Assert(focusingPointers.Count > 0, + "OnFocusEnter called but focusingPointers == 0. Most likely caused by the presence of a child object " + + "that is handling IMixedRealityFocusChangedHandler"); + + HasFocus = true; + } + } + + /// + public void OnFocusExit(FocusEventData eventData) + { + if (!CanInteract() && !HasFocus) + { + return; + } + + HasFocus = focusingPointers.Count > 0; + } + + #endregion MixedRealityFocusHandlers + + #region MixedRealityInputHandlers + + /// + public void OnPositionInputChanged(InputEventData eventData) { } + + #endregion MixedRealityInputHandlers + + #region MixedRealityVoiceCommands + + /// + /// Voice commands from MixedRealitySpeechCommandProfile, keyword recognized + /// + public void OnSpeechKeywordRecognized(SpeechEventData eventData) + { + if (eventData.Command.Keyword == VoiceCommand && (!VoiceRequiresFocus || HasFocus) && IsEnabled) + { + StartGlobalVisual(true); + HasVoiceCommand = true; + SendVoiceCommands(VoiceCommand, 0, 1); + TriggerOnClick(); + eventData.Use(); + } + } + + /// + /// call OnVoinceCommand methods on receivers or IInteractableHandlers + /// + protected void SendVoiceCommands(string command, int index, int length) + { + for (int i = 0; i < InteractableEvents.Count; i++) + { + if (InteractableEvents[i].Receiver != null) + { + InteractableEvents[i].Receiver.OnVoiceCommand(StateManager, this, command, index, length); + } + } + + for (int i = 0; i < handlers.Count; i++) + { + if (handlers[i] != null) + { + handlers[i].OnVoiceCommand(StateManager, this, command, index, length); + } + } } #endregion VoiceCommands - #region TouchHandlers + #region MixedRealityTouchHandlers public void OnTouchStarted(HandTrackingInputEventData eventData) { - SetPress(true); - SetPhysicalTouch(true); + HasPress = true; + HasPhysicalTouch = true; eventData.Use(); } public void OnTouchCompleted(HandTrackingInputEventData eventData) { - SetPress(false); - SetPhysicalTouch(false); + HasPress = false; + HasPhysicalTouch = false; eventData.Use(); } public void OnTouchUpdated(HandTrackingInputEventData eventData) { } + #endregion TouchHandlers - #region InputHandlers + #region MixedRealityInputHandlers + + /// public void OnInputUp(InputEventData eventData) { - if ((!CanInteract() && !HasPress)) + if (!CanInteract() && !HasPress) { return; } @@ -1408,8 +1471,7 @@ public void OnInputUp(InputEventData eventData) SetInputUp(); if (IsInputFromNearInteraction(eventData)) { - // TODO:what if we have two hands grabbing? - SetGrab(false); + HasGrab = false; } eventData.Use(); @@ -1417,6 +1479,7 @@ public void OnInputUp(InputEventData eventData) pressingInputSources.Remove(eventData.InputSource); } + /// public void OnInputDown(InputEventData eventData) { if (!CanInteract()) @@ -1428,114 +1491,270 @@ public void OnInputDown(InputEventData eventData) { pressingInputSources.Add(eventData.InputSource); SetInputDown(); - SetGrab(IsInputFromNearInteraction(eventData)); + HasGrab = IsInputFromNearInteraction(eventData); eventData.Use(); } } + /// + public void OnInputChanged(InputEventData eventData) + { + OnInputChangedHelper(eventData, eventData.InputData, gestureStartThresholdVector2); + } + + /// + public void OnInputChanged(InputEventData eventData) + { + OnInputChangedHelper(eventData, eventData.InputData, gestureStartThresholdVector3); + } + + /// + public void OnInputChanged(InputEventData eventData) + { + OnInputChangedHelper(eventData, eventData.InputData.Position, gestureStartThresholdMixedRealityPose); + } + + #endregion InputHandlers + + #region Deprecated + /// - /// Public method that can be used to set state of interactable - /// corresponding to an input going down (select button, menu button, touch) + /// Resets input tracking states such as focus or grab that are directly controlled by Interactable /// - public void SetInputDown() + [System.Obsolete("Use ResetInputTrackingStates property instead")] + public void ResetBaseStates() { - if (!CanInteract()) - { - return; - } - dragStartPosition = null; + ResetInputTrackingStates(); + } - SetPress(true); - StartClickTimer(true); + /// + /// A public way to access the current dimension + /// + [System.Obsolete("Use CurrentDimension property instead")] + public int GetDimensionIndex() + { + return CurrentDimension; } /// - /// Public method that can be used to set state of interactable - /// corresponding to an input going up. + /// a public way to set the dimension index /// - public void SetInputUp() + [System.Obsolete("Use CurrentDimension property instead")] + public void SetDimensionIndex(int index) { - if (!CanInteract()) - { - return; - } + CurrentDimension = index; + } + + /// + /// Force re-initialization of Interactable from events, themes and state references + /// + [System.Obsolete("Use RefreshSetup() instead")] + public void ForceUpdateThemes() + { + RefreshSetup(); + } - SetPress(false); - SetGesture(false); + /// + /// Does this interactable require focus + /// + [System.Obsolete("Use IsGlobal instead")] + public bool FocusEnabled { get { return !IsGlobal; } set { IsGlobal = !value; } } - if (CanFireClick()) - { - StopClickTimer(); + /// + /// True if Selection is "Toggle" (Dimensions == 2) + /// + [System.Obsolete("Use ButtonMode to test if equal to SelectionModes.Toggle instead")] + public bool IsToggleButton { get { return NumOfDimensions == 2; } } - TriggerOnClick(); - SetVisited(true); - } + /// + /// Is the interactable enabled? + /// + [System.Obsolete("Use IsEnabled instead")] + public bool Enabled + { + get => IsEnabled; + set => IsEnabled = value; } - private void OnInputChangedHelper(InputEventData eventData, Vector3 inputPosition, float gestureDeadzoneThreshold) + /// + /// Do oice commands require focus? + /// + [System.Obsolete("Use VoiceRequiresFocus instead")] + public bool RequiresFocus { - if (!CanInteract()) - { - return; - } + get => VoiceRequiresFocus; + set => VoiceRequiresFocus = value; + } - if (ShouldListenToMoveEvent(eventData)) + /// + /// Is disabled + /// + [System.Obsolete("Use IsEnabled instead")] + public bool IsDisabled + { + get => !IsEnabled; + set => IsEnabled = !value; + } + + /// + /// Returns a list of states assigned to the Interactable + /// + [System.Obsolete("Use States.StateList instead")] + public State[] GetStates() + { + if (States != null) { - if (dragStartPosition == null) - { - dragStartPosition = inputPosition; - } - else if (!HasGesture) - { - if (Vector3.Distance(dragStartPosition.Value, inputPosition) > gestureStartThresholdVector2) - { - SetGesture(true); - } - } + return States.StateList.ToArray(); } + + return new State[0]; } - public void OnInputChanged(InputEventData eventData) + /// + /// Handle focus state changes + /// + [System.Obsolete("Use Focus property instead")] + public virtual void SetFocus(bool focus) { - OnInputChangedHelper(eventData, eventData.InputData, gestureStartThresholdVector2); + HasFocus = focus; } + /// + /// Change the press state + /// + [System.Obsolete("Use Press property instead")] + public virtual void SetPress(bool press) + { + HasPress = press; + } - public void OnInputChanged(InputEventData eventData) + /// + /// Change the disabled state, will override the Enabled property + /// + [System.Obsolete("Use IsEnabled property instead")] + public virtual void SetDisabled(bool disabled) { - OnInputChangedHelper(eventData, eventData.InputData, gestureStartThresholdVector3); + IsEnabled = !disabled; } - public void OnInputChanged(InputEventData eventData) + /// + /// Change the targeted state + /// + [System.Obsolete("Use IsTargeted property instead")] + public virtual void SetTargeted(bool targeted) { - OnInputChangedHelper(eventData, eventData.InputData.Position, gestureStartThresholdMixedRealityPose); + IsTargeted = targeted; } - private bool ShouldListenToMoveEvent(InputEventData eventData) + /// + /// Change the Interactive state + /// + [System.Obsolete("Use IsInteractive property instead")] + public virtual void SetInteractive(bool interactive) { - if (!(HasFocus || IsGlobal)) - { - return false; - } + IsInteractive = interactive; + } - if (!HasPress) - { - return false; - } + /// + /// Change the observation targeted state + /// + [System.Obsolete("Use HasObservationTargeted property instead")] + public virtual void SetObservationTargeted(bool targeted) + { + HasObservationTargeted = targeted; + } - // Ensure that this move event is from a pointer that is pressing the interactable - int matchingPointerCount = 0; - foreach (var pressingInputSource in pressingInputSources) - { - if (pressingInputSource == eventData.InputSource) - { - matchingPointerCount++; - } - } + /// + /// Change the observation state + /// + [System.Obsolete("Use HasObservation property instead")] + public virtual void SetObservation(bool observation) + { + HasObservation = observation; + } - return matchingPointerCount > 0; + /// + /// Change the visited state + /// + [System.Obsolete("Use IsVisited property instead")] + public virtual void SetVisited(bool visited) + { + IsVisited = visited; } - #endregion InputHandlers + + /// + /// Change the toggled state + /// + [System.Obsolete("Use IsToggled property instead")] + public virtual void SetToggled(bool toggled) + { + IsToggled = toggled; + } + + /// + /// Change the gesture state + /// + [System.Obsolete("Use HasGesture property instead")] + public virtual void SetGesture(bool gesture) + { + HasGesture = gesture; + } + + /// + /// Change the gesture max state + /// + [System.Obsolete("Use HasGestureMax property instead")] + public virtual void SetGestureMax(bool gesture) + { + HasGestureMax = gesture; + } + + /// + /// Change the collision state + /// + [System.Obsolete("Use HasCollision property instead")] + public virtual void SetCollision(bool collision) + { + HasCollision = collision; + } + + /// + /// Change the custom state + /// + [System.Obsolete("Use HasCustom property instead")] + public virtual void SetCustom(bool custom) + { + HasCustom = custom; + } + + /// + /// Change the voice command state + /// + [System.Obsolete("Use HasVoiceCommand property instead")] + public virtual void SetVoiceCommand(bool voice) + { + HasVoiceCommand = voice; + } + + /// + /// Change the physical touch state + /// + [System.Obsolete("Use HasPhysicalTouch property instead")] + public virtual void SetPhysicalTouch(bool touch) + { + HasPhysicalTouch = touch; + } + + /// + /// Change the grab state + /// + [System.Obsolete("Use HasGrab property instead")] + public virtual void SetGrab(bool grab) + { + HasGrab = grab; + } + + #endregion } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/InteractableToggleCollection.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/InteractableToggleCollection.cs index e21ea6d1b96..dfe25006bfc 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/InteractableToggleCollection.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/InteractableToggleCollection.cs @@ -20,7 +20,7 @@ public class InteractableToggleCollection : MonoBehaviour [Tooltip("exposed selection changed event")] public UnityEvent OnSelectionEvents; - private void OnEnable() + private void Start() { for (int i = 0; i < ToggleList.Length; ++i) { @@ -29,14 +29,18 @@ private void OnEnable() ToggleList[i].OnClick.AddListener(() => OnSelection(itemIndex)); ToggleList[i].CanDeselect = false; } - + + OnSelection(CurrentIndex, true); + } + + private void OnEnable() + { OnSelection(CurrentIndex, true); } /// /// Sets the selected index and selected Interactive /// - /// public void SetSelection(int index) { if (!isActiveAndEnabled || @@ -51,15 +55,13 @@ public void SetSelection(int index) /// /// Set the toggle state of each button based on the selected item /// - /// - /// protected virtual void OnSelection(int index, bool force = false) { for (int i = 0; i < ToggleList.Length; ++i) { if (i != index) { - ToggleList[i].SetDimensionIndex(0); + ToggleList[i].IsToggled = false; } } @@ -67,7 +69,7 @@ protected virtual void OnSelection(int index, bool force = false) if (force) { - ToggleList[index].SetDimensionIndex(1); + ToggleList[index].IsToggled = true; } else { diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Layout/ButtonBackgroundSize.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Layout/ButtonBackgroundSize.cs index 88cb5db862a..3ce3ef0e895 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Layout/ButtonBackgroundSize.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Layout/ButtonBackgroundSize.cs @@ -49,7 +49,6 @@ public class ButtonBackgroundSize : MonoBehaviour /// /// Set the size at Runtime or through code /// - /// public void SetSize(Vector3 size) { ItemSize = size; @@ -58,7 +57,6 @@ public void SetSize(Vector3 size) /// /// Get the current size /// - /// public Vector3 GetSize() { return ItemSize; @@ -67,7 +65,6 @@ public Vector3 GetSize() /// /// Get the base pixel scale /// - /// public float GetBasePixelScale() { return BasePixelScale; @@ -76,7 +73,6 @@ public float GetBasePixelScale() /// /// Set the base pixel scale /// - /// public void SetBasePixelScale(float scale) { BasePixelScale = scale; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Layout/ButtonBackgroundSizeOffset.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Layout/ButtonBackgroundSizeOffset.cs index 584864d4f31..4d8649ed636 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Layout/ButtonBackgroundSizeOffset.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Layout/ButtonBackgroundSizeOffset.cs @@ -58,7 +58,6 @@ public class ButtonBackgroundSizeOffset : MonoBehaviour /// /// Set the objects scale relative to the Anchor /// - /// public void SetScale(Vector3 scale) { Scale = scale; @@ -73,7 +72,6 @@ public Vector3 GetScale() /// /// Set a consistent offset value from the Anchor /// - /// public void SetOffset(Vector3 offset) { Offset = offset; @@ -82,7 +80,6 @@ public void SetOffset(Vector3 offset) /// /// Get the current offset value /// - /// public Vector3 GetSOffset() { return Offset; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Profile/InteractableProfileItem.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Profile/InteractableProfileItem.cs index 0986da84543..71701e5a7d9 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Profile/InteractableProfileItem.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Profile/InteractableProfileItem.cs @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. -using System; using System.Collections.Generic; using UnityEngine; @@ -9,49 +8,19 @@ namespace Microsoft.MixedReality.Toolkit.UI { /// /// The foundation of profiles that exist on an Interactable - /// Profiles pair themes with the objects they manipulate, based on state changes + /// Profiles pair ThemeContainers with the objects they manipulate, based on state changes /// - [System.Serializable] public class InteractableProfileItem { - public GameObject Target; - public List Themes; - public bool HadDefaultTheme; - /// - /// The list of base classes whose derived classes will be included in interactable theme - /// selection dropdowns. + /// GameObject to target with associated Themes /// - private static readonly List candidateThemeTypes = new List() - { - typeof(InteractableThemeBase), - typeof(InteractableShaderTheme), - typeof(InteractableColorTheme) - }; - - /// - /// Get a list of themes - /// - /// - public static InteractableTypesContainer GetThemeTypes() - { - return InteractableTypeFinder.Find(candidateThemeTypes, TypeRestriction.DerivedOnly); - } + public GameObject Target; /// - /// Get a new theme instance and load it with settings + /// List of Theme configuration data to intialize with an Interactable /// - /// - /// - /// - /// - public static InteractableThemeBase GetTheme(InteractableThemePropertySettings settings, GameObject host) - { - Type themeType = Type.GetType(settings.AssemblyQualifiedName); - InteractableThemeBase theme = (InteractableThemeBase)Activator.CreateInstance(themeType); - theme.Init(host, settings); - return theme; - } + public List Themes = new List(); } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Selection/SelectionModes.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Selection/SelectionModes.cs index c903a48b5f3..c209e73f5db 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Selection/SelectionModes.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Selection/SelectionModes.cs @@ -8,6 +8,10 @@ namespace Microsoft.MixedReality.Toolkit.UI /// public enum SelectionModes { + /// + /// Not a valid mode + /// + Invalid = -1, /// /// Just click, no selection /// diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Simulation/InteractablePointerSimulator.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Simulation/InteractablePointerSimulator.cs index 19d1e9c0d33..c47f92bc787 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Simulation/InteractablePointerSimulator.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Simulation/InteractablePointerSimulator.cs @@ -31,19 +31,19 @@ private void Update() if (hasFocus != Focus) { - Button.SetFocus(Focus); + Button.HasFocus = Focus; hasFocus = Focus; } if (hasDown != Down) { - Button.SetPress(Down); + Button.HasPress = Down; hasDown = Down; } if (isDisabled != Disabled) { - Button.SetDisabled(Disabled); + Button.IsEnabled = !Disabled; isDisabled = Disabled; } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStates.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStates.cs index 6c939e3f0e0..a51da779142 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStates.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStates.cs @@ -9,8 +9,11 @@ namespace Microsoft.MixedReality.Toolkit.UI /// /// list of Interactable states and basic comparison /// - public class InteractableStates : InteractableStateModel + public class InteractableStates : BaseStateModel { + /// + /// List of valid state types for Interactable + /// public enum InteractableStateEnum { /// @@ -108,7 +111,7 @@ public enum InteractableStateEnum public InteractableStates() { base.allStates = allStates; - currentState = allStates[0]; + SetCurrentState(allStates[0]); } public InteractableStates(State defaultState) : base(defaultState) @@ -116,45 +119,50 @@ public InteractableStates(State defaultState) : base(defaultState) base.allStates = allStates; } + /// public virtual void SetStateOn(InteractableStateEnum state) { SetStateOn((int)state); } + /// public virtual void SetStateOff(InteractableStateEnum state) { SetStateOff((int)state); } + /// public virtual void SetStateValue(InteractableStateEnum state, int value) { SetStateValue((int)state, value); } + /// public State GetState(InteractableStateEnum state) { return GetState((int)state); } - // compares all the state values and returns a state based on bitwise comparison + /// public override State CompareStates() { int bit = GetBit(); - currentState = stateList[0]; + SetCurrentState(stateList[0]); for (int i = stateList.Count - 1; i > -1; i--) { if (bit >= stateList[i].Bit) { - currentState = stateList[i]; + SetCurrentState(stateList[i]); break; } } - return currentState; + return CurrentState(); } + /// public override State[] GetStates() { return stateList.ToArray(); @@ -166,7 +174,6 @@ public override State[] GetStates() /// states is specified. /// Default States should match "DefaultStates" scriptable object in Interactable /// - /// public virtual List GetDefaultStates() { List result = new List(); @@ -174,6 +181,13 @@ public virtual List GetDefaultStates() result.Add(GetState(InteractableStateEnum.Focus)); result.Add(GetState(InteractableStateEnum.Pressed)); result.Add(GetState(InteractableStateEnum.Disabled)); + + for (int i = 0; i < result.Count; i++) + { + result[i].Bit = 1 << i; + result[i].ActiveIndex = i; + } + return result; } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/States.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/States.cs deleted file mode 100644 index e4b0a040525..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/States.cs +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - [CreateAssetMenu(fileName = "States", menuName = "Mixed Reality Toolkit/Interactable/State", order = 1)] - public class States : ScriptableObject - { - public List StateList; - public int DefaultIndex = 0; - public Type StateType; - public InteractableTypesContainer StateOptions; - public string StateLogicName = "InteractableStates"; - public string AssemblyQualifiedName = typeof(InteractableStates).AssemblyQualifiedName; - - /// - /// The list of base classes whose derived classes will be included in interactable state - /// selection dropdowns. - /// - private static readonly List candidateStateTypes = new List() { typeof(InteractableStates) }; - - public static States GetDefaultInteractableStates() - { - States result = CreateInstance(); - - InteractableStates allInteractableStates = new InteractableStates(); - - result.StateType = Type.GetType(typeof(InteractableStates).AssemblyQualifiedName); - result.StateOptions = InteractableTypeFinder.Find(candidateStateTypes, TypeRestriction.AllowBase); - result.StateList = allInteractableStates.GetDefaultStates(); - result.DefaultIndex = 0; - return result; - } - - //!!! finish making states work, they should initiate the type and run the logic during play mode. - private void OnEnable() - { - SetupStateOptions(); - } - - public State[] GetStates() - { - return StateList.ToArray(); - } - - public InteractableStates SetupLogic() - { - StateType = Type.GetType(AssemblyQualifiedName); - InteractableStates stateLogic = (InteractableStates)Activator.CreateInstance(StateType, StateList[DefaultIndex]); - List stateListCopy = new List(); - for (int i = 0; i < StateList.Count; i++) - { - State state = new State(); - state.ActiveIndex = StateList[i].ActiveIndex; - state.Bit = StateList[i].Bit; - state.Index = StateList[i].Index; - state.Name = StateList[i].Name; - state.Value = StateList[i].Value; - stateListCopy.Add(state); - } - stateLogic.ImportStates(stateListCopy); - - return stateLogic; - } - - public void SetupStateOptions() - { - StateOptions = InteractableTypeFinder.Find(candidateStateTypes, TypeRestriction.AllowBase); - } - - // redundant method, put in a utils with static methods!!! - public static int ReverseLookup(string option, string[] options) - { - for (int i = 0; i < options.Length; i++) - { - if (options[i] == option) - { - return i; - } - } - - return 0; - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableActivateTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableActivateTheme.cs deleted file mode 100644 index ec33929afcb..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableActivateTheme.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class InteractableActivateTheme : InteractableThemeBase - { - - public InteractableActivateTheme() - { - Types = new Type[] { typeof(Transform) }; - Name = "Activate Theme"; - NoEasing = true; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Activate", - Type = InteractableThemePropertyValueTypes.Bool, - Values = new List(), - Default = new InteractableThemePropertyValue() { Bool = true } - }); - } - - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - start.Bool = Host.activeSelf; - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - Host.SetActive(property.Values[index].Bool); - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAnimatorTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAnimatorTheme.cs deleted file mode 100644 index 89f92a31512..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAnimatorTheme.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// Uses Animator to control Interactable feedback based on state changes. - /// - public class InteractableAnimatorTheme : InteractableThemeBase - { - private int lastIndex = 0; - private Animator controller; - - public InteractableAnimatorTheme() - { - Types = new Type[] { typeof(Transform) }; - Name = "AnimatorTheme"; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Animator Trigger", - Type = InteractableThemePropertyValueTypes.AnimatorTrigger, - Values = new List(), - Default = new InteractableThemePropertyValue() { String = "Default" } - }); - } - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - controller = Host.GetComponent(); - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - start.String = property.Values[lastIndex].String; - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - if(lastIndex != index) - { - if(controller != null) - { - controller.SetTrigger(property.Values[index].String); - } - lastIndex = index; - } - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAudioTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAudioTheme.cs deleted file mode 100644 index 604fefb14a9..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAudioTheme.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class InteractableAudioTheme : InteractableThemeBase - { - private AudioSource audioSource; - - public InteractableAudioTheme() - { - Types = new Type[] { typeof(Transform) }; - Name = "Audio Theme"; - NoEasing = true; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Audio", - Type = InteractableThemePropertyValueTypes.AudioClip, - Values = new List(), - Default = new InteractableThemePropertyValue() { AudioClip = null } - }); - } - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - audioSource = Host.GetComponentInChildren(); - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - AudioSource audioSource = Host.GetComponentInChildren(); - if (audioSource != null) - { - start.AudioClip = audioSource.clip; - } - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - if (audioSource == null) - { - audioSource = Host.AddComponent(); - } - - audioSource.clip = property.Values[index].AudioClip; - audioSource.Play(); - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableMaterialTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableMaterialTheme.cs deleted file mode 100644 index cc4a387ca1c..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableMaterialTheme.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class InteractableMaterialTheme : InteractableThemeBase - { - private Material material = null; - private Renderer renderer; - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - - renderer = Host.GetComponent(); - } - - public InteractableMaterialTheme() - { - Types = new Type[] { typeof(Renderer) }; - Name = "Material Theme"; - NoEasing = true; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Material", - Type = InteractableThemePropertyValueTypes.Material, - Values = new List(), - Default = new InteractableThemePropertyValue() { Material = null } - }); - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - - material = renderer.material; - start.Material = material; - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - Host.SetActive(property.Values[index].Bool); - - material = property.Values[index].Material; - renderer.material = material; - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableOffsetTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableOffsetTheme.cs deleted file mode 100644 index eaa2a9bb613..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableOffsetTheme.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class InteractableOffsetTheme : InteractableThemeBase - { - private Vector3 startPosition; - private Transform hostTransform; - - public InteractableOffsetTheme() - { - Types = new Type[] { typeof(Transform) }; - Name = "Offset Theme"; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Offset", - Type = InteractableThemePropertyValueTypes.Vector3, - Values = new List(), - Default = new InteractableThemePropertyValue() { Vector3 = Vector3.zero } - }); - } - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - hostTransform = Host.transform; - startPosition = hostTransform.localPosition; - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - start.Vector3 = hostTransform.localPosition; - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - hostTransform.localPosition = Vector3.Lerp(property.StartValue.Vector3, startPosition + property.Values[index].Vector3, percentage); - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableRotationTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableRotationTheme.cs deleted file mode 100644 index 62c8b522189..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableRotationTheme.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class InteractableRotationTheme : InteractableThemeBase - { - private Transform hostTransform; - - public InteractableRotationTheme() - { - Types = new Type[] { typeof(Transform) }; - Name = "Rotation Theme"; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Rotation", - Type = InteractableThemePropertyValueTypes.Vector3, - Values = new List(), - Default = new InteractableThemePropertyValue() { Vector3 = Vector3.zero } - }); - } - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - - hostTransform = Host.transform; - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - start.Vector3 = hostTransform.eulerAngles; - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - hostTransform.localRotation = Quaternion.Euler( Vector3.Lerp(property.StartValue.Vector3, property.Values[index].Vector3, percentage)); - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableScaleTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableScaleTheme.cs deleted file mode 100644 index 1fc69d491e9..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableScaleTheme.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class InteractableScaleTheme : InteractableThemeBase - { - private Transform hostTransform; - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - - hostTransform = Host.transform; - } - - public InteractableScaleTheme() - { - Types = new Type[] { typeof(Transform) }; - Name = "Scale Theme"; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Scale", - Type = InteractableThemePropertyValueTypes.Vector3, - Values = new List(), - Default = new InteractableThemePropertyValue() { Vector3 = Vector3.one} - }); - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - start.Vector3 = hostTransform.localScale; - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - hostTransform.localScale = Vector3.Lerp(property.StartValue.Vector3, property.Values[index].Vector3, percentage); - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableShaderTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableShaderTheme.cs deleted file mode 100644 index dbe041df093..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableShaderTheme.cs +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class InteractableShaderTheme : InteractableThemeBase - { - private static InteractableThemePropertyValue emptyValue = new InteractableThemePropertyValue(); - - protected MaterialPropertyBlock propertyBlock; - protected List shaderProperties; - protected Renderer renderer; - - private InteractableThemePropertyValue startValue = new InteractableThemePropertyValue(); - - public InteractableShaderTheme() - { - Types = new Type[] { typeof(Renderer) }; - Name = "Shader Float"; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Shader", - Type = InteractableThemePropertyValueTypes.ShaderFloat, - Values = new List(), - Default = new InteractableThemePropertyValue() { Float = 0} - }); - } - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - - shaderProperties = new List(); - for (int i = 0; i < ThemeProperties.Count; i++) - { - InteractableThemeProperty prop = ThemeProperties[i]; - if (prop.ShaderOptions.Count > 0) - { - shaderProperties.Add(prop.ShaderOptions[prop.PropId]); - } - } - - propertyBlock = InteractableThemeShaderUtils.GetMaterialPropertyBlock(host, shaderProperties.ToArray()); - - renderer = Host.GetComponent(); - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - if (Host == null) - return; - - renderer.GetPropertyBlock(propertyBlock); - - int propId = property.GetShaderPropertyId(); - float newValue; - switch (property.Type) - { - case InteractableThemePropertyValueTypes.Color: - Color newColor = Color.Lerp(property.StartValue.Color, property.Values[index].Color, percentage); - propertyBlock = SetColor(propertyBlock, newColor, propId); - break; - case InteractableThemePropertyValueTypes.ShaderFloat: - newValue = LerpFloat(property.StartValue.Float, property.Values[index].Float, percentage); - propertyBlock = SetFloat(propertyBlock, newValue, propId); - break; - case InteractableThemePropertyValueTypes.ShaderRange: - newValue = LerpFloat(property.StartValue.Float, property.Values[index].Float, percentage); - propertyBlock = SetFloat(propertyBlock, newValue, propId); - break; - default: - break; - } - - renderer.SetPropertyBlock(propertyBlock); - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - if (Host == null) - return emptyValue; - - renderer.GetPropertyBlock(propertyBlock); - - startValue.Reset(); - - int propId = property.GetShaderPropertyId(); - switch (property.Type) - { - case InteractableThemePropertyValueTypes.Color: - startValue.Color = propertyBlock.GetVector(propId); - break; - case InteractableThemePropertyValueTypes.ShaderFloat: - startValue.Float = propertyBlock.GetFloat(propId); - break; - case InteractableThemePropertyValueTypes.ShaderRange: - startValue.Float = propertyBlock.GetFloat(propId); - break; - default: - break; - } - - return startValue; - } - - public static float GetFloat(GameObject host, int propId) - { - if (host == null) - return 0; - - MaterialPropertyBlock block = InteractableThemeShaderUtils.GetPropertyBlock(host); - return block.GetFloat(propId); - } - - public static void SetPropertyBlock(GameObject host, MaterialPropertyBlock block) - { - Renderer renderer = host.GetComponent(); - renderer.SetPropertyBlock(block); - } - - public static MaterialPropertyBlock SetFloat(MaterialPropertyBlock block, float value, int propId) - { - if (block == null) - return null; - - block.SetFloat(propId, value); - return block; - } - - public static Color GetColor(GameObject host, int propId) - { - if (host == null) - return Color.white; - - MaterialPropertyBlock block = InteractableThemeShaderUtils.GetPropertyBlock(host); - return block.GetVector(propId); - } - - public static MaterialPropertyBlock SetColor(MaterialPropertyBlock block, Color color, int propId) - { - if (block == null) - return null; - - block.SetColor(propId, color); - return block; - - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableStringTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableStringTheme.cs deleted file mode 100644 index 6df4627ce1b..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableStringTheme.cs +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.UI; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// Change string on a text object based on state - /// - public class InteractableStringTheme : InteractableThemeBase - { - private TextMesh mesh; - private Text text; - - public InteractableStringTheme() - { - Types = new Type[] { typeof(TextMesh), typeof(Text) }; - Name = "String Theme"; - NoEasing = true; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "String", - Type = InteractableThemePropertyValueTypes.String, - Values = new List(), - Default = new InteractableThemePropertyValue() { String = "" } - - }); - } - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - - mesh = Host.GetComponent(); - text = Host.GetComponent(); - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - start.String = ""; - - if (mesh != null) - { - start.String = mesh.text; - return start; - } - - if (mesh != null) - { - start.String = text.text; - } - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - if(mesh != null) - { - mesh.text = property.Values[index].String; - return; - } - if (mesh != null) - { - text.text = property.Values[index].String; - } - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableTextureTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableTextureTheme.cs deleted file mode 100644 index 7b1e4aa2ff4..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableTextureTheme.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class InteractableTextureTheme : InteractableThemeBase - { - private MaterialPropertyBlock propertyBlock; - private Renderer renderer; - - public InteractableTextureTheme() - { - Types = new Type[] { typeof(Renderer) }; - Name = "Texture Theme"; - NoEasing = true; - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Texture", - Type = InteractableThemePropertyValueTypes.Texture, - Values = new List(), - Default = new InteractableThemePropertyValue() { Texture = null } - }); - } - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - propertyBlock = InteractableThemeShaderUtils.GetMaterialPropertyBlock(host, new ShaderProperties[0]); - renderer = Host.GetComponent(); - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - start.Texture = propertyBlock.GetTexture("_MainTex"); - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - propertyBlock.SetTexture("_MainTex", property.Values[index].Texture); - renderer.SetPropertyBlock(propertyBlock); - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeBase.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeBase.cs deleted file mode 100644 index 76db0312349..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeBase.cs +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using Microsoft.MixedReality.Toolkit.Utilities; -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// Base class for themes - /// - - public abstract class InteractableThemeBase - { - public Type[] Types; - public string Name = "Base Theme"; - public List ThemeProperties = new List(); - public List CustomSettings = new List(); - public GameObject Host; - public Easing Ease; - public bool NoEasing; - public bool Loaded; - public string AssemblyQualifiedName; - - private bool hasFirstState = false; - - private int lastState = -1; - - //! find a way to set the default values of the properties, like scale should be Vector3.one - // these should be custom, per theme - - public abstract void SetValue(InteractableThemeProperty property, int index, float percentage); - - public abstract InteractableThemePropertyValue GetProperty(InteractableThemeProperty property); - - public virtual void Init(GameObject host, InteractableThemePropertySettings settings) - { - Host = host; - - for (int i = 0; i < settings.Properties.Count; i++) - { - InteractableThemeProperty prop = ThemeProperties[i]; - prop.ShaderOptionNames = settings.Properties[i].ShaderOptionNames; - prop.ShaderOptions = settings.Properties[i].ShaderOptions; - prop.PropId = settings.Properties[i].PropId; - prop.Values = settings.Properties[i].Values; - - ThemeProperties[i] = prop; - } - - for (int i = 0; i < settings.CustomSettings.Count; i++) - { - InteractableCustomSetting setting = CustomSettings[i]; - setting.Name = settings.CustomSettings[i].Name; - setting.Type = settings.CustomSettings[i].Type; - setting.Value = settings.CustomSettings[i].Value; - CustomSettings[i] = setting; - } - - Ease = CopyEase(settings.Easing); - Ease.Stop(); - - Loaded = true; - } - - protected float LerpFloat(float s, float e, float t) - { - return (e - s) * t + s; - } - - protected int LerpInt(int s, int e, float t) - { - return Mathf.RoundToInt((e - s) * t) + s; - } - - protected Easing CopyEase(Easing ease) - { - Easing newEase = new Easing(); - newEase.Curve = ease.Curve; - newEase.Enabled = ease.Enabled; - newEase.LerpTime = ease.LerpTime; - - return newEase; - } - - public virtual void OnUpdate(int state, Interactable source, bool force = false) - { - - if (state != lastState || force) - { - int themePropCount = ThemeProperties.Count; - for (int i = 0; i < themePropCount; i++) - { - InteractableThemeProperty current = ThemeProperties[i]; - current.StartValue = GetProperty(current); - if (hasFirstState || force) - { - Ease.Start(); - SetValue(current, state, Ease.GetCurved()); - hasFirstState = true; - } - else - { - SetValue(current, state, 1); - if (i >= themePropCount - 1) - { - hasFirstState = true; - } - } - ThemeProperties[i] = current; - } - - lastState = state; - } - else if (Ease.Enabled && Ease.IsPlaying()) - { - Ease.OnUpdate(); - int themePropCount = ThemeProperties.Count; - for (int i = 0; i < themePropCount; i++) - { - InteractableThemeProperty current = ThemeProperties[i]; - SetValue(current, state, Ease.GetCurved()); - } - } - - lastState = state; - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeProperty.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeProperty.cs deleted file mode 100644 index e228069fd6e..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeProperty.cs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// Base class for themes - /// - - [System.Serializable] - public class InteractableThemeProperty - { - public string Name; - public InteractableThemePropertyValueTypes Type; - public List Values; - public InteractableThemePropertyValue StartValue; - public int PropId; // i.e OptionIndex - public List ShaderOptions; - public List ShaderOptionNames; - public InteractableThemePropertyValue Default; - public string ShaderName; - - private List ShaderPropertyIDs = null; - private const string DefaultProperty = "_Color"; - - /// - /// This method gets the integer key assigned by Unity at runtime for the current shader property. - /// It will also lazy load the array of possible key values on first access using Unity's Shader.PropertyToID() - /// It is generally preferred to use the integer key over the string key with Unity to avoid perf cost for the dictionary lookup on every get/set. - /// ex: On SetFloat(string key), Unity will perform Shader.PropertyToID() itself every call - /// - /// integer key for current shader property to get/set shader values. Returns default backup property in case of failure - public int GetShaderPropertyId() - { - // Lazy load Shader Properties - if (ShaderPropertyIDs == null) - { - ShaderPropertyIDs = new List(ShaderOptionNames.Count); - for (int i = 0; i < this.ShaderOptionNames.Count; i++) - { - ShaderPropertyIDs.Add(Shader.PropertyToID(this.ShaderOptionNames[i])); - } - } - - if (ShaderPropertyIDs.Count > PropId) - { - return ShaderPropertyIDs[PropId]; - } - - return Shader.PropertyToID(DefaultProperty); - } - - /// - /// Get the current shader property name. Again it is preferred to utilize the integer key over the string key in Unity - /// - /// string name of current property. Returns default backup property in case of failure - public string GetShaderPropertyName() - { - if (ShaderOptionNames.Count > PropId) - { - return ShaderOptionNames[PropId]; - } - - return DefaultProperty; - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertySettings.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertySettings.cs deleted file mode 100644 index 3b333c497b5..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertySettings.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using Microsoft.MixedReality.Toolkit.Utilities; -using System; -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// list of theme settings to virtualize theme values - /// - public struct ProfileSettings - { - public List ThemeSettings; - } - - /// - /// List of settings that are copied from themes - /// - public struct ThemeSettings - { - public List Settings; - } - - /// - /// A way to cache some serializes values to pass between buttons and handlers - /// - [System.Serializable] - public class ThemeTarget - { - public List Properties; - public GameObject Target; - public State[] States; - } - - /// - /// The main settings found in Themes - /// - [System.Serializable] - public struct InteractableThemePropertySettings - { - public string Name; - public string AssemblyQualifiedName; - public Type Type; - public InteractableThemeBase Theme; - public List Properties; - public List History; - public List CustomSettings; - public List CustomHistory; - public Easing Easing; - public bool NoEasing; - public bool IsValid; - public ThemeTarget ThemeTarget; - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ScaleOffsetColorTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ScaleOffsetColorTheme.cs deleted file mode 100644 index b64f9994e02..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ScaleOffsetColorTheme.cs +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using TMPro; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - public class ScaleOffsetColorTheme : InteractableColorTheme - { - protected Vector3 startPosition; - protected Vector3 startScale; - protected Transform hostTransform; - - public override void Init(GameObject host, InteractableThemePropertySettings settings) - { - base.Init(host, settings); - hostTransform = Host.transform; - startPosition = hostTransform.localPosition; - startScale = hostTransform.localScale; - } - - public ScaleOffsetColorTheme() - { - Types = new Type[] { typeof(Transform), typeof(TextMesh), typeof(TextMesh), typeof(TextMeshPro), typeof(TextMeshProUGUI), typeof(Renderer) }; - Name = "Default: Scale, Offset, Color"; - ThemeProperties = new List(); - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Scale", - Type = InteractableThemePropertyValueTypes.Vector3, - Values = new List(), - Default = new InteractableThemePropertyValue() { Vector3 = Vector3.one } - }); - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Offset", - Type = InteractableThemePropertyValueTypes.Vector3, - Values = new List(), - Default = new InteractableThemePropertyValue() { Vector3 = Vector3.zero } - }); - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Color", - Type = InteractableThemePropertyValueTypes.Color, - Values = new List(), - Default = new InteractableThemePropertyValue() { Color = Color.white } - }); - } - - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) - { - InteractableThemePropertyValue start = new InteractableThemePropertyValue(); - - switch (property.Name) - { - case "Scale": - start.Vector3 = hostTransform.localScale; - break; - case "Offset": - start.Vector3 = hostTransform.localPosition; - break; - case "Color": - start = base.GetProperty(property); - break; - default: - break; - } - return start; - } - - public override void SetValue(InteractableThemeProperty property, int index, float percentage) - { - switch (property.Name) - { - case "Scale": - hostTransform.localScale = Vector3.Lerp(property.StartValue.Vector3, Vector3.Scale(startScale, property.Values[index].Vector3), percentage); - break; - case "Offset": - hostTransform.localPosition = Vector3.Lerp(property.StartValue.Vector3, startPosition + property.Values[index].Vector3, percentage); - break; - case "Color": - base.SetValue(property, index, percentage); - break; - default: - break; - } - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/Theme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/Theme.cs deleted file mode 100644 index f42243d973c..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/Theme.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System.Collections.Generic; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// Theme scriptableObject for loading theme settings - /// - - [CreateAssetMenu(fileName = "Theme", menuName = "Mixed Reality Toolkit/Interactable/Theme", order = 1)] - public class Theme : ScriptableObject - { - public string Name; - public List Settings; - public List CustomSettings; - public States States; - - public State[] GetStates() - { - if (States != null) - { - return States.GetStates(); - } - - return new State[0]; - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableType.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableType.cs deleted file mode 100644 index d6f71605544..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableType.cs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using Microsoft.MixedReality.Toolkit.Utilities; -using System; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// A wrapper for a Type which gives a "friendly name" for the type (i.e. - /// the class name) along with the assembly qualified name (which can be used - /// to new instances of this type). - /// - /// - /// The intent of this wrapper is for use with the various Interactable state, event - /// and theme classes, which are enumerated using reflection in the editor but must - /// then be instantiated at runtime (without the usage of reflection due to .NET - /// backend constraints). - /// - public class InteractableType - { - /// - /// The class name of this interactable type (for example, "InteractableActivateTheme"). - /// - public string ClassName { get; private set; } - - /// - /// The assembly qualified name of the class (for example, - /// "Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, - /// Microsoft.MixedReality.Toolkit.UI") - /// - public string AssemblyQualifiedName { get; private set; } - - /// - /// The type of the class (for example, typeof(InteractableActivateTheme)). - /// - public Type Type { get; private set; } - - public InteractableType(Type type) - { - ClassName = type.Name; - AssemblyQualifiedName = SystemType.GetReference(type); - Type = type; - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableTypeFinder.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableTypeFinder.cs deleted file mode 100644 index 1c1d5997c72..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableTypeFinder.cs +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; -using System.Reflection; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// A helper that uses reflection to find objects that implement base types of the - /// Interactable types that populate the various state, theme, and event inspectors. - /// - public class InteractableTypeFinder - { - /// - /// A convenience wrapper provided for editor code to turn a list of types into a form that - /// matches their existing structure. - /// - /// - /// This is primarily a crutch because of how the inspector code stores parallel arrays of - /// objects, rather than just storing an array of objects (i.e. it stores three arrays - /// of objects which happen to have matching indices, rather than storing a single array - /// of objects which have state relevant within the object). - /// - public static InteractableTypesContainer Find(List types, TypeRestriction typeRestriction) - { -#if UNITY_EDITOR - return new InteractableTypesContainer(FindTypes(types, typeRestriction)); -#else - // Due to other code structure, it's possible that this can still be invoked at runtime, but should - // not return anything (because type information should be read from serialized assembly data, rather - // than using reflection at runtime). - return new InteractableTypesContainer(new List()); -#endif - } - -#if UNITY_EDITOR - /// - /// Used to cache lookups for Types (for example, InteractableThemeBase) to their classes that implement - /// that type. - /// - private static Dictionary> cache = new Dictionary>(); - - /// - /// Gets the list of InteractableType objects for classes that support the specified types. - /// - private static List FindTypes(List types, TypeRestriction typeRestriction) - { - EnsureCacheForTypes(types, typeRestriction); - return GetTypesFromCache(types); - } - - /// - /// Gets the list of InteractableType objects for classes that support the specified types by - /// looking directly in the cache. - /// - /// - /// Assumes it is called after EnsureCacheForTypes. Otherwise, this is dangerous to call. - /// - private static List GetTypesFromCache(List types) - { - List interactableTypes = new List(); - foreach (Type type in types) - { - interactableTypes.AddRange(cache[type]); - } - return interactableTypes; - } - - /// - /// Ensures a cache entry is setup for all types in the InteractableType enum. - /// - /// - /// Note that this is not invoked at runtime and is assumed to be invoked from a single - /// threaded UI context, and is thus not locked. - /// - private static void EnsureCacheForTypes(List types, TypeRestriction typeRestriction) - { - HashSet cacheMisses = new HashSet(); - foreach (Type type in types) - { - if (!cache.ContainsKey(type)) - { - cacheMisses.Add(type); - } - } - - var assemblies = AppDomain.CurrentDomain.GetAssemblies(); - foreach (Type type in cacheMisses) - { - cache[type] = GetTypesFromAssemblies(type, typeRestriction, assemblies); - } - } - - /// - /// Loads the classes that derive from the given type by looking through all of the assemblies. - /// - private static List GetTypesFromAssemblies(Type type, TypeRestriction typeRestriction, Assembly[] assemblies) - { - List interactableTypes = new List(); - - if (typeRestriction == TypeRestriction.AllowBase) - { - InteractableType interactableType = new InteractableType(type); - interactableTypes.Add(interactableType); - } - - foreach (Assembly assembly in assemblies) - { - foreach (Type assemblyType in assembly.GetTypes()) - { - TypeInfo info = assemblyType.GetTypeInfo(); - if (info.IsSubclassOf(type)) - { - InteractableType interactableType = new InteractableType(assemblyType); - interactableTypes.Add(interactableType); - } - } - } - return interactableTypes; - } -#endif - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableTypesContainer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableTypesContainer.cs deleted file mode 100644 index 346621c9926..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/InteractableTypesContainer.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using System.Collections.Generic; - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// A convenience class that holds arrays of class names, fully qualified assembly names - /// and their corresponding actual types. - /// - /// - /// This abstraction exists primarily to reduce code duplication among the different - /// inspectors which use these lists to populate their dropdowns. - /// - /// Note that all of these arrays are the same size and come in the same order - /// (so for example, ClassName[0] = "InteractableActivateTheme" means that - /// Types[0] == typeof(InteractableActivateTheme) and AssemblyQualifiedNames - /// is the assembly qualified name for InteractableActivateTheme. - /// - public class InteractableTypesContainer - { - /// - /// An array of class names (for example, "InteractableActivateTheme"). - /// - public string[] ClassNames { get; private set; } - - /// - /// A array of assembly qualified names (for example, - /// "Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, - /// Microsoft.MixedReality.Toolkit.UI") - /// - public string[] AssemblyQualifiedNames { get; private set; } - - /// - /// An array of types. See class remarks for more information on relation to - /// other fields. - /// - public Type[] Types { get; private set; } - - /// - /// A convenience helper that will unwrap a list of InteractableType objects into - /// a form that is more easy consumed by inspector components. - /// - public InteractableTypesContainer(List interactableTypes) - { - var classNames = new List(); - var assemblyQualifiedNames = new List(); - var types = new List(); - - for (int i = 0; i < interactableTypes.Count; i++) - { - classNames.Add(interactableTypes[i].ClassName); - assemblyQualifiedNames.Add(interactableTypes[i].AssemblyQualifiedName); - types.Add(interactableTypes[i].Type); - } - - ClassNames = classNames.ToArray(); - AssemblyQualifiedNames = assemblyQualifiedNames.ToArray(); - Types = types.ToArray(); - } - } -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/TypeRestriction.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/TypeRestriction.cs deleted file mode 100644 index 1db655d8c34..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/TypeResolution/TypeRestriction.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -namespace Microsoft.MixedReality.Toolkit.UI -{ - /// - /// Controls the behavior of the InteractableTypeFinder.FindTypes function. See individual - /// enum values for more details. - /// - public enum TypeRestriction - { - /// - /// When this is specified, only classes derived from the specified type will be - /// returned by the lookup. This means that if you pass InteractableStates, the - /// lookup will only return classes whose base class is InteractableStates but - /// will not return InteractableStates itself. - /// - DerivedOnly, - - /// - /// When this is specified, classes derived from the specified type AND the class - /// itself will be returned by the lookup. This means that if you pass - /// InteractableStates, the lookup will both classes whose base class is - /// InteractableStates and InteractableStates itself. - /// - AllowBase, - }; -} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Textures/ButtonHome.png b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Textures/ButtonHome.png new file mode 100644 index 00000000000..27db90567f6 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Textures/ButtonHome.png differ diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Textures/ButtonHome.png.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Textures/ButtonHome.png.meta new file mode 100644 index 00000000000..54927660fce --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Textures/ButtonHome.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 3608489204b037744b259e8c9a81482f +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes.meta index 7e7b4521a8b..9f21e961e76 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes.meta +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes.meta @@ -1,8 +1,6 @@ fileFormatVersion: 2 guid: 86c2310036f39a74996874f7ee7ebb75 folderAsset: yes -timeCreated: 1517596159 -licenseType: Pro DefaultImporter: externalObjects: {} userData: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AnimatorTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AnimatorTheme.asset index 6c2f233c0fd..b9f00d4f822 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AnimatorTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AnimatorTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: AnimatorTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableAnimatorTheme + definitions: + - ClassName: InteractableAnimatorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableAnimatorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Animator Trigger - Type: 16 - Values: + stateProperties: + - name: Animator Trigger + type: 16 + values: - Name: Default String: Default Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,586 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.7019608, g: 0.7019608, b: 0.7019608, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.005} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.004} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Animation - Type: 12 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Animation - Type: 14 - Values: - - Name: - String: Default - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Focus - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Press - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Disabled - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Animator - Type: 14 - Values: - - Name: - String: Default - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Focus - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Pressed - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Disabled - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -684,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -692,29 +118,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -741,11 +152,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonBackgroundTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonBackgroundTheme.asset index e41bf5cab49..5c06dca1b9b 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonBackgroundTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonBackgroundTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: AppBarButtonBackgroundTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableActivateTheme + definitions: + - ClassName: InteractableActivateTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Activate - Type: 15 - Values: + stateProperties: + - name: Activate + type: 15 + values: - Name: Default String: Bool: 1 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,76 +84,6 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - Name: String: Bool: 0 @@ -158,56 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -216,10 +100,6 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - Name: String: Bool: 0 @@ -227,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -242,71 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -315,10 +132,6 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - Name: String: Bool: 0 @@ -326,6 +139,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -334,52 +148,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -387,6 +156,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -395,189 +165,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Animator Trigger - Type: 16 - Values: - - Name: - String: Default - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Focus - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Pressed - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Disabled - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -585,6 +173,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -593,128 +182,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Audio - Type: 11 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -741,11 +216,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.25 - NoEasing: 1 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonIconTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonIconTheme.asset index 05b7e4e6099..0ba2d1342a3 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonIconTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonIconTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: AppBarButtonIconTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorTheme + definitions: + - ClassName: InteractableColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,194 +84,6 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: GUI/Text Shader - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - Name: String: Bool: 0 @@ -276,6 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -284,45 +100,6 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - Name: String: Bool: 0 @@ -330,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -345,21 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -375,6 +139,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -383,7 +148,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -391,6 +156,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,90 +165,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -490,6 +173,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -498,29 +182,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 10101, guid: 0000000000000000e000000000000000, type: 0} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: GUI/Text Shader + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -547,11 +217,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.25 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonTextTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonTextTheme.asset index 394c9bdfbb3..9299646f193 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonTextTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/AppBarButtonTextTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: AppBarButtonTextTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorTheme + definitions: + - ClassName: InteractableColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,202 +84,6 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _FaceColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _OutlineColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _UnderlayColor - Type: 0 - Range: {x: 0, y: 0} - ShaderOptionNames: - - _FaceColor - - _OutlineColor - - _UnderlayColor - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: Mixed Reality Toolkit/TextMeshPro - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - Name: String: Bool: 0 @@ -284,6 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -292,45 +100,6 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - Name: String: Bool: 0 @@ -338,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -353,21 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -383,6 +139,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -391,7 +148,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -399,6 +156,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -407,90 +165,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -498,6 +173,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -506,29 +182,17 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 1c504b73bf66872479cd1215fb5ce0fe, type: 3} + shaderPropertyName: _FaceColor PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _FaceColor + - _OutlineColor + - _UnderlayColor + ShaderName: Mixed Reality Toolkit/TextMeshPro + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -555,11 +219,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.25 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBackground.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBackground.asset index 70e6452a58c..a0a0b8af923 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBackground.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBackground.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ButtonBackground m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.005} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.004} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBackgroundSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBackgroundSelected.asset index 4dd43e61c8e..4d8e18fee3b 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBackgroundSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBackgroundSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ButtonBackgroundSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.005} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.004} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBorders.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBorders.asset index 48814ea6e67..6d2623f6b1a 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBorders.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBorders.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ButtonBorders m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorChildrenTheme + definitions: + - ClassName: InteractableColorChildrenTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorChildrenTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,190 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.7019608, g: 0.7019608, b: 0.7019608, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -288,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -296,128 +118,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -444,11 +152,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBordersSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBordersSelected.asset index 2588798a2b6..fa3e80ab5af 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBordersSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonBordersSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ButtonBordersSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorChildrenTheme + definitions: + - ClassName: InteractableColorChildrenTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorChildrenTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,289 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.7019608, g: 0.7019608, b: 0.7019608, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -387,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -395,29 +118,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -444,11 +152,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabel.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabel.asset index fbd960cf9d8..45912542736 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabel.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabel.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ButtonLabel m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.005} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.004} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabelColor.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabelColor.asset index b6efba94bf3..dd397a75254 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabelColor.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabelColor.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ButtonLabelColor m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorTheme + definitions: + - ClassName: InteractableColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,190 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.2509804, g: 0.2509804, b: 0.2509804, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.18382353, g: 0.18382353, b: 0.18382353, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.2509804, g: 0.2509804, b: 0.2509804, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.005} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.004} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -288,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -296,128 +118,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -444,11 +152,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabelSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabelSelected.asset index 00d5c5a6329..3ce3c34b579 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabelSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ButtonLabelSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ButtonLabelSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.005} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.004} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CheeseTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CheeseTheme.asset index d8a419c507c..c5adbd21376 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CheeseTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CheeseTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: CheeseTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1.1, y: 1.1, z: 1.1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.9, y: 0.9, z: 0.9} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,7 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -287,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -295,50 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingPlaneBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingPlaneBorderColor - - _HoverColorOverride - - _HoverColorOpaqueOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: + defaultValue: Name: String: Bool: 0 @@ -346,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -354,11 +332,24 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingPlaneBorderColor + - _HoverColorOverride + - _HoverColorOpaqueOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ ShaderName: Mixed Reality Toolkit/Standard - History: [] - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -385,11 +376,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset index 3b3ecf02c65..e9780cb0059 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: CoffeeTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: -0.4, z: 0} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,7 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -287,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -295,50 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingPlaneBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingPlaneBorderColor - - _HoverColorOverride - - _HoverColorOpaqueOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: + defaultValue: Name: String: Bool: 0 @@ -346,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -354,11 +332,24 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingPlaneBorderColor + - _HoverColorOverride + - _HoverColorOpaqueOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ ShaderName: Mixed Reality Toolkit/Standard - History: [] - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -385,11 +376,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.2 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CylinderTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CylinderTheme.asset index 0a0c9993c59..58acf7cd20f 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CylinderTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/CylinderTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: CylinderTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: -0.32, z: 0} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,7 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -287,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -295,50 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingPlaneBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingPlaneBorderColor - - _HoverColorOverride - - _HoverColorOpaqueOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: + defaultValue: Name: String: Bool: 0 @@ -346,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -354,11 +332,24 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingPlaneBorderColor + - _HoverColorOverride + - _HoverColorOpaqueOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ ShaderName: Mixed Reality Toolkit/Standard - History: [] - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -385,11 +376,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/DefaultTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/DefaultTheme.asset index c0614c964f2..a3802c029d8 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/DefaultTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/DefaultTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: DefaultTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1.06, y: 1.06, z: 1.06} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.01} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,123 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _SpecColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _RimColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissionColor - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - - _SpecColor - - _RimColor - - _EmissionColor - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.88235295, g: 0.05190311, b: 0.05190311, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.048875432, g: 0.5072933, b: 0.8308824, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.17355102, g: 0.78676474, b: 0.4568981, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.84108996, g: 0.85294116, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -403,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -411,90 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -502,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -510,227 +332,18 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 2, y: 3, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Shader - Type: 3 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 10 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} + ShaderOptionNames: + - _Color + - _SpecColor + - _RimColor + - _EmissionColor ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -757,11 +370,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/FocusExampleTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/FocusExampleTheme.asset index 2f61a72eab2..c443af56e83 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/FocusExampleTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/FocusExampleTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: FocusExampleTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorTheme + definitions: + - ClassName: InteractableColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,131 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingBorderColor - - _HoverColorOverride - - _HoverColorOpaqueOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.16078432, g: 0.16078432, b: 0.16078432, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.16078432, g: 0.16078432, b: 0.16078432, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.5188679, g: 0.5188679, b: 0.5188679, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.31764707, g: 0.31764707, b: 0.31764707, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -229,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -237,227 +118,24 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.005} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.004} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingBorderColor + - _HoverColorOverride + - _HoverColorOpaqueOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ + ShaderName: Mixed Reality Toolkit/Standard + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -484,11 +162,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: eea7cc35b9115d34595e51c5e4211c84, type: 2} + states: {fileID: 11400000, guid: eea7cc35b9115d34595e51c5e4211c84, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/FocusPressTouchGrabTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/FocusPressTouchGrabTheme.asset index 215030da794..535242ec247 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/FocusPressTouchGrabTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/FocusPressTouchGrabTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: FocusPressTouchGrabTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1.2, y: 1.2, z: 1.2} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.8, y: 0.8, z: 0.8} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -88,6 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.7, y: 0.7, z: 0.7} @@ -103,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.5, y: 0.5, z: 0.5} @@ -118,6 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -126,7 +132,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -134,6 +140,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,10 +149,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -153,6 +157,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -161,10 +166,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -187,6 +198,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -202,6 +214,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -217,6 +230,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -232,6 +246,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -247,6 +262,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -262,6 +278,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -270,7 +287,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -278,6 +295,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -286,10 +304,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -297,6 +312,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -305,10 +321,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -316,6 +337,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -331,6 +353,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -346,6 +369,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -361,6 +385,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -376,6 +401,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -391,6 +417,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -406,6 +433,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -414,143 +442,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingBorderColor - - _HoverColorOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0.7529412, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 0.62734854, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06915272, g: 0.6981132, b: 0.45621789, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -558,6 +450,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -566,90 +459,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -657,6 +467,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -665,272 +476,23 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1.1, y: 1.1, z: 1.1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0.9, y: 0.9, z: 0.9} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingBorderColor + - _HoverColorOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ + ShaderName: Mixed Reality Toolkit/Standard + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -957,11 +519,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.2 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/GrabColorChildren.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/GrabColorChildren.asset index a5fa902d18c..0499ef5c320 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/GrabColorChildren.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/GrabColorChildren.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: GrabColorChildren m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorChildrenTheme + definitions: + - ClassName: InteractableColorChildrenTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorChildrenTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,388 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0.59923285, b: 0.8113208, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.08627451, g: 0.8470589, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.9339623, g: 0.7471792, b: 0.47138664, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -486,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -494,29 +118,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -543,11 +152,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.35 - NoEasing: 0 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/GrabScaleTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/GrabScaleTheme.asset index 87132dfab92..3f88c4457cb 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/GrabScaleTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/GrabScaleTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: GrabScaleTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableGrabScaleTheme + definitions: + - ClassName: InteractableGrabScaleTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableGrabScaleTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.98, y: 1.02, z: 0.98} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,91 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -189,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -197,225 +118,13 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: + customProperties: - Name: ScaleMagnifier Type: 6 Value: @@ -426,6 +135,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.9, y: 1.1, z: 0.9} @@ -444,6 +154,7 @@ MonoBehaviour: Float: 0.2 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -452,8 +163,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - CustomHistory: [] - Easing: + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -480,11 +190,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.25 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlate.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlate.asset index 68066d9190c..f72ea53559c 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlate.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlate.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: HolographicButtonBackPlate m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorTheme + definitions: + - ClassName: InteractableColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,131 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingBorderColor - - _HoverColorOverride - - _HoverColorOpaqueOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.16078432, g: 0.16078432, b: 0.16078432, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.16078432, g: 0.16078432, b: 0.16078432, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.5188679, g: 0.5188679, b: 0.5188679, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.31764707, g: 0.31764707, b: 0.31764707, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -229,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -237,227 +118,24 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.005} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.004} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingBorderColor + - _HoverColorOverride + - _HoverColorOpaqueOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ + ShaderName: Mixed Reality Toolkit/Standard + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -484,11 +162,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset index d4b2f99e05e..bd740d63e82 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: HolographicButtonBackPlateToggleSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorTheme + definitions: + - ClassName: InteractableColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,329 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingPlaneBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingPlaneBorderColor - - _HoverColorOverride - - _HoverColorOpaqueOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.31764707, g: 0.31764707, b: 0.31764707, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.31764707, g: 0.31764707, b: 0.31764707, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.5188679, g: 0.5188679, b: 0.5188679, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.31764707, g: 0.31764707, b: 0.31764707, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.005} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.004} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -427,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -435,29 +118,24 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingPlaneBorderColor + - _HoverColorOverride + - _HoverColorOpaqueOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ + ShaderName: Mixed Reality Toolkit/Standard + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -484,11 +162,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonFrontPlate.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonFrontPlate.asset index 8ddf296f7a6..44712a15945 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonFrontPlate.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonFrontPlate.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: HolographicButtonFrontPlate m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableShaderTheme + definitions: + - ClassName: InteractableShaderTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableShaderTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Shader - Type: 3 - Values: + stateProperties: + - name: Shader + type: 3 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0.45 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0.45 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,185 +101,27 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + defaultValue: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _BorderLight PropId: 37 - ShaderOptions: - - Name: _AlbedoAlphaMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _AlbedoAssignedAtRuntime - Type: 1 - Range: {x: 0, y: 0} - - Name: _Cutoff - Type: 2 - Range: {x: 0, y: 1} - - Name: _Metallic - Type: 2 - Range: {x: 0, y: 1} - - Name: _Smoothness - Type: 2 - Range: {x: 0, y: 1} - - Name: _EnableChannelMap - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableNormalMap - Type: 1 - Range: {x: 0, y: 0} - - Name: _NormalMapScale - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableEmission - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableTriplanarMapping - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableLocalSpaceTriplanarMapping - Type: 1 - Range: {x: 0, y: 0} - - Name: _TriplanarMappingBlendSharpness - Type: 2 - Range: {x: 1, y: 16} - - Name: _DirectionalLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _SpecularHighlights - Type: 1 - Range: {x: 0, y: 0} - - Name: _Reflections - Type: 1 - Range: {x: 0, y: 0} - - Name: _Refraction - Type: 1 - Range: {x: 0, y: 0} - - Name: _RefractiveIndex - Type: 2 - Range: {x: 0, y: 3} - - Name: _RimLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _RimPower - Type: 2 - Range: {x: 0, y: 8} - - Name: _ClippingPlane - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingSphere - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingBox - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingBorder - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingBorderWidth - Type: 2 - Range: {x: 0.005, y: 1} - - Name: _NearPlaneFade - Type: 1 - Range: {x: 0, y: 0} - - Name: _FadeBeginDistance - Type: 2 - Range: {x: 0.01, y: 10} - - Name: _FadeCompleteDistance - Type: 2 - Range: {x: 0.01, y: 10} - - Name: _HoverLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableHoverColorOverride - Type: 1 - Range: {x: 0, y: 0} - - Name: _HoverLightOpaque - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableHoverColorOpaqueOverride - Type: 1 - Range: {x: 0, y: 0} - - Name: _RoundCorners - Type: 1 - Range: {x: 0, y: 0} - - Name: _RoundCornerRadius - Type: 2 - Range: {x: 0.01, y: 0.5} - - Name: _RoundCornerMargin - Type: 2 - Range: {x: 0, y: 0.5} - - Name: _BorderLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightUsesHoverColor - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightOpaque - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderWidth - Type: 2 - Range: {x: 0, y: 1} - - Name: _BorderMinValue - Type: 2 - Range: {x: 0, y: 1} - - Name: _EdgeSmoothingValue - Type: 2 - Range: {x: 0.0001, y: 0.2} - - Name: _InnerGlow - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnvironmentColoring - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorThreshold - Type: 2 - Range: {x: 0, y: 3} - - Name: _EnvironmentColorIntensity - Type: 2 - Range: {x: 0, y: 1} - - Name: _Mode - Type: 1 - Range: {x: 0, y: 0} - - Name: _CustomMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _SrcBlend - Type: 1 - Range: {x: 0, y: 0} - - Name: _DstBlend - Type: 1 - Range: {x: 0, y: 0} - - Name: _BlendOp - Type: 1 - Range: {x: 0, y: 0} - - Name: _ZTest - Type: 1 - Range: {x: 0, y: 0} - - Name: _ZWrite - Type: 1 - Range: {x: 0, y: 0} - - Name: _ColorWriteMask - Type: 1 - Range: {x: 0, y: 0} - - Name: _CullMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _RenderQueueOverride - Type: 2 - Range: {x: -1, y: 5000} - - Name: _InstancedColor - Type: 1 - Range: {x: 0, y: 0} - - Name: _Stencil - Type: 1 - Range: {x: 0, y: 0} - - Name: _StencilReference - Type: 2 - Range: {x: 0, y: 255} - - Name: _StencilComparison - Type: 1 - Range: {x: 0, y: 0} - - Name: _StencilOperation - Type: 1 - Range: {x: 0, y: 0} + ShaderOptions: [] ShaderOptionNames: - _AlbedoAlphaMode - _AlbedoAssignedAtRuntime @@ -336,206 +182,107 @@ MonoBehaviour: - _StencilReference - _StencilComparison - _StencilOperation - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: + customProperties: [] + easing: + Enabled: 0 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LerpTime: 0.1 + - ClassName: InteractableColorTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, + Microsoft.MixedReality.Toolkit.SDK + stateProperties: + - name: Color + type: 2 + values: + - Name: Default String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} + Color: {r: 0, g: 0, b: 0, a: 1} Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: + - Name: Focus String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} + Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: + - Name: Pressed String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} + Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: + - Name: Disabled String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} + Color: {r: 0, g: 0, b: 0, a: 1} Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + startValue: Name: String: Bool: 0 @@ -543,6 +290,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -551,71 +299,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -623,6 +307,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -631,275 +316,10 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Shader - Type: 3 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0.45 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0.45 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 30 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: - Enabled: 0 - Curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - - Name: InteractableColorTheme - AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, - Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: - - Name: Default - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Focus - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Pressed - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Disabled - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} ShaderOptionNames: - _Color - _EmissiveColor @@ -911,324 +331,9 @@ MonoBehaviour: - _EnvironmentColorX - _EnvironmentColorY - _EnvironmentColorZ - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -1255,11 +360,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonFrontPlateThick.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonFrontPlateThick.asset index 9fdc168ad14..46b721a5871 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonFrontPlateThick.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonFrontPlateThick.asset @@ -12,14 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: HolographicButtonFrontPlateThick m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableShaderTheme - AssemblyQualifiedName: - Properties: - - Name: Shader - Type: 3 - Values: + definitions: + - ClassName: InteractableShaderTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableShaderTheme, + Microsoft.MixedReality.Toolkit.SDK + stateProperties: + - name: Shader + type: 3 + values: - Name: Default String: Bool: 0 @@ -27,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -42,6 +43,7 @@ MonoBehaviour: Float: 0.45 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -57,6 +59,7 @@ MonoBehaviour: Float: 0.45 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -72,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -80,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -88,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -96,6 +101,25 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + defaultValue: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _BorderWidth PropId: 37 ShaderOptions: - Name: _AlbedoAlphaMode @@ -335,206 +359,107 @@ MonoBehaviour: - _StencilReference - _StencilComparison - _StencilOperation - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: + customProperties: [] + easing: + Enabled: 0 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LerpTime: 0.1 + - ClassName: InteractableColorTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, + Microsoft.MixedReality.Toolkit.SDK + stateProperties: + - name: Color + type: 2 + values: + - Name: Default String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} + Color: {r: 0, g: 0, b: 0, a: 1} Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: + - Name: Focus String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} + Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: + - Name: Pressed String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} + Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: + - Name: Disabled String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} + Color: {r: 0, g: 0, b: 0, a: 1} Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + startValue: Name: String: Bool: 0 @@ -542,6 +467,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -550,71 +476,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -622,6 +484,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -630,274 +493,10 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Shader - Type: 3 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0.45 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0.45 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 30 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: - Enabled: 0 - Curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - - Name: InteractableColorTheme - AssemblyQualifiedName: - Properties: - - Name: Color - Type: 2 - Values: - - Name: Default - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Focus - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Pressed - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Disabled - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} ShaderOptionNames: - _Color - _EmissiveColor @@ -909,324 +508,9 @@ MonoBehaviour: - _EnvironmentColorX - _EnvironmentColorY - _EnvironmentColorZ - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -1253,11 +537,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel-Simple.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel-Simple.asset new file mode 100644 index 00000000000..7668577e268 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel-Simple.asset @@ -0,0 +1,212 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: HolographicButtonSeeItSayItLabel-Simple + m_EditorClassIdentifier: + definitions: + - ClassName: InteractableScaleTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableScaleTheme, + Microsoft.MixedReality.Toolkit.SDK + stateProperties: + - name: Scale + type: 6 + values: + - Name: Default + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: Focus + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 1, y: 1, z: 1} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: Pressed + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: PhysicalTouch + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: Grab + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: Gesture + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: Disabled + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + startValue: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + defaultValue: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] + ShaderName: + customProperties: [] + easing: + Enabled: 1 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.9974621 + value: -0.002669083 + inSlope: -0.0024149457 + outSlope: -0.0024149457 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.25344455 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LerpTime: 1 + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel-Simple.asset.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel-Simple.asset.meta new file mode 100644 index 00000000000..d9abf380e65 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel-Simple.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a4ada4b285469047946e8662531da54 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel.asset index fab3d740c63..7bc89080d9a 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/HolographicButtonSeeItSayItLabel.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: HolographicButtonSeeItSayItLabel m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableScaleTheme + definitions: + - ClassName: InteractableScaleTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableScaleTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -88,6 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -103,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -118,6 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -126,7 +132,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -134,6 +140,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,136 +149,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -279,6 +157,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -287,326 +166,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -642,11 +209,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset index 57e0e0155d5..90357ea622d 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: Model_BuckyTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableRotationTheme + definitions: + - ClassName: InteractableRotationTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableRotationTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Rotation - Type: 6 - Values: + stateProperties: + - name: Rotation + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 90, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 270, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,784 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0.7529412, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 0.62734854, b: 0, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.06915272, g: 0.6981132, b: 0.45621789, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1.1, y: 1.1, z: 1.1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0.9, y: 0.9, z: 0.9} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Rotation - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Animator Trigger - Type: 16 - Values: - - Name: - String: Default - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Focus - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Pressed - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Disabled - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: String - Type: 14 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Audio - Type: 11 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -882,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -890,29 +118,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -939,31 +152,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.2 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: - - Name: Default - Index: 0 - Bit: 1 - Value: 0 - ActiveIndex: 0 - - Name: Focus - Index: 1 - Bit: 2 - Value: 0 - ActiveIndex: 1 - - Name: Pressed - Index: 2 - Bit: 4 - Value: 0 - ActiveIndex: 2 - - Name: Disabled - Index: 7 - Bit: 8 - Value: 0 - ActiveIndex: 3 - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset index dd157d98963..3f9c80c4440 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: Model_IcosaTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableShaderTheme + definitions: + - ClassName: InteractableShaderTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableShaderTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Shader - Type: 3 - Values: + stateProperties: + - name: Shader + type: 3 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 1 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 1 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,164 +101,27 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + defaultValue: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _BorderLight PropId: 27 - ShaderOptions: - - Name: _AlbedoAlphaMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _Cutoff - Type: 2 - Range: {x: 0, y: 1} - - Name: _Metallic - Type: 2 - Range: {x: 0, y: 1} - - Name: _Smoothness - Type: 2 - Range: {x: 0, y: 1} - - Name: _EnableChannelMap - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableNormalMap - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableEmission - Type: 1 - Range: {x: 0, y: 0} - - Name: _DirectionalLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _SpecularHighlights - Type: 1 - Range: {x: 0, y: 0} - - Name: _Reflections - Type: 1 - Range: {x: 0, y: 0} - - Name: _Refraction - Type: 1 - Range: {x: 0, y: 0} - - Name: _RefractiveIndex - Type: 2 - Range: {x: 0, y: 3} - - Name: _RimLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _RimPower - Type: 2 - Range: {x: 0, y: 8} - - Name: _ClippingPlane - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingPlaneBorder - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingPlaneBorderWidth - Type: 2 - Range: {x: 0.005, y: 1} - - Name: _NearPlaneFade - Type: 1 - Range: {x: 0, y: 0} - - Name: _FadeBeginDistance - Type: 2 - Range: {x: 0.01, y: 10} - - Name: _FadeCompleteDistance - Type: 2 - Range: {x: 0.01, y: 10} - - Name: _HoverLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableHoverColorOverride - Type: 1 - Range: {x: 0, y: 0} - - Name: _HoverLightOpaque - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableHoverColorOpaqueOverride - Type: 1 - Range: {x: 0, y: 0} - - Name: _RoundCorners - Type: 1 - Range: {x: 0, y: 0} - - Name: _RoundCornerRadius - Type: 2 - Range: {x: 0.01, y: 0.5} - - Name: _RoundCornerMargin - Type: 2 - Range: {x: 0, y: 0.5} - - Name: _BorderLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightUsesHoverColor - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightOpaque - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderWidth - Type: 2 - Range: {x: 0, y: 1} - - Name: _BorderMinValue - Type: 2 - Range: {x: 0, y: 1} - - Name: _EdgeSmoothingValue - Type: 2 - Range: {x: 0.0001, y: 0.2} - - Name: _InnerGlow - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnvironmentColoring - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorThreshold - Type: 2 - Range: {x: 0, y: 3} - - Name: _EnvironmentColorIntensity - Type: 2 - Range: {x: 0, y: 1} - - Name: _Mode - Type: 1 - Range: {x: 0, y: 0} - - Name: _CustomMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _SrcBlend - Type: 1 - Range: {x: 0, y: 0} - - Name: _DstBlend - Type: 1 - Range: {x: 0, y: 0} - - Name: _BlendOp - Type: 1 - Range: {x: 0, y: 0} - - Name: _ZTest - Type: 1 - Range: {x: 0, y: 0} - - Name: _ZWrite - Type: 1 - Range: {x: 0, y: 0} - - Name: _ColorWriteMask - Type: 1 - Range: {x: 0, y: 0} - - Name: _CullMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _RenderQueueOverride - Type: 2 - Range: {x: -1, y: 5000} - - Name: _InstancedColor - Type: 1 - Range: {x: 0, y: 0} - - Name: _Stencil - Type: 1 - Range: {x: 0, y: 0} - - Name: _StencilReference - Type: 2 - Range: {x: 0, y: 255} - - Name: _StencilComparison - Type: 1 - Range: {x: 0, y: 0} - - Name: _StencilOperation - Type: 1 - Range: {x: 0, y: 0} + ShaderOptions: [] ShaderOptionNames: - _AlbedoAlphaMode - _Cutoff @@ -308,148 +175,50 @@ MonoBehaviour: - _StencilReference - _StencilComparison - _StencilOperation - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: + customProperties: [] + easing: + Enabled: 1 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LerpTime: 0.2 + - ClassName: InteractableShaderTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableShaderTheme, + Microsoft.MixedReality.Toolkit.SDK + stateProperties: + - name: Shader + type: 3 + values: + - Name: Default String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -458,13 +227,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: + - Name: Focus String: Bool: 0 Int: 0 - Float: 0 + Float: 0.1 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -473,13 +243,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: + - Name: Pressed String: Bool: 0 Int: 0 - Float: 0 + Float: 0.2 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -488,14 +259,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: + - Name: Disabled String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -504,10 +275,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + startValue: Name: String: Bool: 0 @@ -515,6 +283,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -523,71 +292,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -595,6 +300,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -603,520 +309,10 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _BorderWidth + PropId: 30 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Animator Trigger - Type: 16 - Values: - - Name: - String: Default - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Focus - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Pressed - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Disabled - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Shader - Type: 3 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: - Enabled: 1 - Curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - LerpTime: 0.2 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: - - Name: Default - Index: 0 - Bit: 1 - Value: 0 - ActiveIndex: 0 - - Name: Focus - Index: 1 - Bit: 2 - Value: 0 - ActiveIndex: 1 - - Name: Pressed - Index: 2 - Bit: 4 - Value: 0 - ActiveIndex: 2 - - Name: Disabled - Index: 7 - Bit: 8 - Value: 0 - ActiveIndex: 3 - - Name: InteractableShaderTheme - AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableShaderTheme, - Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Shader - Type: 3 - Values: - - Name: Default - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Focus - String: - Bool: 0 - Int: 0 - Float: 0.1 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Pressed - String: - Bool: 0 - Int: 0 - Float: 0.2 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Disabled - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 30 - ShaderOptions: - - Name: _AlbedoAlphaMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _Cutoff - Type: 2 - Range: {x: 0, y: 1} - - Name: _Metallic - Type: 2 - Range: {x: 0, y: 1} - - Name: _Smoothness - Type: 2 - Range: {x: 0, y: 1} - - Name: _EnableChannelMap - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableNormalMap - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableEmission - Type: 1 - Range: {x: 0, y: 0} - - Name: _DirectionalLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _SpecularHighlights - Type: 1 - Range: {x: 0, y: 0} - - Name: _Reflections - Type: 1 - Range: {x: 0, y: 0} - - Name: _Refraction - Type: 1 - Range: {x: 0, y: 0} - - Name: _RefractiveIndex - Type: 2 - Range: {x: 0, y: 3} - - Name: _RimLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _RimPower - Type: 2 - Range: {x: 0, y: 8} - - Name: _ClippingPlane - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingPlaneBorder - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingPlaneBorderWidth - Type: 2 - Range: {x: 0.005, y: 1} - - Name: _NearPlaneFade - Type: 1 - Range: {x: 0, y: 0} - - Name: _FadeBeginDistance - Type: 2 - Range: {x: 0.01, y: 10} - - Name: _FadeCompleteDistance - Type: 2 - Range: {x: 0.01, y: 10} - - Name: _HoverLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableHoverColorOverride - Type: 1 - Range: {x: 0, y: 0} - - Name: _HoverLightOpaque - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableHoverColorOpaqueOverride - Type: 1 - Range: {x: 0, y: 0} - - Name: _RoundCorners - Type: 1 - Range: {x: 0, y: 0} - - Name: _RoundCornerRadius - Type: 2 - Range: {x: 0.01, y: 0.5} - - Name: _RoundCornerMargin - Type: 2 - Range: {x: 0, y: 0.5} - - Name: _BorderLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightUsesHoverColor - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightOpaque - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderWidth - Type: 2 - Range: {x: 0, y: 1} - - Name: _BorderMinValue - Type: 2 - Range: {x: 0, y: 1} - - Name: _EdgeSmoothingValue - Type: 2 - Range: {x: 0.0001, y: 0.2} - - Name: _InnerGlow - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnvironmentColoring - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorThreshold - Type: 2 - Range: {x: 0, y: 3} - - Name: _EnvironmentColorIntensity - Type: 2 - Range: {x: 0, y: 1} - - Name: _Mode - Type: 1 - Range: {x: 0, y: 0} - - Name: _CustomMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _SrcBlend - Type: 1 - Range: {x: 0, y: 0} - - Name: _DstBlend - Type: 1 - Range: {x: 0, y: 0} - - Name: _BlendOp - Type: 1 - Range: {x: 0, y: 0} - - Name: _ZTest - Type: 1 - Range: {x: 0, y: 0} - - Name: _ZWrite - Type: 1 - Range: {x: 0, y: 0} - - Name: _ColorWriteMask - Type: 1 - Range: {x: 0, y: 0} - - Name: _CullMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _RenderQueueOverride - Type: 2 - Range: {x: -1, y: 5000} - - Name: _InstancedColor - Type: 1 - Range: {x: 0, y: 0} - - Name: _Stencil - Type: 1 - Range: {x: 0, y: 0} - - Name: _StencilReference - Type: 2 - Range: {x: 0, y: 255} - - Name: _StencilComparison - Type: 1 - Range: {x: 0, y: 0} - - Name: _StencilOperation - Type: 1 - Range: {x: 0, y: 0} ShaderOptionNames: - _AlbedoAlphaMode - _Cutoff @@ -1170,522 +366,9 @@ MonoBehaviour: - _StencilReference - _StencilComparison - _StencilOperation - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Animator Trigger - Type: 16 - Values: - - Name: - String: Default - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Focus - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Pressed - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: Disabled - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Shader - Type: 3 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -1712,31 +395,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.2 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: - - Name: Default - Index: 0 - Bit: 1 - Value: 0 - ActiveIndex: 0 - - Name: Focus - Index: 1 - Bit: 2 - Value: 0 - ActiveIndex: 1 - - Name: Pressed - Index: 2 - Bit: 4 - Value: 0 - ActiveIndex: 2 - - Name: Disabled - Index: 7 - Bit: 8 - Value: 0 - ActiveIndex: 3 - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PianoKeyThemeBlack.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PianoKeyThemeBlack.asset index ace5b92256a..5dadc536239 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PianoKeyThemeBlack.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PianoKeyThemeBlack.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PianoKeyThemeBlack m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.02} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,7 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -287,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -295,46 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingBorderColor - - _HoverColorOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: + defaultValue: Name: String: Bool: 0 @@ -342,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -350,11 +332,23 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingBorderColor + - _HoverColorOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ ShaderName: Mixed Reality Toolkit/Standard - History: [] - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -381,11 +375,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.2 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PianoKeyThemeWhite.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PianoKeyThemeWhite.asset index be491a8acd5..ad74c5dbb88 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PianoKeyThemeWhite.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PianoKeyThemeWhite.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PianoKeyThemeWhite m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.02} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,7 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -287,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -295,46 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingBorderColor - - _HoverColorOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: + defaultValue: Name: String: Bool: 0 @@ -342,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -350,11 +332,23 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingBorderColor + - _HoverColorOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ ShaderName: Mixed Reality Toolkit/Standard - History: [] - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -381,11 +375,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.2 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonCubeTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonCubeTheme.asset index 88ee59e0e7e..1a10828968a 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonCubeTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonCubeTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PressableButtonCubeTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,7 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -287,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -295,46 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingBorderColor - - _HoverColorOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: + defaultValue: Name: String: Bool: 0 @@ -342,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -350,11 +332,23 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingBorderColor + - _HoverColorOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ ShaderName: Mixed Reality Toolkit/Standard - History: [] - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -381,11 +375,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonFrontPlate.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonFrontPlate.asset index d68f05f112c..6b1536f2d91 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonFrontPlate.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonFrontPlate.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PressableButtonFrontPlate m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableOffsetTheme + definitions: + - ClassName: InteractableOffsetTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableOffsetTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Offset - Type: 6 - Values: + stateProperties: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.008} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -88,6 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -103,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -118,6 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -126,7 +132,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -134,6 +140,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,631 +149,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.016} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Shader - Type: 3 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 6 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 45 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Material - Type: 10 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -774,6 +157,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -782,29 +166,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -831,11 +200,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.03 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonFrontPlatePressed.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonFrontPlatePressed.asset index bfd87b78878..6469d866ed8 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonFrontPlatePressed.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonFrontPlatePressed.asset @@ -12,14 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PressableButtonFrontPlatePressed m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableShaderTheme - AssemblyQualifiedName: - Properties: - - Name: Shader - Type: 3 - Values: + definitions: + - ClassName: InteractableShaderTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableShaderTheme, + Microsoft.MixedReality.Toolkit.SDK + stateProperties: + - name: Shader + type: 3 + values: - Name: Default String: Bool: 0 @@ -27,6 +27,7 @@ MonoBehaviour: Float: 32 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -42,6 +43,7 @@ MonoBehaviour: Float: 32 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -57,6 +59,7 @@ MonoBehaviour: Float: 2 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -72,6 +75,7 @@ MonoBehaviour: Float: 32 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -80,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -88,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -96,212 +101,27 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + defaultValue: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _InnerGlowPower PropId: 45 - ShaderOptions: - - Name: _AlbedoAlphaMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _AlbedoAssignedAtRuntime - Type: 1 - Range: {x: 0, y: 0} - - Name: _Cutoff - Type: 2 - Range: {x: 0, y: 1} - - Name: _Metallic - Type: 2 - Range: {x: 0, y: 1} - - Name: _Smoothness - Type: 2 - Range: {x: 0, y: 1} - - Name: _EnableChannelMap - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableNormalMap - Type: 1 - Range: {x: 0, y: 0} - - Name: _NormalMapScale - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableEmission - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableTriplanarMapping - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableLocalSpaceTriplanarMapping - Type: 1 - Range: {x: 0, y: 0} - - Name: _TriplanarMappingBlendSharpness - Type: 2 - Range: {x: 1, y: 16} - - Name: _DirectionalLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _SpecularHighlights - Type: 1 - Range: {x: 0, y: 0} - - Name: _SphericalHarmonics - Type: 1 - Range: {x: 0, y: 0} - - Name: _Reflections - Type: 1 - Range: {x: 0, y: 0} - - Name: _Refraction - Type: 1 - Range: {x: 0, y: 0} - - Name: _RefractiveIndex - Type: 2 - Range: {x: 0, y: 3} - - Name: _RimLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _RimPower - Type: 2 - Range: {x: 0, y: 8} - - Name: _VertexColors - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingPlane - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingSphere - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingBox - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingBorder - Type: 1 - Range: {x: 0, y: 0} - - Name: _ClippingBorderWidth - Type: 2 - Range: {x: 0.005, y: 1} - - Name: _NearPlaneFade - Type: 1 - Range: {x: 0, y: 0} - - Name: _NearLightFade - Type: 1 - Range: {x: 0, y: 0} - - Name: _FadeBeginDistance - Type: 2 - Range: {x: 0.01, y: 10} - - Name: _FadeCompleteDistance - Type: 2 - Range: {x: 0.01, y: 10} - - Name: _HoverLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnableHoverColorOverride - Type: 1 - Range: {x: 0, y: 0} - - Name: _ProximityLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _RoundCorners - Type: 1 - Range: {x: 0, y: 0} - - Name: _RoundCornerRadius - Type: 2 - Range: {x: 0, y: 0.5} - - Name: _RoundCornerMargin - Type: 2 - Range: {x: 0, y: 0.5} - - Name: _BorderLight - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightUsesHoverColor - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightReplacesAlbedo - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderLightOpaque - Type: 1 - Range: {x: 0, y: 0} - - Name: _BorderWidth - Type: 2 - Range: {x: 0, y: 1} - - Name: _BorderMinValue - Type: 2 - Range: {x: 0, y: 1} - - Name: _EdgeSmoothingValue - Type: 2 - Range: {x: 0.0001, y: 0.2} - - Name: _BorderLightOpaqueAlpha - Type: 2 - Range: {x: 0, y: 1} - - Name: _InnerGlow - Type: 1 - Range: {x: 0, y: 0} - - Name: _InnerGlowPower - Type: 2 - Range: {x: 2, y: 32} - - Name: _Iridescence - Type: 1 - Range: {x: 0, y: 0} - - Name: _IridescenceIntensity - Type: 2 - Range: {x: 0, y: 1} - - Name: _IridescenceThreshold - Type: 2 - Range: {x: 0, y: 1} - - Name: _IridescenceAngle - Type: 2 - Range: {x: -0.78, y: 0.78} - - Name: _EnvironmentColoring - Type: 1 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorThreshold - Type: 2 - Range: {x: 0, y: 3} - - Name: _EnvironmentColorIntensity - Type: 2 - Range: {x: 0, y: 1} - - Name: _Mode - Type: 1 - Range: {x: 0, y: 0} - - Name: _CustomMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _SrcBlend - Type: 1 - Range: {x: 0, y: 0} - - Name: _DstBlend - Type: 1 - Range: {x: 0, y: 0} - - Name: _BlendOp - Type: 1 - Range: {x: 0, y: 0} - - Name: _ZTest - Type: 1 - Range: {x: 0, y: 0} - - Name: _ZWrite - Type: 1 - Range: {x: 0, y: 0} - - Name: _ColorWriteMask - Type: 1 - Range: {x: 0, y: 0} - - Name: _CullMode - Type: 1 - Range: {x: 0, y: 0} - - Name: _RenderQueueOverride - Type: 2 - Range: {x: -1, y: 5000} - - Name: _InstancedColor - Type: 1 - Range: {x: 0, y: 0} - - Name: _Stencil - Type: 1 - Range: {x: 0, y: 0} - - Name: _StencilReference - Type: 2 - Range: {x: 0, y: 255} - - Name: _StencilComparison - Type: 1 - Range: {x: 0, y: 0} - - Name: _StencilOperation - Type: 1 - Range: {x: 0, y: 0} + ShaderOptions: [] ShaderOptionNames: - _AlbedoAlphaMode - _AlbedoAssignedAtRuntime @@ -371,324 +191,9 @@ MonoBehaviour: - _StencilReference - _StencilComparison - _StencilOperation - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -715,11 +220,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.5 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 0} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonToggleStateOff.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonToggleStateOff.asset index 166d4065510..1852ecc8a59 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonToggleStateOff.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonToggleStateOff.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PressableButtonToggleStateOff m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableActivateTheme + definitions: + - ClassName: InteractableActivateTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Activate - Type: 15 - Values: + stateProperties: + - name: Activate + type: 15 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -88,6 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -103,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -118,6 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -126,7 +132,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -134,6 +140,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,676 +149,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.008} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Shader - Type: 3 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 6 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 45 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Material - Type: 10 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -819,6 +157,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -827,29 +166,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -876,11 +200,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.03 - NoEasing: 1 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonToggleStateOn.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonToggleStateOn.asset index d9d4835e32c..b007ea59d5e 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonToggleStateOn.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableButtonToggleStateOn.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PressableButtonToggleStateOn m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableActivateTheme + definitions: + - ClassName: InteractableActivateTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Activate - Type: 15 - Values: + stateProperties: + - name: Activate + type: 15 + values: - Name: Default String: Bool: 1 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -88,6 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -103,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -118,6 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -126,7 +132,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -134,6 +140,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,676 +149,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.008} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Shader - Type: 3 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 6 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 32 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 45 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Material - Type: 10 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -819,6 +157,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -827,29 +166,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -876,11 +200,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.03 - NoEasing: 1 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableRoundButton.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableRoundButton.asset index 0460b735a02..3d1de15d402 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableRoundButton.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableRoundButton.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PressableRoundButton m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableOffsetTheme + definitions: + - ClassName: InteractableOffsetTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableOffsetTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Offset - Type: 6 - Values: + stateProperties: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.01} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,388 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.01} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -486,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -494,29 +118,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -543,11 +152,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.2 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 0} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableRoundButtonColor.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableRoundButtonColor.asset index 232b28ff848..691e6552217 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableRoundButtonColor.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/PressableRoundButtonColor.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: PressableRoundButtonColor m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -88,6 +91,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -103,6 +107,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -118,6 +123,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -126,7 +132,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -134,6 +140,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,10 +149,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -153,6 +157,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -161,10 +166,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -187,6 +198,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -202,6 +214,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.24} @@ -217,6 +230,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -232,6 +246,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -247,6 +262,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -262,6 +278,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -270,7 +287,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -278,6 +295,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -286,10 +304,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -297,6 +312,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -305,10 +321,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -316,6 +337,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -331,6 +353,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -346,6 +369,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.24} @@ -361,6 +385,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -376,6 +401,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -391,6 +417,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -406,6 +433,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -414,174 +442,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _ProximityLightCenterColorOverride - Type: 0 - Range: {x: 0, y: 0} - - Name: _ProximityLightMiddleColorOverride - Type: 0 - Range: {x: 1, y: 0} - - Name: _ProximityLightOuterColorOverride - Type: 0 - Range: {x: 0, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingBorderColor - - _HoverColorOverride - - _ProximityLightCenterColorOverride - - _ProximityLightMiddleColorOverride - - _ProximityLightOuterColorOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0.59923285, b: 0.8113208, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.08627451, g: 0.8470589, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.9339623, g: 0.7471792, b: 0.47138664, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + startValue: Name: String: Bool: 0 @@ -589,6 +450,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -597,71 +459,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.24} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -669,6 +467,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -677,371 +476,26 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Texture - Type: 9 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingBorderColor + - _HoverColorOverride + - _ProximityLightCenterColorOverride + - _ProximityLightMiddleColorOverride + - _ProximityLightOuterColorOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ + ShaderName: Mixed Reality Toolkit/Standard + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -1068,11 +522,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.1 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/TextureTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/TextureTheme.asset new file mode 100644 index 00000000000..a623674d08e --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/TextureTheme.asset @@ -0,0 +1,171 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: TextureTheme + m_EditorClassIdentifier: + definitions: + - ClassName: InteractableTextureTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableTextureTheme, + Microsoft.MixedReality.Toolkit.SDK, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + stateProperties: + - name: Texture + type: 9 + values: + - Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 2800000, guid: e2cd08a4d181dcc4ea7beb0992656c7e, type: 3} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 2800000, guid: c4ef4f1a21329834b834a089722652f1, type: 3} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 2800000, guid: c4ef4f1a21329834b834a089722652f1, type: 3} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 2800000, guid: e2cd08a4d181dcc4ea7beb0992656c7e, type: 3} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + - Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + startValue: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + defaultValue: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + Shader: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {r: 0, g: 0, b: 0, a: 0} + Quaternion: {x: 0, y: 0, z: 0, w: 0} + AudioClip: {fileID: 0} + Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _MainTex + PropId: -1 + ShaderOptions: [] + ShaderOptionNames: [] + ShaderName: + customProperties: [] + easing: + Enabled: 0 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LerpTime: 0.5 + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/TextureTheme.asset.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/TextureTheme.asset.meta new file mode 100644 index 00000000000..86a8a9366d9 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/TextureTheme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10c315df64dc56e44bd2e3c8949e08fa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleBackground.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleBackground.asset index 97d82976851..b264ae663ab 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleBackground.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleBackground.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleBackground m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorTheme + definitions: + - ClassName: InteractableColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,131 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - - Name: _EmissiveColor - Type: 0 - Range: {x: 0, y: 0} - - Name: _RimColor - Type: 0 - Range: {x: 0.5, y: 0.5} - - Name: _ClippingPlaneBorderColor - Type: 0 - Range: {x: 0.2, y: 0} - - Name: _HoverColorOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _HoverColorOpaqueOverride - Type: 0 - Range: {x: 1, y: 1} - - Name: _InnerGlowColor - Type: 0 - Range: {x: 1, y: 1} - - Name: _EnvironmentColorX - Type: 0 - Range: {x: 0, y: 0} - - Name: _EnvironmentColorY - Type: 0 - Range: {x: 1, y: 0} - - Name: _EnvironmentColorZ - Type: 0 - Range: {x: 0, y: 1} - ShaderOptionNames: - - _Color - - _EmissiveColor - - _RimColor - - _ClippingPlaneBorderColor - - _HoverColorOverride - - _HoverColorOpaqueOverride - - _InnerGlowColor - - _EnvironmentColorX - - _EnvironmentColorY - - _EnvironmentColorZ - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: Mixed Reality Toolkit/Standard - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.28627452, g: 0.28627452, b: 0.28627452, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.28627452, g: 0.28627452, b: 0.28627452, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -229,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -237,227 +118,24 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + - _EmissiveColor + - _RimColor + - _ClippingPlaneBorderColor + - _HoverColorOverride + - _HoverColorOpaqueOverride + - _InnerGlowColor + - _EnvironmentColorX + - _EnvironmentColorY + - _EnvironmentColorZ + ShaderName: Mixed Reality Toolkit/Standard + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -484,11 +162,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleBackgroundSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleBackgroundSelected.asset index 1535d13d38e..3bde2211774 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleBackgroundSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleBackgroundSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleBackgroundSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: InteractableColorTheme + definitions: + - ClassName: InteractableColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Color - Type: 2 - Values: + stateProperties: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,289 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.1764706, g: 0.49019608, b: 0.6039216, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.754361, g: 0.93816495, b: 0.9811321, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.6, g: 0.9019608, b: 0.972549, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0.39215687, g: 0.39215687, b: 0.39215687, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: -0.007} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -387,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -395,29 +118,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -444,11 +152,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleButton.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleButton.asset index b18e9a20421..b2362e4d230 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleButton.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleButton.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleButton m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.004} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.002} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleButtonSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleButtonSelected.asset index 537d2c9a5ea..d87ef176bcc 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleButtonSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleButtonSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleButtonSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.004} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.002} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleDot.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleDot.asset index 4ebb01d7739..a0ed241327d 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleDot.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleDot.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleDot m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.004} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.002} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleDotSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleDotSelected.asset index dadab195940..3543f487d4f 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleDotSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleDotSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleDotSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.02, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.02, y: 0, z: -0.005} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.02, y: 0, z: 0.004} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.02, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleIcon.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleIcon.asset index 82c2b501997..03f821355d1 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleIcon.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleIcon.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleIcon m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.004} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.002} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,51 +332,56 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: + Enabled: 1 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + LerpTime: 0.3 + - ClassName: InteractableActivateTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, + Microsoft.MixedReality.Toolkit.SDK + stateProperties: + - name: Activate + type: 15 + values: + - Name: Default String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -452,13 +390,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: + - Name: Focus String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -467,13 +406,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: + - Name: Pressed String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -482,14 +422,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: + - Name: Disabled String: Bool: 0 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -498,10 +438,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + startValue: Name: String: Bool: 0 @@ -509,6 +446,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -517,71 +455,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -589,6 +463,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -597,663 +472,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: - Enabled: 1 - Curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 2 - outSlope: 2 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 0 - LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - - Name: InteractableActivateTheme - AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, - Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Activate - Type: 15 - Values: - - Name: Default - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Focus - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Pressed - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Disabled - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Audio - Type: 11 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -1280,11 +506,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.5 - NoEasing: 1 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleIconSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleIconSelected.asset index aa663f43682..9a95cc16370 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleIconSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleIconSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleIconSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.004} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.002} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,51 +332,56 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: + Enabled: 1 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + LerpTime: 0.3 + - ClassName: InteractableActivateTheme + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, + Microsoft.MixedReality.Toolkit.SDK + stateProperties: + - name: Activate + type: 15 + values: + - Name: Default String: - Bool: 0 + Bool: 1 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -452,13 +390,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: + - Name: Focus String: - Bool: 0 + Bool: 1 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -467,13 +406,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - - Name: + - Name: Pressed String: - Bool: 0 + Bool: 1 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -482,14 +422,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: + - Name: Disabled String: - Bool: 0 + Bool: 1 Int: 0 Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -498,10 +438,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + startValue: Name: String: Bool: 0 @@ -509,6 +446,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -517,71 +455,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -589,6 +463,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -597,663 +472,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: PropId: 0 ShaderOptions: [] ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: - Enabled: 1 - Curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 2 - outSlope: 2 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0.33333334 - outWeight: 0.33333334 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 0 - LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - - Name: InteractableActivateTheme - AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableActivateTheme, - Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Activate - Type: 15 - Values: - - Name: Default - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Focus - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Pressed - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: Disabled - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Activate - Type: 15 - Values: - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 1 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Audio - Type: 11 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 0 Curve: serializedVersion: 2 @@ -1280,11 +506,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.5 - NoEasing: 1 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleLabel.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleLabel.asset index fa32fbd9f35..7c1c905d789 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleLabel.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleLabel.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleLabel m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.003} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.003} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleLabelSelected.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleLabelSelected.asset index 7d5af98ddbe..03344edcf35 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleLabelSelected.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/ToggleLabelSelected.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: ToggleLabelSelected m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: -0.003} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0.003} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,30 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: - - Name: _Color - Type: 0 - Range: {x: 1, y: 1} - ShaderOptionNames: - - _Color - Default: + startValue: Name: String: Bool: 0 @@ -310,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -318,72 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar - History: - - Name: Color - Type: 2 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 1, g: 1, b: 1, a: 1} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: + defaultValue: Name: String: Bool: 0 @@ -391,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -399,227 +332,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color PropId: 0 ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Offset - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - - Name: Scale - Type: 6 - Values: - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 1, y: 1, z: 1} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - StartValue: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: - Name: - String: - Bool: 0 - Int: 0 - Float: 0 - Texture: {fileID: 0} - Material: {fileID: 0} - GameObject: {fileID: 0} - Vector2: {x: 0, y: 0} - Vector3: {x: 0, y: 0, z: 0} - Vector4: {x: 0, y: 0, z: 0, w: 0} - Color: {r: 0, g: 0, b: 0, a: 0} - Quaternion: {x: 0, y: 0, z: 0, w: 0} - AudioClip: {fileID: 0} - Animation: {fileID: 0} - ShaderName: - CustomSettings: [] - CustomHistory: [] - Easing: + ShaderOptionNames: + - _Color + ShaderName: MixedRealityToolkit/Examples/UnlitTriplanar + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -646,11 +367,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 0 LerpTime: 0.3 - NoEasing: 0 - IsValid: 1 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/balloonTheme.asset b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/balloonTheme.asset index aa221e13bd8..932a305a35e 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/balloonTheme.asset +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Themes/balloonTheme.asset @@ -12,15 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} m_Name: balloonTheme m_EditorClassIdentifier: - Name: - Settings: - - Name: ScaleOffsetColorTheme + definitions: + - ClassName: ScaleOffsetColorTheme AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.ScaleOffsetColorTheme, Microsoft.MixedReality.Toolkit.SDK - Properties: - - Name: Scale - Type: 6 - Values: + stateProperties: + - name: Scale + type: 6 + values: - Name: Default String: Bool: 0 @@ -28,6 +27,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -43,6 +43,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1.1, y: 1.1, z: 1.1} @@ -58,6 +59,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0.9, y: 0.9, z: 0.9} @@ -73,6 +75,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 1, y: 1, z: 1} @@ -81,7 +84,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -89,6 +92,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -97,10 +101,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -108,6 +109,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -116,10 +118,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Offset - Type: 6 - Values: + - name: Offset + type: 6 + values: - Name: Default String: Bool: 0 @@ -127,6 +134,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -142,6 +150,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -157,6 +166,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -172,6 +182,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -180,7 +191,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -188,6 +199,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -196,10 +208,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -207,6 +216,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -215,10 +225,15 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 0} + shaderPropertyName: + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - - Name: Color - Type: 2 - Values: + - name: Color + type: 2 + values: - Name: Default String: Bool: 0 @@ -226,6 +241,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -241,6 +257,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -256,6 +273,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -271,6 +289,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -279,7 +298,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - StartValue: + startValue: Name: String: Bool: 0 @@ -287,6 +306,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -295,10 +315,7 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} - PropId: 0 - ShaderOptions: [] - ShaderOptionNames: [] - Default: + defaultValue: Name: String: Bool: 0 @@ -306,6 +323,7 @@ MonoBehaviour: Float: 0 Texture: {fileID: 0} Material: {fileID: 0} + Shader: {fileID: 0} GameObject: {fileID: 0} Vector2: {x: 0, y: 0} Vector3: {x: 0, y: 0, z: 0} @@ -314,11 +332,14 @@ MonoBehaviour: Quaternion: {x: 0, y: 0, z: 0, w: 0} AudioClip: {fileID: 0} Animation: {fileID: 0} + targetShader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + shaderPropertyName: _Color + PropId: 0 + ShaderOptions: [] + ShaderOptionNames: [] ShaderName: - History: [] - CustomSettings: [] - CustomHistory: [] - Easing: + customProperties: [] + easing: Enabled: 1 Curve: serializedVersion: 2 @@ -345,11 +366,4 @@ MonoBehaviour: m_PostInfinity: 2 m_RotationOrder: 4 LerpTime: 0.1 - NoEasing: 0 - IsValid: 0 - ThemeTarget: - Properties: [] - Target: {fileID: 0} - States: [] - CustomSettings: [] - States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + states: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBox.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBox.mat index dde50f399bf..7ecc669bc11 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBox.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBox.mat @@ -41,6 +41,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 1 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -66,6 +67,7 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 @@ -73,8 +75,10 @@ Material: - _FadeBeginDistance: 0.01 - _FadeCompleteDistance: 0.18 - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _HoverLight: 1 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 14.8 - _InstancedColor: 0 @@ -89,6 +93,7 @@ Material: - _NearPlaneFadeReverse: 1 - _NormalMapScale: 1 - _ProximityLight: 1 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -110,6 +115,7 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 @@ -125,4 +131,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 0.3962264, g: 0.3962264, b: 0.3962264, a: 1} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBoxHandleBlueGrabbed.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBoxHandleBlueGrabbed.mat index 89af4ab9d33..614194ef606 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBoxHandleBlueGrabbed.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBoxHandleBlueGrabbed.mat @@ -78,6 +78,7 @@ Material: - _AlbedoAlphaSmoothness: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -108,17 +109,21 @@ Material: - _EnableLightMap: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.46 - _EnvironmentColorThreshold: 1.46 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 1 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 1 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -128,11 +133,14 @@ Material: - _IridescenceThreshold: 0.05 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -154,6 +162,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -169,4 +182,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 0.28627455, g: 0.5784523, b: 1, a: 0.2784314} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBoxHandleWhite.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBoxHandleWhite.mat index 9035f182ef3..fca75f1ee10 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBoxHandleWhite.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/BoundingBoxHandleWhite.mat @@ -78,6 +78,7 @@ Material: - _AlbedoAlphaSmoothness: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -108,17 +109,21 @@ Material: - _EnableLightMap: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.46 - _EnvironmentColorThreshold: 1.46 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 1 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 1 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -128,11 +133,14 @@ Material: - _IridescenceThreshold: 0.05 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 1 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -154,6 +162,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -169,4 +182,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.78431374} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/UnityUIBackground.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/UnityUIBackground.mat index 51be868d9a8..98ee927f086 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/UnityUIBackground.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Materials/UnityUIBackground.mat @@ -154,6 +154,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Meshes/Cursors/Materials/Light.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Meshes/Cursors/Materials/Light.mat index 519a61707dd..771c0f4c007 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Meshes/Cursors/Materials/Light.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Meshes/Cursors/Materials/Light.mat @@ -72,6 +72,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -98,6 +99,7 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 @@ -105,10 +107,12 @@ Material: - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -124,6 +128,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -147,6 +152,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 @@ -162,4 +168,7 @@ Material: - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Meshes/Cursors/Materials/Shadow.mat b/Assets/MixedRealityToolkit.SDK/Features/UX/Meshes/Cursors/Materials/Shadow.mat index 34c36eab708..07b258725c2 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Meshes/Cursors/Materials/Shadow.mat +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Meshes/Cursors/Materials/Shadow.mat @@ -72,6 +72,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -98,6 +99,7 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 @@ -105,10 +107,12 @@ Material: - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -124,6 +128,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -147,6 +152,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 @@ -162,4 +168,7 @@ Material: - _EnvironmentColorZ: {r: 0, g: 0, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Panels/ToggleFeaturesPanel.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Panels/ToggleFeaturesPanel.prefab index 9df53690f0e..8ac8bf8f77e 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Panels/ToggleFeaturesPanel.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Panels/ToggleFeaturesPanel.prefab @@ -1,5 +1,292 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &1203732838615583294 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1320635252184296656} + - component: {fileID: 8676387434092084015} + - component: {fileID: 5967704869708727891} + m_Layer: 0 + m_Name: GrabVisualCueVerticalRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1320635252184296656 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203732838615583294} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.1075, y: 0.012699999, z: -0.001} + m_LocalScale: {x: 0.0034266084, y: 0.023154724, z: 0.0039000595} + m_Children: [] + m_Father: {fileID: 13635054967816160} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8676387434092084015 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203732838615583294} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5967704869708727891 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203732838615583294} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e28b3473906c8764a948650d42b975c1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &2250321181792910202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7175932055632064994} + - component: {fileID: 6489359697116138686} + m_Layer: 0 + m_Name: ButtonCollection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7175932055632064994 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2250321181792910202} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0356, y: 0.0126, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2788573366228284988} + - {fileID: 3559032651836885711} + - {fileID: 6325538425937753157} + - {fileID: 4305907100017388415} + m_Father: {fileID: 8503270331930508642} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6489359697116138686 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2250321181792910202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf12ee76e7e00a44a9a84256760020e6, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreInactiveTransforms: 1 + sortType: 0 + surfaceType: 1 + orientType: 0 + layout: 0 + radius: 2 + radialRange: 180 + distance: 0 + rows: 1 + cellWidth: 0.032 + cellHeight: 0.032 +--- !u!65 &5374263260114166598 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2924503655918868814} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 0.99999994, z: 1} + m_Center: {x: 0.00000004856583, y: 0, z: 3.0616168e-17} +--- !u!114 &93299919385884468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2924503655918868814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5afd5316c63705643b3daba5a6e923bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTetherWhenManipulating: 1 +--- !u!114 &542117415920781033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2924503655918868814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5afd5316c63705643b3daba5a6e923bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowTetherWhenManipulating: 1 +--- !u!114 &6943337177222387468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2924503655918868814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 03daa81ea5f685f4ebf6e32038d058ca, type: 3} + m_Name: + m_EditorClassIdentifier: + hostTransform: {fileID: 8503270331930508642} + manipulationType: 2 + twoHandedManipulationType: 5 + allowFarManipulation: 1 + oneHandRotationModeNear: 6 + oneHandRotationModeFar: 6 + releaseBehavior: 3 + constraintOnRotation: 2 + constraintOnMovement: 0 + smoothingActive: 1 + smoothingAmountOneHandManip: 0.001 + OnManipulationStarted: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1262640991058816982} + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 2100000, guid: 16526572b35ecaa4ba781a0bff18ab12, + type: 2} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 3183098002564305489} + m_MethodName: set_enabled + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 6111504088444772018} + m_MethodName: SetToggled + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + - m_Target: {fileID: 4529492485766667979} + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 72d90092d0f1a734eb1cfcf71b8fa2e4, + type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: Microsoft.MixedReality.Toolkit.UI.ManipulationEvent, Microsoft.MixedReality.Toolkit.SDK, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + OnManipulationEnded: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1262640991058816982} + m_MethodName: set_material + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 2100000, guid: ec72a3a105768f746b556a8dfdae61a8, + type: 2} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Material, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 4529492485766667979} + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: ec33d8a6027c1574390812966f8aef94, + type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: Microsoft.MixedReality.Toolkit.UI.ManipulationEvent, Microsoft.MixedReality.Toolkit.SDK, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + OnHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Microsoft.MixedReality.Toolkit.UI.ManipulationEvent, Microsoft.MixedReality.Toolkit.SDK, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Microsoft.MixedReality.Toolkit.UI.ManipulationEvent, Microsoft.MixedReality.Toolkit.SDK, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!1 &4943773361295851263 GameObject: m_ObjectHideFlags: 0 @@ -13,8 +300,8 @@ GameObject: - component: {fileID: 3673227729376072232} - component: {fileID: 958447895517940439} - component: {fileID: 3183098002564305489} - - component: {fileID: 3232451984617828042} - component: {fileID: 1900320861033997991} + - component: {fileID: 4529492485766667979} m_Layer: 0 m_Name: ToggleFeaturesPanel m_TagString: Untagged @@ -30,16 +317,14 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4943773361295851263} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.0216, y: -0.3484, z: -0.6497} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 4467977233900039076} - - {fileID: 2788573366228284988} - - {fileID: 3559032651836885711} - - {fileID: 6325538425937753157} - - {fileID: 4305907100017388415} - - {fileID: 391794986452234272} - - {fileID: 1430872464373691942} + - {fileID: 7175932055632064994} + - {fileID: 5650399960645272298} + - {fileID: 13635054967816160} + - {fileID: 3716424187809740528} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -135,15 +420,15 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.3 - rotateLerpTime: 0.3 + moveLerpTime: 0.5 + rotateLerpTime: 0.5 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 referenceDirection: 1 - minDistance: 0.4 - maxDistance: 0.8 + minDistance: 0.3 + maxDistance: 0.6 minViewDegrees: 0 maxViewDegrees: 15 aspectV: 1 @@ -152,7 +437,7 @@ MonoBehaviour: useFixedVerticalPosition: 1 fixedVerticalPosition: -0.4 orientToReferenceDirection: 0 ---- !u!114 &3232451984617828042 +--- !u!114 &1900320861033997991 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -161,22 +446,105 @@ MonoBehaviour: m_GameObject: {fileID: 4943773361295851263} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2d1fea68463e4e84b86c395b654f950d, type: 3} + m_Script: {fileID: 11500000, guid: 05bf489b30ac3e7419b1924c4a055b29, type: 3} m_Name: m_EditorClassIdentifier: - visualizationObject: {fileID: 0} ---- !u!114 &1900320861033997991 -MonoBehaviour: +--- !u!82 &4529492485766667979 +AudioSource: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4943773361295851263} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 05bf489b30ac3e7419b1924c4a055b29, type: 3} - m_Name: - m_EditorClassIdentifier: + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 --- !u!1 &5160907477204597137 GameObject: m_ObjectHideFlags: 0 @@ -205,7 +573,7 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5160907477204597137} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.0069} + m_LocalPosition: {x: 0, y: 0, z: 0.008} m_LocalScale: {x: 0.0064073736, y: 0.0064073736, z: 0.0064073736} m_Children: [] m_Father: {fileID: 8503270331930508642} @@ -213,7 +581,7 @@ RectTransform: 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.0032999925, y: 0.0273} + m_AnchoredPosition: {x: 0.02, y: 0.0506} m_SizeDelta: {x: 20, y: 5} m_Pivot: {x: 0.5, y: 0.5} --- !u!23 &996862266752652201 @@ -233,7 +601,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 21340371490990018, guid: afc8299d5d5bbd440a0616c8ecbc7217, type: 2} + - {fileID: 21202819797275496, guid: 6a84f857bec7e7345843ae29404c57ce, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -291,8 +659,8 @@ MonoBehaviour: Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_text: Toggle Features m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: afc8299d5d5bbd440a0616c8ecbc7217, type: 2} - m_sharedMaterial: {fileID: 21340371490990018, guid: afc8299d5d5bbd440a0616c8ecbc7217, + m_fontAsset: {fileID: 11400000, guid: 6a84f857bec7e7345843ae29404c57ce, type: 2} + m_sharedMaterial: {fileID: 21202819797275496, guid: 6a84f857bec7e7345843ae29404c57ce, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} @@ -318,15 +686,14 @@ MonoBehaviour: m_outlineColor: serializedVersion: 2 rgba: 4278190080 - m_fontSize: 18 - m_fontSizeBase: 18 + m_fontSize: 12 + m_fontSizeBase: 12 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 m_textAlignment: 257 - m_isAlignmentEnumConverted: 1 m_characterSpacing: 0 m_wordSpacing: 0 m_lineSpacing: 0 @@ -353,10 +720,11 @@ MonoBehaviour: m_verticalMapping: 0 m_uvLineOffset: 0 m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 m_firstVisibleCharacter: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: -24.667788, w: 0.1563147} + m_margin: {x: 0, y: 1.1615484, z: 0.9536365, w: 1.6841211} m_textInfo: textComponent: {fileID: 5057653355905261972} characterCount: 15 @@ -367,12 +735,9 @@ MonoBehaviour: lineCount: 1 pageCount: 1 materialCount: 1 - m_havePropertiesChanged: 0 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_spriteAnimator: {fileID: 0} - m_isInputParsingRequired: 0 - m_inputSource: 0 m_hasFontAssetChanged: 0 m_renderer: {fileID: 996862266752652201} m_subTextObjects: @@ -385,127 +750,297 @@ MonoBehaviour: - {fileID: 0} - {fileID: 0} m_maskType: 0 ---- !u!1001 &958447893780406897 -PrefabInstance: +--- !u!1 &5362877158012995877 +GameObject: m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 8503270331930508642} - m_Modifications: - - target: {fileID: 538639403742340272, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_Name - value: Backplate - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalPosition.x - value: 0.010599993 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalPosition.y - value: 0.0085 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_RootOrder - value: 5 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalScale.x - value: 1.2465076 - objectReference: {fileID: 0} - - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalScale.y - value: 2.5137935 - objectReference: {fileID: 0} - - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalScale.x - value: 0.17 - objectReference: {fileID: 0} - - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - propertyPath: m_LocalPosition.x - value: 0.0188 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 9215a7c858170d74fb2257375d5feaf1, type: 3} ---- !u!4 &391794986452234272 stripped + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 743095499168569790} + - component: {fileID: 8268670497717609886} + - component: {fileID: 3451132850374947041} + m_Layer: 0 + m_Name: GrabVisualCueVerticalLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &743095499168569790 Transform: - m_CorrespondingSourceObject: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, - type: 3} - m_PrefabInstance: {fileID: 958447893780406897} + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5362877158012995877} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.03571999, y: 0.012699999, z: -0.001} + m_LocalScale: {x: 0.0034266084, y: 0.023154724, z: 0.0039000595} + m_Children: [] + m_Father: {fileID: 13635054967816160} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8268670497717609886 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5362877158012995877} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3451132850374947041 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5362877158012995877} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e28b3473906c8764a948650d42b975c1, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &5678401236566999267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 857856027920548274} + - component: {fileID: 509432306915370466} + - component: {fileID: 6674770707037514464} + m_Layer: 0 + m_Name: GrabVisualCueHorizontalTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &857856027920548274 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5678401236566999267} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0355, y: 0.0362, z: -0.001} + m_LocalScale: {x: 0.074928366, y: 0.0036311317, z: 0.009433999} + m_Children: [] + m_Father: {fileID: 13635054967816160} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &509432306915370466 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5678401236566999267} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6674770707037514464 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} ---- !u!1001 &958447894271004644 + m_GameObject: {fileID: 5678401236566999267} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 13a6bafb89ca6414895d965b2fdb2041, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &6079912339959148644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 13635054967816160} + m_Layer: 0 + m_Name: GravVisualCue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &13635054967816160 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6079912339959148644} + 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: 743095499168569790} + - {fileID: 1320635252184296656} + - {fileID: 857856027920548274} + - {fileID: 2787721312075970460} + m_Father: {fileID: 8503270331930508642} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9210019406430209719 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2787721312075970460} + - component: {fileID: 1208947650950215786} + - component: {fileID: 8022791743646997236} + m_Layer: 0 + m_Name: GrabVisualCueHorizontalBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2787721312075970460 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9210019406430209719} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0355, y: -0.0111, z: -0.001} + m_LocalScale: {x: 0.074928366, y: 0.0036311317, z: 0.009433999} + m_Children: [] + m_Father: {fileID: 13635054967816160} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1208947650950215786 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9210019406430209719} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8022791743646997236 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9210019406430209719} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 13a6bafb89ca6414895d965b2fdb2041, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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!1001 &2690841495530984125 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 8503270331930508642} + m_TransformParent: {fileID: 7175932055632064994} m_Modifications: - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_Name - value: ToggleFollow + value: ToggleInputRecording objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.x - value: 0.1621 + value: 0.048 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.y - value: 0.03275 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.z - value: -0.0081 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -530,7 +1065,7 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_RootOrder - value: 6 + value: 3 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -547,57 +1082,107 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_IsActive - value: 0 + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 objectReference: {fileID: 0} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: - objectReference: {fileID: 3232451984617828042} + objectReference: {fileID: 3673227729376072232} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: ToggleFollowMeBehavior + value: ToggleRecording objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_havePropertiesChanged + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode value: 1 objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 3673227729376072232} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SaveRecordedInput + objectReference: {fileID: 0} + - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_isInputParsingRequired + propertyPath: m_text + value: Record Input + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount value: 1 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_textAlignment - value: 514 + propertyPath: m_textInfo.wordCount + value: 2 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_havePropertiesChanged - value: 1 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_isInputParsingRequired - value: 1 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_textAlignment value: 514 objectReference: {fileID: 0} - - target: {fileID: 2204069623052342158, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_LocalPosition.y - value: 0.0002 + propertyPath: m_isAlignmentEnumConverted + value: 1 objectReference: {fileID: 0} - - target: {fileID: 2204069621878992593, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_IsActive value: 0 @@ -606,31 +1191,82 @@ PrefabInstance: type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: 983d124b2920b4e4499bfc42d1bee8d2, type: 2} + objectReference: {fileID: 2100000, guid: e6ab953dc933471489f5ebff6791a886, type: 2} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_text + value: Say "Toggle Profiler" + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_firstOverflowCharacterIndex + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.characterCount + value: 21 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.wordCount + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textInfo.lineCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textAlignment + value: 514 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} ---- !u!4 &1430872464373691942 stripped +--- !u!23 &4305907099866046977 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 2204069622869160124, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + m_PrefabInstance: {fileID: 2690841495530984125} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4305907100017388415 stripped Transform: m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - m_PrefabInstance: {fileID: 958447894271004644} + m_PrefabInstance: {fileID: 2690841495530984125} m_PrefabAsset: {fileID: 0} ---- !u!1001 &2690841495530984125 +--- !u!1001 &3454917270568841997 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 8503270331930508642} + m_TransformParent: {fileID: 7175932055632064994} m_Modifications: - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_Name - value: ToggleInputRecording + value: ToggleHandMesh objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.x - value: 0.106599994 + value: -0.016 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -640,7 +1276,7 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.z - value: -0.011100113 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -665,7 +1301,7 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_RootOrder - value: 4 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -685,67 +1321,32 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalScale.x - value: 1.5 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalScale.y - value: 1.5 - objectReference: {fileID: 0} - - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size - value: 2 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: - objectReference: {fileID: 3673227729376072232} + objectReference: {fileID: 4546402662010242382} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: ToggleRecording - objectReference: {fileID: 0} - - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: - objectReference: {fileID: 3673227729376072232} - - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName - value: SaveRecordedInput - objectReference: {fileID: 0} - - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + value: OnToggleHandMesh objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_text - value: Record Input + value: Hand Mesh objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_textInfo.characterCount - value: 12 + value: 9 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -759,29 +1360,44 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_havePropertiesChanged - value: 0 + propertyPath: m_textAlignment + value: 514 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_isInputParsingRequired - value: 0 + propertyPath: m_isAlignmentEnumConverted + value: 1 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_textAlignment - value: 514 + propertyPath: m_havePropertiesChanged + value: 0 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_isAlignmentEnumConverted - value: 1 + propertyPath: m_isInputParsingRequired + value: 0 objectReference: {fileID: 0} - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_Mesh value: objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 7344413e86980e943b39f9d8080ed99f, type: 2} - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_text @@ -827,46 +1443,30 @@ PrefabInstance: propertyPath: m_textAlignment value: 514 objectReference: {fileID: 0} - - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: e6ab953dc933471489f5ebff6791a886, type: 2} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} ---- !u!4 &4305907100017388415 stripped +--- !u!4 &3559032651836885711 stripped Transform: m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - m_PrefabInstance: {fileID: 2690841495530984125} - m_PrefabAsset: {fileID: 0} ---- !u!23 &4305907099866046977 stripped -MeshRenderer: - m_CorrespondingSourceObject: {fileID: 2204069622869160124, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - m_PrefabInstance: {fileID: 2690841495530984125} + m_PrefabInstance: {fileID: 3454917270568841997} m_PrefabAsset: {fileID: 0} ---- !u!1001 &3454917270568841997 +--- !u!1001 &4045759786895659006 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 8503270331930508642} + m_TransformParent: {fileID: 7175932055632064994} m_Modifications: - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_Name - value: ToggleHandMesh + value: ToggleProfilerButton objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.x - value: 0.011099994 + value: -0.048 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -876,7 +1476,7 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.z - value: -0.01110014 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -901,7 +1501,7 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_RootOrder - value: 2 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -921,47 +1521,32 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalScale.x - value: 1.5000002 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalScale.y - value: 1.5 - objectReference: {fileID: 0} - - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: - objectReference: {fileID: 4546402662010242382} + objectReference: {fileID: 1900320861033997991} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnToggleHandMesh + value: ToggleProfiler objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_text - value: Hand Mesh + value: Profiler objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_textInfo.characterCount - value: 9 - objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_textInfo.spaceCount - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_textInfo.wordCount - value: 2 + value: 8 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -988,6 +1573,21 @@ PrefabInstance: propertyPath: m_Mesh value: objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 85b164de2cfcb854cbbcb9c82670749d, type: 2} - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_text @@ -1033,40 +1633,152 @@ PrefabInstance: propertyPath: m_textAlignment value: 514 objectReference: {fileID: 0} - - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} +--- !u!4 &2788573366228284988 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + m_PrefabInstance: {fileID: 4045759786895659006} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5064501110533230779 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 8503270331930508642} + m_Modifications: + - target: {fileID: 538639403742340272, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_Name + value: Backplate + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.z + value: 0.008 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.0126 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.y + value: 0.064 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + propertyPath: m_LocalScale.x + value: 0.16 + objectReference: {fileID: 0} + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, type: 3} - propertyPath: m_IsActive - value: 0 + propertyPath: m_LocalPosition.x + value: 0.0358 objectReference: {fileID: 0} - - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 3958481853798167113, guid: 9215a7c858170d74fb2257375d5feaf1, type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 7344413e86980e943b39f9d8080ed99f, type: 2} + propertyPath: m_LocalScale.z + value: 0.010599999 + objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} ---- !u!4 &3559032651836885711 stripped + m_SourcePrefab: {fileID: 100100000, guid: 9215a7c858170d74fb2257375d5feaf1, type: 3} +--- !u!23 &1262640991058816982 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: 6326842415924641645, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + m_PrefabInstance: {fileID: 5064501110533230779} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2924503655918868814 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7988634196090784245, guid: 9215a7c858170d74fb2257375d5feaf1, + type: 3} + m_PrefabInstance: {fileID: 5064501110533230779} + m_PrefabAsset: {fileID: 0} +--- !u!4 &5650399960645272298 stripped Transform: - m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + m_CorrespondingSourceObject: {fileID: 586303850521236049, guid: 9215a7c858170d74fb2257375d5feaf1, type: 3} - m_PrefabInstance: {fileID: 3454917270568841997} + m_PrefabInstance: {fileID: 5064501110533230779} m_PrefabAsset: {fileID: 0} ---- !u!1001 &4045759786895659006 +--- !u!1001 &5286871970645101959 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 8503270331930508642} + m_TransformParent: {fileID: 7175932055632064994} m_Modifications: - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_Name - value: ToggleProfilerButton + value: ToggleHandJoint objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.x - value: -0.03660001 + value: 0.016 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -1076,22 +1788,22 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalPosition.z - value: -0.0111 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalRotation.y - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -1101,7 +1813,7 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_RootOrder - value: 1 + value: 2 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -1121,47 +1833,42 @@ PrefabInstance: - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalScale.x - value: 1.5 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_LocalScale.y - value: 1.5 - objectReference: {fileID: 0} - - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: - objectReference: {fileID: 1900320861033997991} + objectReference: {fileID: 4546402662010242382} - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: ToggleProfiler + value: OnToggleHandJoint objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_text - value: Profiler + value: Hand Joint objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_textInfo.characterCount - value: 8 + value: 10 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_textAlignment - value: 514 + propertyPath: m_textInfo.spaceCount + value: 1 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - propertyPath: m_isAlignmentEnumConverted - value: 1 + propertyPath: m_textInfo.wordCount + value: 2 objectReference: {fileID: 0} - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} @@ -1173,11 +1880,36 @@ PrefabInstance: propertyPath: m_isInputParsingRequired value: 0 objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_textAlignment + value: 514 + objectReference: {fileID: 0} + - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_isAlignmentEnumConverted + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_Mesh value: objectReference: {fileID: 0} + - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: e6ab953dc933471489f5ebff6791a886, type: 2} - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} propertyPath: m_text @@ -1223,221 +1955,305 @@ PrefabInstance: propertyPath: m_textAlignment value: 514 objectReference: {fileID: 0} - - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 85b164de2cfcb854cbbcb9c82670749d, type: 2} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} ---- !u!4 &2788573366228284988 stripped +--- !u!4 &6325538425937753157 stripped Transform: m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} - m_PrefabInstance: {fileID: 4045759786895659006} + m_PrefabInstance: {fileID: 5286871970645101959} m_PrefabAsset: {fileID: 0} ---- !u!1001 &5286871970645101959 +--- !u!1001 &7927425398529021326 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 8503270331930508642} m_Modifications: - - target: {fileID: 2204069621426241315, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, - type: 3} - propertyPath: m_Name - value: ToggleHandJoint - objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalPosition.x - value: 0.058999993 + value: 0.135 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalPosition.y - value: 0 + value: 0.029921 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalPosition.z - value: -0.011100113 + value: 0.0001424 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_RootOrder - value: 3 + value: 4 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalScale.x - value: 1.5000002 + value: 0.9139199 objectReference: {fileID: 0} - - target: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_LocalScale.y - value: 1.5 + value: 0.9139199 objectReference: {fileID: 0} - - target: {fileID: 1874729665501627384, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_IsActive - value: 0 + propertyPath: m_LocalScale.z + value: 1.1424 objectReference: {fileID: 0} - - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094791252829599, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 4546402662010242382} - - target: {fileID: 8779034279059886464, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + propertyPath: m_Name + value: ButtonPin + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: OnToggleHandJoint + propertyPath: OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_text - value: Hand Joint + propertyPath: Events.Array.size + value: 2 objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textInfo.characterCount - value: 10 + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textInfo.spaceCount + propertyPath: Events.Array.data[1].Settings.Array.size value: 1 objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textInfo.wordCount + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Name + value: OnSelect + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 3183098002564305489} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_enabled + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_havePropertiesChanged - value: 0 + propertyPath: Events.Array.data[1].Event.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_isInputParsingRequired - value: 0 + propertyPath: Events.Array.data[1].ClassName + value: InteractableOnToggleReceiver objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textAlignment - value: 514 + propertyPath: Events.Array.data[1].AssemblyQualifiedName + value: Microsoft.MixedReality.Toolkit.UI.InteractableOnToggleReceiver, Microsoft.MixedReality.Toolkit.SDK objectReference: {fileID: 0} - - target: {fileID: 2204069621878992595, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_isAlignmentEnumConverted - value: 1 + propertyPath: Events.Array.data[1].Settings.Array.data[0].Type + value: 18 objectReference: {fileID: 0} - - target: {fileID: 2204069621878992557, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_Mesh + propertyPath: Events.Array.data[1].Settings.Array.data[0].Label + value: On Deselect + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Name + value: OnDeselect + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Tooltip + value: The toggle is deselected + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: + objectReference: {fileID: 3183098002564305489} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_enabled objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_text - value: Say "Toggle Profiler" + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 6 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: 12 + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textInfo.characterCount - value: 21 + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_BoolArgument + value: 1 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textInfo.spaceCount + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState value: 2 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textInfo.wordCount - value: 3 + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textInfo.lineCount - value: 2 + propertyPath: StartDimensionIndex + value: 1 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_havePropertiesChanged + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: Events.Array.data[1].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: startDimensionIndex value: 1 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 8495876841678131188, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_isInputParsingRequired + propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} - - target: {fileID: 7060011145322376313, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6413889394266691908, guid: 64790b91b91094d49942373c4e83c237, type: 3} - propertyPath: m_textAlignment - value: 514 + propertyPath: m_IsActive + value: 0 objectReference: {fileID: 0} - - target: {fileID: 3954648794444109128, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094791873819757, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} - - target: {fileID: 2204069623052342153, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + - target: {fileID: 6742094791873819759, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6742094791873819759, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6742094790700452149, guid: 64790b91b91094d49942373c4e83c237, type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: e6ab953dc933471489f5ebff6791a886, type: 2} + objectReference: {fileID: 2100000, guid: 983d124b2920b4e4499bfc42d1bee8d2, type: 2} + - target: {fileID: 2689703347428627497, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 416caa6b57bb22c40ab9f1a4c12b304e, type: 2} + - target: {fileID: 2521141002669455045, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2521141002669455045, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, type: 3} ---- !u!4 &6325538425937753157 stripped + m_SourcePrefab: {fileID: 100100000, guid: 64790b91b91094d49942373c4e83c237, type: 3} +--- !u!4 &3716424187809740528 stripped Transform: - m_CorrespondingSourceObject: {fileID: 2204069623020599746, guid: 3f1f46cbecbe08e46a303ccfdb5b498a, + m_CorrespondingSourceObject: {fileID: 6742094790733259646, guid: 64790b91b91094d49942373c4e83c237, type: 3} - m_PrefabInstance: {fileID: 5286871970645101959} + m_PrefabInstance: {fileID: 7927425398529021326} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6111504088444772018 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4238929520169732924, guid: 64790b91b91094d49942373c4e83c237, + type: 3} + m_PrefabInstance: {fileID: 7927425398529021326} m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/GrabPointer.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/GrabPointer.prefab index 8abb0d6db90..22d5c345182 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/GrabPointer.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/GrabPointer.prefab @@ -72,7 +72,11 @@ MonoBehaviour: defaultPointerExtent: 10 sphereCastRadius: 0.05 nearObjectMargin: 0.2 - debugMode: 0 + grabLayerMasks: + - serializedVersion: 2 + m_Bits: 563 + triggerInteraction: 0 + sceneQueryBufferSize: 64 --- !u!114 &7376459786343609486 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/TouchPointer.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/TouchPointer.prefab index 9df9482c220..ad85ffb7336 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/TouchPointer.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/TouchPointer.prefab @@ -9,10 +9,6 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 4215223911988956} - - component: {fileID: 114689919749246242} - - component: {fileID: 120690711267243118} - - component: {fileID: 114903794112201558} - - component: {fileID: 114052612917089170} - component: {fileID: 114405004987074356} m_Layer: 0 m_Name: TouchPointer @@ -35,329 +31,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &114689919749246242 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247086986094436} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 81c169a39f8e430d869bbc5d938b0e5a, type: 3} - m_Name: - m_EditorClassIdentifier: - lineStartClamp: 0 - lineEndClamp: 1 - customLineTransform: {fileID: 0} - loops: 0 - transformMode: 0 - rotationMode: 1 - flipUpVector: 0 - originOffset: {x: 0, y: 0, z: 0} - manualUpVectorBlend: 0 - manualUpVectors: - - {x: 0, y: 1, z: 0} - - {x: 0, y: 1, z: 0} - - {x: 0, y: 1, z: 0} - velocitySearchRange: 0.02 - distorters: - - {fileID: 114052612917089170} - distortionEnabled: 1 - distortionMode: 0 - distortionStrength: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - uniformDistortionStrength: 1 - startPoint: - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - endPoint: - position: {x: 0, y: 0, z: 1} - rotation: {x: 0, y: 0, z: 0, w: 1} ---- !u!120 &120690711267243118 -LineRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247086986094436} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 0 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RenderingLayerMask: 4294967295 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 11727442de02c1d4b8d37a063c748aec, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - 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 - m_Positions: - - {x: 0, y: 0, z: 1.1920929e-11} - - {x: 0, y: 0, z: 0.0032517451} - - {x: 0, y: 0, z: 0.023423482} - - {x: 0, y: 0, z: 0.0704557} - - {x: 0, y: 0, z: 0.14670977} - - {x: 0, y: 0, z: 0.2469679} - - {x: 0, y: 0, z: 0.35843328} - - {x: 0, y: 0, z: 0.46072987} - - {x: 0, y: 0, z: 0.5333267} - - {x: 0, y: 0, z: 0.59998} - - {x: 0, y: 0, z: 0.66663337} - - {x: 0, y: 0, z: 0.7332867} - - {x: 0, y: 0, z: 0.79994} - - {x: 0, y: 0, z: 0.8665933} - - {x: 0, y: 0, z: 0.9332467} - - {x: 0, y: 0, z: 0.9999} - m_Parameters: - serializedVersion: 3 - widthMultiplier: 0.01 - widthCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colorGradient: - serializedVersion: 2 - key0: {r: 0, g: 0.12270379, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - numCornerVertices: 8 - numCapVertices: 8 - alignment: 0 - textureMode: 0 - shadowBias: 0 - generateLightingData: 0 - m_UseWorldSpace: 1 - m_Loop: 0 ---- !u!114 &114903794112201558 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247086986094436} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1287d4d138a242f794bcfc01354d3ae2, type: 3} - m_Name: - m_EditorClassIdentifier: - lineDataSource: {fileID: 114689919749246242} - lineColor: - serializedVersion: 2 - key0: {r: 0, g: 0.12270379, b: 1, a: 1} - key1: {r: 1, g: 1, b: 1, a: 1} - key2: {r: 0, g: 0, b: 0, a: 0} - key3: {r: 0, g: 0, b: 0, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 65535 - ctime2: 0 - ctime3: 0 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 65535 - atime2: 0 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_NumColorKeys: 2 - m_NumAlphaKeys: 2 - lineWidth: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - widthMultiplier: 0.01 - colorOffset: 0 - widthOffset: 0 - stepMode: 0 - lineStepCount: 16 - pointDistributionMode: 1 - customPointDistributionLength: 0.1 - customPointDistributionCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - lineMaterial: {fileID: 2100000, guid: 11727442de02c1d4b8d37a063c748aec, type: 2} - roundedEdges: 1 - roundedCaps: 1 - lineRenderer: {fileID: 120690711267243118} - tileMaterialByWorldLength: 0 - tileMaterialScale: 1 ---- !u!114 &114052612917089170 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1247086986094436} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 61e2b9c3b68642d6a51894a46aaece55, type: 3} - m_Name: - m_EditorClassIdentifier: - distortOrder: 0 - distortStrength: 1 - localCenterOfGravity: {x: 0, y: 0, z: 0} - axisStrength: {x: 1, y: 1, z: 1} - radius: 0.5 - gravityStrength: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 --- !u!114 &114405004987074356 MonoBehaviour: m_ObjectHideFlags: 0 @@ -371,7 +44,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: handedness: 0 - destroyOnSourceLost: 0 + destroyOnSourceLost: 1 useSourcePoseData: 1 poseAction: id: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Slate/Slate.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Slate/Slate.prefab index 71b112011ef..659c255dc3b 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Slate/Slate.prefab +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Slate/Slate.prefab @@ -184,7 +184,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: eventsToReceive: 0 - pokeThreshold: 0.25 debounceThreshold: 0.01 touchableCollider: {fileID: 1807168023245165402} localForward: {x: 0, y: 0, z: -1} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/LabelOnlyTooltip.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/LabelOnlyTooltip.prefab new file mode 100644 index 00000000000..e0330dc5af7 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/LabelOnlyTooltip.prefab @@ -0,0 +1,108 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &8217972947001070273 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1083549605185280, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_Name + value: LabelOnlyTooltip + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4510122080978026, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114071207091359978, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: showConnector + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114071207091359978, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: toolTipText + value: Speech Confirmation + objectReference: {fileID: 0} + - target: {fileID: 114254035704318198, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114570207066485496, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 120256979407580908, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4892726138630008, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} + propertyPath: m_LocalScale.x + value: 0.21288851 + objectReference: {fileID: 0} + - target: {fileID: 114957968741241876, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7446970764068212843, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: m_text + value: Speech Confirmation + objectReference: {fileID: 0} + - target: {fileID: 7446970764068212843, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: m_isAlignmentEnumConverted + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7446970764068212843, guid: afaef0108a478c44a9eac26658bc29bf, + type: 3} + propertyPath: m_textInfo.characterCount + value: 19 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: afaef0108a478c44a9eac26658bc29bf, type: 3} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/LabelOnlyTooltip.prefab.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/LabelOnlyTooltip.prefab.meta new file mode 100644 index 00000000000..5f14a2e2aea --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/LabelOnlyTooltip.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 247dc8aebe30ca2408e8293a883c75df +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/SpeechConfirmationTooltip.prefab b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/SpeechConfirmationTooltip.prefab new file mode 100644 index 00000000000..c1cbda4e124 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/SpeechConfirmationTooltip.prefab @@ -0,0 +1,388 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!95 &7788073934848418371 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779914303111114550} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 393b0cc1083725f44837b3a1efc4e229, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!114 &1915752821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779914303111114550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0 + rotateLerpTime: 0 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + referenceDirection: 1 + minDistance: 1 + maxDistance: 1 + minViewDegrees: 0 + maxViewDegrees: 1 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + useFixedVerticalPosition: 0 + fixedVerticalPosition: -0.4 + orientToReferenceDirection: 0 +--- !u!114 &1915752822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779914303111114550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + trackedTargetType: 0 + trackedHandness: 3 + trackedHandJoint: 2 + transformOverride: {fileID: 0} + additionalOffset: {x: 0, y: -0.4, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + updateSolvers: 1 +--- !u!114 &959849227508966978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779914303111114550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0ba356208ebee842b61c465bde80a05, type: 3} + m_Name: + m_EditorClassIdentifier: + delay: 2 +--- !u!114 &8046114618238072051 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779914303111114550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36767500e4f76334a8999a2f5fa5dcc6, type: 3} + m_Name: + m_EditorClassIdentifier: + showBackground: 1 + showHighlight: 0 + showConnector: 1 + tipState: 1 + groupTipState: 0 + masterTipState: 0 + anchor: {fileID: 780362276772741392} + pivot: {fileID: 781119022804126630} + label: {fileID: 780285727566011556} + contentParent: {fileID: 780353081939047444} + toolTipText: Recognized Text + backgroundPadding: {x: 0.05, y: 0.015} + backgroundOffset: {x: 0, y: 0, z: 0} + contentScale: 0.6 + fontSize: 30 + attachPointType: 9 + attachPointOffset: {x: 0, y: 0, z: 0} + toolTipLine: {fileID: 812055196429508800} +--- !u!1001 &8709130777020578551 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 8219002942482847169, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Name + value: SpeechConfirmationTooltip + objectReference: {fileID: 0} + - target: {fileID: 8217189920156946147, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8329956899072727607, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: endPoint.position.y + value: 0.23951453 + objectReference: {fileID: 0} + - target: {fileID: 8329956899072727607, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8222481329602893483, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8330271889260716089, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8328408549162534613, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: toolTip + value: + objectReference: {fileID: 0} + - target: {fileID: 8333673406232624173, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8333673406232624173, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Positions.Array.data[1].y + value: 0.233327 + objectReference: {fileID: 0} + - target: {fileID: 8239404905434933495, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 33bd7ed5b0c7fbf458af3e21dc58c192, type: 2} + - target: {fileID: 8222863950748663225, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalScale.x + value: 0.161272 + objectReference: {fileID: 0} + - target: {fileID: 8222863950748663225, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalScale.y + value: 0.034951583 + objectReference: {fileID: 0} + - target: {fileID: 8102129296322141565, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 21202819797275496, guid: 6a84f857bec7e7345843ae29404c57ce, + type: 2} + - target: {fileID: 8215610606298197891, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalScale.x + value: 0.6 + objectReference: {fileID: 0} + - target: {fileID: 8215610606298197891, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalScale.y + value: 0.6 + objectReference: {fileID: 0} + - target: {fileID: 8215610606298197891, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_LocalScale.z + value: 0.6 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 11400000, guid: 6a84f857bec7e7345843ae29404c57ce, + type: 2} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_sharedMaterial + value: + objectReference: {fileID: 21202819797275496, guid: 6a84f857bec7e7345843ae29404c57ce, + type: 2} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_fontColor32.rgba + value: 16777215 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_fontColor.a + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_text + value: Recognized Text + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_textInfo.characterCount + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_textInfo.spaceCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_textInfo.wordCount + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_textInfo.lineCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_textInfo.pageCount + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_fontSize + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1537115806125884074, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_fontSizeBase + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 1012395828249241974, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 8279342259856327629, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8329787883158438443, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: backgroundPadding.x + value: 0.05 + objectReference: {fileID: 0} + - target: {fileID: 8329787883158438443, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: contentScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8329787883158438443, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: toolTipText + value: Recognized Text + objectReference: {fileID: 0} + - target: {fileID: 8329787883158438443, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 8329787883158438443, guid: 247dc8aebe30ca2408e8293a883c75df, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 247dc8aebe30ca2408e8293a883c75df, type: 3} +--- !u!1 &779914303111114550 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8219002942482847169, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + m_PrefabInstance: {fileID: 8709130777020578551} + m_PrefabAsset: {fileID: 0} +--- !u!114 &812055196429508800 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8329956899072727607, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + m_PrefabInstance: {fileID: 8709130777020578551} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779914303111114550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81c169a39f8e430d869bbc5d938b0e5a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &780362276772741392 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8217216743078902759, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + m_PrefabInstance: {fileID: 8709130777020578551} + m_PrefabAsset: {fileID: 0} +--- !u!1 &781119022804126630 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8217411052995998033, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + m_PrefabInstance: {fileID: 8709130777020578551} + m_PrefabAsset: {fileID: 0} +--- !u!1 &780353081939047444 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8217189920156946147, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + m_PrefabInstance: {fileID: 8709130777020578551} + m_PrefabAsset: {fileID: 0} +--- !u!1 &780285727566011556 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 8217149505344808531, guid: 247dc8aebe30ca2408e8293a883c75df, + type: 3} + m_PrefabInstance: {fileID: 8709130777020578551} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/SpeechConfirmationTooltip.prefab.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/SpeechConfirmationTooltip.prefab.meta new file mode 100644 index 00000000000..c2586e0696e --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Tooltips/SpeechConfirmationTooltip.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 271778f6c957b524981067a81d238394 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/AppBar/AppBarButton.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/AppBar/AppBarButton.cs index 9495fb1d6a7..0a2e9faae51 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/AppBar/AppBarButton.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/AppBar/AppBarButton.cs @@ -97,8 +97,7 @@ public void SetVisible(bool visible) gameObject.SetActive(visible); // Use the interactable theme to make button invisible button.enabled = visible; - interactable.Enabled = visible; - + interactable.IsEnabled = visible; } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBox.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBox.cs index 05f0e9f705a..a2867828d50 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBox.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBox.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Input; +using Microsoft.MixedReality.Toolkit.Utilities; using System; using System.Collections.Generic; using System.Runtime.CompilerServices; @@ -12,6 +13,12 @@ namespace Microsoft.MixedReality.Toolkit.UI { + /// + /// BoundingBox allows to transform objects (rotate and scale) and draws a cube around the object to visualize + /// the possibility of user triggered transform manipulation. + /// BoundingBox provides scale and rotation handles that can be used for far and near interaction manipulation + /// of the object. It further provides a proximity effect for scale and rotation handles that alters scaling and material. + /// [HelpURL("https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_BoundingBox.html")] public class BoundingBox : MonoBehaviour, IMixedRealitySourceStateHandler, @@ -21,7 +28,7 @@ public class BoundingBox : MonoBehaviour, #region Enums /// - /// Enum which describes how an object's boundingbox is to be flattened. + /// Enum which describes how an object's BoundingBox is to be flattened. /// public enum FlattenModeType { @@ -45,7 +52,7 @@ public enum FlattenModeType } /// - /// Enum which describes whether a boundingbox handle which has been grabbed, is + /// Enum which describes whether a BoundingBox handle which has been grabbed, is /// a Rotation Handle (sphere) or a Scale Handle( cube) /// public enum HandleType @@ -56,7 +63,7 @@ public enum HandleType } /// - /// This enum describes which primitive type the wireframe portion of the boundingbox + /// This enum describes which primitive type the wireframe portion of the BoundingBox /// consists of. /// /// @@ -135,7 +142,7 @@ public enum RotationHandlePrefabCollider } /// - /// Container for handle references and states (including scale and rotation type handles) + /// Container for handle references and states (including scale and rotation type handles) which is used in the handle proximity effect /// private class Handle { @@ -151,6 +158,21 @@ private class Handle [SerializeField] [Tooltip("The object that the bounding box rig will be modifying.")] private GameObject targetObject; + /// + /// The object that the bounding box rig will be modifying. + /// + public GameObject Target + { + get + { + if (targetObject == null) + { + targetObject = gameObject; + } + + return targetObject; + } + } [Tooltip("For complex objects, automatic bounds calculation may not behave as expected. Use an existing Box Collider (even on a child object) to manually determine bounds of Bounding Box.")] [SerializeField] @@ -231,6 +253,7 @@ public BoundingBoxActivationType BoundingBoxActivation /// + /// Deprecated: Use TransformScaleHandler component instead. /// Public property for the scale minimum, in the target's local scale. /// Set this value with SetScaleLimits. /// @@ -248,6 +271,7 @@ public float ScaleMinimum } /// + /// Deprecated: Use TransformScaleHandler component instead. /// Public property for the scale maximum, in the target's local scale. /// Set this value with SetScaleLimits. /// @@ -787,11 +811,17 @@ public bool ProximityEffectActive [SerializeField] [Tooltip("How far away should the hand be from a handle before it starts scaling the handle?")] [Range(0.005f, 0.2f)] + /// + /// Distance between handle and hand before proximity scaling will be triggered. + /// private float handleMediumProximity = 0.1f; [SerializeField] [Tooltip("How far away should the hand be from a handle before it activates the close-proximity scaling effect?")] [Range(0.001f, 0.1f)] + /// + /// Distance between handle and hand that will trigger the close proximity effect. + /// private float handleCloseProximity = 0.03f; [SerializeField] @@ -854,16 +884,25 @@ public float CloseScale [SerializeField] [Tooltip("At what rate should a Proximity-scaled Handle scale when the Hand moves from Medium proximity to Far proximity?")] [Range(0.0f, 1.0f)] + /// + /// Scaling animation velocity from medium to far proximity state. + /// private float farGrowRate = 0.3f; [SerializeField] [Tooltip("At what rate should a Proximity-scaled Handle scale when the Hand moves to a distance that activates Medium Scale ?")] [Range(0.0f, 1.0f)] + /// + /// Scaling animation velocity from far to medium proximity. + /// private float mediumGrowRate = 0.2f; [SerializeField] [Tooltip("At what rate should a Proximity-scaled Handle scale when the Hand moves to a distance that activates Close Scale ?")] [Range(0.0f, 1.0f)] + /// + /// Scaling animation velocity from medium to close proximity. + /// private float closeGrowRate = 0.3f; [SerializeField] @@ -887,6 +926,9 @@ public Collider HandlesIgnoreCollider [Header("Debug")] [Tooltip("Debug only. Component used to display debug messages")] + /// + /// Debug only. Component used to display debug messages + /// public TextMesh debugText; [SerializeField] @@ -940,9 +982,21 @@ private void UpdateRigVisibilityInInspector() } [Header("Events")] + /// + /// Event that gets fired when interaction with a rotation handle starts. + /// public UnityEvent RotateStarted = new UnityEvent(); + /// + /// Event that gets fired when interaction with a rotation handle stops. + /// public UnityEvent RotateStopped = new UnityEvent(); + /// + /// Event that gets fired when interaction with a scale handle starts. + /// public UnityEvent ScaleStarted = new UnityEvent(); + /// + /// Event that gets fired when interaction with a scale handle stops. + /// public UnityEvent ScaleStopped = new UnityEvent(); #endregion Serialized Fields @@ -1025,6 +1079,9 @@ private void UpdateRigVisibilityInInspector() #region public Properties // TODO Review this, it feels like we should be using Behaviour.enabled instead. private bool active = false; + /// + /// Flag that indicates if the bounding box is currently active / visible. + /// public bool Active { get @@ -1047,18 +1104,7 @@ public bool Active } } - public GameObject Target - { - get - { - if (targetObject == null) - { - targetObject = gameObject; - } - - return targetObject; - } - } + /// /// The collider reference tracking the bounds utilized by this component during runtime @@ -1175,6 +1221,11 @@ private void OnEnable() private void OnDisable() { DestroyRig(); + + if (currentPointer != null) + { + DropController(); + } } private void Update() @@ -1187,7 +1238,8 @@ private void Update() UpdateBounds(); UpdateRigHandles(); } - else if (!isChildOfTarget && Target.transform.hasChanged) + else if ((!isChildOfTarget && Target.transform.hasChanged) + || (boundsOverride != null && HasBoundsOverrideChanged())) { UpdateBounds(); UpdateRigHandles(); @@ -1432,8 +1484,6 @@ private void AddCorners() /// /// Add all common components to a corner or rotate affordance /// - /// - /// private void AddComponentsToAffordance(GameObject afford, Bounds bounds, RotationHandlePrefabCollider colliderType, CursorContextInfo.CursorAction cursorType, Vector3 colliderPadding) { if (colliderType == RotationHandlePrefabCollider.Box) @@ -1712,7 +1762,7 @@ private Bounds GetTargetBounds() // Collect all Transforms except for the rigRoot(s) transform structure(s) // Its possible we have two rigRoots here, the one about to be deleted and the new one - // Since those have the gizmo structure childed, be need to ommit them completely in the calculation of the bounds + // Since those have the gizmo structure childed, be need to omit them completely in the calculation of the bounds // This can only happen by name unless there is a better idea of tracking the rigRoot that needs destruction List childTransforms = new List(); @@ -1815,9 +1865,7 @@ private void SetMaterials() { float[] color = { 1.0f, 1.0f, 1.0f, 0.75f }; - Shader shader = Shader.Find("Mixed Reality Toolkit/Standard"); - - wireframeMaterial = new Material(shader); + wireframeMaterial = new Material(StandardShaderUtility.MrtkStandardShader); wireframeMaterial.EnableKeyword("_InnerGlow"); wireframeMaterial.SetColor("_Color", new Color(0.0f, 0.63f, 1.0f)); wireframeMaterial.SetFloat("_InnerGlow", 1.0f); @@ -1827,9 +1875,7 @@ private void SetMaterials() { float[] color = { 1.0f, 1.0f, 1.0f, 0.75f }; - Shader shader = Shader.Find("Mixed Reality Toolkit/Standard"); - - handleMaterial = new Material(shader); + handleMaterial = new Material(StandardShaderUtility.MrtkStandardShader); handleMaterial.EnableKeyword("_InnerGlow"); handleMaterial.SetColor("_Color", new Color(0.0f, 0.63f, 1.0f)); handleMaterial.SetFloat("_InnerGlow", 1.0f); @@ -1839,9 +1885,7 @@ private void SetMaterials() { float[] color = { 1.0f, 1.0f, 1.0f, 0.75f }; - Shader shader = Shader.Find("Mixed Reality Toolkit/Standard"); - - handleGrabbedMaterial = new Material(shader); + handleGrabbedMaterial = new Material(StandardShaderUtility.MrtkStandardShader); handleGrabbedMaterial.EnableKeyword("_InnerGlow"); handleGrabbedMaterial.SetColor("_Color", new Color(0.0f, 0.63f, 1.0f)); handleGrabbedMaterial.SetFloat("_InnerGlow", 1.0f); @@ -2069,7 +2113,7 @@ private void UpdateBounds() private void UpdateRigHandles() { - if (rigRoot != null && Target != null) + if (rigRoot != null && Target != null && TargetBounds != null) { // We move the rigRoot to the scene root to ensure that non-uniform scaling performed // anywhere above the rigRoot does not impact the position of rig corners / edges @@ -2119,7 +2163,7 @@ private void UpdateRigHandles() boxDisplay.transform.localScale = Vector3.Scale(GetBoxDisplayScale(), invRootScale); } - //move rig into position and rotation + // move rig into position and rotation rigRoot.position = TargetBounds.bounds.center; rigRoot.rotation = Target.transform.rotation; rigRoot.parent = transform; @@ -2151,7 +2195,7 @@ private void HandleProximityScaling() maxRadius *= maxRadius; maxRadius += handleCloseProximity + handleMediumProximity; - // Grab points within sphere of inluence from valid pointers + // Grab points within sphere of influence from valid pointers foreach (var pointer in proximityPointers) { if (IsPointWithinBounds(pointer.Position, maxRadius)) @@ -2159,7 +2203,9 @@ private void HandleProximityScaling() proximityPoints.Add(pointer.Position); } - if (IsPointWithinBounds(pointer.Result.Details.Point, maxRadius)) + Vector3? point = pointer.Result?.Details.Point; + + if (point.HasValue && IsPointWithinBounds(point.Value, maxRadius)) { proximityPoints.Add(pointer.Result.Details.Point); } @@ -2172,7 +2218,7 @@ private void HandleProximityScaling() { for (int i = 0; i < handles.Count; ++i) { - // If handle can't be visisble, skip calculations + // If handle can't be visible, skip calculations if (!IsHandleTypeVisible(handles[i].Type)) continue; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBoxHelper.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBoxHelper.cs index 1b4a1d62990..011b52ae57b 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBoxHelper.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBoxHelper.cs @@ -35,9 +35,6 @@ public class BoundingBoxHelper /// Objects that align to an target's bounding box can call this function in the object's UpdateLoop /// to get current bound points; /// - /// - /// - /// public void UpdateNonAABoundingBoxCornerPositions(BoundingBox boundingBox, List boundsPoints) { if (boundingBox.TargetBounds != targetBounds || rawBoundingCornersObtained == false) @@ -61,8 +58,6 @@ public void UpdateNonAABoundingBoxCornerPositions(BoundingBox boundingBox, List< /// /// This function gets the untransformed bounding box corner points of a GameObject. /// - /// - /// public void GetRawBBCorners(BoundingBox boundingBox) { targetBounds = boundingBox.TargetBounds; @@ -143,7 +138,6 @@ public Vector3 GetFaceNormal(int index) /// by the index parameter; /// /// an index into the list of faces of a boundingcube. 0-5 - /// public Vector3 GetFaceCentroid(int index) { int[] faceIndices = GetFaceIndices(index); @@ -226,7 +220,6 @@ public int GetIndexOfForwardFace(Vector3 lookAtPoint) /// /// The gameObject whose bounding box is desired /// the array of 8 points that will be filled - /// a LayerMask variable public static void GetUntransformedCornersFromObject(BoxCollider targetBounds, List boundsPoints) { Bounds cloneBounds = new Bounds(targetBounds.center, targetBounds.size); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/BaseObjectCollection.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/BaseObjectCollection.cs index 63df3c28ed0..2165ba1b4a4 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/BaseObjectCollection.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/BaseObjectCollection.cs @@ -3,7 +3,6 @@ using System; using System.Collections.Generic; -using UnityEditor; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Utilities @@ -76,8 +75,8 @@ public virtual void UpdateCollection() { Transform child = transform.GetChild(i); #if UNITY_EDITOR - Undo.RecordObject(child, "ObjectCollection modify transform"); -#endif + UnityEditor.Undo.RecordObject(child, "ObjectCollection modify transform"); +#endif // UNITY_EDITOR if (!ContainsNode(child) && (child.gameObject.activeSelf || !IgnoreInactiveTransforms)) { NodeList.Add(new ObjectCollectionNode { Name = child.name, Transform = child }); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/GridObjectCollection.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/GridObjectCollection.cs index 31e4dc72f64..bcf3bd8e829 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/GridObjectCollection.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/GridObjectCollection.cs @@ -286,7 +286,6 @@ protected void ResolveGridLayout(Vector3[] grid, LayoutOrder order) /// /// Update the facing of a node given the nodes new position for facing origin with node and orientation type /// - /// protected void UpdateNodeFacing(ObjectCollectionNode node) { Vector3 centerAxis; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/TileGridObjectCollection.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/TileGridObjectCollection.cs index a1270ce6c5b..210c621f97b 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/TileGridObjectCollection.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Collections/TileGridObjectCollection.cs @@ -108,8 +108,6 @@ protected virtual void Start() /// /// Set the item position by index /// - /// - /// public virtual Vector3 GetListPosition(int index) { int column = index % Columns; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/MixedRealityControllerInfo.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/MixedRealityControllerInfo.cs index 90888079b4e..42c922e5bca 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/MixedRealityControllerInfo.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/MixedRealityControllerInfo.cs @@ -145,7 +145,6 @@ public bool TryGetElement(ControllerElementEnum element, out Transform elementTr /// thumbstick, and touchpad animation. /// /// The transforms of the glTF model. - /// public void LoadInfo(Transform[] childTransforms, MixedRealityControllerVisualizer motionControllerVisualizer) { foreach (Transform child in childTransforms) diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/MixedRealityControllerVisualizer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/MixedRealityControllerVisualizer.cs index ab04b228528..1b68692ba75 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/MixedRealityControllerVisualizer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/MixedRealityControllerVisualizer.cs @@ -24,7 +24,6 @@ public class MixedRealityControllerVisualizer : ControllerPoseSynchronizer, IMix /// /// Reserved for future implementation /// - /// public override void OnInputDown(InputEventData eventData) { base.OnInputDown(eventData); @@ -37,7 +36,6 @@ public override void OnInputDown(InputEventData eventData) /// /// Reserved for future implementation /// - /// public override void OnInputUp(InputEventData eventData) { base.OnInputUp(eventData); @@ -50,7 +48,6 @@ public override void OnInputUp(InputEventData eventData) /// /// Reserved for future implementation /// - /// public override void OnInputChanged(InputEventData eventData) { base.OnInputChanged(eventData); @@ -63,7 +60,6 @@ public override void OnInputChanged(InputEventData eventData) /// /// Reserved for future implementation /// - /// public override void OnInputChanged(InputEventData eventData) { base.OnInputChanged(eventData); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/WindowsMixedRealityControllerVisualizer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/WindowsMixedRealityControllerVisualizer.cs index dad1646fe98..b6e208565ce 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/WindowsMixedRealityControllerVisualizer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Controllers/WindowsMixedRealityControllerVisualizer.cs @@ -10,6 +10,7 @@ public class WindowsMixedRealityControllerVisualizer : MixedRealityControllerVis { private readonly Quaternion inverseRotation = Quaternion.Euler(0f, 180f, 0f); + /// public override void OnSourcePoseChanged(SourcePoseEventData eventData) { if (UseSourcePoseData && diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/AnimatedCursor.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/AnimatedCursor.cs index 4953fa9d6c3..8be360b8b38 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/AnimatedCursor.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/AnimatedCursor.cs @@ -80,7 +80,6 @@ public override void OnFocusChanged(FocusEventData eventData) /// /// Override OnCursorState change to set the correct animation state for the cursor. /// - /// public override void OnCursorStateChange(CursorStateEnum state) { base.OnCursorStateChange(state); @@ -99,7 +98,6 @@ public override void OnCursorStateChange(CursorStateEnum state) /// /// Override OnCursorContext change to set the correct animation state for the cursor. /// - /// public override void OnCursorContextChange(CursorContextEnum context) { base.OnCursorContextChange(context); @@ -118,7 +116,6 @@ public override void OnCursorContextChange(CursorContextEnum context) /// /// Based on the type of animator state info pass it through to the animator /// - /// private void SetAnimatorParameter(AnimatorParameter animationParameter) { // Return if we do not have an animator diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/BaseCursor.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/BaseCursor.cs index 39ecb23fa1b..52844ebb156 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/BaseCursor.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/BaseCursor.cs @@ -687,7 +687,6 @@ public virtual CursorContextEnum CheckCursorContext() /// /// Change the cursor state to the new state. Override in cursor implementations. /// - /// public virtual void OnCursorStateChange(CursorStateEnum state) { CursorState = state; @@ -696,7 +695,6 @@ public virtual void OnCursorStateChange(CursorStateEnum state) /// /// Change the cursor context state to the new context. Override in cursor implementations. /// - /// public virtual void OnCursorContextChange(CursorContextEnum context) { CursorContext = context; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/FingerCursor.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/FingerCursor.cs index 1253c1b3e9e..6ce3d64d337 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/FingerCursor.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/FingerCursor.cs @@ -67,8 +67,17 @@ protected override void UpdateCursorTransform() { indexKnucklePosition = transform.position; } - - if (nearPointer.IsNearObject) + + if (!nearPointer.IsInteractionEnabled) + { + // If the pointer is disabled, make sure to turn the ring cursor off + // but still want show the proximity effect on bounding content + if (indexFingerRingRenderer != null) + { + UpdateVisuals(indexFingerRingRenderer, 1, false); + } + } + else if (nearPointer.IsNearObject) { // If the pointer is near an object translate the primary ring to the index finger tip and rotate to surface normal if close. // The secondary ring should be hidden. @@ -168,7 +177,6 @@ protected virtual bool IsNearGrabbableObject(out float dist) /// Vector3.zero /// Out parameter filled with joint rotation, otherwise /// Quaternion.identity - /// protected bool TryGetJoint(TrackedHandJoint joint, out Vector3 position, out Quaternion rotation) { if (Pointer != null) diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs index 59453a7d49d..c8fdf06f1e7 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs @@ -60,7 +60,6 @@ private void Awake() /// /// Decide which element (ring or dot) should be visible and at what scale /// - /// public override void OnCursorStateChange(CursorStateEnum state) { base.OnCursorStateChange(state); @@ -149,7 +148,6 @@ protected override void UpdateCursorTransform() /// /// override the base class for custom visibility /// - /// public override void SetVisibility(bool visible) { base.SetVisibility(visible); @@ -166,7 +164,6 @@ public override void SetVisibility(bool visible) /// /// controls the visibility of cursor elements in one place /// - /// private void ElementVisibility(bool visible) { if (ring != null) diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/MeshCursor.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/MeshCursor.cs index 3122411f30a..a2cb81a3767 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/MeshCursor.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/MeshCursor.cs @@ -51,7 +51,6 @@ protected override void OnEnable() /// Override OnCursorState change to set the correct animation /// state for the cursor /// - /// public override void OnCursorStateChange(CursorStateEnum state) { base.OnCursorStateChange(state); @@ -71,7 +70,6 @@ public override void OnCursorStateChange(CursorStateEnum state) /// /// Based on the type of state info pass it through to the mesh renderer /// - /// private void SetCursorState(MeshCursorDatum stateDatum) { // Return if we do not have an animator diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/ObjectCursor.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/ObjectCursor.cs index b355e81d41e..fff1b033c21 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/ObjectCursor.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/ObjectCursor.cs @@ -44,7 +44,6 @@ protected override void OnEnable() /// Override OnCursorState change to set the correct animation /// state for the cursor /// - /// public override void OnCursorStateChange(CursorStateEnum state) { base.OnCursorStateChange(state); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/SpriteCursor.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/SpriteCursor.cs index 8fda7632beb..42cea5ee8bd 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/SpriteCursor.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Cursors/SpriteCursor.cs @@ -50,7 +50,6 @@ protected override void OnEnable() /// Override OnCursorState change to set the correct sprite /// state for the cursor /// - /// public override void OnCursorStateChange(CursorStateEnum state) { base.OnCursorStateChange(state); @@ -70,7 +69,6 @@ public override void OnCursorStateChange(CursorStateEnum state) /// /// Based on the type of state info pass it through to the sprite renderer /// - /// private void SetCursorState(SpriteCursorDatum stateDatum) { // Return if we do not have an animator diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs index 8b8682bf898..b0539a33607 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs @@ -11,6 +11,7 @@ namespace Microsoft.MixedReality.Toolkit.Input /// Base Pointer class for pointers that exist in the scene as GameObjects. /// [DisallowMultipleComponent] + [HelpURL("https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Input/Pointers.html")] public abstract class BaseControllerPointer : ControllerPoseSynchronizer, IMixedRealityPointer { [SerializeField] @@ -119,14 +120,8 @@ private void DestroyCursorInstance() { if (cursorInstance != null) { - if (Application.isPlaying) - { - Destroy(cursorInstance); - } - else - { - DestroyImmediate(cursorInstance); - } + // Destroy correctly depending on if in play mode or edit mode + GameObjectExtensions.DestroyGameObject(cursorInstance); } } @@ -164,7 +159,7 @@ protected override async void Start() // The pointer's input source was lost during the await. if (Controller == null) { - Destroy(gameObject); + GameObjectExtensions.DestroyGameObject(gameObject); return; } } @@ -295,8 +290,11 @@ public virtual bool IsInteractionEnabled /// public bool IsFocusLocked { get; set; } - /// - public bool IsTargetPositionLockedOnFocusLock { get; set; } + /// + /// Specifies whether the pointer's target position (cursor) is locked to the target object when focus is locked. + /// Most pointers want the cursor to "stick" to the object when manipulating, so set this to true by default. + /// + public virtual bool IsTargetPositionLockedOnFocusLock { get; set; } = true; [SerializeField] private bool overrideGlobalPointerExtent = false; @@ -363,7 +361,7 @@ public float DefaultPointerExtent public virtual SceneQueryType SceneQueryType { get; set; } = SceneQueryType.SimpleRaycast; [SerializeField] - [Tooltip("The radius to use when SceneQueryType is set to Sphere or SphereColliders.")] + [Tooltip("How far controller needs to be from object before object can be grabbed / focused.")] private float sphereCastRadius = 0.1f; /// diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/BaseMousePointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/BaseMousePointer.cs index 876346c4bae..7ae2da4995c 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/BaseMousePointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/BaseMousePointer.cs @@ -59,7 +59,6 @@ public abstract class BaseMousePointer : BaseControllerPointer, IMixedRealityMou protected abstract string ControllerName { get; } - private IMixedRealityController controller; /// diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/DefaultPointerMediator.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/DefaultPointerMediator.cs index a6bc76e45f9..8c0c18d55a2 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/DefaultPointerMediator.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/DefaultPointerMediator.cs @@ -1,10 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using System; using System.Collections.Generic; namespace Microsoft.MixedReality.Toolkit.Input { + /// + /// The default implementation for pointer mediation in MRTK which is responsible for + /// determining which pointers are active based on the state of all pointers. + /// For example, one of the key things this class does is disable far pointers when a near pointer is close to an object. + /// public class DefaultPointerMediator : IMixedRealityPointerMediator { protected readonly HashSet allPointers = new HashSet(); @@ -14,6 +20,18 @@ public class DefaultPointerMediator : IMixedRealityPointerMediator protected readonly HashSet unassignedPointers = new HashSet(); protected readonly Dictionary> pointerByInputSourceParent = new Dictionary>(); + private IPointerPreferences pointerPreferences; + + public DefaultPointerMediator() + : this(null) + { + } + + public DefaultPointerMediator(IPointerPreferences pointerPrefs) + { + pointerPreferences = pointerPrefs; + } + public virtual void RegisterPointers(IMixedRealityPointer[] pointers) { for (int i = 0; i < pointers.Length; i++) @@ -98,6 +116,8 @@ public virtual void UpdatePointers() unassignedPointers.Add(unassignedPointer); } + ApplyCustomPointerBehaviors(); + // If any pointers are locked, they have priority. // Deactivate all other pointers that are on that input source foreach (IMixedRealityPointer pointer in allPointers) @@ -168,5 +188,33 @@ public virtual void UpdatePointers() unassignedPointer.IsActive = true; } } + + private void ApplyCustomPointerBehaviors() + { + if (pointerPreferences != null) + { + Action setPointerState = + (ptr, behavior) => + { + if (behavior == PointerBehavior.Default) + { + return; + } + + bool isPointerOn = behavior == PointerBehavior.AlwaysOn; + ptr.IsActive = isPointerOn; + if (ptr is GenericPointer genericPtr) + { + genericPtr.IsInteractionEnabled = isPointerOn; + } + unassignedPointers.Remove(ptr); + }; + + foreach (IMixedRealityPointer pointer in allPointers) + { + setPointerState(pointer, pointerPreferences.GetPointerBehavior(pointer)); + } + } + } } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/GGVPointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/GGVPointer.cs index 4cac5c1d303..07ca958407d 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/GGVPointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/GGVPointer.cs @@ -158,6 +158,7 @@ int IEqualityComparer.GetHashCode(object obj) return obj.GetHashCode(); } + /// public override int GetHashCode() { unchecked @@ -198,12 +199,7 @@ public virtual Quaternion Rotation // This caused issues when the head rotated, but the hand stayed where it was. // Now we're returning a rotation based on the vector from the camera position // to the hand. This rotation is not affected by rotating your head. - // - // The y value is set to 0 here as we want the rotation to be about the y axis. - // Without this, one-hand manipulating an object would give it unwanted x/z - // rotations as you move your hand up and down. Vector3 look = Position - CameraCache.Main.transform.position; - look.y = 0; return Quaternion.LookRotation(look); } } @@ -293,6 +289,7 @@ protected override void OnDisable() #region InputSystemGlobalHandlerListener Implementation + /// protected override void RegisterHandlers() { InputSystem?.RegisterHandler(this); @@ -300,6 +297,7 @@ protected override void RegisterHandlers() InputSystem?.RegisterHandler(this); } + /// protected override void UnregisterHandlers() { InputSystem?.UnregisterHandler(this); @@ -336,14 +334,7 @@ public void OnSourceLost(SourceStateEventData eventData) } // Destroy the pointer since nobody else is destroying us - if (!Application.isPlaying) - { - DestroyImmediate(gameObject); - } - else - { - Destroy(gameObject); - } + GameObjectExtensions.DestroyGameObject(gameObject); } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/LinePointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/LinePointer.cs index b8978c4e39e..7b8b3e2ccb5 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/LinePointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/LinePointer.cs @@ -201,6 +201,7 @@ protected virtual void SetLinePoints(Vector3 startPoint, Vector3 endPoint, float lineBase.LastPoint = endPoint; } + /// public override bool IsInteractionEnabled => // If IsTracked is not true, then we don't have position data yet (or have stale data), // so remain disabled until we know where to appear (not just at the origin). diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/MousePointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/MousePointer.cs index d8587ee97b3..57568714d5b 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/MousePointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/MousePointer.cs @@ -14,24 +14,10 @@ namespace Microsoft.MixedReality.Toolkit.Input /// public class MousePointer : BaseMousePointer { - private MixedRealityMouseInputProfile mouseInputProfile = null; - - private MixedRealityMouseInputProfile MouseInputProfile - { - get - { - if (mouseInputProfile == null) - { - // Get the profile from the input system's registered mouse device manager. - IMixedRealityMouseDeviceManager mouseManager = (InputSystem as IMixedRealityDataProviderAccess)?.GetDataProvider(); - mouseInputProfile = mouseManager?.MouseInputProfile; - } - return mouseInputProfile; - } - } - + /// protected override string ControllerName => "Spatial Mouse Pointer"; + /// public override void OnPreSceneQuery() { // screenspace to ray conversion @@ -55,18 +41,12 @@ public override void OnInputChanged(InputEventData eventData) { if (PoseAction == eventData.MixedRealityInputAction && !UseSourcePoseData) { - Vector3 mouseDeltaRotation = Vector3.zero; - mouseDeltaRotation.x += eventData.InputData.x; - mouseDeltaRotation.y += eventData.InputData.y; - if (MouseInputProfile != null) - { - mouseDeltaRotation *= MouseInputProfile.MouseSpeed; - } - UpdateMouseRotation(mouseDeltaRotation); + UpdateMouseRotation(eventData.InputData); } } } + /// public override void OnInputChanged(InputEventData eventData) { if (eventData.SourceId == Controller?.InputSource.SourceId) @@ -96,7 +76,7 @@ private void UpdateMouseRotation(Vector3 mouseDeltaRotation) timeoutTimer = 0.0f; } - transform.Rotate(mouseDeltaRotation, Space.World); + transform.Rotate(mouseDeltaRotation, Space.Self); } protected override void Start() @@ -114,6 +94,7 @@ protected override void Start() Cursor.lockState = CursorLockMode.Locked; } + /// protected override void SetVisibility(bool visible) { base.SetVisibility(visible); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ParabolicTeleportPointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ParabolicTeleportPointer.cs index b62c82a6c57..535753dcb47 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ParabolicTeleportPointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ParabolicTeleportPointer.cs @@ -7,7 +7,6 @@ namespace Microsoft.MixedReality.Toolkit.Teleport { [RequireComponent(typeof(ParabolaPhysicalLineDataProvider))] - [ExecuteAlways] public class ParabolicTeleportPointer : TeleportPointer { [SerializeField] diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/PokePointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/PokePointer.cs index 45a84f137fd..78747d1f30c 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/PokePointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/PokePointer.cs @@ -14,13 +14,19 @@ namespace Microsoft.MixedReality.Toolkit.Input /// /// If a poke pointer has no [CurrentTouchableObjectDown](xref:Microsoft.MixedReality.Toolkit.Input.PokePointer.CurrentTouchableObjectDown), then it will try to select one from the Reachable Objects based on: /// 1. Layer mask priority: Lower-priority layer masks will only be considered if higher-priority layers don't contain any Reachable Objects. - /// 1. Distance: the closest object in the highest priority layers is selected based on [DistanceToTouchable](xref:Microsoft.MixedReality.Toolkit.Input.BaseNearInteractionTouchable.DistanceToTouchable*). - /// 1. Poke Threshold: The object becomes the [CurrentTouchableObjectDown](xref:Microsoft.MixedReality.Toolkit.Input.PokePointer.CurrentTouchableObjectDown) once it crosses the [PokeThreshold](xref:Microsoft.MixedReality.Toolkit.Input.BaseNearInteractionTouchable.PokeThreshold) distance (behind the surface). At this point the [OnTouchStarted](xref:Microsoft.MixedReality.Toolkit.Input.IMixedRealityTouchHandler.OnTouchStarted*) or [OnPointerDown](xref:Microsoft.MixedReality.Toolkit.Input.IMixedRealityPointerHandler.OnPointerDown*) event is raised. + /// 1. Touchable Distance: the closest object in the highest priority layers is selected based on [DistanceToTouchable](xref:Microsoft.MixedReality.Toolkit.Input.BaseNearInteractionTouchable.DistanceToTouchable*). + /// 1. Ray Distance: The object becomes the [CurrentTouchableObjectDown](xref:Microsoft.MixedReality.Toolkit.Input.PokePointer.CurrentTouchableObjectDown) once the ray cast distance becomes negative (behind the surface). At this point the [OnTouchStarted](xref:Microsoft.MixedReality.Toolkit.Input.IMixedRealityTouchHandler.OnTouchStarted*) or [OnPointerDown](xref:Microsoft.MixedReality.Toolkit.Input.IMixedRealityPointerHandler.OnPointerDown*) event is raised. /// /// If a poke pointer _does_ have a [CurrentTouchableObjectDown](xref:Microsoft.MixedReality.Toolkit.Input.PokePointer.CurrentTouchableObjectDown) it will not consider any other object, until the [DistanceToTouchable](xref:Microsoft.MixedReality.Toolkit.Input.BaseNearInteractionTouchable.DistanceToTouchable*) exceeds the [DebounceThreshold](xref:Microsoft.MixedReality.Toolkit.Input.BaseNearInteractionTouchable.DebounceThreshold) (in front of the surface). At this point the active object is cleared and the [OnTouchCompleted](xref:Microsoft.MixedReality.Toolkit.Input.IMixedRealityTouchHandler.OnTouchCompleted*) or [OnPointerUp](xref:Microsoft.MixedReality.Toolkit.Input.IMixedRealityPointerHandler.OnPointerUp*) event is raised. /// public class PokePointer : BaseControllerPointer, IMixedRealityNearPointer { + /// + /// If touchable volumes are larger than this size (meters), pointer will raise + /// touch up even when pointer is inside the volume + /// + private const int maximumTouchableVolumeSize = 1000; + [SerializeField] protected LineRenderer line; @@ -90,10 +96,8 @@ public class PokePointer : BaseControllerPointer, IMixedRealityNearPointer /// the same current closest touchable component's changes (e.g. Unity UI control elements). public GameObject CurrentTouchableObjectDown => currentTouchableObjectDown; - protected override void Start() + private void Awake() { - base.Start(); - queryBuffer = new Collider[sceneQueryBufferSize]; } @@ -105,11 +109,15 @@ protected void OnValidate() sceneQueryBufferSize = Mathf.Max(sceneQueryBufferSize, 1); } + /// public bool IsNearObject { get { return (closestProximityTouchable != null); } } + /// + public override bool IsInteractionEnabled => base.IsInteractionEnabled && IsNearObject; + public override void OnPreSceneQuery() { if (Rays == null) @@ -134,8 +142,12 @@ public override void OnPreSceneQuery() if (newClosestTouchable != null) { // Build ray (poke from in front to the back of the pointer position) - Vector3 start = Position - newClosestTouchable.PokeThreshold * -closestNormal; - Vector3 end = Position + touchableDistance * -closestNormal; + // We make a very long ray if we are touching a touchable volume to ensure that we actually + // hit the volume when we are inside of the volume, which could be very large. + var lengthOfPointerRay = newClosestTouchable is NearInteractionTouchableVolume ? + maximumTouchableVolumeSize : touchableDistance; + Vector3 start = Position + lengthOfPointerRay * closestNormal; + Vector3 end = Position - lengthOfPointerRay * closestNormal; Rays[0].UpdateRayStep(ref start, ref end); line.SetPosition(0, Position); @@ -147,7 +159,7 @@ public override void OnPreSceneQuery() { if (!IsObjectPartOfTouchable(currentTouchableObjectDown, newClosestTouchable)) { - TryRaisePokeUp(Result.CurrentPointerTarget, Position); + TryRaisePokeUp(); } } @@ -167,12 +179,12 @@ private bool FindClosestTouchableForLayerMask(LayerMask layerMask, out BaseNearI int numColliders = UnityEngine.Physics.OverlapSphereNonAlloc(Position, touchableDistance, queryBuffer, layerMask, triggerInteraction); if (numColliders == queryBuffer.Length) { - Debug.LogWarning($"Maximum number of {numColliders} colliders found in PokePointer overlap query. Consider increasing the query buffer size in the pointer profile."); + Debug.LogWarning($"Maximum number of {numColliders} colliders found in PokePointer overlap query. Consider increasing the query buffer size in the input system settings."); } for (int i = 0; i < numColliders; ++i) { - var touchable = queryBuffer[i].GetComponent(); + var touchable = queryBuffer[i].GetComponent(); if (touchable) { float distance = touchable.DistanceToTouchable(Position, out Vector3 normal); @@ -202,6 +214,7 @@ private bool FindClosestTouchableForLayerMask(LayerMask layerMask, out BaseNearI return closest != null; } + /// public override void OnPostSceneQuery() { base.OnPostSceneQuery(); @@ -213,23 +226,35 @@ public override void OnPostSceneQuery() if (Result?.CurrentPointerTarget != null && closestProximityTouchable != null) { - float distToFront = Vector3.Distance(Result.StartPoint, Result.Details.Point) - closestProximityTouchable.PokeThreshold; - bool newIsDown = (distToFront < 0); - bool newIsUp = (distToFront > closestProximityTouchable.DebounceThreshold); + float distToTouchable; + if (closestProximityTouchable is NearInteractionTouchableVolume) + { + // Volumes can be arbitrary size, so don't rely on the length of the raycast ray + // instead just have the volume itself give us the distance. + distToTouchable = closestProximityTouchable.DistanceToTouchable(Position, out _); + } + else + { + // Start position of the ray is offset by TouchableDistance, subtract to get distance between surface and pointer position. + distToTouchable = Vector3.Distance(Result.StartPoint, Result.Details.Point) - touchableDistance; + } + + bool newIsDown = (distToTouchable < 0.0f); + bool newIsUp = (distToTouchable > closestProximityTouchable.DebounceThreshold); if (newIsDown) { - TryRaisePokeDown(Result.CurrentPointerTarget, Position); + TryRaisePokeDown(); } else if (currentTouchableObjectDown != null) { if (newIsUp) { - TryRaisePokeUp(Result.CurrentPointerTarget, Position); + TryRaisePokeUp(); } else { - TryRaisePokeDown(Result.CurrentPointerTarget, Position); + TryRaisePokeDown(); } } } @@ -250,6 +275,7 @@ public override void OnPostSceneQuery() PreviousPosition = Position; } + /// public override void OnPreCurrentPointerTargetChange() { // We need to raise the event now, since the pointer's focused object or touchable will change @@ -258,8 +284,10 @@ public override void OnPreCurrentPointerTargetChange() TryRaisePokeUp(); } - private void TryRaisePokeDown(GameObject targetObject, Vector3 touchPosition) + private void TryRaisePokeDown() { + GameObject targetObject = Result.CurrentPointerTarget; + if (currentTouchableObjectDown == null) { // In order to get reliable up/down event behavior, only allow the closest touchable to be touched. @@ -273,17 +301,17 @@ private void TryRaisePokeDown(GameObject targetObject, Vector3 touchPosition) } else if (closestProximityTouchable.EventsToReceive == TouchableEventType.Touch) { - InputSystem?.RaiseOnTouchStarted(InputSourceParent, Controller, Handedness, touchPosition); + InputSystem?.RaiseOnTouchStarted(InputSourceParent, Controller, Handedness, Position); } } } else { - RaiseTouchUpdated(targetObject, touchPosition); + RaiseTouchUpdated(targetObject, Position); } } - private void TryRaisePokeUp(GameObject targetObject, Vector3 touchPosition) + private void TryRaisePokeUp() { if (currentTouchableObjectDown != null) { @@ -296,21 +324,13 @@ private void TryRaisePokeUp(GameObject targetObject, Vector3 touchPosition) } else if (closestProximityTouchable.EventsToReceive == TouchableEventType.Touch) { - InputSystem?.RaiseOnTouchCompleted(InputSourceParent, Controller, Handedness, touchPosition); + InputSystem?.RaiseOnTouchCompleted(InputSourceParent, Controller, Handedness, Position); } currentTouchableObjectDown = null; } } - private void TryRaisePokeUp() - { - if (currentTouchableObjectDown != null) - { - TryRaisePokeUp(Result.CurrentPointerTarget, Position); - } - } - private void RaiseTouchUpdated(GameObject targetObject, Vector3 touchPosition) { if (currentTouchableObjectDown != null) @@ -363,18 +383,21 @@ public override void OnSourceLost(SourceStateEventData eventData) base.OnSourceLost(eventData); } + /// public override void OnSourceDetected(SourceStateEventData eventData) { base.OnSourceDetected(eventData); PreviousPosition = Position; } + /// public override void OnInputDown(InputEventData eventData) { // Poke pointer should not respond when a button is pressed or hand is pinched // It should only dispatch events based on collision with touchables. } + /// public override void OnInputUp(InputEventData eventData) { // Poke pointer should not respond when a button is released or hand is un-pinched @@ -385,6 +408,8 @@ protected override void OnEnable() { base.OnEnable(); + IsTargetPositionLockedOnFocusLock = false; + Debug.Assert(line != null, "No line renderer found in PokePointer."); Debug.Assert(visuals != null, "No visuals object found in PokePointer."); } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ScreenSpaceMousePointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ScreenSpaceMousePointer.cs index e008fedee5c..22bc8ddb532 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ScreenSpaceMousePointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ScreenSpaceMousePointer.cs @@ -15,6 +15,7 @@ public class ScreenSpaceMousePointer : BaseMousePointer { private Vector2 lastMousePosition; + /// protected override string ControllerName => "ScreenSpace Mouse Pointer"; /// @@ -45,6 +46,7 @@ public override void OnPreSceneQuery() transform.rotation = Quaternion.LookRotation(ray.direction); } + /// protected override void SetVisibility(bool visible) { base.SetVisibility(visible); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ShellHandRayPointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ShellHandRayPointer.cs index aea371b79ba..2effb576f91 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ShellHandRayPointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/ShellHandRayPointer.cs @@ -62,6 +62,7 @@ public override void OnPostSceneQuery() } } + /// protected override void SetLinePoints(Vector3 startPoint, Vector3 endPoint, float distance) { LineBase.FirstPoint = startPoint; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/SpherePointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/SpherePointer.cs index 3641f9581bc..7f4222dccd9 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/SpherePointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/SpherePointer.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using System; using Microsoft.MixedReality.Toolkit.Physics; using Microsoft.MixedReality.Toolkit.Utilities; using UnityEngine; @@ -11,14 +12,15 @@ public class SpherePointer : BaseControllerPointer, IMixedRealityNearPointer { private SceneQueryType raycastMode = SceneQueryType.SphereOverlap; + /// public override SceneQueryType SceneQueryType { get { return raycastMode; } set { raycastMode = value; } } [SerializeField] [Min(0.0f)] - [Tooltip("Additional distance between SphereCastRadius and NearObjectRadius")] + [Tooltip("Additional distance on top of sphere cast radius when pointer is considered 'near' an object and far interaction will turn off")] private float nearObjectMargin = 0.2f; /// - /// Additional distance between and . + /// Additional distance on top of when pointer is considered 'near' an object and far interaction will turn off. /// /// /// This creates a dead zone in which far interaction is disabled before objects become grabbable. @@ -34,30 +36,57 @@ public class SpherePointer : BaseControllerPointer, IMixedRealityNearPointer public float NearObjectRadius => SphereCastRadius + NearObjectMargin; [SerializeField] - private bool debugMode = false; + [Tooltip("The LayerMasks, in prioritized order, that are used to determine the grabble objects. Remember to also add NearInteractionGrabbable! Only collidables with NearInteractionGrabbable will raise events.")] + private LayerMask[] grabLayerMasks = { UnityEngine.Physics.DefaultRaycastLayers }; + /// + /// The LayerMasks, in prioritized order, that are used to determine the touchable objects. + /// + /// + /// Only [NearInteractionGrabbables](xref:Microsoft.MixedReality.Toolkit.Input.NearInteractionGrabbable) in one of the LayerMasks will raise events. + /// + public LayerMask[] GrabLayerMasks => grabLayerMasks; + + [SerializeField] + [Tooltip("Specify whether queries for grabbable objects hit triggers.")] + protected QueryTriggerInteraction triggerInteraction = QueryTriggerInteraction.UseGlobal; + /// + /// Specify whether queries for grabbable objects hit triggers. + /// + public QueryTriggerInteraction TriggerInteraction => triggerInteraction; + + + [SerializeField] + [Tooltip("Maximum number of colliders that can be detected in a scene query.")] + [Min(1)] + private int sceneQueryBufferSize = 64; + /// + /// Maximum number of colliders that can be detected in a scene query. + /// + public int SceneQueryBufferSize => sceneQueryBufferSize; + - private Transform debugSphere; + private SpherePointerQueryInfo queryBufferNearObjectRadius; + private SpherePointerQueryInfo queryBufferInteractionRadius; /// - /// Currently performs a sphere check. - /// Currently anything that has a collider is considered "Grabbable". - /// Eventually we need to filter based on things that can respond - /// to grab events. + /// Test if the pointer is near any collider that's both on a grabbable layer mask, and has a NearInteractionGrabbable. + /// Uses SphereCastRadius + NearObjectMargin to determine if near an object. /// - /// True if the hand is near anything that's grabbable. + /// True if the pointer is near any collider that's both on a grabbable layer mask, and has a NearInteractionGrabbable. public bool IsNearObject { get { - if (TryGetNearGraspPoint(out Vector3 position)) - { - return UnityEngine.Physics.CheckSphere(position, NearObjectRadius, ~UnityEngine.Physics.IgnoreRaycastLayer); - } - - return false; + return queryBufferNearObjectRadius.ContainsGrabbable(); } } + /// + /// Test if the pointer is within the grabbable radius of collider that's both on a grabbable layer mask, and has a NearInteractionGrabbable. + /// Uses SphereCastRadius to determine if near an object. + /// Note: if focus on pointer is locked, will always return true. + /// + /// True if the pointer is within the grabbable radius of collider that's both on a grabbable layer mask, and has a NearInteractionGrabbable. public override bool IsInteractionEnabled { get @@ -66,15 +95,16 @@ public override bool IsInteractionEnabled { return true; } - else if (base.IsInteractionEnabled && TryGetNearGraspPoint(out Vector3 position)) - { - return UnityEngine.Physics.CheckSphere(position, SphereCastRadius, ~UnityEngine.Physics.IgnoreRaycastLayer); - } - - return false; + return base.IsInteractionEnabled && queryBufferInteractionRadius.ContainsGrabbable(); } } + private void Awake() + { + queryBufferNearObjectRadius = new SpherePointerQueryInfo(sceneQueryBufferSize, NearObjectRadius); + queryBufferInteractionRadius = new SpherePointerQueryInfo(sceneQueryBufferSize, SphereCastRadius); + } + /// public override void OnPreSceneQuery() { @@ -86,20 +116,26 @@ public override void OnPreSceneQuery() Vector3 pointerPosition; if (TryGetNearGraspPoint(out pointerPosition)) { - if (debugMode) + Vector3 endPoint = Vector3.forward * SphereCastRadius; + Rays[0].UpdateRayStep(ref pointerPosition, ref endPoint); + + var layerMasks = PrioritizedLayerMasksOverride ?? GrabLayerMasks; + + for (int i = 0; i < layerMasks.Length; i++) { - if (debugSphere == null) + if (queryBufferNearObjectRadius.TryUpdateQueryBufferForLayerMask(layerMasks[i], pointerPosition, triggerInteraction)) { - debugSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere).transform; - debugSphere.localScale = Vector3.one * SphereCastRadius * 2; - Destroy(debugSphere.gameObject.GetComponent()); + break; } - - debugSphere.position = pointerPosition; } - Vector3 endPoint = Vector3.forward * SphereCastRadius; - Rays[0].UpdateRayStep(ref pointerPosition, ref endPoint); + for (int i = 0; i < layerMasks.Length; i++) + { + if (queryBufferInteractionRadius.TryUpdateQueryBufferForLayerMask(layerMasks[i], pointerPosition, triggerInteraction)) + { + break; + } + } } } @@ -171,12 +207,69 @@ public bool TryGetNormalToNearestSurface(out Vector3 normal) return false; } - private void OnDestroy() + /// + /// Helper class for storing and managing near grabbables close to a point + /// + private class SpherePointerQueryInfo { - if (debugSphere) + /// + /// How many colliders are near the point from the latest call to TryUpdateQueryBufferForLayerMask + /// + private int numColliders; + + /// + /// Fixed-length array used to story physics queries + /// + private Collider[] queryBuffer; + + /// + /// Distance for performing queries. + /// + private float queryRadius; + + /// + /// The grabbable near the QueryRadius. + /// + private NearInteractionGrabbable grabbable; + + public SpherePointerQueryInfo(int bufferSize, float radius) + { + numColliders = 0; + queryBuffer = new Collider[bufferSize]; + queryRadius = radius; + } + + public bool TryUpdateQueryBufferForLayerMask(LayerMask layerMask, Vector3 pointerPosition, QueryTriggerInteraction triggerInteraction) + { + grabbable = null; + numColliders = UnityEngine.Physics.OverlapSphereNonAlloc( + pointerPosition, + queryRadius, + queryBuffer, + layerMask, + triggerInteraction); + + if (numColliders == queryBuffer.Length) + { + Debug.LogWarning($"Maximum number of {numColliders} colliders found in SpherePointer overlap query. Consider increasing the query buffer size in the pointer profile."); + } + + for (int i = 0; i < numColliders; i++) + { + if (grabbable = queryBuffer[i].GetComponent()) + { + return true; + } + } + return false; + } + /// + /// Returns true if any of the objects inside QueryBuffer contain a grabbable + /// + public bool ContainsGrabbable() { - Destroy(debugSphere.gameObject); + return grabbable != null; } } } -} \ No newline at end of file +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/SpherePointerVisual.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/SpherePointerVisual.cs index 1770ebb9116..c0f89de9291 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/SpherePointerVisual.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/SpherePointerVisual.cs @@ -6,12 +6,11 @@ namespace Microsoft.MixedReality.Toolkit.Input { - [ExecuteAlways] public class SpherePointerVisual : MonoBehaviour { public Transform TetherEndPoint => tetherEndPoint; - public bool TetherVisualsEnabled => tetherVisualsEnabled; + public bool TetherVisualsEnabled { get; private set; } [Tooltip("The pointer these visuals decorate")] private SpherePointer pointer; @@ -30,8 +29,6 @@ public class SpherePointerVisual : MonoBehaviour [SerializeField] private BaseMixedRealityLineDataProvider tetherLine = null; - private bool tetherVisualsEnabled; - public void OnEnable() { CheckInitialization(); @@ -58,6 +55,7 @@ private void CheckInitialization() { pointer = GetComponent(); } + if (pointer == null) { Debug.LogError($"No SpherePointer found on {gameObject.name}."); @@ -78,12 +76,7 @@ private void CheckAsset(object asset, string fieldname) public void Update() { - if (!Application.isPlaying) - { - return; - } - - tetherVisualsEnabled = false; + TetherVisualsEnabled = false; if (pointer.IsFocusLocked && pointer.IsTargetPositionLockedOnFocusLock && pointer.Result != null) { NearInteractionGrabbable grabbedObject = GetGrabbedObject(); @@ -94,14 +87,14 @@ public void Update() tetherLine.FirstPoint = graspPosition; Vector3 endPoint = pointer.Result.Details.Object.transform.TransformPoint(pointer.Result.Details.PointLocalSpace); tetherLine.LastPoint = endPoint; - tetherVisualsEnabled = Vector3.Distance(tetherLine.FirstPoint, tetherLine.LastPoint) > minTetherLength; - tetherLine.enabled = tetherVisualsEnabled; - tetherEndPoint.gameObject.SetActive(tetherVisualsEnabled); + TetherVisualsEnabled = Vector3.Distance(tetherLine.FirstPoint, tetherLine.LastPoint) > minTetherLength; + tetherLine.enabled = TetherVisualsEnabled; + tetherEndPoint.gameObject.SetActive(TetherVisualsEnabled); tetherEndPoint.position = endPoint; } } - visualsRoot.gameObject.SetActive(tetherVisualsEnabled); + visualsRoot.gameObject.SetActive(TetherVisualsEnabled); } private NearInteractionGrabbable GetGrabbedObject() diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs index 4b2b1327805..82d33bc032e 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs @@ -209,6 +209,7 @@ public float PointerOrientation } } + /// public override void OnPreSceneQuery() { if (LineBase == null) @@ -240,6 +241,7 @@ public override void OnPreSceneQuery() GravityDistorter.enabled = (TeleportSurfaceResult == TeleportSurfaceResult.HotSpot); } + /// public override void OnPostSceneQuery() { if (IsSelectPressed) diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PhysicalPressEventRouter.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PhysicalPressEventRouter.cs index 84edf91b7de..4eba31ed312 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PhysicalPressEventRouter.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PhysicalPressEventRouter.cs @@ -4,10 +4,10 @@ using Microsoft.MixedReality.Toolkit.UI; using UnityEngine; -namespace Microsoft.MixedReality.Toolkit.Examples.Demos +namespace Microsoft.MixedReality.Toolkit { /// - /// This class exists to route events through to Interactable. + /// This class exists to route events through to . /// The result is being able to have physical touch call Interactable.OnPointerClicked. /// public class PhysicalPressEventRouter : MonoBehaviour @@ -32,38 +32,58 @@ private void Awake() } } + private bool CanRouteInput() + { + return routingTarget != null && routingTarget.IsEnabled; + } + + /// + /// Gets called when the TouchBegin event is invoked within the default PressableButton and + /// PressableButtonHoloLens2 components. When the physical touch with a + /// hand has begun, set physical touch state within Interactable. + /// public void OnHandPressTouched() { - if (routingTarget != null) + if (CanRouteInput()) { - routingTarget.SetPhysicalTouch(true); + routingTarget.HasPhysicalTouch = true; if (InteractableOnClick == PhysicalPressEventBehavior.EventOnTouch) { - routingTarget.SetPress(true); + routingTarget.HasPress = true; routingTarget.TriggerOnClick(); - routingTarget.SetPress(false); + routingTarget.HasPress = false; } } } + /// + /// Gets called when the TouchEnd event is invoked within the default PressableButton and + /// PressableButtonHoloLens2 components. Once the physical touch with a hand is removed, set + /// the physical touch and possibly press state within Interactable. + /// public void OnHandPressUntouched() { - if (routingTarget != null) + if (CanRouteInput()) { - routingTarget.SetPhysicalTouch(false); + routingTarget.HasPhysicalTouch = false; if (InteractableOnClick == PhysicalPressEventBehavior.EventOnTouch) { - routingTarget.SetPress(true); + routingTarget.HasPress = true; } } } + /// + /// Gets called when the ButtonPressed event is invoked within the default PressableButton and + /// PressableButtonHoloLens2 components. When the physical press with a hand is triggered, set + /// the physical touch and press state within Interactable. + /// public void OnHandPressTriggered() { - if (routingTarget != null) + if (CanRouteInput()) { - routingTarget.SetPhysicalTouch(true); - routingTarget.SetPress(true); + routingTarget.HasPhysicalTouch = true; + routingTarget.HasPress = true; if (InteractableOnClick == PhysicalPressEventBehavior.EventOnPress) { routingTarget.TriggerOnClick(); @@ -71,18 +91,23 @@ public void OnHandPressTriggered() } } + /// + /// Gets called when the ButtonReleased event is invoked within the default PressableButton and + /// PressableButtonHoloLens2 components. Once the physical press with a hand is completed, set + /// the press and physical touch states within Interactable + /// public void OnHandPressCompleted() { - if (routingTarget != null) + if (CanRouteInput()) { - routingTarget.SetPhysicalTouch(true); - routingTarget.SetPress(true); + routingTarget.HasPhysicalTouch = true; + routingTarget.HasPress = true; if (InteractableOnClick == PhysicalPressEventBehavior.EventOnClickCompletion) { routingTarget.TriggerOnClick(); } - routingTarget.SetPress(false); - routingTarget.SetPhysicalTouch(false); + routingTarget.HasPress = false; + routingTarget.HasPhysicalTouch = false; } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PressableButton.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PressableButton.cs index 0d9d30e33d3..2614be9c7be 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PressableButton.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PressableButton.cs @@ -12,13 +12,14 @@ namespace Microsoft.MixedReality.Toolkit.UI { /// /// A button that can be pushed via direct touch. - /// You can use to route these events to . + /// You can use to route these events to . /// - [RequireComponent(typeof(BoxCollider))] public class PressableButton : MonoBehaviour, IMixedRealityTouchHandler { const string InitialMarkerTransformName = "Initial Marker"; + bool hasStarted = false; + /// /// The object that is being pushed. /// @@ -61,7 +62,7 @@ public SpaceMode DistanceSpaceMode } [SerializeField] - [Tooltip("The offset at which pushing starts. Offset is relative to the pivot of either the moving visuals if there's any or the button itself.")] + [Tooltip("The offset at which pushing starts. Offset is relative to the pivot of either the moving visuals if there's any or the button itself. For UnityUI based PressableButtons, this cannot be a negative value.")] protected float startPushDistance = 0.0f; /// @@ -146,7 +147,6 @@ public SpaceMode DistanceSpaceMode /// public float CurrentPushDistance { get => currentPushDistance; protected set => currentPushDistance = value; } - private bool isTouching = false; /// @@ -188,16 +188,16 @@ private set public bool IsPressing { get; private set; } /// - /// The press direction of the button as defined by a NearInteractionTouchable. + /// The press direction of the button as defined by a NearInteractionTouchableSurface. /// private Vector3 WorldSpacePressDirection { get { - var nearInteractionTouchable = GetComponent(); + var nearInteractionTouchable = GetComponent(); if (nearInteractionTouchable != null) { - return -1.0f * nearInteractionTouchable.Forward; + return nearInteractionTouchable.transform.TransformDirection(nearInteractionTouchable.LocalPressDirection); } return transform.forward; @@ -236,10 +236,10 @@ private float LocalToWorldScale /// /// Initial offset from moving visuals to button /// - private Vector3 initialOffsetMovingVisuals = Vector3.zero; + private Vector3 movingVisualsInitialLocalPosition = Vector3.zero; /// - /// The position from where the button starts to move. + /// The position from where the button starts to move. Projected into world space based on the button's current world space position. /// private Vector3 InitialPosition { @@ -247,13 +247,12 @@ private Vector3 InitialPosition { if (Application.isPlaying && movingButtonVisuals) // we're using a cached position in play mode as the moving visuals will be moved during button interaction { - return PushSpaceSourceParentPosition + initialOffsetMovingVisuals; + return PushSpaceSourceParentPosition + movingButtonVisuals.transform.TransformVector(movingVisualsInitialLocalPosition); } else { return PushSpaceSourceTransform.position; } - } } @@ -268,12 +267,17 @@ private void OnEnable() protected virtual void Start() { + hasStarted = true; + if (gameObject.layer == 2) { Debug.LogWarning("PressableButton will not work if game object layer is set to 'Ignore Raycast'."); } - initialOffsetMovingVisuals = PushSpaceSourceTransform.position - PushSpaceSourceParentPosition; + movingVisualsInitialLocalPosition = movingButtonVisuals.transform.localPosition; + + // Ensure everything is set to initial positions correctly. + UpdateMovingVisualsPosition(); } void OnDisable() @@ -282,9 +286,12 @@ void OnDisable() touchPoints.Clear(); currentInputSources.Clear(); - // make sure button doesn't stay in a pressed state in case we disable the button while pressing it - currentPushDistance = startPushDistance; - UpdateMovingVisualsPosition(); + if (hasStarted) + { + // make sure button doesn't stay in a pressed state in case we disable the button while pressing it + currentPushDistance = startPushDistance; + UpdateMovingVisualsPosition(); + } } private void Update() @@ -416,8 +423,6 @@ void IMixedRealityTouchHandler.OnTouchCompleted(HandTrackingInputEventData event /// /// Returns world space position along the push direction for the given local distance /// - /// - /// /// public Vector3 GetWorldPositionAlongPushDirection(float localDistance) { @@ -429,8 +434,6 @@ public Vector3 GetWorldPositionAlongPushDirection(float localDistance) /// /// Returns the local distance along the push direction for the passed in world position /// - /// - /// public float GetDistanceAlongPushDirection(Vector3 positionWorldSpace) { Vector3 localPosition = positionWorldSpace - InitialPosition; @@ -466,7 +469,6 @@ private float GetFarthestDistanceAlongPressDirection() return Mathf.Clamp(farthestDistance, startPushDistance, maxPushDistance); } - private void UpdatePressedState(float pushDistance) { // If we aren't in a press and can't start a simple one. diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PressableButtonHoloLens2.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PressableButtonHoloLens2.cs index 684e6d47c3f..d2786e30ef3 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PressableButtonHoloLens2.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/PressableButtonHoloLens2.cs @@ -106,6 +106,7 @@ public GameObject MovingButtonIconText } } + /// protected override void UpdateMovingVisualsPosition() { base.UpdateMovingVisualsPosition(); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/SubmitEventRouter.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/SubmitEventRouter.cs new file mode 100644 index 00000000000..59f2515ac42 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/SubmitEventRouter.cs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEngine; +using UnityEngine.EventSystems; + +namespace Microsoft.MixedReality.Toolkit +{ + /// + /// This is a helper class to allow you to call OnSubmit() on a UnityEngine.UI.Button or other control derived from UnityEngine.EventSystems.ISubmitHandler on this gameObject. + /// It exposes a public function that can be bound in the Editor to a Unity Event. + /// + public class SubmitEventRouter : MonoBehaviour + { + public void Submit() + { + ExecuteEvents.Execute(this.gameObject, new BaseEventData(EventSystem.current), ExecuteEvents.submitHandler); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/SubmitEventRouter.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/SubmitEventRouter.cs.meta new file mode 100644 index 00000000000..73aa342e626 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/PressableButtons/SubmitEventRouter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 724341da07c2e1742a82bcc156a2461d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/ProgressIndicators/IProgressIndicator.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/ProgressIndicators/IProgressIndicator.cs index bf37cfccc9b..9260f826141 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/ProgressIndicators/IProgressIndicator.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/ProgressIndicators/IProgressIndicator.cs @@ -32,13 +32,11 @@ public interface IProgressIndicator /// /// Opens the progress indicator before loading begins. Method is async to allow for animation to begin before loading. /// - /// Task OpenAsync(); /// /// Closes the progress indicator after loading is finished. Method is async to allow for animation to complete. /// - /// Task CloseAsync(); } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Slate/FollowMeToggle.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Slate/FollowMeToggle.cs index e0e7cfb5959..d948f523183 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Slate/FollowMeToggle.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Slate/FollowMeToggle.cs @@ -1,40 +1,200 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using Microsoft.MixedReality.Toolkit.Utilities; using Microsoft.MixedReality.Toolkit.Utilities.Solvers; +using System.Collections; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.UI { + /// + /// A utility script for toggling the 'Follow Me' behavior by activating/deactivating the Radial View Solver. + /// This script also provides optional toggle at specified distance. + /// [RequireComponent(typeof(RadialView))] public class FollowMeToggle : MonoBehaviour { + /// + /// An optional object for visualizing the 'Follow Me' mode state. + /// + public GameObject VisualizationObject + { + get { return visualizationObject; } + set { visualizationObject = value; } + } + [SerializeField] - [Tooltip("An opional object for visualizing the 'Follow Me' mode state")] + [Tooltip("An optional object for visualizing the 'Follow Me' mode state.")] private GameObject visualizationObject = null; + /// + /// An optional Interactable to select/deselect when toggling the follow behavior. + /// + public Interactable InteractableObject + { + get { return interactableObject; } + set { interactableObject = value; } + } + + [SerializeField] + [Tooltip("An optional Interactable to select/deselect when toggling the follow behavior.")] + private Interactable interactableObject = null; + + /// + /// Should following be automatically enabled when the user is further than a certain distance away? + /// + public bool AutoFollowAtDistance + { + get { return autoFollowAtDistance; } + set + { + autoFollowAtDistance = value; + + if (autoFollowAtDistance) + { + if (autoFollowDistanceCheck == null) + { + autoFollowDistanceCheck = StartCoroutine(AutoFollowDistanceCheck()); + } + } + else + { + if (autoFollowDistanceCheck != null) + { + StopCoroutine(autoFollowDistanceCheck); + autoFollowDistanceCheck = null; + } + } + } + } + + [SerializeField] + [Tooltip("Should following be automatically enabled when the user is further than a certain distance away?")] + private bool autoFollowAtDistance = false; + + /// + /// If autoFollowAtDistance is enabled, what distance to trigger auto following at. + /// + public float AutoFollowDistance + { + get { return autoFollowDistance; } + set { autoFollowDistance = value; } + } + + [SerializeField] + [Tooltip("If autoFollowAtDistance is enabled, what distance to trigger auto following at.")] + private float autoFollowDistance = 2.0f; + + /// + /// Optional transform to use when using autoFollowAtDistance. If not specified the local transform is used. + /// + public Transform AutoFollowTransformTarget + { + get { return autoFollowTransformTarget; } + set + { + autoFollowTransformTarget = value; + + if (autoFollowTransformTarget == null) + { + autoFollowTransformTarget = transform; + } + } + } + + [SerializeField] + [Tooltip("Optional transform to use when using autoFollowAtDistance. If not specified the local transform is used.")] + private Transform autoFollowTransformTarget = null; + private RadialView radialView = null; + private Coroutine autoFollowDistanceCheck = null; - private void Start() + #region MonoBehaviour Implementation + + private void Awake() { - // Get Radial Solver component radialView = GetComponent(); + + if (autoFollowTransformTarget == null) + { + autoFollowTransformTarget = transform; + } + + // Begin the follow coroutine if requested at the beginning. + AutoFollowAtDistance = autoFollowAtDistance; + } + + private void OnValidate() + { + // When playing make sure the coroutine starts and stops based on inspector updates. + if (Application.isPlaying) + { + AutoFollowAtDistance = autoFollowAtDistance; + } } + #endregion MonoBehaviour Implementation + + /// + /// Toggles the current follow behavior of the solver. + /// public void ToggleFollowMeBehavior() { if (radialView != null) + { + SetFollowMeBehavior(!radialView.enabled); + } + } + + /// + /// Enables or disables the solver based on the follow parameter. + /// + /// True if the solver should be active. + public void SetFollowMeBehavior(bool follow) + { + if (radialView != null && radialView.enabled != follow) { // Toggle Radial Solver component // You can tweak the detailed positioning behavior such as offset, lerping time, orientation type in the Inspector panel - radialView.enabled = !radialView.enabled; + radialView.enabled = follow; - if(visualizationObject != null) + if (visualizationObject != null) { - visualizationObject.SetActive(radialView.enabled); + visualizationObject.SetActive(follow); + } + + if (interactableObject != null) + { + interactableObject.IsToggled = follow; } } + } + /// + /// Coroutine which checks how far away this transform is from the user and enables the follow behavior at a specified distance. + /// + /// Coroutine enumerator. + private IEnumerator AutoFollowDistanceCheck() + { + while (true) + { + var mainCamera = CameraCache.Main; + + if (mainCamera != null) + { + float autoFollowDistanceSq = autoFollowDistance * autoFollowDistance; + + if (autoFollowTransformTarget != null) + { + if ((mainCamera.transform.position - autoFollowTransformTarget.position).sqrMagnitude >= autoFollowDistanceSq) + { + SetFollowMeBehavior(true); + } + } + } + yield return null; + } } } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Slate/HandInteractionPanZoom.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Slate/HandInteractionPanZoom.cs index 1e62e4c9c54..a1fc02b9180 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Slate/HandInteractionPanZoom.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Slate/HandInteractionPanZoom.cs @@ -150,6 +150,7 @@ private bool scaleActive private Dictionary handDataMap = new Dictionary(); List uvs = new List(); List uvsOrig = new List(); + private bool oldIsTargetPositionLockedOnFocusLock; #endregion Private Properties /// @@ -292,9 +293,11 @@ private void Initialize() } else { - if (this.GetComponent()?.material?.mainTexture != null) + Renderer renderer = this.GetComponent(); + Material material = (renderer != null) ? renderer.material : null; + if ((material != null) && (material.mainTexture != null)) { - this.GetComponent().material.mainTexture.wrapMode = TextureWrapMode.Repeat; + material.mainTexture.wrapMode = TextureWrapMode.Repeat; } } @@ -466,8 +469,12 @@ private void SetAffordancesActive(bool active) rightPoint.SetActive(affordancesVisible); } - currentMaterial?.SetColor(proximityLightCenterColorID, active ? proximityLightCenterColor : defaultProximityLightCenterColor); + if (currentMaterial != null) + { + currentMaterial.SetColor(proximityLightCenterColorID, active ? proximityLightCenterColor : defaultProximityLightCenterColor); + } } + private Vector3 GetContactForHand(Handedness hand) { Vector3 handPoint = Vector3.zero; @@ -750,7 +757,11 @@ private void RaisePanning(uint sourceId) #region BaseFocusHandler Methods + + /// public override void OnFocusEnter(FocusEventData eventData) { } + + /// public override void OnFocusExit(FocusEventData eventData) { EndAllTouches(); @@ -784,6 +795,11 @@ public void OnTouchUpdated(HandTrackingInputEventData eventData) { } /// public void OnPointerDown(MixedRealityPointerEventData eventData) { + oldIsTargetPositionLockedOnFocusLock = eventData.Pointer.IsTargetPositionLockedOnFocusLock; + if (! (eventData.Pointer is IMixedRealityNearPointer) && eventData.Pointer.Controller.IsRotationAvailable) + { + eventData.Pointer.IsTargetPositionLockedOnFocusLock = false; + } SetAffordancesActive(false); EndTouch(eventData.SourceId); SetHandDataFromController(eventData.Pointer.Controller, eventData.Pointer, false); @@ -791,6 +807,7 @@ public void OnPointerDown(MixedRealityPointerEventData eventData) } public void OnPointerUp(MixedRealityPointerEventData eventData) { + eventData.Pointer.IsTargetPositionLockedOnFocusLock = oldIsTargetPositionLockedOnFocusLock; EndTouch(eventData.SourceId); eventData.Use(); } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/DestroyOnAnimationComplete.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/DestroyOnAnimationComplete.cs new file mode 100644 index 00000000000..6533ce89a73 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/DestroyOnAnimationComplete.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Destroys the Game Object after the length of the Animator component. + /// Attach this script to any game object with Animator component to destroy on animation complete. + /// + [RequireComponent(typeof(Animator))] + public class DestroyOnAnimationComplete : MonoBehaviour + { + [SerializeField] + [Tooltip("Additional delay after the animation complete")] + private float delay = 1.0f; + public float Delay + { + get { return delay; } + set { delay = value; } + } + + void Start() + { + Destroy(gameObject, this.GetComponent().GetCurrentAnimatorStateInfo(0).length + delay); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/DestroyOnAnimationComplete.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/DestroyOnAnimationComplete.cs.meta new file mode 100644 index 00000000000..8c030f04d2b --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/DestroyOnAnimationComplete.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0ba356208ebee842b61c465bde80a05 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/SpeechConfirmationTooltip.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/SpeechConfirmationTooltip.cs new file mode 100644 index 00000000000..6cf24f0bf79 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/SpeechConfirmationTooltip.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Tooltip used for speech confirmation label. This inherits ToolTip class and provides generic text string interface for the label. + /// To create your own speecn cofirmation label, override SpeechConfirmationTooltip and provide SetText(string s) and + /// TriggerConfirmationAnimation() functions. Assign the prefab to the SpeechInputHandler.cs + /// + public class SpeechConfirmationTooltip : ToolTip + { + public virtual void SetText(string labelText) + { + ToolTipText = labelText; + } + + public virtual void TriggerConfirmedAnimation() + { + gameObject.GetComponent().SetTrigger("Confirmed"); + } + + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/SpeechConfirmationTooltip.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/SpeechConfirmationTooltip.cs.meta new file mode 100644 index 00000000000..31caf51a5c4 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Tooltips/SpeechConfirmationTooltip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36767500e4f76334a8999a2f5fa5dcc6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/Easing.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/Easing.cs index 5dd50c2e979..d91092e0fa6 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/Easing.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/Easing.cs @@ -29,7 +29,7 @@ public enum BasicEaseCurves { Linear, EaseIn, EaseOut, EaseInOut } /// - /// The amount of time the ease should run + /// The amount of time the ease should run in seconds /// public float LerpTime = 0.5f; @@ -41,6 +41,20 @@ public Easing() Stop(); } + /// + /// Create Easing object with copied internal properties + /// + /// Copy of current Easing instance + public Easing Copy() + { + return new Easing() + { + Curve = this.Curve, + Enabled = this.Enabled, + LerpTime = this.LerpTime, + }; + } + /// /// Update the ease each frame or on Update /// @@ -67,7 +81,6 @@ public void Start() /// /// Is the ease currently running? /// - /// public bool IsPlaying() { return timer < LerpTime; @@ -84,7 +97,6 @@ public void Stop() /// /// get the linear ease value /// - /// public float GetLinear() { return timer / LerpTime; @@ -93,7 +105,6 @@ public float GetLinear() /// /// get the ease value based on the animation curve /// - /// public float GetCurved() { return IsLinear() ? GetLinear() : Curve.Evaluate(GetLinear()); @@ -125,7 +136,6 @@ protected bool IsLinear() /// /// set the animation curve using a preset /// - /// public void SetCurve(BasicEaseCurves curve) { AnimationCurve animation = AnimationCurve.Linear(0, 1, 1, 1); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/GazeHandHelper.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/GazeHandHelper.cs index 27e979dacfa..83a644a65a1 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/GazeHandHelper.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/GazeHandHelper.cs @@ -67,7 +67,6 @@ public void RemoveSource(InputEventData eventData) /// /// This function must be called from the OnSourceLost handler in a script implementing the IMixedRealitySourceStateHandler interface. /// - /// public void RemoveSource(SourceStateEventData eventData) { uint sourceId = eventData.SourceId; @@ -81,7 +80,6 @@ public void RemoveSource(SourceStateEventData eventData) /// /// This function must be called from the OnInputChanged handler in a script implementing the . /// - /// public void UpdateSource(InputEventData eventData) { uint id = eventData.SourceId; @@ -109,7 +107,6 @@ public void UpdateSource(InputEventData eventData) /// /// This function returns the number of active hands. /// - /// public int GetActiveHandCount() { int count = 0; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/InteractableOnFocus.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/InteractableOnFocus.cs index 35357d1de38..9e851e35475 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/InteractableOnFocus.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/InteractableOnFocus.cs @@ -45,7 +45,7 @@ public void Update() { foreach (var theme in themes) { - theme.OnUpdate((int)State, null, false); + theme.OnUpdate((int)State, false); } } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/RectTransformCubeScaler.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/RectTransformCubeScaler.cs new file mode 100644 index 00000000000..c07d2da7f31 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/RectTransformCubeScaler.cs @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Utilities +{ + /// + /// RectTransforms do not scale 3d objects (such as unit cubes) to fit within their bounds. + /// This helper class will apply a scale to fit a unit cube into the bounds specified by the RectTransform. + /// The Z component is scaled to the min of the X and Y components. + /// + [ExecuteInEditMode] + [RequireComponent(typeof(RectTransform))] + public class RectTransformCubeScaler : MonoBehaviour + { + private RectTransform rectTransform; + private Vector2 prevRectSize = Vector2.zero; + + private void Start() + { + rectTransform = GetComponent(); + } + + private void Update() + { + var size = rectTransform.rect.size; + + if (prevRectSize != size) + { + prevRectSize = size; + + this.transform.localScale = new Vector3(size.x, size.y, Mathf.Min(size.x, size.y)); + } + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/RectTransformCubeScaler.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/RectTransformCubeScaler.cs.meta new file mode 100644 index 00000000000..54bada62885 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/RectTransformCubeScaler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ea7dc4a5a95cb84584659cbc5279700 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/ToggleHandVisualisation.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/ToggleHandVisualisation.cs index 97ba502d9f1..ee1a244f294 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/ToggleHandVisualisation.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/ToggleHandVisualisation.cs @@ -24,32 +24,34 @@ protected IMixedRealityInputSystem InputSystem } } - void updateHandVisibility() + /// + /// Initial setting of hand mesh visualization - default is disabled + /// + private void Start() { - MixedRealityHandTrackingProfile handTrackingProfile = InputSystem?.InputSystemProfile?.HandTrackingProfile; - if (handTrackingProfile != null) - { - handTrackingProfile.EnableHandMeshVisualization = isHandMeshVisible; - handTrackingProfile.EnableHandJointVisualization = isHandJointVisible; - } + UpdateHandVisibility(); } /// - /// Initial setting of hand mesh visualization - default is disabled + /// Updates the hand tracking profile with the current local visualization settings /// - void Start() + private void UpdateHandVisibility() { - updateHandVisibility(); + MixedRealityHandTrackingProfile handTrackingProfile = InputSystem?.InputSystemProfile?.HandTrackingProfile; + if (handTrackingProfile != null) + { + handTrackingProfile.EnableHandMeshVisualization = isHandMeshVisible; + handTrackingProfile.EnableHandJointVisualization = isHandJointVisible; + } } - /// /// Toggles hand mesh visualization /// public void OnToggleHandMesh() { isHandMeshVisible = !isHandMeshVisible; - updateHandVisibility(); + UpdateHandVisibility(); } /// @@ -58,8 +60,7 @@ public void OnToggleHandMesh() public void OnToggleHandJoint() { isHandJointVisible = !isHandJointVisible; - updateHandVisibility(); + UpdateHandVisibility(); } - } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes.meta new file mode 100644 index 00000000000..37804b99f05 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c9c77d861c667145a59087347eea7ee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core.meta new file mode 100644 index 00000000000..0445c15edbd --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b84cb143ffdc7bc48862a0d6570a0759 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/Theme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/Theme.cs new file mode 100644 index 00000000000..ae53b4647c2 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/Theme.cs @@ -0,0 +1,110 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Serialization; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme scriptableObject for loading theme settings + /// + [CreateAssetMenu(fileName = "Theme", menuName = "Mixed Reality Toolkit/Theme", order = 1)] + public class Theme : ScriptableObject + { + [FormerlySerializedAs("Settings")] + [SerializeField] + private List definitions; + + /// + /// List of Theme Definition configurations. Each definition defines what type of Theme Engine to create and how to configure it + /// + public List Definitions + { + get { return definitions; } + set + { + definitions = value; + ValidateDefinitions(); + } + } + + [FormerlySerializedAs("States")] + [SerializeField] + private States states; + /// + /// Associated States object to use with this theme. Defines the states available for each Theme to utilize + /// + public States States + { + get { return states; } + set + { + states = value; + ValidateDefinitions(); + } + } + + /// + /// Stores historical values of different ThemeDefinition selections. Useful for editor design + /// Each item in list corresponds to item in Definitions list property + /// Each Dictionary keeps track of last used ThemeDefinition configuration for a given Theme type (type must extend from InteractableThemeBase) + /// + public List> History = new List>(); + + /// + /// Helper function to convert States scriptableobject into an array of available State values + /// + /// Array of available State values for currently assigned States property in this Theme + [System.Obsolete("Use States.StateList instead")] + public State[] GetStates() + { + if (States != null) + { + return States.StateList.ToArray(); + } + + return new State[0]; + } + + /// + /// Validate list of ThemeDefinitions with current States object + /// + public void ValidateDefinitions() + { + if (Definitions != null && States != null) + { + int numOfStates = States.StateList.Count; + foreach (var definition in Definitions) + { + // For each theme property with values per possible state + // ensure the number of values matches the number of states + foreach (ThemeStateProperty p in definition.StateProperties) + { + if (p.Values.Count != numOfStates) + { + // Need to fill property with default values to match number of states + if (p.Values.Count < numOfStates) + { + for (int i = p.Values.Count - 1; i < numOfStates; i++) + { + p.Values.Add(p.Default.Copy()); + } + } + else + { + // Too many property values, remove to match number of states + for (int i = p.Values.Count - 1; i >= numOfStates; i--) + { + p.Values.RemoveAt(i); + } + } + } + } + } + } + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/Theme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/Theme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/Theme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/Theme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeDefinition.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeDefinition.cs new file mode 100644 index 00000000000..d28d017a6cc --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeDefinition.cs @@ -0,0 +1,140 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.Serialization; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Defines configuration properties and settings to use when initializing a class extending InteractableThemeBase + /// + [System.Serializable] + public struct ThemeDefinition + { + /// + /// Defines the type of Theme to associate with this definition. Type must be a class that extends InteractableThemeBase + /// + public Type ThemeType + { + get + { + if (Type == null) + { + if (string.IsNullOrEmpty(AssemblyQualifiedName)) + { + var className = ClassName; + // Temporary workaround + // This is to fix a bug in RC2.1 where the AssemblyQualifiedName was never actually saved. + var correctType = TypeCacheUtility.GetSubClasses().Where(s => s?.Name == className); + if (!correctType.Any()) + { + return null; + } + + AssemblyQualifiedName = correctType.First().AssemblyQualifiedName; + } + + Type = Type.GetType(AssemblyQualifiedName); + } + + return Type; + } + set + { + if (!value.IsSubclassOf(typeof(InteractableThemeBase))) + { + Debug.LogWarning($"Cannot assign type {value} that does not extend {typeof(InteractableThemeBase)} to ThemeDefinition"); + return; + } + + if (Type != value) + { + Type = value; + ClassName = Type.Name; + AssemblyQualifiedName = Type.AssemblyQualifiedName; + } + } + } + + // Unity cannot serialize System.Type, thus must save AssemblyQualifiedName + // Field here for Runtime use + [NonSerialized] + private Type Type; + + [FormerlySerializedAs("Name")] + [SerializeField] + private string ClassName; + + [SerializeField] + private string AssemblyQualifiedName; + + [FormerlySerializedAs("Properties")] + [FormerlySerializedAs("StateProperties")] + [SerializeField] + private List stateProperties; + /// + /// List of properties with values defined per state index (Example list of colors for different states) + /// + public List StateProperties + { + get { return stateProperties; } + set { stateProperties = value; } + } + + [FormerlySerializedAs("CustomSettings")] + [FormerlySerializedAs("CustomProperties")] + [SerializeField] + private List customProperties; + /// + /// List of single-value properties defined for the entire Theme engine regardless of the current state + /// + public List CustomProperties + { + get { return customProperties; } + set { customProperties = value; } + } + + [FormerlySerializedAs("Easing")] + [SerializeField] + private Easing easing; + /// + /// Object to configure easing between values. Type of Theme Engine, as defined by the ThemeType property, must have IsEasingSupported set to true + /// + public Easing Easing + { + get { return easing; } + set { easing = value; } + } + + /// + /// Utility function to generate the default ThemeDefinition configuration for the provided type of Theme engine + /// + /// type of Theme Engine to build default configuration for + /// Default ThemeDefinition configuration for the provided them type + public static ThemeDefinition? GetDefaultThemeDefinition() where T : InteractableThemeBase + { + return GetDefaultThemeDefinition(typeof(T)); + } + + /// + /// Utility function to generate the default ThemeDefinition configuration for the provided type of Theme engine + /// + /// type of Theme Engine to build default configuration for + /// Default ThemeDefinition configuration for the provided them type + public static ThemeDefinition? GetDefaultThemeDefinition(Type themeType) + { + var theme = InteractableThemeBase.CreateTheme(themeType); + if (theme != null) + { + return theme.GetDefaultThemeDefinition(); + } + + return null; + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertySettings.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeDefinition.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertySettings.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeDefinition.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ThemeEaseSettings.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeEaseSettings.cs similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ThemeEaseSettings.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeEaseSettings.cs diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ThemeEaseSettings.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeEaseSettings.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ThemeEaseSettings.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeEaseSettings.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableCustomSetting.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeProperty.cs similarity index 67% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableCustomSetting.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeProperty.cs index 018484e7aa6..71a95bfb1dc 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableCustomSetting.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeProperty.cs @@ -1,22 +1,18 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - namespace Microsoft.MixedReality.Toolkit.UI { /// /// A simple property with name value and type, used for serialization /// The custom settings are used in themes to expose properties needed to enhance theme functionality /// - + [System.Serializable] - public class InteractableCustomSetting + public class ThemeProperty { public string Name; - public InteractableThemePropertyValueTypes Type; - public InteractableThemePropertyValue Value; + public ThemePropertyTypes Type; + public ThemePropertyValue Value; } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableCustomSetting.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeProperty.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableCustomSetting.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeProperty.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValue.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValue.cs similarity index 53% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValue.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValue.cs index 199c54e63a9..03999af3171 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValue.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValue.cs @@ -8,9 +8,8 @@ namespace Microsoft.MixedReality.Toolkit.UI /// /// Base values of a theme property, used for serialization /// - [System.Serializable] - public class InteractableThemePropertyValue + public class ThemePropertyValue { public string Name; public string String; @@ -19,6 +18,7 @@ public class InteractableThemePropertyValue public float Float; public Texture Texture; public Material Material; + public Shader Shader; public GameObject GameObject; public Vector2 Vector2; public Vector3 Vector3; @@ -28,6 +28,36 @@ public class InteractableThemePropertyValue public AudioClip AudioClip; public Animation Animation; + /// + /// Create new ThemePropertyValue and copy over internal data + /// + /// New ThemePropertyValue with identical primitive and reference values as this ThemePropertyValue + public ThemePropertyValue Copy() + { + return new ThemePropertyValue() + { + Name = this.Name, + String = this.String, + Bool = this.Bool, + Int = this.Int, + Float = this.Float, + Texture = this.Texture, + Material = this.Material, + Shader = this.Shader, + GameObject = this.GameObject, + Vector2 = this.Vector2, + Vector3 = this.Vector3, + Vector4 = this.Vector4, + Color = this.Color, + Quaternion = this.Quaternion, + AudioClip = this.AudioClip, + Animation = this.Animation, + }; + } + + /// + /// Reset all fields to default type values + /// public void Reset() { Name = string.Empty; @@ -37,6 +67,7 @@ public void Reset() Float = 0; Texture = null; Material = null; + Shader = null; GameObject = null; Vector2 = default(Vector2); Vector3 = default(Vector3); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValue.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValue.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValue.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValue.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValueTypes.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValueTypes.cs similarity index 88% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValueTypes.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValueTypes.cs index 16d28082faf..d15943179c3 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValueTypes.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValueTypes.cs @@ -7,7 +7,8 @@ namespace Microsoft.MixedReality.Toolkit.UI /// /// Theme property value types used for converting theme values back and forth from serialized objects /// - public enum InteractableThemePropertyValueTypes { + public enum ThemePropertyTypes + { Float, Int, Color, @@ -24,6 +25,7 @@ public enum InteractableThemePropertyValueTypes { GameObject, String, Bool, - AnimatorTrigger + AnimatorTrigger, + Shader, } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValueTypes.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValueTypes.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemePropertyValueTypes.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemePropertyValueTypes.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeStateProperty.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeStateProperty.cs new file mode 100644 index 00000000000..a3c092ff6c0 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeStateProperty.cs @@ -0,0 +1,185 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.Serialization; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Class to store information about a Theme property that contains values per available state + /// + [Serializable] + public class ThemeStateProperty + { + [FormerlySerializedAs("Name")] + [SerializeField] + private string name; + /// + /// Name of property, useful for comparisons and editor displaying + /// + public string Name + { + get { return name; } + set { name = value; } + } + + [FormerlySerializedAs("Type")] + [SerializeField] + private ThemePropertyTypes type; + /// + /// Type of value stored in this property + /// + public ThemePropertyTypes Type + { + get { return type; } + set { type = value; } + } + + [FormerlySerializedAs("Values")] + [SerializeField] + private List values; + /// + /// List of values corresponding to every available state + /// + public List Values + { + get { return values; } + set { values = value; } + } + + [FormerlySerializedAs("StartValue")] + [SerializeField] + private ThemePropertyValue startValue; + /// + /// The starting value of this property + /// + public ThemePropertyValue StartValue + { + get { return startValue; } + set { startValue = value; } + } + + [FormerlySerializedAs("Default")] + [SerializeField] + private ThemePropertyValue defaultValue; + /// + /// Default value to use for this property + /// + public ThemePropertyValue Default + { + get { return defaultValue; } + set { defaultValue = value; } + } + + [FormerlySerializedAs("TargetShader")] + [SerializeField] + private Shader targetShader; + /// + /// Shader to target for getting/setting values with this property, if applicable + /// Supported by Themes which have AreShadersSupported set to true + /// + public Shader TargetShader + { + get { return targetShader; } + set { targetShader = value; } + } + + [FormerlySerializedAs("ShaderPropertyName")] + [SerializeField] + private string shaderPropertyName; + /// + /// Name of the shader property, defined in the TargetShader, to utilize for getting/setting values with this property, if applicable + /// Supported by Themes which have AreShadersSupported set to true + /// + public string ShaderPropertyName + { + get { return shaderPropertyName; } + set { shaderPropertyName = value; } + } + + [System.NonSerialized] + protected int ShaderPropertyID = -1; + + private static readonly ThemePropertyTypes[] ShaderTypes = + { ThemePropertyTypes.Color, ThemePropertyTypes .ShaderFloat, ThemePropertyTypes.ShaderRange, ThemePropertyTypes.Texture}; + + /// + /// Utility function that determines if the passed property type is supported for shader targeting + /// + /// type of property value + /// true if property type supports shader targeting, false otherwise + public static bool IsShaderPropertyType(ThemePropertyTypes type) + { + return ShaderTypes.Contains(type); + } + + /// + /// Lazy loads shader property ID from Unity for the ShaderPropertyName + /// + /// integer key for current shader property to get/set shader values + public int GetShaderPropertyId() + { + if (ShaderPropertyID == -1) + { + ShaderPropertyID = Shader.PropertyToID(ShaderPropertyName); + } + + return ShaderPropertyID; + } + + // Properties below are outdated. They remain only for backward compatibility and migration purposes + [SerializeField] + [Obsolete("Utilize TargetShader and ShaderPropertyName instead")] + private int PropId = -1; // i.e OptionIndex + + [SerializeField] + [Obsolete("Utilize TargetShader and ShaderPropertyName instead")] + private List ShaderOptions = new List(); + + [SerializeField] + [Obsolete("Utilize TargetShader and ShaderPropertyName instead")] + private List ShaderOptionNames = new List(); + + [SerializeField] + [Obsolete("Utilize TargetShader and ShaderPropertyName instead")] + private string ShaderName = ""; + + /// + /// This temporary function will migrate over the previously set shader data (via the now deprecated properties) + /// to the new TargetShader and ShaderPropertyName properties + /// + public void MigrateShaderData() + { + // Old shader properties have been deprecated but need to ignore compiler errors for migration code +#pragma warning disable 612, 618 + if (ShaderOptions != null && ShaderOptions.Count > 0) + { + TargetShader = Shader.Find(ShaderName); + ShaderPropertyName = ShaderOptionNames[PropId]; + } +#pragma warning restore 612, 618 + + if (IsShaderPropertyType(Type) && TargetShader == null) + { + TargetShader = StandardShaderUtility.MrtkStandardShader; + + if (string.IsNullOrEmpty(ShaderPropertyName)) + { + if (Type == ThemePropertyTypes.Color) + { + ShaderPropertyName = "_Color"; + } + else if (Type == ThemePropertyTypes.Texture) + { + ShaderPropertyName = "_MainTex"; + } + } + } + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeProperty.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeStateProperty.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeProperty.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/ThemeStateProperty.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/VisualProfile.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/VisualProfile.cs similarity index 60% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/VisualProfile.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/VisualProfile.cs index ecf936e0851..e52cfeef6ab 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/VisualProfile.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/VisualProfile.cs @@ -13,22 +13,29 @@ namespace Microsoft.MixedReality.Toolkit.UI [Serializable] public class VisualProfile { + /// + /// GameObject to Target + /// public GameObject Target; + + /// + /// Theme definition to build + /// public Theme Theme; + /// + /// Create and initialize Theme Engines with the associated Target and Theme property + /// + /// List of Theme Engine instances public List CreateThemeEngines() { List results = new List(); if (Theme != null) { - foreach (var setting in Theme.Settings) + foreach (var definition in Theme.Definitions) { - Type themeType = Type.GetType(setting.AssemblyQualifiedName); - InteractableThemeBase theme = (InteractableThemeBase)Activator.CreateInstance(themeType); - theme.Init(Target, setting); - - results.Add(theme); + results.Add(InteractableThemeBase.CreateAndInitTheme(definition, Target)); } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/VisualProfile.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/VisualProfile.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/VisualProfile.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/Core/VisualProfile.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States.meta new file mode 100644 index 00000000000..c1474bca85e --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c48171eb8a0b389429c140b8e6951695 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStateModel.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/BaseStateModel.cs similarity index 57% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStateModel.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/BaseStateModel.cs index 4c09af693b9..f14cc9b5ffe 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStateModel.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/BaseStateModel.cs @@ -6,39 +6,19 @@ namespace Microsoft.MixedReality.Toolkit.UI { /// - /// State data model, state management and comparison instructions + /// Base class for defining state model logic to use in conjunction with the State class + /// Allows for retrieving current state mode and comparing states /// - [System.Serializable] - public class State - { - public string Name; - public int Index; - public int Bit; - public int Value; - public int ActiveIndex; - - public override string ToString() - { - return Name; - } - - public int ToInt() - { - return Index; - } - - public int ToBit() - { - return Bit; - } - } - - public abstract class InteractableStateModel + public abstract class BaseStateModel { protected State currentState; protected List stateList; protected State[] allStates; + /// + /// Import the list of states into this state model + /// + /// list of state objects to import public void ImportStates(List states) { stateList = states; @@ -49,6 +29,10 @@ public void ImportStates(List states) } } + /// + /// Set the value of the state with given index to on (1) + /// + /// index of state to access public virtual void SetStateOn(int index) { if (allStates.Length > index && index > 0) @@ -59,6 +43,10 @@ public virtual void SetStateOn(int index) } } + /// + /// Set the value of the state with given index to off (0) + /// + /// index of state to access public virtual void SetStateOff(int index) { if (allStates.Length > index && index > 0) @@ -69,6 +57,11 @@ public virtual void SetStateOff(int index) } } + /// + /// Set value of state with given index to the provided value + /// + /// index of state to access + /// value to set for state public virtual void SetStateValue(int index, int value) { if (allStates.Length > index && index > 0) @@ -88,6 +81,11 @@ protected virtual void SetStateListValue(int index, int value) } } + /// + /// Get the value of the state with the given index + /// + /// index of state to access + /// value of the state public int GetStateValue(int index) { if (allStates.Length > index && index > 0) @@ -98,9 +96,14 @@ public int GetStateValue(int index) return 0; } + /// + /// Get the State object with the given index + /// + /// index of state to access + /// State Object at given index public State GetState(int index) { - if (allStates.Length > index && index > 0) + if (allStates.Length > index && index >= 0) { State state = allStates[index]; return state; @@ -108,27 +111,43 @@ public State GetState(int index) return new State(); } - public InteractableStateModel() + public BaseStateModel() { } - public InteractableStateModel(State defaultState) + public BaseStateModel(State defaultState) { currentState = defaultState; } - - public virtual void SetSate(State state) + + /// + /// Set the current state to the provided State object + /// + /// State object to set + public virtual void SetCurrentState(State state) { currentState = state; } - + + /// + /// Return the current State object + /// + /// Return the current State object public virtual State CurrentState() { return currentState; } + /// + /// Compare all state values, set appropriate current State and return that current State + /// + /// Current State after comparing State values public abstract State CompareStates(); + /// + /// Get list of available States for this State Model + /// + /// Array of available State objects public abstract State[] GetStates(); protected int GetBit() diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStateModel.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/BaseStateModel.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/InteractableStateModel.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/BaseStateModel.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/State.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/State.cs new file mode 100644 index 00000000000..6d18cef2211 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/State.cs @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// State data model, state management and comparison instructions + /// + [System.Serializable] + public class State + { + /// + /// Name of state + /// + public string Name; + + /// + /// Index of State in all available state list + /// + public int Index; + + /// + /// Bitwise value of state for comparison + /// + public int Bit; + + /// + /// Current value of state (e.g on/off etc) + /// + public int Value; + + /// + /// Index of state in current list + /// + public int ActiveIndex; + + /// + public override string ToString() + { + return Name; + } + + [System.Obsolete("Use Index property")] + public int ToInt() + { + return Index; + } + + [System.Obsolete("Use Bit property")] + public int ToBit() + { + return Bit; + } + + /// + /// Create copy of current State with identical values + /// + /// copied instance of this State + public State Copy() + { + return new State() + { + ActiveIndex = this.ActiveIndex, + Bit = this.Bit, + Index = this.Index, + Name = this.Name, + Value = this.Value, + }; + } + + /// + /// Returns true if two state objects have identical internal values, false otherwise + /// + /// other State object to compare against + /// true if identical internal values, false otherwise + public bool CompareState(State s) + { + if (s == null) + { + return false; + } + + return this.Name == s.Name + && this.Index == s.Index + && this.Bit == s.Bit + && this.Value == s.Value + && this.ActiveIndex == s.ActiveIndex; + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/State.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/State.cs.meta new file mode 100644 index 00000000000..0cc9edafb5f --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/State.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1bdc9c4b67102714e82dd060728b26f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/States.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/States.cs new file mode 100644 index 00000000000..0ac18f8c8e9 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/States.cs @@ -0,0 +1,146 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Serialization; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// States scriptableObject for storing available states and related state model + /// + [CreateAssetMenu(fileName = "States", menuName = "Mixed Reality Toolkit/State", order = 1)] + public class States : ScriptableObject + { + [FormerlySerializedAs("StateList")] + [SerializeField] + private List stateList = new List(); + + /// + /// List of available states defined by asset + /// + public List StateList + { + get {return stateList;} + set { stateList = value; } + } + + [FormerlySerializedAs("DefaultIndex")] + [SerializeField] + private int defaultIndex = 0; + + /// + /// Default index into state list + /// + public int DefaultIndex + { + get { return defaultIndex; } + set { defaultIndex = value; } + } + + /// + /// Defines the type of State Model to associate with this States asset. Type must be a class that extends InteractableStateModel + /// + public Type StateModelType + { + get + { + if (stateModelType == null) + { + if (string.IsNullOrEmpty(AssemblyQualifiedName)) + { + return null; + } + + stateModelType = Type.GetType(AssemblyQualifiedName); + } + + return stateModelType; + } + set + { + if (!value.IsSubclassOf(typeof(BaseStateModel))) + { + Debug.LogWarning($"Cannot assign type {value} that does not extend {typeof(BaseStateModel)} to ThemeDefinition"); + return; + } + + if (stateModelType != value) + { + stateModelType = value; + StateModelClassName = stateModelType.Name; + AssemblyQualifiedName = stateModelType.AssemblyQualifiedName; + } + } + } + + // Unity cannot serialize System.Type, thus must save AssemblyQualifiedName + // Field here for Runtime use + private Type stateModelType; + + [FormerlySerializedAs("StateLogicName")] + [SerializeField] + private string StateModelClassName; + + [SerializeField] + private string AssemblyQualifiedName; + + public States() + { + // Set default type + StateModelType = typeof(InteractableStates); + } + + [System.Obsolete("Use the StateList property instead")] + public State[] GetStates() + { + return StateList.ToArray(); + } + + /// + /// Test whether the current States object and the argument States object have the same internal values and configurations + /// + /// other States object to compare against self + /// true if internal list of state values and class configuration matches other, false otherwise + public bool Equals(States other) + { + if (this.StateList.Count != other.StateList.Count + || this.StateModelType != other.StateModelType + || this.DefaultIndex != other.DefaultIndex) + { + return false; + } + + for (int i = 0; i < this.StateList.Count; i++) + { + if (!this.StateList[i].CompareState(other.StateList[i])) + { + return false; + } + } + + return true; + } + + /// + /// Create a State Model class and initialize it with the configuration data from this States ScriptableObject + /// + /// BaseStateModel or inherited class implemention object initialized with the StateList in this ScriptableObject + public BaseStateModel CreateStateModel() + { + BaseStateModel stateLogic = (BaseStateModel)Activator.CreateInstance(StateModelType, StateList[DefaultIndex]); + + List stateListCopy = new List(); + foreach (State s in StateList) + { + stateListCopy.Add(s.Copy()); + } + + stateLogic.ImportStates(stateListCopy); + + return stateLogic; + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/States.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/States.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/States/States.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/States/States.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines.meta new file mode 100644 index 00000000000..1aed6a96692 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9afc0722b24d16b41b05bf52bab3c2f5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableActivateTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableActivateTheme.cs new file mode 100644 index 00000000000..cead0afb9c9 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableActivateTheme.cs @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme engine that allows control to enable/disable a GameObject based on the current state + /// + public class InteractableActivateTheme : InteractableThemeBase + { + /// + public override bool IsEasingSupported => false; + + public InteractableActivateTheme() + { + Types = new Type[] { typeof(Transform) }; + Name = "Activate Theme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Activate", + Type = ThemePropertyTypes.Bool, + Values = new List(), + Default = new ThemePropertyValue() { Bool = true } + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + start.Bool = Host.activeSelf; + return start; + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + Host.SetActive(property.Values[index].Bool); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableActivateTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableActivateTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableActivateTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableActivateTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAnimatorTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAnimatorTheme.cs new file mode 100644 index 00000000000..bd5a27d119f --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAnimatorTheme.cs @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// ThemeEngine that controls Animator state based on state changes + /// Targets first Animator component returned on initialized GameObject + /// + public class InteractableAnimatorTheme : InteractableThemeBase + { + private int lastIndex = 0; + private Animator controller; + + public InteractableAnimatorTheme() + { + Types = new Type[] { typeof(Transform) }; + Name = "AnimatorTheme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Animator Trigger", + Type = ThemePropertyTypes.AnimatorTrigger, + Values = new List(), + Default = new ThemePropertyValue() { String = "Default" } + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); + controller = Host.GetComponent(); + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + start.String = property.Values[lastIndex].String; + return start; + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + if(lastIndex != index) + { + if(controller != null) + { + controller.SetTrigger(property.Values[index].String); + } + lastIndex = index; + } + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAnimatorTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAnimatorTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAnimatorTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAnimatorTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAudioTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAudioTheme.cs new file mode 100644 index 00000000000..71c3dc22610 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAudioTheme.cs @@ -0,0 +1,75 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme Engine to play particular audio files based on state changes. + /// Add AudioSource component if none is found on initialized GameObject or in children + /// + public class InteractableAudioTheme : InteractableThemeBase + { + /// + public override bool IsEasingSupported => false; + + private AudioSource audioSource; + + public InteractableAudioTheme() + { + Types = new Type[] { typeof(Transform) }; + Name = "Audio Theme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Audio", + Type = ThemePropertyTypes.AudioClip, + Values = new List(), + Default = new ThemePropertyValue() { AudioClip = null } + }, + }, + CustomProperties = new List(), + }; + } + + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); + audioSource = Host.GetComponentInChildren(); + } + + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + AudioSource audioSource = Host.GetComponentInChildren(); + if (audioSource != null) + { + start.AudioClip = audioSource.clip; + } + return start; + } + + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + if (audioSource == null) + { + audioSource = Host.AddComponent(); + } + + audioSource.clip = property.Values[index].AudioClip; + audioSource.Play(); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAudioTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAudioTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableAudioTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableAudioTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorChildrenTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorChildrenTheme.cs similarity index 56% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorChildrenTheme.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorChildrenTheme.cs index 1ddfa7cfae3..8636f010bef 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorChildrenTheme.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorChildrenTheme.cs @@ -1,12 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using Microsoft.MixedReality.Toolkit.Utilities; using System; using System.Collections.Generic; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.UI { + /// + /// Theme engine to control the color for all Renderer children under the initialized GameObject based on state changes + /// public class InteractableColorChildrenTheme : InteractableShaderTheme { public struct BlocksAndRenderer @@ -17,40 +21,46 @@ public struct BlocksAndRenderer private List propertyBlocks; + protected new const string DefaultShaderProperty = "_Color"; + public InteractableColorChildrenTheme() { Types = new Type[] { }; Name = "Color Children Theme"; - ThemeProperties = new List(); - ThemeProperties.Add( - new InteractableThemeProperty() - { - Name = "Color", - Type = InteractableThemePropertyValueTypes.Color, - Values = new List(), - Default = new InteractableThemePropertyValue() { Color = Color.white} - }); } - public override void Init(GameObject host, InteractableThemePropertySettings settings) + /// + public override ThemeDefinition GetDefaultThemeDefinition() { - base.Init(host, settings); - - shaderProperties = new List(); - for (int i = 0; i < ThemeProperties.Count; i++) + return new ThemeDefinition() { - InteractableThemeProperty prop = ThemeProperties[i]; - if (prop.ShaderOptions.Count > 0) + ThemeType = GetType(), + StateProperties = new List() { - shaderProperties.Add(prop.ShaderOptions[prop.PropId]); - } - } + new ThemeStateProperty() + { + Name = "Color", + Type = ThemePropertyTypes.Color, + Values = new List(), + Default = new ThemePropertyValue() { Color = Color.white}, + TargetShader = StandardShaderUtility.MrtkStandardShader, + ShaderPropertyName = DefaultShaderProperty, + } + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); propertyBlocks = new List(); Renderer[] list = host.GetComponentsInChildren(); for (int i = 0; i < list.Length; i++) { - MaterialPropertyBlock block = InteractableThemeShaderUtils.GetMaterialPropertyBlock(list[i].gameObject, shaderProperties.ToArray()); + MaterialPropertyBlock block = InteractableThemeShaderUtils.InitMaterialPropertyBlock(list[i].gameObject, shaderProperties); BlocksAndRenderer bAndR = new BlocksAndRenderer(); bAndR.Renderer = list[i]; bAndR.Block = block; @@ -59,9 +69,10 @@ public override void Init(GameObject host, InteractableThemePropertySettings set } } - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) { - InteractableThemePropertyValue color = new InteractableThemePropertyValue(); + ThemePropertyValue color = new ThemePropertyValue(); int propId = property.GetShaderPropertyId(); @@ -74,7 +85,8 @@ public override InteractableThemePropertyValue GetProperty(InteractableThemeProp return color; } - public override void SetValue(InteractableThemeProperty property, int index, float percentage) + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) { Color color = Color.Lerp(property.StartValue.Color, property.Values[index].Color, percentage); diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorChildrenTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorChildrenTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorChildrenTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorChildrenTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorTheme.cs similarity index 59% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorTheme.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorTheme.cs index 2ed9eb5e997..34e53ab4fe2 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorTheme.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorTheme.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using Microsoft.MixedReality.Toolkit.Utilities; using System; using System.Collections.Generic; using TMPro; @@ -10,42 +11,61 @@ namespace Microsoft.MixedReality.Toolkit.UI { /// - /// A color theme that can set colors on renderers or common text objects - /// This theme will try to set color on text objects first, if none can be found, - /// then we fall back to renderer color setting using the parent class. + /// Theme Engine that can set colors on a Renderer or text object based on state changes + /// This Theme will try to set color on first available text object in order of TextMesh, Text, TextMeshPro, and TextMeshProUGUI + /// If no text-based component can be found, then will fall back to first Renderer component found on the initialized GameObject + /// and target the color shader property provided in the ThemeDefinition. /// public class InteractableColorTheme : InteractableShaderTheme { // caching methods to set and get colors from text object // this will avoid 4 if statements for every set or get - also during animation - private delegate bool SetColorOnText(Color color, InteractableThemeProperty property, int index, float percentage); - private delegate bool GetColorFromText(InteractableThemeProperty property, out Color color); + private delegate bool SetColorOnText(Color color, ThemeStateProperty property, int index, float percentage); + private delegate bool GetColorFromText(ThemeStateProperty property, out Color color); + private SetColorOnText SetColorValue = null; private GetColorFromText GetColorValue = null; + protected new const string DefaultShaderProperty = "_Color"; + public InteractableColorTheme() { Types = new Type[] { typeof(Renderer), typeof(TextMesh), typeof(Text), typeof(TextMeshPro), typeof(TextMeshProUGUI) }; Name = "Color Theme"; - ThemeProperties = new List(); - ThemeProperties.Add( - new InteractableThemeProperty() + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() { - Name = "Color", - Type = InteractableThemePropertyValueTypes.Color, - Values = new List(), - Default = new InteractableThemePropertyValue() { Color = Color.white} - }); + new ThemeStateProperty() + { + Name = "Color", + Type = ThemePropertyTypes.Color, + Values = new List(), + Default = new ThemePropertyValue() { Color = Color.white}, + TargetShader = StandardShaderUtility.MrtkStandardShader, + ShaderPropertyName = DefaultShaderProperty + } + }, + CustomProperties = new List(), + }; } - public override void Init(GameObject host, InteractableThemePropertySettings settings) + /// + public override void Init(GameObject host, ThemeDefinition settings) { base.Init(host, settings); } - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) { - InteractableThemePropertyValue color = new InteractableThemePropertyValue(); + ThemePropertyValue color = new ThemePropertyValue(); // check if a text object exists and get the color, // set the delegate to bypass these checks in the future. @@ -88,7 +108,8 @@ public override InteractableThemePropertyValue GetProperty(InteractableThemeProp } } - public override void SetValue(InteractableThemeProperty property, int index, float percentage) + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) { Color color = Color.Lerp(property.StartValue.Color, property.Values[index].Color, percentage); @@ -134,18 +155,18 @@ public override void SetValue(InteractableThemeProperty property, int index, flo /// Try to get a color from UI Text /// if no color is found, a text component does not exist on this object /// - /// - /// - protected bool TryGetTextColor(InteractableThemeProperty property, out Color color) + /// Color to try to get, returns white if no Text component found + /// true if succesfully get color on Text + protected bool TryGetTextColor(ThemeStateProperty property, out Color color) { - Color colour = Color.white; + color = Color.white; Text text = Host.GetComponent(); if (text != null) { color = text.color; return true; } - color = colour; + return false; } @@ -153,18 +174,18 @@ protected bool TryGetTextColor(InteractableThemeProperty property, out Color col /// Try to get color from TextMesh /// If no color is found, not TextMesh on this object /// - /// - /// - protected bool TryGetTextMeshColor(InteractableThemeProperty property, out Color color) + /// Color to try to get, returns white if no TextMesh component found + /// true if succesfully get color on TextMesh + protected bool TryGetTextMeshColor(ThemeStateProperty property, out Color color) { - Color colour = Color.white; + color = Color.white; TextMesh mesh = Host.GetComponent(); if (mesh != null) { color = mesh.color; return true; } - color = colour; + return false; } @@ -172,30 +193,29 @@ protected bool TryGetTextMeshColor(InteractableThemeProperty property, out Color /// Try to get color from TextMeshPro /// If no color is found, TextMeshPro is not on the object /// - /// - /// - protected bool TryGetTextMeshProColor(InteractableThemeProperty property, out Color color) + /// Color to try to get, returns white if no TextMesh component found + /// true if succesfully get color on TextMeshPro + protected bool TryGetTextMeshProColor(ThemeStateProperty property, out Color color) { - Color colour = Color.white; + color = Color.white; TextMeshPro tmp = Host.GetComponent(); if (tmp) { color = tmp.color; return true; } - color = colour; return false; } - + /// /// Try to get color from TextMeshProUGUI /// If no color is found, TextMeshProUGUI is not on the object /// - /// - /// - protected bool TryGetTextMeshProUGUIColor(InteractableThemeProperty property, out Color color) + /// Color to try to get, returns white if no TextMeshProUGUI component found + /// true if succesfully get color on TextMeshProUGUI + protected bool TryGetTextMeshProUGUIColor(ThemeStateProperty property, out Color color) { - Color colour = Color.white; + color = Color.white; TextMeshProUGUI tmp = Host.GetComponent(); if (tmp) { @@ -203,8 +223,7 @@ protected bool TryGetTextMeshProUGUIColor(InteractableThemeProperty property, ou color = tmp.color; return true; } - - color = colour; + return false; } @@ -212,9 +231,9 @@ protected bool TryGetTextMeshProUGUIColor(InteractableThemeProperty property, ou /// Try to get color from the renderer /// return true, no text components exists, so falling back to base /// - /// - /// - protected bool TryGetRendererColor(InteractableThemeProperty property, out Color color) + /// Color to try to set + /// true if succesfully set color on Renderer + protected bool TryGetRendererColor(ThemeStateProperty property, out Color color) { color = base.GetProperty(property).Color; return true; @@ -224,45 +243,45 @@ protected bool TryGetRendererColor(InteractableThemeProperty property, out Color /// Try to set color on UI Text /// If false, no UI Text was found /// - /// - /// - protected bool TrySetTextColor(Color colour, InteractableThemeProperty property, int index, float percentage) + /// Color to try to set + /// true if succesfully set color on Text + protected bool TrySetTextColor(Color color, ThemeStateProperty property, int index, float percentage) { Text text = Host.GetComponent(); if (text != null) { - text.color = colour; + text.color = color; return true; } return false; } - + /// /// Try to set color on TextMesh /// If false, no TextMesh was found /// - /// - /// - protected bool TrySetTextMeshColor(Color colour, InteractableThemeProperty property, int index, float percentage) + /// Color to try to set + /// true if succesfully set color on TextMesh + protected bool TrySetTextMeshColor(Color color, ThemeStateProperty property, int index, float percentage) { TextMesh mesh = Host.GetComponent(); if (mesh != null) { - mesh.color = colour; + mesh.color = color; return true; } return false; } - + /// /// Try to set color on TextMeshPro /// If false, no TextMeshPro was found /// - /// - /// - protected bool TrySetTextMeshProColor(Color colour, InteractableThemeProperty property, int index, float percentage) + /// Color to try to set + /// true if succesfully set color on TextMeshPro + protected bool TrySetTextMeshProColor(Color colour, ThemeStateProperty property, int index, float percentage) { TextMeshPro tmp = Host.GetComponent(); if (tmp) @@ -273,19 +292,19 @@ protected bool TrySetTextMeshProColor(Color colour, InteractableThemeProperty pr return false; } - + /// /// Try to set color on TextMeshProUGUI /// If false, no TextMeshProUGUI was found /// - /// - /// - protected bool TrySetTextMeshProUGUIColor(Color colour, InteractableThemeProperty property, int index, float percentage) + /// Color to try to set + /// true if succesfully set color on TextMeshProUGUI + protected bool TrySetTextMeshProUGUIColor(Color color, ThemeStateProperty property, int index, float percentage) { TextMeshProUGUI tmp = Host.GetComponent(); if (tmp) { - tmp.color = colour; + tmp.color = color; return true; } @@ -296,9 +315,9 @@ protected bool TrySetTextMeshProUGUIColor(Color colour, InteractableThemePropert /// Try to set color on a renderer /// should just return true - falling back to base /// - /// - /// - protected bool TrySetRendererColor(Color colour, InteractableThemeProperty property, int index, float percentage) + /// Color to try to set + /// true if succesfully set color on Renderer + protected bool TrySetRendererColor(Color colour, ThemeStateProperty property, int index, float percentage) { base.SetValue(property, index, percentage); return true; @@ -307,35 +326,15 @@ protected bool TrySetRendererColor(Color colour, InteractableThemeProperty prope /// /// Looks to see if a text component exists on the host /// - /// - /// + /// GameObject to test + /// true if host is not null and contains a text-type component, false otherwise public static bool HasTextComponentOnObject(GameObject host) { - TextMeshPro tmp = host.GetComponent(); - if(tmp != null) - { - return true; - } - - TextMeshProUGUI tmpUGUI = host.GetComponent(); - if (tmpUGUI != null) - { - return true; - } - - TextMesh mesh = host.GetComponent(); - if (mesh != null) - { - return true; - } - - Text text = host.GetComponent(); - if (text != null) - { - return true; - } - - return false; + return host != null && + (host.GetComponent() != null || + host.GetComponent() != null || + host.GetComponent() != null || + host.GetComponent() != null); } } diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableColorTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableColorTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableGrabScaleTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableGrabScaleTheme.cs similarity index 57% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableGrabScaleTheme.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableGrabScaleTheme.cs index e1503a2c92a..6e1aa4ad633 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableGrabScaleTheme.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableGrabScaleTheme.cs @@ -7,87 +7,106 @@ namespace Microsoft.MixedReality.Toolkit.UI { + /// + /// ThemeEngine to control initialized GameObject's scale based on associated Interactable grab state and related state changes + /// public class InteractableGrabScaleTheme : InteractableThemeBase { - protected InteractableThemePropertyValue startScaleValue = new InteractableThemePropertyValue(); + protected ThemePropertyValue startScaleValue = new ThemePropertyValue(); protected float timer = 0; protected bool hasGrab; protected float grabPercentage; protected bool grabTransition; + protected Interactable targetInteractable; + public InteractableGrabScaleTheme() { Types = new Type[] { typeof(Transform) }; Name = "Grab Scale Theme"; - ThemeProperties = new List() - { - new InteractableThemeProperty() - { - Name = "Scale", - Type = InteractableThemePropertyValueTypes.Vector3, - Values = new List(), - Default = new InteractableThemePropertyValue(){ Vector3 = Vector3.one} - } - }; + } - // adding a custom value and not showing Theme Properties for this theme - CustomSettings = new List() + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() { - new InteractableCustomSetting() + ThemeType = GetType(), + StateProperties = new List() { - Name = "ScaleMagnifier", - Type = InteractableThemePropertyValueTypes.Vector3, - Value = new InteractableThemePropertyValue() { Vector3 = Vector3.one } + new ThemeStateProperty() + { + Name = "Scale", + Type = ThemePropertyTypes.Vector3, + Values = new List(), + Default = new ThemePropertyValue(){ Vector3 = Vector3.one} + }, }, - new InteractableCustomSetting() + CustomProperties = new List() { - Name = "GrabTimer", - Type = InteractableThemePropertyValueTypes.Float, - Value = new InteractableThemePropertyValue() { Float = 0.3f } - } + new ThemeProperty() + { + Name = "ScaleMagnifier", + Type = ThemePropertyTypes.Vector3, + Value = new ThemePropertyValue() { Vector3 = Vector3.one } + }, + new ThemeProperty() + { + Name = "GrabTimer", + Type = ThemePropertyTypes.Float, + Value = new ThemePropertyValue() { Float = 0.3f } + }, + }, }; } - public override void Init(GameObject host, InteractableThemePropertySettings settings) + + /// + public override void Init(GameObject host, ThemeDefinition settings) { base.Init(host, settings); + if (host != null) { - startScaleValue = new InteractableThemePropertyValue(); + startScaleValue = new ThemePropertyValue(); startScaleValue.Vector3 = host.transform.localScale; } timer = Ease.LerpTime; } - public override InteractableThemePropertyValue GetProperty(InteractableThemeProperty property) + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) { if (Host == null) { return startScaleValue; } - InteractableThemePropertyValue prop = new InteractableThemePropertyValue(); + ThemePropertyValue prop = new ThemePropertyValue(); prop.Vector3 = Host.transform.localScale; return prop; } - public override void OnUpdate(int state, Interactable source, bool force = false) + /// + public override void OnUpdate(int state, bool force = false) { - base.OnUpdate(state, source, force); + base.OnUpdate(state, force); if (Host == null) { return; } - Vector3 maxGrabScale = CustomSettings[0].Value.Vector3; - float grabTime = CustomSettings[1].Value.Float; + Vector3 maxGrabScale = Properties[0].Value.Vector3; + float grabTime = Properties[1].Value.Float; Vector3 grabScale = Vector3.Scale(startScaleValue.Vector3, maxGrabScale); - - if (source.HasGrab) + + var targetInteractable = Host.FindAncestorComponent(true); + + if (targetInteractable.HasGrab) { if (!hasGrab) { @@ -128,7 +147,8 @@ public override void OnUpdate(int state, Interactable source, bool force = false } } - public override void SetValue(InteractableThemeProperty property, int index, float percentage) + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) { if (!hasGrab && Host != null) { diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableGrabScaleTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableGrabScaleTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableGrabScaleTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableGrabScaleTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableMaterialTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableMaterialTheme.cs new file mode 100644 index 00000000000..3cd5fd1e197 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableMaterialTheme.cs @@ -0,0 +1,75 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme Engine to control the material used based on state changes + /// Changes the material for the first Renderer component on the initialized GameObject + /// + public class InteractableMaterialTheme : InteractableThemeBase + { + /// + public override bool IsEasingSupported => false; + + private Material material = null; + private Renderer renderer; + + public InteractableMaterialTheme() + { + Types = new Type[] { typeof(Renderer) }; + Name = "Material Theme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Material", + Type = ThemePropertyTypes.Material, + Values = new List(), + Default = new ThemePropertyValue() { Material = null } + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); + + renderer = Host.GetComponent(); + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + + material = renderer.material; + start.Material = material; + return start; + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + Host.SetActive(property.Values[index].Bool); + + material = property.Values[index].Material; + renderer.material = material; + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableMaterialTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableMaterialTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableMaterialTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableMaterialTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableOffsetTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableOffsetTheme.cs new file mode 100644 index 00000000000..bebac99cae7 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableOffsetTheme.cs @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + public class InteractableOffsetTheme : InteractableThemeBase + { + private Vector3 startPosition; + private Transform hostTransform; + + public InteractableOffsetTheme() + { + Types = new Type[] { typeof(Transform) }; + Name = "Offset Theme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Offset", + Type = ThemePropertyTypes.Vector3, + Values = new List(), + Default = new ThemePropertyValue() { Vector3 = Vector3.zero } + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); + hostTransform = Host.transform; + startPosition = hostTransform.localPosition; + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + start.Vector3 = hostTransform.localPosition; + return start; + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + hostTransform.localPosition = Vector3.Lerp(property.StartValue.Vector3, startPosition + property.Values[index].Vector3, percentage); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableOffsetTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableOffsetTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableOffsetTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableOffsetTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableRotationTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableRotationTheme.cs new file mode 100644 index 00000000000..715a9d69855 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableRotationTheme.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme Engine to control a GameObject's rotation based on state changes + /// + public class InteractableRotationTheme : InteractableThemeBase + { + private Transform hostTransform; + + public InteractableRotationTheme() + { + Types = new Type[] { typeof(Transform) }; + Name = "Rotation Theme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Rotation", + Type = ThemePropertyTypes.Vector3, + Values = new List(), + Default = new ThemePropertyValue() { Vector3 = Vector3.zero } + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); + + hostTransform = Host.transform; + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + start.Vector3 = hostTransform.eulerAngles; + return start; + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + hostTransform.localRotation = Quaternion.Euler( Vector3.Lerp(property.StartValue.Vector3, property.Values[index].Vector3, percentage)); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableRotationTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableRotationTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableRotationTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableRotationTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableScaleTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableScaleTheme.cs new file mode 100644 index 00000000000..a37a67f974d --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableScaleTheme.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme Engine to control initialized GameObject's scale based on state changes + /// + public class InteractableScaleTheme : InteractableThemeBase + { + private Transform hostTransform; + + public InteractableScaleTheme() + { + Types = new Type[] { typeof(Transform) }; + Name = "Scale Theme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Scale", + Type = ThemePropertyTypes.Vector3, + Values = new List(), + Default = new ThemePropertyValue() { Vector3 = Vector3.one} + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); + + hostTransform = Host.transform; + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + start.Vector3 = hostTransform.localScale; + return start; + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + hostTransform.localScale = Vector3.Lerp(property.StartValue.Vector3, property.Values[index].Vector3, percentage); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableScaleTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableScaleTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableScaleTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableScaleTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableShaderTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableShaderTheme.cs new file mode 100644 index 00000000000..fe48ae66b7d --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableShaderTheme.cs @@ -0,0 +1,160 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme Engine to control the value of a particular Shader Property based on state changes + /// Targets the first Renderer component on the initialized GameObject and use MaterialPropertyBlocks + /// + public class InteractableShaderTheme : InteractableThemeBase + { + /// + public override bool AreShadersSupported => true; + + private static ThemePropertyValue emptyValue = new ThemePropertyValue(); + + protected MaterialPropertyBlock propertyBlock; + protected List shaderProperties; + protected Renderer renderer; + + private ThemePropertyValue startValue = new ThemePropertyValue(); + + protected const string DefaultShaderProperty = "_Color"; + + public InteractableShaderTheme() + { + Types = new Type[] { typeof(Renderer) }; + Name = "Shader Float"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Shader Value", + Type = ThemePropertyTypes.ShaderFloat, + Values = new List(), + Default = new ThemePropertyValue() { Float = 0}, + TargetShader = StandardShaderUtility.MrtkStandardShader, + ShaderPropertyName = DefaultShaderProperty, + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition definition) + { + base.Init(host, definition); + + renderer = Host.GetComponent(); + + shaderProperties = new List(); + foreach (var prop in StateProperties) + { + if (ThemeStateProperty.IsShaderPropertyType(prop.Type)) + { + shaderProperties.Add(prop); + } + } + + propertyBlock = InteractableThemeShaderUtils.InitMaterialPropertyBlock(host, shaderProperties); + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + if (renderer != null) + { + renderer.GetPropertyBlock(propertyBlock); + + int propId = property.GetShaderPropertyId(); + var propValue = property.Values[index]; + switch (property.Type) + { + case ThemePropertyTypes.Color: + Color newColor = Color.Lerp(property.StartValue.Color, propValue.Color, percentage); + propertyBlock.SetColor(propId, newColor); + break; + case ThemePropertyTypes.Texture: + propertyBlock.SetTexture(propId, propValue.Texture); + break; + case ThemePropertyTypes.ShaderFloat: + case ThemePropertyTypes.ShaderRange: + float floatValue = LerpFloat(property.StartValue.Float, propValue.Float, percentage); + propertyBlock.SetFloat(propId, floatValue); + break; + default: + break; + } + + renderer.SetPropertyBlock(propertyBlock); + } + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + if (renderer == null) + { + return null; + } + + renderer.GetPropertyBlock(propertyBlock); + + startValue.Reset(); + + int propId = property.GetShaderPropertyId(); + switch (property.Type) + { + case ThemePropertyTypes.Color: + startValue.Color = propertyBlock.GetVector(propId); + break; + case ThemePropertyTypes.Texture: + startValue.Texture = propertyBlock.GetTexture(propId); + break; + case ThemePropertyTypes.ShaderFloat: + case ThemePropertyTypes.ShaderRange: + startValue.Float = propertyBlock.GetFloat(propId); + break; + default: + break; + } + + return startValue; + } + + public static float GetFloat(GameObject host, int propId) + { + if (host == null) + return 0; + + MaterialPropertyBlock block = InteractableThemeShaderUtils.GetPropertyBlock(host); + return block.GetFloat(propId); + } + + public static Color GetColor(GameObject host, int propId) + { + if (host == null) + { + return Color.white; + } + + MaterialPropertyBlock block = InteractableThemeShaderUtils.GetPropertyBlock(host); + return block.GetVector(propId); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableShaderTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableShaderTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableShaderTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableShaderTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableStringTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableStringTheme.cs new file mode 100644 index 00000000000..51ef06e9f71 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableStringTheme.cs @@ -0,0 +1,112 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme Engine to change the string value on a Text type object based on state changes + /// Finds the first available component searching in order of TextMesh, Text, TextMeshPro, TextMeshProUGUI + /// + public class InteractableStringTheme : InteractableThemeBase + { + /// + public override bool IsEasingSupported => false; + + private TextMesh mesh; + private Text text; + private TMPro.TextMeshPro meshPro; + private TMPro.TextMeshProUGUI meshProUGUI; + + public InteractableStringTheme() + { + Types = new Type[] { typeof(TextMesh), typeof(Text), typeof(TextMeshPro), typeof(TextMeshProUGUI) }; + Name = "String Theme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "String", + Type = ThemePropertyTypes.String, + Values = new List(), + Default = new ThemePropertyValue() { String = "" } + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); + + mesh = Host.GetComponent(); + text = Host.GetComponent(); + meshPro = Host.GetComponent(); + meshProUGUI = Host.GetComponent(); + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + start.String = string.Empty; + + if (mesh != null) + { + start.String = mesh.text; + } + else if (text != null) + { + start.String = text.text; + } + else if (meshPro != null) + { + start.String = meshPro.text; + } + else if (meshProUGUI != null) + { + start.String = meshProUGUI.text; + } + + return start; + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + string strValue = property.Values[index].String; + + if (mesh != null) + { + mesh.text = strValue; + } + else if (text != null) + { + text.text = strValue; + } + else if (meshPro != null) + { + meshPro.text = strValue; + } + else if (meshProUGUI != null) + { + meshProUGUI.text = strValue; + } + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableStringTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableStringTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableStringTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableStringTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableTextureTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableTextureTheme.cs new file mode 100644 index 00000000000..bea046bb8fe --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableTextureTheme.cs @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme Engine to change the texture on a GameObject based on state changes + /// + public class InteractableTextureTheme : InteractableShaderTheme + { + /// + public override bool IsEasingSupported => false; + + protected new const string DefaultShaderProperty = "_MainTex"; + + public InteractableTextureTheme() + { + Types = new Type[] { typeof(Renderer) }; + Name = "Texture Theme"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Texture", + Type = ThemePropertyTypes.Texture, + Values = new List(), + Default = new ThemePropertyValue() { Texture = null }, + TargetShader = StandardShaderUtility.MrtkStandardShader, + ShaderPropertyName = DefaultShaderProperty, + }, + }, + CustomProperties = new List(), + }; + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableTextureTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableTextureTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableTextureTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableTextureTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeBase.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeBase.cs new file mode 100644 index 00000000000..1d6c4623bc6 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeBase.cs @@ -0,0 +1,222 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Base abstract class for all Theme Engines. Extend to create custom Theme logic + /// + public abstract class InteractableThemeBase + { + /// + /// Types of component this Theme Engine will target on the initialized GameObject or related GameObjects + /// + public Type[] Types { get; protected set; } = new Type[0]; + + /// + /// Name of Theme Engine + /// + public string Name { get; protected set; } = "Base Theme"; + + /// + /// List of Properties with values per state + /// + public List StateProperties { get; set; } = new List(); + + /// + /// List of global Theme Engine properties + /// + public List Properties { get; set; } = new List(); + + /// + /// GameObject initialized with this ThemeEngine and being targeted based on state changes + /// + public GameObject Host { get; set; } + + /// + /// Defines how to ease between values during state changes + /// + public Easing Ease { get; set; } = new Easing(); + + /// + /// True if Theme Engine has been initialized, false otherwise + /// + public bool Loaded { get; protected set; } = false; + + /// + /// Indicates whether the current Theme engine implementation supports easing between state values + /// + public virtual bool IsEasingSupported => true; + + /// + /// Indicates whether the current Theme engine implementation supports shader targeting on state properties + /// + public virtual bool AreShadersSupported => false; + + /// + /// Instruct theme to set value for current property with given index state and at given lerp percentage + /// + /// property to update value + /// index of state to access array of values + /// percentage transition between values + public abstract void SetValue(ThemeStateProperty property, int index, float percentage); + + /// + /// Get the current property value for the provided state property + /// + /// state property to access + /// Value currently for given state property + public abstract ThemePropertyValue GetProperty(ThemeStateProperty property); + + /// + /// Generates the default theme definition configuration for the current theme implementation + /// + /// Default ThemeDefinition to initialize with the current theme engine implemenetation + public abstract ThemeDefinition GetDefaultThemeDefinition(); + + private bool hasFirstState = false; + private int lastState = -1; + + /// + /// Helper method to instantiate a Theme Engine of provided type. Type must extend InteractableThemeBase + /// + /// Type of ThemeEngine to create + /// Instance of ThemeEngine of given type + public static InteractableThemeBase CreateTheme(Type themeType) + { + if (!themeType.IsSubclassOf(typeof(InteractableThemeBase))) + { + Debug.LogError($"Trying to initialize theme of type {themeType} but type does not extend {typeof(InteractableThemeBase)}"); + return null; + } + + return (InteractableThemeBase)Activator.CreateInstance(themeType); + } + + /// + /// Helper method to create and initialize a Theme Engine for given configuration and targeted GameObject + /// + /// Theme configuration with type information and properties to initialize ThemeEngine with + /// GameObject for Theme Engine to target + /// Instance of Theme Engine initialized + public static InteractableThemeBase CreateAndInitTheme(ThemeDefinition definition, GameObject host = null) + { + var theme = CreateTheme(definition.ThemeType); + theme.Init(host, definition); + return theme; + } + + /// + /// Initialize current Theme Engine with given configuration and target the provided GameObject + /// + /// GameObject to target changes against + /// Configuration information to intialize Theme Engine + public virtual void Init(GameObject host, ThemeDefinition definition) + { + Host = host; + + this.StateProperties = new List(); + foreach (ThemeStateProperty stateProp in definition.StateProperties) + { + // This is a temporary workaround to support backward compatible themes + // If the current state properties is one we know supports shaders, try to migrate data + // See ThemeStateProperty class for more details + if (ThemeStateProperty.IsShaderPropertyType(stateProp.Type)) + { + stateProp.MigrateShaderData(); + } + + this.StateProperties.Add(new ThemeStateProperty() + { + Name = stateProp.Name, + Type = stateProp.Type, + Values = stateProp.Values, + Default = stateProp.Default, + TargetShader = stateProp.TargetShader, + ShaderPropertyName = stateProp.ShaderPropertyName, + }); + } + + this.Properties = new List(); + foreach (ThemeProperty prop in definition.CustomProperties) + { + this.Properties.Add(new ThemeProperty() + { + Name = prop.Name, + Type = prop.Type, + Value = prop.Value, + }); + } + + if (definition.Easing != null) + { + Ease = definition.Easing.Copy(); + Ease.Stop(); + } + + Loaded = true; + } + + /// + /// Update ThemeEngine for given state based on Theme logic. Check, sets, and possibly eases values based on given state + /// + /// current state to target + /// force update call even if state is not new + public virtual void OnUpdate(int state, bool force = false) + { + if (state != lastState || force) + { + int themePropCount = StateProperties.Count; + for (int i = 0; i < themePropCount; i++) + { + ThemeStateProperty current = StateProperties[i]; + current.StartValue = GetProperty(current); + if (hasFirstState || force) + { + Ease.Start(); + SetValue(current, state, Ease.GetCurved()); + hasFirstState = true; + } + else + { + SetValue(current, state, 1); + if (i >= themePropCount - 1) + { + hasFirstState = true; + } + } + StateProperties[i] = current; + } + + lastState = state; + } + else if (Ease.Enabled && Ease.IsPlaying()) + { + Ease.OnUpdate(); + int themePropCount = StateProperties.Count; + for (int i = 0; i < themePropCount; i++) + { + ThemeStateProperty current = StateProperties[i]; + SetValue(current, state, Ease.GetCurved()); + } + } + + lastState = state; + } + + protected float LerpFloat(float s, float e, float t) + { + return (e - s) * t + s; + } + + protected int LerpInt(int s, int e, float t) + { + return Mathf.RoundToInt((e - s) * t) + s; + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeBase.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeBase.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeBase.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeBase.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeShaderUtils.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeShaderUtils.cs similarity index 65% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeShaderUtils.cs rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeShaderUtils.cs index ade1e5fc352..e16782bc01e 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeShaderUtils.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeShaderUtils.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using System.Collections.Generic; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.UI @@ -9,7 +10,7 @@ namespace Microsoft.MixedReality.Toolkit.UI public enum ShaderPropertyType { Color, Float, Range, TexEnv, Vector, None } /// - /// property format for each property + /// Obsolete container. Only exists to support backward compatibility to copy values from old scriptableobjects /// [System.Serializable] public struct ShaderProperties @@ -19,61 +20,50 @@ public struct ShaderProperties public Vector2 Range; } - /// - /// collection of properties found in a shader - /// - public struct ShaderInfo - { - public ShaderProperties[] ShaderOptions; - public string Name; - } - - /// /// Collection of shader and material utilities /// - - public class InteractableThemeShaderUtils : MonoBehaviour + public static class InteractableThemeShaderUtils { /// /// Get a MaterialPropertyBlock and copy the designated properties /// - /// - /// - /// - public static MaterialPropertyBlock GetMaterialPropertyBlock(GameObject gameObject, ShaderProperties[] props) + public static MaterialPropertyBlock InitMaterialPropertyBlock(GameObject gameObject, List props) { MaterialPropertyBlock materialBlock = GetPropertyBlock(gameObject); Renderer renderer = gameObject.GetComponent(); - float value; if (renderer != null) { Material material = GetValidMaterial(renderer); if (material != null) { - for (int i = 0; i < props.Length; i++) + foreach (ThemeStateProperty prop in props) { - ShaderProperties prop = props[i]; - switch (props[i].Type) + switch (prop.Type) { - case ShaderPropertyType.Color: - Color color = material.GetVector(prop.Name); - materialBlock.SetColor(prop.Name, color); + case ThemePropertyTypes.Color: + Color color = material.GetVector(prop.ShaderPropertyName); + materialBlock.SetColor(prop.ShaderPropertyName, color); break; - case ShaderPropertyType.Float: - value = material.GetFloat(prop.Name); - materialBlock.SetFloat(prop.Name, value); + case ThemePropertyTypes.Texture: + Texture tex = material.GetTexture(prop.ShaderPropertyName); + if (tex != null) + { + materialBlock.SetTexture(prop.ShaderPropertyName, tex); + } break; - case ShaderPropertyType.Range: - value = material.GetFloat(prop.Name); - materialBlock.SetFloat(prop.Name, value); + case ThemePropertyTypes.ShaderFloat: + case ThemePropertyTypes.ShaderRange: + float value = material.GetFloat(prop.ShaderPropertyName); + materialBlock.SetFloat(prop.ShaderPropertyName, value); break; default: break; } } } + gameObject.GetComponent().SetPropertyBlock(materialBlock); } @@ -83,8 +73,6 @@ public static MaterialPropertyBlock GetMaterialPropertyBlock(GameObject gameObje /// /// Get the MaterialPropertyBlock from a renderer on a gameObject /// - /// - /// public static MaterialPropertyBlock GetPropertyBlock(GameObject gameObject) { MaterialPropertyBlock materialBlock = new MaterialPropertyBlock(); @@ -101,8 +89,6 @@ public static MaterialPropertyBlock GetPropertyBlock(GameObject gameObject) /// Because MaterialPropertyBlocks are used for setting material properties the shared material is /// used to set the initial state of the MaterialPropertyBlock(s) before mutating state. /// - /// - /// public static Material GetValidMaterial(Renderer renderer) { Material material = null; diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeShaderUtils.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeShaderUtils.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/InteractableThemeShaderUtils.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/InteractableThemeShaderUtils.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/ScaleOffsetColorTheme.cs b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/ScaleOffsetColorTheme.cs new file mode 100644 index 00000000000..ad84120f2e7 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/ScaleOffsetColorTheme.cs @@ -0,0 +1,115 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using System; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + /// + /// Theme Engine to control initialized GameObject's scale, local position offset, and color based on state changes + /// For color, will try to set on first available text object in order of TextMesh, Text, TextMeshPro, and TextMeshProUGUI + /// If none found, then Theme will target first Renderer component available and target the associated shader property found in ThemeDefinition + /// + public class ScaleOffsetColorTheme : InteractableColorTheme + { + protected Vector3 startPosition; + protected Vector3 startScale; + protected Transform hostTransform; + + public ScaleOffsetColorTheme() + { + Types = new Type[] { typeof(Transform), typeof(TextMesh), typeof(TextMesh), typeof(TextMeshPro), typeof(TextMeshProUGUI), typeof(Renderer) }; + Name = "Default: Scale, Offset, Color"; + } + + /// + public override ThemeDefinition GetDefaultThemeDefinition() + { + return new ThemeDefinition() + { + ThemeType = GetType(), + StateProperties = new List() + { + new ThemeStateProperty() + { + Name = "Scale", + Type = ThemePropertyTypes.Vector3, + Values = new List(), + Default = new ThemePropertyValue() { Vector3 = Vector3.one } + }, + new ThemeStateProperty() + { + Name = "Offset", + Type = ThemePropertyTypes.Vector3, + Values = new List(), + Default = new ThemePropertyValue() { Vector3 = Vector3.zero } + }, + new ThemeStateProperty() + { + Name = "Color", + Type = ThemePropertyTypes.Color, + Values = new List(), + Default = new ThemePropertyValue() { Color = Color.white }, + TargetShader = StandardShaderUtility.MrtkStandardShader, + ShaderPropertyName = DefaultShaderProperty, + }, + }, + CustomProperties = new List(), + }; + } + + /// + public override void Init(GameObject host, ThemeDefinition settings) + { + base.Init(host, settings); + hostTransform = Host.transform; + startPosition = hostTransform.localPosition; + startScale = hostTransform.localScale; + } + + /// + public override ThemePropertyValue GetProperty(ThemeStateProperty property) + { + ThemePropertyValue start = new ThemePropertyValue(); + + switch (property.Name) + { + case "Scale": + start.Vector3 = hostTransform.localScale; + break; + case "Offset": + start.Vector3 = hostTransform.localPosition; + break; + case "Color": + start = base.GetProperty(property); + break; + default: + break; + } + return start; + } + + /// + public override void SetValue(ThemeStateProperty property, int index, float percentage) + { + switch (property.Name) + { + case "Scale": + hostTransform.localScale = Vector3.Lerp(property.StartValue.Vector3, Vector3.Scale(startScale, property.Values[index].Vector3), percentage); + break; + case "Offset": + hostTransform.localPosition = Vector3.Lerp(property.StartValue.Vector3, startPosition + property.Values[index].Vector3, percentage); + break; + case "Color": + base.SetValue(property, index, percentage); + break; + default: + break; + } + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ScaleOffsetColorTheme.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/ScaleOffsetColorTheme.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Scripts/Themes/ScaleOffsetColorTheme.cs.meta rename to Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/VisualThemes/ThemeEngines/ScaleOffsetColorTheme.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/InputRayUtils.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/InputRayUtils.cs new file mode 100644 index 00000000000..0adad11352f --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/InputRayUtils.cs @@ -0,0 +1,195 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// Utilities for accessing position, rotation of rays. + /// + public static class InputRayUtils + { + /// + /// Gets the ray representing the position and direction of the user's head. + /// + /// The ray the head gaze + public static Ray GetHeadGazeRay() + { + return new Ray(CameraCache.Main.transform.position, CameraCache.Main.transform.forward); + } + + /// + /// Gets the ray> representing the position and direction of the user's eyes. + /// + /// The ray being returned + /// + /// True if the ray is being returned, false otherwise. + /// + public static bool TryGetEyeGazeRay(out Ray ray) + { + ray = new Ray(); + + IMixedRealityEyeGazeProvider eyeGazeProvider = CoreServices.InputSystem?.EyeGazeProvider; + if ((eyeGazeProvider == null) || + !eyeGazeProvider.IsEyeGazeValid) + { return false; } + + ray.origin = eyeGazeProvider.GazeOrigin; + ray.direction = eyeGazeProvider.GazeDirection; + return true; + } + + /// + /// Gets the ray assosiciated with the user's hand. + /// + /// The handedness of the hand + /// The ray being returned + /// + /// True if the ray is being returned, false otherwise. + /// + public static bool TryGetHandRay(Handedness hand, out Ray ray) + { + ray = new Ray(); + + IMixedRealityController controller; + if (TryGetControllerInstance(InputSourceType.Hand, hand, out controller)) + { + MixedRealityInteractionMapping mapping; + if (TryGetInteractionMapping(controller, DeviceInputType.SpatialPointer, out mapping)) + { + ray.origin = mapping.PositionData; + ray.direction = MathUtilities.GetDirection(mapping.RotationData); + return true; + } + } + + return false; + } + + /// + /// Gets the ray assosiciated with the motion controller. + /// + /// The handedness of the motion controller + /// The ray being returned + /// + /// True if the ray is being returned, false otherwise. + /// + public static bool TryGetMotionControllerRay(Handedness hand, out Ray ray) + { + ray = new Ray(); + + IMixedRealityController controller; + if (TryGetControllerInstance(InputSourceType.Controller, hand, out controller)) + { + MixedRealityInteractionMapping mapping; + if (TryGetInteractionMapping(controller, DeviceInputType.SpatialPointer, out mapping)) + { + ray.origin = mapping.PositionData; + ray.direction = MathUtilities.GetDirection(mapping.RotationData); + return true; + } + } + + return false; + } + + /// + /// Gets the instance matching the specified source type and hand. + /// + /// Type type of the input source + /// The handedness of the controller + /// The instance being returned + /// + /// True if the controller instance is beeing returned, false otherwise. + /// + private static bool TryGetControllerInstance(InputSourceType sourceType, Handedness hand, out IMixedRealityController controller) + { + controller = null; + + foreach (IMixedRealityController c in CoreServices.InputSystem.DetectedControllers) + { + if ((c.InputSource?.SourceType == sourceType) && + (c.ControllerHandedness == hand)) + { + controller = c; + return true; + } + } + + return false; + } + + /// + /// Gets the matching the for + /// the specified controller. + /// + /// The instance + /// The type of device input + /// The being returned + /// + /// True if the interaction mapping is being returned, false otherwise. + /// + private static bool TryGetInteractionMapping(IMixedRealityController controller, DeviceInputType inputType, out MixedRealityInteractionMapping mapping) + { + mapping = null; + + MixedRealityInteractionMapping[] mappings = controller.Interactions; + for (int i = 0; i < mappings.Length; i++) + { + if (mappings[i].InputType == inputType) + { + mapping = mappings[i]; + return true; + } + } + + return false; + } + + /// + /// Gets the ray assosiciated with the desired input source type + /// and hand. + /// + /// The type of input source + /// The handedness of the input source + /// The ray being returned + /// + /// True if the ray is being returned, false otherwise. + /// + public static bool TryGetRay(InputSourceType sourceType, Handedness hand, out Ray ray) + { + bool success = false; + + switch (sourceType) + { + case InputSourceType.Head: + // The head does not have a handedness, so we ignore the hand parameter. + ray = GetHeadGazeRay(); + success = true; + break; + + case InputSourceType.Eyes: + // The eyes do not have a handedness, so we ignore the hand parameter. + success = TryGetEyeGazeRay(out ray); + break; + + case InputSourceType.Hand: + success = TryGetHandRay(hand, out ray); + break; + + case InputSourceType.Controller: + success = TryGetMotionControllerRay(hand, out ray); + break; + + default: + Debug.Log($"It is not supported to get the ray for {sourceType} sources."); + ray = new Ray(); + success = false; + break; + } + return success; + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/InputRayUtils.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/Utilities/InputRayUtils.cs.meta new file mode 100644 index 00000000000..15556eae2bc --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/InputRayUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2e0866a9c1146c4188bbbf44eee8a88 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/PointerUtils.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/PointerUtils.cs new file mode 100644 index 00000000000..92ff1a16985 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/PointerUtils.cs @@ -0,0 +1,271 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Physics; +using Microsoft.MixedReality.Toolkit.Utilities; +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + public static class PointerUtils + { + /// + /// Tries to get the end point of a hand ray. + /// If no hand ray of given handedness is found, returns false and sets result to zero. + /// + /// Handedness of ray + /// The output position + /// True if pointer found, false otherwise. If not found, endPoint is set to zero + public static bool TryGetHandRayEndPoint(Handedness handedness, out Vector3 endPoint) + { + return TryGetPointerEndpoint(handedness, InputSourceType.Hand, out endPoint); + } + + /// + /// Tries to get the end point of a motion controller. + /// If no pointer of given handedness is found, returns false and sets result to zero. + /// + /// Handedness of ray + /// The output position + /// True if pointer found, false otherwise. If not found, endPoint is set to zero + public static bool TryGetMotionControllerEndPoint(Handedness handedness, out Vector3 endPoint) + { + return TryGetPointerEndpoint(handedness, InputSourceType.Controller, out endPoint); + } + + /// + /// Tries to get the end point of a pointer by source type and handedness. + /// If no pointer of given handedness is found, returns false and sets result to zero. + /// + /// Type of pointer to query + /// Handedness of pointer + /// Input type of pointer + /// Output point position + /// True if pointer found, false otherwise. If not found, endPoint is set to zero + public static bool TryGetPointerEndpoint(Handedness handedness, InputSourceType inputType, out Vector3 endPoint) where T: IMixedRealityPointer + { + foreach (var pointer in GetPointers(handedness, inputType)) + { + FocusDetails? details = pointer?.Result?.Details; + if (details.HasValue) + { + endPoint = details.Value.Point; + return true; + } + } + endPoint = Vector3.zero; + return false; + } + + /// + /// Tries to get the end point of a pointer of a pointer type and handedness. + /// If no pointer of given handedness is found, returns false and sets result to zero. + /// + /// Type of pointer to query + /// Handedness of pointer + /// The output point position + /// True if pointer found, false otherwise. If not found, endPoint is set to zero + public static bool TryGetPointerEndpoint(Handedness handedness, out Vector3 endPoint) where T : class, IMixedRealityPointer + { + T pointer = GetPointer(handedness); + FocusDetails? details = pointer?.Result?.Details; + if (!details.HasValue) + { + endPoint = Vector3.zero; + return false; + } + endPoint = details.Value.Point; + return true; + } + + /// + /// Find the first detected pointer of the given type with matching handedness. + /// + public static T GetPointer(Handedness handedness) where T : class, IMixedRealityPointer + { + foreach (var pointer in CoreServices.InputSystem.FocusProvider.GetPointers()) + { + if ((pointer.Controller?.ControllerHandedness & handedness) != 0) + { + return pointer; + } + } + return null; + } + + /// + /// Returns iterator over all pointers of specific type, with specific handedness. + /// + /// Return only pointers with this input type + /// Handedness of pointer + /// Iterator over all pointers of specific type, with specific handedness + public static IEnumerable GetPointers(Handedness handedness = Handedness.Any) where T : IMixedRealityPointer + { + foreach (var pointer in GetPointers()) + { + if (pointer is T pointerConcrete + && (pointer.Controller?.ControllerHandedness & handedness) != 0) + { + yield return pointerConcrete; + } + } + } + + /// + /// Returns all pointers with given handedness and input type. + /// + /// Handedness of pointer + /// Only return pointers of this input source type + /// Iterator over all pointers that match the source type, with specific handedness + public static IEnumerable GetPointers(Handedness handedness, InputSourceType sourceType) where T : IMixedRealityPointer + { + foreach (var pointer in GetPointers(handedness)) + { + if ((pointer.Controller?.ControllerHandedness & handedness) != 0 + && pointer.InputSourceParent.SourceType == sourceType) + { + yield return pointer; + } + } + } + + /// + /// Iterate over all pointers in the input system. May contain duplicates. + /// + public static IEnumerable GetPointers() + { + foreach (var inputSource in CoreServices.InputSystem.DetectedInputSources) + { + foreach (var pointer in inputSource.Pointers) + { + yield return pointer; + } + } + } + + /// + /// Queries input system for the behavior of a given pointer type. See . + /// + /// Type of pointer to query + /// Handedness to query + /// for the given pointer type and handedness + public static PointerBehavior GetPointerBehavior(Handedness handedness, InputSourceType inputSourceType) where T : class, IMixedRealityPointer + { + if (CoreServices.InputSystem.FocusProvider is IPointerPreferences preferences) + { + if (typeof(T) == typeof(GGVPointer)) + { + return preferences.GazePointerBehavior; + } + return preferences.GetPointerBehavior(handedness, inputSourceType); + } + else + { + WarnAboutSettingCustomPointerBehaviors(); + return PointerBehavior.Default; + } + } + + /// + /// Sets the behavior for the hand ray with given handedness + /// + /// Desired . + /// Specify handedness to restrict to only right, left hands. + public static void SetHandRayPointerBehavior(PointerBehavior pointerBehavior, Handedness handedness = Handedness.Any) + { + SetPointerBehavior(pointerBehavior, InputSourceType.Hand, handedness); + } + + /// + /// Sets the behavior for the motion controller ray with given handedness + /// + /// Desired . + /// Specify handedness to restrict to only right, left. + public static void SetMotionControllerRayPointerBehavior(PointerBehavior pointerBehavior, Handedness handedness = Handedness.Any) + { + SetPointerBehavior(pointerBehavior, InputSourceType.Controller, handedness); + } + + /// + /// Sets the behavior for the grab pointer with given handedness. + /// + /// Desired . + /// Specify handedness to restrict to only right, left. + public static void SetHandGrabPointerBehavior(PointerBehavior pointerBehavior, Handedness handedness = Handedness.Any) + { + SetPointerBehavior(pointerBehavior, InputSourceType.Hand, handedness); + } + + /// + /// Sets the behavior for the poke pointer with given handedness. + /// + /// Desired . + /// Specify handedness to restrict to only right, left. + public static void SetHandPokePointerBehavior(PointerBehavior pointerBehavior, Handedness handedness = Handedness.Any) + { + SetPointerBehavior(pointerBehavior, InputSourceType.Hand, handedness); + } + + /// + /// Sets the behavior for the gaze pointer. + /// + /// Desired . + public static void SetGazePointerBehavior(PointerBehavior pointerBehavior) + { + if (CoreServices.InputSystem.FocusProvider is IPointerPreferences pointerPreferences) + { + pointerPreferences.GazePointerBehavior = pointerBehavior; + foreach (InputSourceType sourceType in Enum.GetValues(typeof(InputSourceType))) + { + pointerPreferences.SetPointerBehavior(Handedness.Any, sourceType, pointerBehavior); + } + } + else + { + WarnAboutSettingCustomPointerBehaviors(); + } + } + + /// + /// Sets the pointer behavior for pointer of type T, for all input types. + /// + /// All pointer types that equal or derive from this type will be set. + /// Desired . + /// Specify handedness to restrict to only right, left. + public static void SetPointerBehavior(PointerBehavior pointerBehavior, Handedness handedness = Handedness.Any) where T : class, IMixedRealityPointer + { + foreach (InputSourceType type in Enum.GetValues(typeof(InputSourceType))) + { + SetPointerBehavior(pointerBehavior, type, handedness); + } + } + + /// + /// Sets the behavior for the given pointer type and input type. + /// + /// All pointer types that equal or derive from this type will be set. + /// Desired . + /// Allows setting different behaviors for different input types (hands, controllers, etc.) + /// Specify handedness to restrict to only right, left. + public static void SetPointerBehavior(PointerBehavior pointerBehavior, InputSourceType sourceType, Handedness handedness = Handedness.Any) where T : class, IMixedRealityPointer + { + if (CoreServices.InputSystem.FocusProvider is IPointerPreferences preferences) + { + preferences.SetPointerBehavior(handedness, sourceType, pointerBehavior); + } + else + { + WarnAboutSettingCustomPointerBehaviors(); + } + } + + private static void WarnAboutSettingCustomPointerBehaviors() + { + Debug.LogWarning("Setting custom pointer behaviors only works if the input system is using the default MRTK focus provider. " + + "Are you using a custom Focus Provider that doesn't implement IPointerPreferences?"); + } + + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/PointerUtils.cs.meta b/Assets/MixedRealityToolkit.SDK/Features/Utilities/PointerUtils.cs.meta new file mode 100644 index 00000000000..f690d392b2c --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/PointerUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9868275c85fe0ac48b9bdf076c1602ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/ConstantViewSize.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/ConstantViewSize.cs index 19aa8197445..07bfd773251 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/ConstantViewSize.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/ConstantViewSize.cs @@ -141,8 +141,9 @@ public float FovScale private float fovScalar = 1f; private float objectSize = 1f; - protected virtual void Start() + protected override void Start() { + base.Start(); RecalculateBounds(); } diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/HandConstraint.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/HandConstraint.cs index 5535059e531..a865b5c64a5 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/HandConstraint.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/HandConstraint.cs @@ -347,7 +347,6 @@ protected virtual Quaternion CalculateGoalRotation() /// /// Is the cursor visible? /// Delay one frame before performing the toggle to allow the pointers to instantiate their cursors. - /// protected virtual IEnumerator ToggleCursor(bool visible, bool frameDelay = false) { if (hideHandCursorsOnActivate) @@ -504,6 +503,18 @@ private static bool IsPalmFacingCamera(IMixedRealityController hand) return false; } + /// + /// Returns true if the given controller is a valid target for this solver. + /// + /// + /// Certain types of controllers (i.e. Xbox controllers) do not contain a handedness + /// and should not trigger the HandConstraint to show its corresponding UX. + /// + private static bool IsApplicableController(IMixedRealityController controller) + { + return controller.ControllerHandedness != Handedness.None; + } + #region MonoBehaviour Implementation protected override void Awake() @@ -541,7 +552,7 @@ public void OnSourceDetected(SourceStateEventData eventData) { var hand = eventData.Controller; - if (hand != null && !handStack.Contains(hand)) + if (hand != null && IsApplicableController(hand) && !handStack.Contains(hand)) { if (handStack.Count == 0) { @@ -557,7 +568,7 @@ public void OnSourceLost(SourceStateEventData eventData) { var hand = eventData.Controller; - if (hand != null) + if (hand != null && IsApplicableController(hand)) { handStack.Remove(hand); diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/InBetween.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/InBetween.cs index 74e232ebb44..2fe63b39817 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/InBetween.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/InBetween.cs @@ -93,8 +93,10 @@ protected void OnValidate() UpdateSecondSolverHandler(); } - protected void Start() + protected override void Start() { + base.Start(); + // We need to get the secondSolverHandler ready before we tell them both to seek a tracked object. secondSolverHandler = gameObject.AddComponent(); secondSolverHandler.UpdateSolvers = false; @@ -102,6 +104,7 @@ protected void Start() UpdateSecondSolverHandler(); } + /// public override void SolverUpdate() { if (SolverHandler != null && secondSolverHandler != null) diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Orbital.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Orbital.cs index a4bb6528c76..5a8186506c2 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Orbital.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Orbital.cs @@ -90,6 +90,7 @@ public int TetherAngleSteps } } + /// public override void SolverUpdate() { Vector3 desiredPos = SolverHandler.TransformTarget != null ? SolverHandler.TransformTarget.position : Vector3.zero; diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Overlap.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Overlap.cs index a419dcbbd6b..437ba4bf105 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Overlap.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Overlap.cs @@ -8,6 +8,7 @@ namespace Microsoft.MixedReality.Toolkit.Utilities.Solvers /// public class Overlap : Solver { + /// public override void SolverUpdate() { var target = SolverHandler.TransformTarget; diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/RadialView.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/RadialView.cs index ccf6bbf0dd4..d48c758aef1 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/RadialView.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/RadialView.cs @@ -234,7 +234,6 @@ public override void SolverUpdate() /// /// Optimized version of GetDesiredOrientation. /// - /// private void GetDesiredOrientation_DistanceOnly(ref Vector3 desiredPos) { // TODO: There should be a different solver for distance constraint. diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Solver.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Solver.cs index e2df1a38d12..0223221013c 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Solver.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Solver.cs @@ -222,6 +222,21 @@ protected virtual void OnEnable() currentLifetime = 0; } + protected virtual void Start() + { + if (SolverHandler != null) + { + SolverHandler.RegisterSolver(this); + } + } + protected virtual void OnDestroy() + { + if (SolverHandler != null) + { + SolverHandler.UnregisterSolver(this); + } + } + #endregion MonoBehaviour Implementation /// @@ -252,8 +267,6 @@ public void SolverUpdateEntry() /// /// SnapTo may be used to bypass smoothing to a certain position if the object is teleported or spawned. /// - /// - /// public virtual void SnapTo(Vector3 position, Quaternion rotation, Vector3 scale) { SnapGoalTo(position, rotation, scale); @@ -266,8 +279,6 @@ public virtual void SnapTo(Vector3 position, Quaternion rotation, Vector3 scale) /// /// SnapGoalTo only sets the goal orientation. Not really useful. /// - /// - /// public virtual void SnapGoalTo(Vector3 position, Quaternion rotation, Vector3 scale) { GoalPosition = position; @@ -281,8 +292,6 @@ public virtual void SnapGoalTo(Vector3 position, Quaternion rotation, Vector3 sc /// /// SnapTo may be used to bypass smoothing to a certain position if the object is teleported or spawned. /// - /// - /// [Obsolete("Use SnapTo(Vector3, Quaternion, Vector3) instead.")] public virtual void SnapTo(Vector3 position, Quaternion rotation) { @@ -295,8 +304,6 @@ public virtual void SnapTo(Vector3 position, Quaternion rotation) /// /// SnapGoalTo only sets the goal orientation. Not really useful. /// - /// - /// [Obsolete("Use SnapGoalTo(Vector3, Quaternion, Vector3) instead.")] public virtual void SnapGoalTo(Vector3 position, Quaternion rotation) { @@ -307,7 +314,6 @@ public virtual void SnapGoalTo(Vector3 position, Quaternion rotation) /// /// Add an offset position to the target goal position. /// - /// public virtual void AddOffset(Vector3 offset) { GoalPosition += offset; @@ -319,11 +325,6 @@ public virtual void AddOffset(Vector3 offset) /// /// Handles lerpTime of 0. /// - /// - /// - /// - /// - /// public static Vector3 SmoothTo(Vector3 source, Vector3 goal, float deltaTime, float lerpTime) { return Vector3.Lerp(source, goal, lerpTime.Equals(0.0f) ? 1f : deltaTime / lerpTime); @@ -332,11 +333,6 @@ public static Vector3 SmoothTo(Vector3 source, Vector3 goal, float deltaTime, fl /// /// Slerps Quaternion source to goal, handles lerpTime of 0 /// - /// - /// - /// - /// - /// public static Quaternion SmoothTo(Quaternion source, Quaternion goal, float deltaTime, float lerpTime) { return Quaternion.Slerp(source, goal, lerpTime.Equals(0.0f) ? 1f : deltaTime / lerpTime); diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/SolverHandler.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/SolverHandler.cs index cd798f54bf6..08ded300480 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/SolverHandler.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/SolverHandler.cs @@ -4,6 +4,7 @@ using Microsoft.MixedReality.Toolkit.Input; using System; using System.Collections.Generic; +using System.Linq; using UnityEngine; using UnityEngine.Serialization; @@ -169,6 +170,7 @@ public bool UpdateSolvers } protected readonly List solvers = new List(); + private bool updateSolversList = false; /// /// List of solvers that this handler will manage and update @@ -227,7 +229,7 @@ public Transform TransformTarget RefreshTrackedObject(); } - return trackingTarget?.transform; + return (trackingTarget != null) ? trackingTarget.transform : null; } } @@ -297,8 +299,6 @@ private void Awake() private void Start() { - solvers.AddRange(GetComponents()); - RefreshTrackedObject(); } @@ -310,6 +310,14 @@ private void Update() private void LateUpdate() { + if (updateSolversList) + { + IEnumerable inspectorOrderedSolvers = GetComponents().Intersect(solvers); + Solvers = inspectorOrderedSolvers.Union(Solvers).ToReadOnlyCollection(); + + updateSolversList = false; + } + if (UpdateSolvers) { //Before calling solvers, update goal to be the transform so that working and transform will match @@ -345,6 +353,26 @@ public void RefreshTrackedObject() AttachToNewTrackedObject(); } + /// + /// Adds to the list of guaranteeing inspector ordering. + /// + public void RegisterSolver(Solver solver) + { + if (!solvers.Contains(solver)) + { + solvers.Add(solver); + updateSolversList = true; + } + } + + /// + /// Removes from the list of . + /// + public void UnregisterSolver(Solver solver) + { + solvers.Remove(solver); + } + protected virtual void DetachFromCurrentTrackedObject() { if (trackingTarget != null) diff --git a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/SurfaceMagnetism.cs b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/SurfaceMagnetism.cs index d20100b519c..c2ea1d7995f 100644 --- a/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/SurfaceMagnetism.cs +++ b/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/SurfaceMagnetism.cs @@ -424,6 +424,7 @@ private Quaternion CalculateMagnetismOrientation(Vector3 direction, Vector3 surf } } + /// public override void SolverUpdate() { // Pass-through by default @@ -582,17 +583,6 @@ private void BoxRaycastStepUpdate(ref RayStep rayStep) /// /// Calculates a plane from all raycast hit locations upon which the object may align. Used in Box Raycast Mode. /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// private void FindPlacementPlane(Vector3 origin, Vector3 direction, Vector3[] positions, Vector3[] normals, bool[] hits, float assetWidth, float maxNormalVariance, bool constrainVertical, bool useClosestDistance, out Plane plane, out float closestDistance) { int rayCount = positions.Length; @@ -788,7 +778,6 @@ private void FindPlacementPlane(Vector3 origin, Vector3 direction, Vector3[] pos /// /// Checks if a normal is nearly vertical /// - /// /// Returns true, if normal is vertical. private static bool IsNormalVertical(Vector3 normal) => 1f - Mathf.Abs(normal.y) < 0.01f; } diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell.meta b/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell.meta new file mode 100644 index 00000000000..78738777380 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3ba00930c6b92d42bb47830f4a7193f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell/DwellHandlerInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell/DwellHandlerInspector.cs new file mode 100644 index 00000000000..d7e001a2377 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell/DwellHandlerInspector.cs @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEditor; + +namespace Microsoft.MixedReality.Toolkit.Experimental.Dwell.Editor +{ + [CustomEditor(typeof(DwellHandler), true)] + public class DwellHandlerInspector : UnityEditor.Editor + { + private UnityEditor.Editor _editor; + + public override void OnInspectorGUI() + { + var dwellProfileAsset = this.serializedObject.FindProperty("dwellProfile"); + EditorGUILayout.PropertyField(dwellProfileAsset, true); + + EditorGUILayout.Foldout(true, "Dwell Profile Properties", true); + EditorGUI.indentLevel++; + if (dwellProfileAsset.objectReferenceValue != null) + { + CreateCachedEditor(dwellProfileAsset.objectReferenceValue, null, ref _editor); + _editor.OnInspectorGUI(); + } + EditorGUI.indentLevel--; + + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("DwellIntended"), true); + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("DwellStarted"), true); + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("DwellCompleted"), true); + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("DwellCanceled"), true); + + this.serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell/DwellHandlerInspector.cs.meta b/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell/DwellHandlerInspector.cs.meta new file mode 100644 index 00000000000..50235ca9698 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/Dwell/DwellHandlerInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c93383f3b343874a9be57b4a3ff76ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/Input/Handlers/ControllerPoseSynchronizerInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/Input/Handlers/ControllerPoseSynchronizerInspector.cs index 47227ef12e6..8d52b869fa6 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/Input/Handlers/ControllerPoseSynchronizerInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/Input/Handlers/ControllerPoseSynchronizerInspector.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Utilities; +using Microsoft.MixedReality.Toolkit.Utilities.Editor; using UnityEditor; namespace Microsoft.MixedReality.Toolkit.Input.Editor @@ -30,6 +31,11 @@ protected virtual void OnEnable() public override void OnInspectorGUI() { + if (target != null) + { + InspectorUIUtility.RenderHelpURL(target.GetType()); + } + serializedObject.Update(); EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index 6b41ef6b7e4..322e784b575 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -20,6 +20,7 @@ public class SpeechInputHandlerInspector : BaseInputHandlerInspector private SerializedProperty keywordsProperty; private SerializedProperty persistentKeywordsProperty; + private SerializedProperty speechConfirmationTooltipPrefabProperty; protected override void OnEnable() { @@ -27,6 +28,7 @@ protected override void OnEnable() keywordsProperty = serializedObject.FindProperty("keywords"); persistentKeywordsProperty = serializedObject.FindProperty("persistentKeywords"); + speechConfirmationTooltipPrefabProperty = serializedObject.FindProperty("speechConfirmationTooltipPrefab"); if (MixedRealityInspectorUtility.CheckMixedRealityConfigured(false)) { @@ -70,6 +72,7 @@ public override void OnInspectorGUI() serializedObject.Update(); EditorGUILayout.PropertyField(persistentKeywordsProperty); + EditorGUILayout.PropertyField(speechConfirmationTooltipPrefabProperty); bool wasGUIEnabled = GUI.enabled; GUI.enabled = enabled; @@ -102,93 +105,93 @@ public override void OnInspectorGUI() private void ShowList(SerializedProperty list) { - EditorGUI.indentLevel++; - - // remove the keywords already assigned from the registered list - var handler = (SpeechInputHandler)target; - var availableKeywords = new string[0]; - - if (handler.Keywords != null && distinctRegisteredKeywords != null) + using (new EditorGUI.IndentLevelScope()) { - availableKeywords = distinctRegisteredKeywords.Except(handler.Keywords.Select(keywordAndResponse => keywordAndResponse.Keyword)).ToArray(); - } + // remove the keywords already assigned from the registered list + var handler = (SpeechInputHandler)target; + var availableKeywords = new string[0]; - // keyword rows - for (int index = 0; index < list.arraySize; index++) - { - // the element - SerializedProperty speechCommandProperty = list.GetArrayElementAtIndex(index); - GUILayout.BeginHorizontal(); + if (handler.Keywords != null && distinctRegisteredKeywords != null) + { + availableKeywords = distinctRegisteredKeywords.Except(handler.Keywords.Select(keywordAndResponse => keywordAndResponse.Keyword)).ToArray(); + } + + // keyword rows + for (int index = 0; index < list.arraySize; index++) + { + // the element + SerializedProperty speechCommandProperty = list.GetArrayElementAtIndex(index); + GUILayout.BeginHorizontal(); bool elementExpanded = EditorGUILayout.PropertyField(speechCommandProperty); GUILayout.FlexibleSpace(); // the remove element button bool elementRemoved = GUILayout.Button(RemoveButtonContent, EditorStyles.miniButton, MiniButtonWidth); - GUILayout.EndHorizontal(); + GUILayout.EndHorizontal(); - if (elementRemoved) - { - list.DeleteArrayElementAtIndex(index); - - if (index == list.arraySize) + if (elementRemoved) { - EditorGUI.indentLevel--; - return; + list.DeleteArrayElementAtIndex(index); + + if (index == list.arraySize) + { + EditorGUI.indentLevel--; + return; + } } - } - SerializedProperty keywordProperty = speechCommandProperty.FindPropertyRelative("keyword"); + SerializedProperty keywordProperty = speechCommandProperty.FindPropertyRelative("keyword"); - bool invalidKeyword = true; - if (distinctRegisteredKeywords != null) - { - foreach (string keyword in distinctRegisteredKeywords) + bool invalidKeyword = true; + if (distinctRegisteredKeywords != null) { - if (keyword == keywordProperty.stringValue) + foreach (string keyword in distinctRegisteredKeywords) { - invalidKeyword = false; - break; + if (keyword == keywordProperty.stringValue) + { + invalidKeyword = false; + break; + } } } - } - if (invalidKeyword) - { - EditorGUILayout.HelpBox("Registered keyword is not recognized in the speech command profile!", MessageType.Error); + if (invalidKeyword) + { + EditorGUILayout.HelpBox("Registered keyword is not recognized in the speech command profile!", MessageType.Error); + } + + if (!elementRemoved && elementExpanded) + { + string[] keywords = availableKeywords.Concat(new[] { keywordProperty.stringValue }).OrderBy(keyword => keyword).ToArray(); + int previousSelection = ArrayUtility.IndexOf(keywords, keywordProperty.stringValue); + int currentSelection = EditorGUILayout.Popup("Keyword", previousSelection, keywords); + + if (currentSelection != previousSelection) + { + keywordProperty.stringValue = keywords[currentSelection]; + } + + SerializedProperty responseProperty = speechCommandProperty.FindPropertyRelative("response"); + EditorGUILayout.PropertyField(responseProperty, true); + } } - if (!elementRemoved && elementExpanded) + // add button row + using (new EditorGUILayout.HorizontalScope()) { - string[] keywords = availableKeywords.Concat(new[] { keywordProperty.stringValue }).OrderBy(keyword => keyword).ToArray(); - int previousSelection = ArrayUtility.IndexOf(keywords, keywordProperty.stringValue); - int currentSelection = EditorGUILayout.Popup("Keyword", previousSelection, keywords); + GUILayout.FlexibleSpace(); - if (currentSelection != previousSelection) + // the add element button + if (GUILayout.Button(AddButtonContent, EditorStyles.miniButton, MiniButtonWidth)) { - keywordProperty.stringValue = keywords[currentSelection]; + var index = list.arraySize; + list.InsertArrayElementAtIndex(index); + var elementProperty = list.GetArrayElementAtIndex(index); + SerializedProperty keywordProperty = elementProperty.FindPropertyRelative("keyword"); + keywordProperty.stringValue = string.Empty; } - - SerializedProperty responseProperty = speechCommandProperty.FindPropertyRelative("response"); - EditorGUILayout.PropertyField(responseProperty, true); } } - - // add button row - EditorGUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - - // the add element button - if (GUILayout.Button(AddButtonContent, EditorStyles.miniButton, MiniButtonWidth)) - { - var index = list.arraySize; - list.InsertArrayElementAtIndex(index); - var elementProperty = list.GetArrayElementAtIndex(index); - SerializedProperty keywordProperty = elementProperty.FindPropertyRelative("keyword"); - keywordProperty.stringValue = string.Empty; - } - - EditorGUILayout.EndHorizontal(); - EditorGUI.indentLevel--; } private static string[] GetDistinctRegisteredKeywords() diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/BoundingBox/BoundingBoxInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/BoundingBox/BoundingBoxInspector.cs index 91de0f10b23..5ca656f3971 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/BoundingBox/BoundingBoxInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/BoundingBox/BoundingBoxInspector.cs @@ -3,9 +3,11 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. // +using Microsoft.MixedReality.Toolkit.Input; using Microsoft.MixedReality.Toolkit.UI; using Microsoft.MixedReality.Toolkit.Utilities.Editor; using UnityEditor; +using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Editor { @@ -17,6 +19,27 @@ public override void OnInspectorGUI() { if (target != null) { + // check if rigidbody is attached - if so show warning in case input profile is not configured for individual collider raycast + BoundingBox boundingBox = (BoundingBox)target; + Rigidbody rigidBody = boundingBox.GetComponent(); + + if (rigidBody != null) + { + MixedRealityInputSystemProfile profile = CoreServices.InputSystem?.InputSystemProfile; + if (profile != null && profile.FocusIndividualCompoundCollider == false) + { + EditorGUILayout.Space(); + // show warning and button to reconfigure profile + EditorGUILayout.HelpBox($"When using Bounding Box in combination with Rigidbody 'Focus Individual Compound Collider' must be enabled in Input Profile.", UnityEditor.MessageType.Warning); + if (GUILayout.Button($"Enable 'Focus Individual Compound Collider' in Input Profile")) + { + profile.FocusIndividualCompoundCollider = true; + } + + EditorGUILayout.Space(); + } + } + InspectorUIUtility.RenderHelpURL(target.GetType()); } diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableEventInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableEventInspector.cs new file mode 100644 index 00000000000..42b00527ed1 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableEventInspector.cs @@ -0,0 +1,121 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using Microsoft.MixedReality.Toolkit.Utilities.Editor; +using System; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.Events; + +namespace Microsoft.MixedReality.Toolkit.UI +{ + public static class InteractableEventInspector + { + private static readonly GUIContent SelectEventLabel = new GUIContent("Select Event Type", "Select the event type from the list"); + + /// + /// Render event properties for the given event item. If item has been removed, returns true. False otherwise + /// + /// serialized property of the event item to render properties from + /// If item has been removed, returns true. False otherwise + public static bool RenderEvent(SerializedProperty eventItem, bool canRemove = true) + { + using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) + { + SerializedProperty uEvent = eventItem.FindPropertyRelative("Event"); + SerializedProperty eventName = eventItem.FindPropertyRelative("Name"); + SerializedProperty className = eventItem.FindPropertyRelative("ClassName"); + SerializedProperty assemblyQualifiedName = eventItem.FindPropertyRelative("AssemblyQualifiedName"); + Type receiverType; + + InspectorUIUtility.DrawHeader("Event Receiver Type"); + using (new EditorGUILayout.HorizontalScope()) + { + Rect position = EditorGUILayout.GetControlRect(); + using (new EditorGUI.PropertyScope(position, SelectEventLabel, className)) + { + var receiverTypes = TypeCacheUtility.GetSubClasses(); + var recevierClassNames = receiverTypes.Select(t => t?.Name).ToArray(); + int id = Array.IndexOf(recevierClassNames, className.stringValue); + int newId = EditorGUI.Popup(position, id, recevierClassNames); + if (newId == -1) { newId = 0; } + + receiverType = receiverTypes[newId]; + + // Temporary workaround to fix bug shipped in GA where assemblyQualifiedName was never set + if (string.IsNullOrEmpty(assemblyQualifiedName.stringValue)) + { + assemblyQualifiedName.stringValue = receiverType.AssemblyQualifiedName; + } + + if (id != newId) + { + EventChanged(receiverType, eventItem); + } + } + + if (canRemove) + { + if (InspectorUIUtility.FlexButton(new GUIContent("Remove Event"))) + { + return true; + } + } + } + + EditorGUILayout.Space(); + InspectorUIUtility.DrawHeader("Event Properties"); + + ReceiverBase receiver = (ReceiverBase)Activator.CreateInstance(receiverType, new UnityEvent()); + + if (!receiver.HideUnityEvents) + { + EditorGUILayout.PropertyField(uEvent, new GUIContent(receiver.Name)); + } + + SerializedProperty eventSettings = eventItem.FindPropertyRelative("Settings"); + + // If fields for given receiver class type have been changed, update the related inspector field data + var fieldList = InspectorFieldsUtility.GetInspectorFields(receiver); + if (!InspectorFieldsUtility.AreFieldsSame(eventSettings, fieldList)) + { + InspectorFieldsUtility.UpdateSettingsList(eventSettings, fieldList); + } + + for (int index = 0; index < eventSettings.arraySize; index++) + { + SerializedProperty propertyField = eventSettings.GetArrayElementAtIndex(index); + bool isEvent = InspectorFieldsUtility.IsPropertyType(propertyField, InspectorField.FieldTypes.Event); + + if (!receiver.HideUnityEvents || !isEvent) + { + InspectorFieldsUtility.DisplayPropertyField(eventSettings.GetArrayElementAtIndex(index)); + } + } + } + + return false; + } + + /// + /// Update the given InteractableEvent to the new type (which extends ReceiverBase) + /// + /// new receiverbase subclass type to target + /// InteractableEvent to target and update + private static void EventChanged(Type newType, SerializedProperty eventItem) + { + SerializedProperty className = eventItem.FindPropertyRelative("ClassName"); + SerializedProperty assemblyQualifiedName = eventItem.FindPropertyRelative("AssemblyQualifiedName"); + + className.stringValue = newType.Name; + assemblyQualifiedName.stringValue = newType.AssemblyQualifiedName; + + SerializedProperty settings = eventItem.FindPropertyRelative("Settings"); + + ReceiverBase defaultReceiver = (ReceiverBase)Activator.CreateInstance(newType, new UnityEvent()); + InspectorFieldsUtility.ClearSettingsList(settings, InspectorFieldsUtility.GetInspectorFields(defaultReceiver)); + } + } +} diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableEventInspector.cs.meta b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableEventInspector.cs.meta new file mode 100644 index 00000000000..d84b8fe992e --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableEventInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b704d97d87fb1e42ad0649d02e6846e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableInspector.cs index c32015d32a0..67d566f6558 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableInspector.cs @@ -1,9 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using Microsoft.MixedReality.Toolkit.Input; using Microsoft.MixedReality.Toolkit.Utilities.Editor; using System; using System.Collections.Generic; +using System.Linq; using System.Reflection; using UnityEditor; using UnityEngine; @@ -14,7 +16,6 @@ namespace Microsoft.MixedReality.Toolkit.UI.Editor public class InteractableInspector : UnityEditor.Editor { protected Interactable instance; - protected List eventList; protected SerializedProperty profileList; protected SerializedProperty statesProperty; @@ -28,24 +29,12 @@ public class InteractableInspector : UnityEditor.Editor protected SerializedProperty dimensionIndex; protected SerializedProperty dimensions; - protected static bool showProfiles; - protected static bool showEvents; protected const string ShowProfilesPrefKey = "InteractableInspectorProfiles"; protected const string ShowEventsPrefKey = "InteractableInspectorProfiles_ShowEvents"; protected bool enabled = false; - protected InteractableTypesContainer eventOptions; - protected InteractableTypesContainer themeOptions; - protected string[] shaderOptions; - protected string[] inputActionOptions = null; protected string[] speechKeywordOptions = null; - protected static bool ProfilesSetup = false; - - protected bool hasProfileLayout; - - protected GUIStyle boxStyle; - private const int ThemePropertiesBoxMargin = 30; private static readonly GUIContent InputActionsLabel = new GUIContent("Input Actions", "The input action filter"); private static readonly GUIContent selectionModeLabel = new GUIContent("Selection Mode", "How the Interactable should react to input"); @@ -53,32 +42,26 @@ public class InteractableInspector : UnityEditor.Editor private static readonly GUIContent startDimensionLabel = new GUIContent("Start Dimension Index", "The dimensionIndex value to set on start."); private static readonly GUIContent CurrentDimensionLabel = new GUIContent("Dimension Index", "The dimensionIndex value at runtime."); private static readonly GUIContent isToggledLabel = new GUIContent("Is Toggled", "The toggled value to set on start."); - private static readonly GUIContent CreateThemeLabel = new GUIContent("Create Theme", "Create a new theme"); + private static readonly GUIContent CreateThemeLabel = new GUIContent("Create and Assign New Theme", "Create a new theme"); private static readonly GUIContent AddThemePropertyLabel = new GUIContent("+ Add Theme Property", "Add Theme Property"); private static readonly GUIContent SpeechComamndsLabel = new GUIContent("Speech Command", "Speech Commands to use with Interactable, pulled from MRTK/Input/Speech Commands Profile"); protected virtual void OnEnable() { instance = (Interactable)target; - eventList = instance.Events; - profileList = serializedObject.FindProperty("Profiles"); - statesProperty = serializedObject.FindProperty("States"); - enabledProperty = serializedObject.FindProperty("Enabled"); + profileList = serializedObject.FindProperty("profiles"); + statesProperty = serializedObject.FindProperty("states"); + enabledProperty = serializedObject.FindProperty("enabledOnStart"); voiceCommands = serializedObject.FindProperty("VoiceCommand"); actionId = serializedObject.FindProperty("InputActionId"); - isGlobal = serializedObject.FindProperty("IsGlobal"); + isGlobal = serializedObject.FindProperty("isGlobal"); canSelect = serializedObject.FindProperty("CanSelect"); canDeselect = serializedObject.FindProperty("CanDeselect"); - startDimensionIndex = serializedObject.FindProperty("StartDimensionIndex"); + startDimensionIndex = serializedObject.FindProperty("startDimensionIndex"); dimensionIndex = serializedObject.FindProperty("dimensionIndex"); dimensions = serializedObject.FindProperty("Dimensions"); - showProfiles = EditorPrefs.GetBool(ShowProfilesPrefKey, showProfiles); - - SetupEventOptions(); - SetupThemeOptions(); - enabled = true; } @@ -93,12 +76,12 @@ protected virtual void RenderBaseInspector() /// public sealed override void OnInspectorGUI() { - if ((inputActionOptions == null && !Interactable.TryGetInputActions(out inputActionOptions)) - || (speechKeywordOptions == null && !Interactable.TryGetSpeechKeywords(out speechKeywordOptions))) + if ((inputActionOptions == null && !TryGetInputActions(out inputActionOptions)) + || (speechKeywordOptions == null && !TryGetSpeechKeywords(out speechKeywordOptions))) { EditorGUILayout.HelpBox("Mixed Reality Toolkit is missing, configure it by invoking the 'Mixed Reality Toolkit > Add to Scene and Configure...' menu", MessageType.Error); } - + RenderCustomInspector(); } @@ -106,236 +89,151 @@ public virtual void RenderCustomInspector() { serializedObject.Update(); - RenderGeneralSettings(); + // Disable inspector UI if in play mode + bool isPlayMode = EditorApplication.isPlaying || EditorApplication.isPaused; + using (new EditorGUI.DisabledScope(isPlayMode)) + { + RenderGeneralSettings(); - EditorGUILayout.Space(); + EditorGUILayout.Space(); - RenderProfileSettings(); + RenderProfileSettings(); - EditorGUILayout.Space(); + EditorGUILayout.Space(); - RenderEventSettings(); + RenderEventSettings(); + } serializedObject.ApplyModifiedProperties(); } private void RenderProfileSettings() { - if (!ProfilesSetup && !showProfiles) - { - InspectorUIUtility.DrawWarning("Profiles (Optional) have not been set up or has errors."); - } - - bool isProfilesOpen = InspectorUIUtility.DrawSectionFoldout("Profiles", showProfiles, FontStyle.Bold, InspectorUIUtility.TitleFontSize); - if (showProfiles != isProfilesOpen) - { - showProfiles = isProfilesOpen; - EditorPrefs.SetBool(ShowProfilesPrefKey, showProfiles); - } - if (profileList.arraySize < 1) { AddProfile(0); } - int validProfileCnt = 0; - int themeCnt = 0; - - if (showProfiles) + if (InspectorUIUtility.DrawSectionFoldoutWithKey("Profiles", ShowProfilesPrefKey, MixedRealityStylesUtility.TitleFoldoutStyle)) { - // Render all profile items + // Render all profile items. Profiles are per GameObject/ThemeContainer for (int i = 0; i < profileList.arraySize; i++) { using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) { SerializedProperty profileItem = profileList.GetArrayElementAtIndex(i); - SerializedProperty gameObject = profileItem.FindPropertyRelative("Target"); + SerializedProperty hostGameObject = profileItem.FindPropertyRelative("Target"); using (new EditorGUILayout.HorizontalScope()) { - EditorGUILayout.PropertyField(gameObject, new GUIContent("Target", "Target gameObject for this theme properties to manipulate")); + EditorGUILayout.PropertyField(hostGameObject, new GUIContent("Target", "Target gameObject for this theme properties to manipulate")); if (InspectorUIUtility.SmallButton(new GUIContent(InspectorUIUtility.Minus, "Remove Profile"), i, RemoveProfile)) { + // Profile removed via RemoveProfile callback continue; } } + if (hostGameObject.objectReferenceValue == null) + { + InspectorUIUtility.DrawError("Assign a GameObject to apply visual effects"); + if (GUILayout.Button("Assign Self")) + { + hostGameObject.objectReferenceValue = instance.gameObject; + } + } + + EditorGUILayout.Space(); + SerializedProperty themes = profileItem.FindPropertyRelative("Themes"); - ValidateThemes(dimensions, themes); + ValidateThemesForDimensions(dimensions, themes); // Render all themes for current target for (int t = 0; t < themes.arraySize; t++) { SerializedProperty themeItem = themes.GetArrayElementAtIndex(t); string themeLabel = BuildThemeTitle(dimensions.intValue, t); - EditorGUILayout.PropertyField(themeItem, new GUIContent(themeLabel, "Theme properties for interaction feedback")); - if (themeItem.objectReferenceValue != null && gameObject.objectReferenceValue) + if (themeItem.objectReferenceValue != null) { - RenderDefaultThemeWarning(profileItem, themeItem); - - SerializedProperty hadDefault = profileItem.FindPropertyRelative("HadDefaultTheme"); - hadDefault.boolValue = true; - - string prefKey = themeItem.objectReferenceValue.name + "Profiles" + i + "_Theme" + t + "_Edit"; - bool showSettingsPref = EditorPrefs.GetBool(prefKey, true); - bool show = InspectorUIUtility.DrawSectionFoldout(themeItem.objectReferenceValue.name + " (Click to edit)", showSettingsPref, FontStyle.Normal); - if (show != showSettingsPref) + bool showThemeSettings = false; + using (new EditorGUILayout.HorizontalScope()) { - EditorPrefs.SetBool(prefKey, show); + string prefKey = themeItem.objectReferenceValue.name + "Profiles" + i + "_Theme" + t + "_Edit"; + showThemeSettings = InspectorUIUtility.DrawSectionFoldoutWithKey(themeLabel, prefKey); + EditorGUILayout.PropertyField(themeItem, new GUIContent(string.Empty, "Theme properties for interaction feedback")); } - if (show) + if (themeItem.objectReferenceValue != null) { - SerializedObject themeObj = new SerializedObject(themeItem.objectReferenceValue); - SerializedProperty themeObjSettings = themeObj.FindProperty("Settings"); - - GUILayout.Space(5); - - if (InspectorUIUtility.FlexButton(AddThemePropertyLabel)) + // TODO: Odd bug where themeStates below is null when it shouldn't be. Use instance object as workaround atm + //SerializedProperty themeStates = themeItem.FindPropertyRelative("States"); + var themeInstance = themeItem.objectReferenceValue as Theme; + if (statesProperty.objectReferenceValue != themeInstance.States) { - AddThemeProperty(profileItem, themeItem); + InspectorUIUtility.DrawWarning($"{themeInstance.name}'s States property does not match Interactable's States property"); } - State[] states = GetStates(); - - themeObj.Update(); - ThemeInspector.RenderThemeSettings(themeObjSettings, themeOptions, gameObject, states, ThemePropertiesBoxMargin); - ThemeInspector.RenderThemeStates(themeObjSettings, states, ThemePropertiesBoxMargin); - themeObj.ApplyModifiedProperties(); + if (showThemeSettings) + { + using (new EditorGUI.IndentLevelScope()) + { + UnityEditor.Editor themeEditor = UnityEditor.Editor.CreateEditor(themeItem.objectReferenceValue); + themeEditor.OnInspectorGUI(); + } + } } - - validProfileCnt++; } else { - // show message about profile setup - const string themeMsg = "Assign a Target and/or Theme above to add visual effects"; - SerializedProperty hadDefault = profileItem.FindPropertyRelative("HadDefaultTheme"); + EditorGUILayout.PropertyField(themeItem, new GUIContent(themeLabel, "Theme properties for interaction feedback")); - if (!hadDefault.boolValue && t == 0) + InspectorUIUtility.DrawError("Assign a Theme to add visual effects"); + if (GUILayout.Button(CreateThemeLabel)) { - string[] themeLocations = AssetDatabase.FindAssets("DefaultTheme"); - if (themeLocations.Length > 0) - { - for (int j = 0; j < themeLocations.Length; j++) - { - string path = AssetDatabase.GUIDToAssetPath(themeLocations[0]); - Theme defaultTheme = (Theme)AssetDatabase.LoadAssetAtPath(path, typeof(Theme)); - if (defaultTheme != null) - { - themeItem.objectReferenceValue = defaultTheme; - break; - } - } - - if (themeItem.objectReferenceValue != null) - { - hadDefault.boolValue = true; - } - } - else - { - InspectorUIUtility.DrawError("DefaultTheme missing from project!"); - } + themeItem.objectReferenceValue = CreateThemeAsset(hostGameObject.objectReferenceValue.name); + return; } - InspectorUIUtility.DrawError(themeMsg); } - themeCnt += themes.arraySize; + EditorGUILayout.Space(); } } - }// profile for loop + } if (GUILayout.Button(new GUIContent("Add Profile"))) { AddProfile(profileList.arraySize); } } - else - { - // make sure profiles are setup if closed by default - for (int i = 0; i < profileList.arraySize; i++) - { - SerializedProperty sItem = profileList.GetArrayElementAtIndex(i); - SerializedProperty gameObject = sItem.FindPropertyRelative("Target"); - SerializedProperty themes = sItem.FindPropertyRelative("Themes"); - - if (gameObject.objectReferenceValue != null) - { - validProfileCnt++; - } - - for (int t = 0; t < themes.arraySize; t++) - { - SerializedProperty themeItem = themes.GetArrayElementAtIndex(themes.arraySize - 1); - if (themeItem.objectReferenceValue != null && gameObject.objectReferenceValue) - { - validProfileCnt++; - SerializedProperty hadDefault = sItem.FindPropertyRelative("HadDefaultTheme"); - hadDefault.boolValue = true; - } - } - - themeCnt += themes.arraySize; - } - } - - ProfilesSetup = validProfileCnt == profileList.arraySize + themeCnt; - } - - private void RenderDefaultThemeWarning(SerializedProperty profileItem, SerializedProperty themeItem) - { - if (themeItem.objectReferenceValue.name == "DefaultTheme") - { - using (new EditorGUILayout.HorizontalScope()) - { - InspectorUIUtility.DrawWarning("DefaultTheme should not be edited. "); - - if (InspectorUIUtility.FlexButton(CreateThemeLabel)) - { - CreateTheme(profileItem, themeItem); - } - } - } } private void RenderEventSettings() { - bool isPlayMode = EditorApplication.isPlaying || EditorApplication.isPaused; - bool isEventsOpen = InspectorUIUtility.DrawSectionFoldout("Events", showEvents, FontStyle.Bold, InspectorUIUtility.TitleFontSize); - if (showEvents != isEventsOpen) + if (InspectorUIUtility.DrawSectionFoldoutWithKey("Events", ShowEventsPrefKey, MixedRealityStylesUtility.TitleFoldoutStyle)) { - showEvents = isEventsOpen; - EditorPrefs.SetBool(ShowEventsPrefKey, showEvents); - } + EditorGUILayout.Space(); - EditorGUILayout.Space(); - - if (showEvents) - { SerializedProperty onClick = serializedObject.FindProperty("OnClick"); EditorGUILayout.PropertyField(onClick, new GUIContent("OnClick")); SerializedProperty events = serializedObject.FindProperty("Events"); - GUI.enabled = !isPlayMode; for (int i = 0; i < events.arraySize; i++) { SerializedProperty eventItem = events.GetArrayElementAtIndex(i); - if (InteractableReceiverListInspector.RenderEventSettings(eventItem, i, eventOptions, ChangeEvent, RemoveEvent)) + if (InteractableEventInspector.RenderEvent(eventItem)) { + events.DeleteArrayElementAtIndex(i); // If removed, skip rendering rest of list till next redraw break; } + + EditorGUILayout.Space(); } - GUI.enabled = true; - if (eventOptions.ClassNames.Length > 1) + if (GUILayout.Button(new GUIContent("Add Event"))) { - if (GUILayout.Button(new GUIContent("Add Event"))) - { - AddEvent(events.arraySize); - } + AddEvent(events.arraySize); } } } @@ -343,11 +241,9 @@ private void RenderEventSettings() protected void RenderGeneralSettings() { Rect position; - bool isPlayMode = EditorApplication.isPlaying || EditorApplication.isPaused; - using (new EditorGUILayout.HorizontalScope()) { - InspectorUIUtility.DrawTitle("General"); + InspectorUIUtility.DrawLabel("General", InspectorUIUtility.TitleFontSize, InspectorUIUtility.ColorTint10); if (target != null) { @@ -359,189 +255,146 @@ protected void RenderGeneralSettings() } } - EditorGUILayout.BeginVertical(EditorStyles.helpBox); - // States - // If states value is not provided, try to use Default states type - if (statesProperty.objectReferenceValue == null) - { - statesProperty.objectReferenceValue = ThemeInspector.GetDefaultInteractableStates(); - } - - GUI.enabled = !isPlayMode; - EditorGUILayout.PropertyField(statesProperty, new GUIContent("States", "The States this Interactable is based on")); - GUI.enabled = true; - - if (statesProperty.objectReferenceValue == null) + using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) { - InspectorUIUtility.DrawError("Please assign a States object!"); - serializedObject.ApplyModifiedProperties(); - return; - } - - EditorGUILayout.PropertyField(enabledProperty, new GUIContent("Enabled", "Is this Interactable Enabled?")); - - // Input Actions - bool validActionOptions = inputActionOptions != null; - GUI.enabled = validActionOptions && !isPlayMode; - - var actionOptions = validActionOptions ? inputActionOptions : new string[] { "Missing Mixed Reality Toolkit" }; - DrawDropDownProperty(EditorGUILayout.GetControlRect(), actionId, actionOptions, InputActionsLabel); - - GUI.enabled = true; + // If states value is not provided, try to use Default states type + if (statesProperty.objectReferenceValue == null) + { + statesProperty.objectReferenceValue = GetDefaultInteractableStatesFile(); + } - using (new EditorGUI.IndentLevelScope()) - { - EditorGUILayout.PropertyField(isGlobal, new GUIContent("Is Global", "Like a modal, does not require focus")); - } + EditorGUILayout.PropertyField(statesProperty, new GUIContent("States", "The States this Interactable is based on")); - // Speech keywords - bool validSpeechKeywords = speechKeywordOptions != null; - GUI.enabled = validSpeechKeywords && !isPlayMode; + if (statesProperty.objectReferenceValue == null) + { + InspectorUIUtility.DrawError("Please assign a States object!"); + serializedObject.ApplyModifiedProperties(); + return; + } - string[] keywordOptions = validSpeechKeywords ? speechKeywordOptions : new string[] { "Missing Speech Commands" }; - int currentIndex = validSpeechKeywords ? SpeechKeywordLookup(voiceCommands.stringValue, speechKeywordOptions) : 0; - position = EditorGUILayout.GetControlRect(); + EditorGUILayout.PropertyField(enabledProperty, new GUIContent("Enabled", "Is this Interactable Enabled?")); - //BeginProperty allows tracking of serialized properties for bolding prefab changes etc - EditorGUI.BeginProperty(position, SpeechComamndsLabel, voiceCommands); - { - currentIndex = EditorGUI.Popup(position, SpeechComamndsLabel.text, currentIndex, keywordOptions); - if (validSpeechKeywords) + // Input Actions + bool validActionOptions = inputActionOptions != null; + using (new EditorGUI.DisabledScope(!validActionOptions)) { - voiceCommands.stringValue = currentIndex > 0 ? speechKeywordOptions[currentIndex] : string.Empty; + var actionOptions = validActionOptions ? inputActionOptions : new string[] { "Missing Mixed Reality Toolkit" }; + DrawDropDownProperty(EditorGUILayout.GetControlRect(), actionId, actionOptions, InputActionsLabel); } - } - EditorGUI.EndProperty(); - GUI.enabled = true; - // show requires gaze because voice command has a value - if (!string.IsNullOrEmpty(voiceCommands.stringValue)) - { using (new EditorGUI.IndentLevelScope()) { - SerializedProperty requireGaze = serializedObject.FindProperty("RequiresFocus"); - EditorGUILayout.PropertyField(requireGaze, new GUIContent("Requires Focus", "Does the voice command require gazing at this interactable?")); + EditorGUILayout.PropertyField(isGlobal, new GUIContent("Is Global", "Like a modal, does not require focus")); } - } - // should be 1 or more - dimensions.intValue = Mathf.Clamp(dimensions.intValue, 1, 9); - string[] selectionModeNames = Enum.GetNames(typeof(SelectionModes)); - // clamp to values in the enum - int selectionModeIndex = Mathf.Clamp(dimensions.intValue, 1, selectionModeNames.Length) - 1; - - // user-friendly dimension settings - SelectionModes selectionMode = SelectionModes.Button; - position = EditorGUILayout.GetControlRect(); - GUI.enabled = !isPlayMode; - EditorGUI.BeginProperty(position, selectionModeLabel, dimensions); - { - selectionMode = (SelectionModes)EditorGUI.EnumPopup(position, selectionModeLabel, (SelectionModes)(selectionModeIndex)); + // Speech keywords + bool validSpeechKeywords = speechKeywordOptions != null; + using (new EditorGUI.DisabledScope(!validSpeechKeywords)) + { + string[] keywordOptions = validSpeechKeywords ? speechKeywordOptions : new string[] { "Missing Speech Commands" }; + int currentIndex = validSpeechKeywords ? SpeechKeywordLookup(voiceCommands.stringValue, speechKeywordOptions) : 0; + position = EditorGUILayout.GetControlRect(); + + //BeginProperty allows tracking of serialized properties for bolding prefab changes etc + using (new EditorGUI.PropertyScope(position, SpeechComamndsLabel, voiceCommands)) + { + currentIndex = EditorGUI.Popup(position, SpeechComamndsLabel.text, currentIndex, keywordOptions); + if (validSpeechKeywords) + { + voiceCommands.stringValue = currentIndex > 0 ? speechKeywordOptions[currentIndex] : string.Empty; + } + } + } - switch (selectionMode) + // show requires gaze because voice command has a value + if (!string.IsNullOrEmpty(voiceCommands.stringValue)) { - case SelectionModes.Button: - dimensions.intValue = 1; - break; - case SelectionModes.Toggle: - dimensions.intValue = 2; - break; - case SelectionModes.MultiDimension: - // multi dimension mode - set min value to 3 - dimensions.intValue = Mathf.Max(3, dimensions.intValue); - position = EditorGUILayout.GetControlRect(); - dimensions.intValue = EditorGUI.IntField(position, dimensionsLabel, dimensions.intValue); - break; - default: - break; + using (new EditorGUI.IndentLevelScope()) + { + SerializedProperty requireGaze = serializedObject.FindProperty("voiceRequiresFocus"); + EditorGUILayout.PropertyField(requireGaze, new GUIContent("Requires Focus", "Does the voice command require gazing at this interactable?")); + } } - } - EditorGUI.EndProperty(); - if (dimensions.intValue > 1) - { - // toggle or multi dimensional button - using (new EditorGUI.IndentLevelScope()) + // should be 1 or more + dimensions.intValue = Mathf.Clamp(dimensions.intValue, 1, 9); + + // user-friendly dimension settings + SelectionModes selectionMode = SelectionModes.Button; + position = EditorGUILayout.GetControlRect(); + using (new EditorGUI.PropertyScope(position, selectionModeLabel, dimensions)) { - EditorGUILayout.PropertyField(canSelect, new GUIContent("Can Select", "The user can toggle this button")); - EditorGUILayout.PropertyField(canDeselect, new GUIContent("Can Deselect", "The user can untoggle this button, set false for a radial interaction.")); + // Show enum popup for selection mode, hide option to select SelectionModes.Invalid + selectionMode = (SelectionModes)EditorGUI.EnumPopup(position, selectionModeLabel, + Interactable.ConvertToSelectionMode(dimensions.intValue), + (value) => { return (SelectionModes)value != SelectionModes.Invalid; } ); - position = EditorGUILayout.GetControlRect(); - EditorGUI.BeginProperty(position, startDimensionLabel, startDimensionIndex); + switch (selectionMode) { - if (dimensions.intValue >= selectionModeNames.Length) - { - // multi dimensions - if (!isPlayMode) - { - startDimensionIndex.intValue = EditorGUI.IntField(position, startDimensionLabel, startDimensionIndex.intValue); - } - else - { - EditorGUI.IntField(position, CurrentDimensionLabel, dimensionIndex.intValue); - } - } - else if (dimensions.intValue == (int)SelectionModes.Toggle + 1) + case SelectionModes.Button: + dimensions.intValue = 1; + break; + case SelectionModes.Toggle: + dimensions.intValue = 2; + break; + case SelectionModes.MultiDimension: + // multi dimension mode - set min value to 3 + dimensions.intValue = Mathf.Max(3, dimensions.intValue); + position = EditorGUILayout.GetControlRect(); + dimensions.intValue = EditorGUI.IntField(position, dimensionsLabel, dimensions.intValue); + break; + default: + break; + } + } + + if (dimensions.intValue > 1) + { + // toggle or multi dimensional button + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(canSelect, new GUIContent("Can Select", "The user can toggle this button")); + EditorGUILayout.PropertyField(canDeselect, new GUIContent("Can Deselect", "The user can untoggle this button, set false for a radial interaction.")); + + position = EditorGUILayout.GetControlRect(); + using (new EditorGUI.PropertyScope(position, startDimensionLabel, startDimensionIndex)) { - if (!isPlayMode) + var mode = Interactable.ConvertToSelectionMode(dimensions.intValue); + if (mode == SelectionModes.Toggle) { bool isToggled = EditorGUI.Toggle(position, isToggledLabel, startDimensionIndex.intValue > 0); startDimensionIndex.intValue = isToggled ? 1 : 0; } - else + else if (mode == SelectionModes.MultiDimension) { - bool isToggled = EditorGUI.Toggle(position, isToggledLabel, dimensionIndex.intValue > 0); + startDimensionIndex.intValue = EditorGUI.IntField(position, startDimensionLabel, startDimensionIndex.intValue); } - } - startDimensionIndex.intValue = Mathf.Clamp(startDimensionIndex.intValue, 0, dimensions.intValue - 1); + startDimensionIndex.intValue = Mathf.Clamp(startDimensionIndex.intValue, 0, dimensions.intValue - 1); + } } - EditorGUI.EndProperty(); } } - GUI.enabled = true; - - EditorGUILayout.EndVertical(); } - private static void ValidateThemes(SerializedProperty dimensions, SerializedProperty themes) + public static States GetDefaultInteractableStatesFile() { - // make sure there are enough themes as dimensions - if (themes.arraySize > dimensions.intValue) + AssetDatabase.Refresh(); + string[] stateLocations = AssetDatabase.FindAssets("DefaultInteractableStates"); + if (stateLocations.Length > 0) { - // make sure there are not more themes than dimensions - int cnt = themes.arraySize - 1; - for (int j = cnt; j > dimensions.intValue - 1; j--) + for (int i = 0; i < stateLocations.Length; i++) { - themes.DeleteArrayElementAtIndex(j); - } - } - - // add themes when increasing dimensions - if (themes.arraySize < dimensions.intValue) - { - int cnt = themes.arraySize; - for (int j = cnt; j < dimensions.intValue; j++) - { - themes.InsertArrayElementAtIndex(themes.arraySize); - SerializedProperty theme = themes.GetArrayElementAtIndex(themes.arraySize - 1); - - string[] themeLocations = AssetDatabase.FindAssets("DefaultTheme"); - if (themeLocations.Length > 0) + string path = AssetDatabase.GUIDToAssetPath(stateLocations[i]); + States defaultStates = (States)AssetDatabase.LoadAssetAtPath(path, typeof(States)); + if (defaultStates != null) { - for (int k = 0; k < themeLocations.Length; k++) - { - string path = AssetDatabase.GUIDToAssetPath(themeLocations[k]); - Theme defaultTheme = (Theme)AssetDatabase.LoadAssetAtPath(path, typeof(Theme)); - if (defaultTheme != null) - { - theme.objectReferenceValue = defaultTheme; - break; - } - } + return defaultStates; } } } + + return null; } private static string BuildThemeTitle(int dimensions, int themeIndex) @@ -550,7 +403,7 @@ private static string BuildThemeTitle(int dimensions, int themeIndex) { return "Theme " + (themeIndex % 2 == 0 ? "(Deselected)" : "(Selected)"); } - else if (dimensions > 3) + else if (dimensions >= 3) { return "Theme " + (themeIndex + 1); } @@ -559,16 +412,14 @@ private static string BuildThemeTitle(int dimensions, int themeIndex) } #region Profiles - /* - * PROFILES - */ + protected void AddProfile(int index) { profileList.InsertArrayElementAtIndex(profileList.arraySize); - SerializedProperty newItem = profileList.GetArrayElementAtIndex(profileList.arraySize - 1); + SerializedProperty newProfile = profileList.GetArrayElementAtIndex(profileList.arraySize - 1); - SerializedProperty newTarget = newItem.FindPropertyRelative("Target"); - SerializedProperty themes = newItem.FindPropertyRelative("Themes"); + SerializedProperty newTarget = newProfile.FindPropertyRelative("Target"); + SerializedProperty themes = newProfile.FindPropertyRelative("Themes"); newTarget.objectReferenceValue = null; themes.ClearArray(); @@ -582,114 +433,59 @@ protected void RemoveProfile(int index, SerializedProperty prop = null) #endregion Profiles #region Themes - /* - * THEMES - */ - - protected void SetupThemeOptions() - { - themeOptions = InteractableProfileItem.GetThemeTypes(); - } - protected virtual void AddThemeProperty(SerializedProperty profileItem, SerializedProperty themeItem) + protected static Theme CreateThemeAsset(string themeName = null) { - SerializedProperty serializedTarget = profileItem.FindPropertyRelative("Target"); - - SerializedObject themeObj = new SerializedObject(themeItem.objectReferenceValue); - themeObj.Update(); + string themeFileName = (string.IsNullOrEmpty(themeName) ? "New " : themeName) + "Theme.asset"; - SerializedProperty themeObjSettings = themeObj.FindProperty("Settings"); - themeObjSettings.InsertArrayElementAtIndex(themeObjSettings.arraySize); + string path = EditorUtility.SaveFilePanelInProject( + "Save New Theme", + themeFileName, + "asset", + "Create a name and select a location for this theme"); - SerializedProperty settingsItem = themeObjSettings.GetArrayElementAtIndex(themeObjSettings.arraySize - 1); - SerializedProperty className = settingsItem.FindPropertyRelative("Name"); - SerializedProperty assemblyQualifiedName = settingsItem.FindPropertyRelative("AssemblyQualifiedName"); - if (themeObjSettings.arraySize == 1) + if (path.Length != 0) { - className.stringValue = "ScaleOffsetColorTheme"; - assemblyQualifiedName.stringValue = typeof(ScaleOffsetColorTheme).AssemblyQualifiedName; + Theme newTheme = ScriptableObject.CreateInstance(); + newTheme.States = GetDefaultInteractableStatesFile(); + newTheme.Definitions = new List(); + AssetDatabase.CreateAsset(newTheme, path); + return newTheme; } - else - { - className.stringValue = themeOptions.ClassNames[0]; - assemblyQualifiedName.stringValue = themeOptions.AssemblyQualifiedNames[0]; - } - - SerializedProperty easing = settingsItem.FindPropertyRelative("Easing"); - - SerializedProperty time = easing.FindPropertyRelative("LerpTime"); - SerializedProperty curve = easing.FindPropertyRelative("Curve"); - time.floatValue = 0.5f; - curve.animationCurveValue = AnimationCurve.Linear(0, 1, 1, 1); - - themeObjSettings = ThemeInspector.ChangeThemeProperty(themeObjSettings.arraySize - 1, themeObjSettings, serializedTarget, GetStates(), true); - - themeObj.ApplyModifiedProperties(); - } - - protected virtual void RemoveThemeProperty(int[] arr) - { - int profile = arr[0]; - int theme = arr[1]; - int index = arr[2]; - - SerializedProperty sItem = profileList.GetArrayElementAtIndex(profile); - SerializedProperty themes = sItem.FindPropertyRelative("Themes"); - - SerializedProperty themeItem = themes.GetArrayElementAtIndex(theme); - SerializedObject themeObj = new SerializedObject(themeItem.objectReferenceValue); - themeObj.Update(); - - SerializedProperty themeObjSettings = themeObj.FindProperty("Settings"); - themeObjSettings.DeleteArrayElementAtIndex(index); - themeObj.ApplyModifiedProperties(); + return null; } - protected virtual SerializedObject ChangeThemeProperty(int index, SerializedObject themeObj, SerializedProperty target, bool isNew = false) - { - SerializedProperty themeObjSettings = themeObj.FindProperty("Settings"); - themeObjSettings = ThemeInspector.ChangeThemeProperty(index, themeObjSettings, target, GetStates(), isNew); - return themeObj; - } - - protected void CreateTheme(SerializedProperty profileItem, SerializedProperty themeItem) + /// + /// Ensure the number of theme containers is equal to the number of dimensions + /// + /// dimensions property of interactable + /// List of ThemeContainers in Interactable profile + private static void ValidateThemesForDimensions(SerializedProperty dimensions, SerializedProperty themes) { - SerializedProperty gameObject = profileItem.FindPropertyRelative("Target"); - - GameObject host = gameObject.objectReferenceValue as GameObject; - string path = "Assets/Themes"; - - if (host != null) + int numOfDimensions = dimensions.intValue; + if (themes.arraySize < numOfDimensions) { - string themeName = host.name + "Theme.asset"; - - path = EditorUtility.SaveFilePanelInProject( - "Save New Theme", - themeName, - "asset", - "Create a name and select a location for this theme"); + for (int index = themes.arraySize; index < numOfDimensions; index++) + { + themes.InsertArrayElementAtIndex(themes.arraySize); - if (path.Length != 0) + SerializedProperty newTheme = themes.GetArrayElementAtIndex(themes.arraySize - 1); + newTheme.objectReferenceValue = null; + } + } + else + { + for (int index = themes.arraySize - 1; index > numOfDimensions - 1; index--) { - Theme newTheme = ScriptableObject.CreateInstance(); - AssetDatabase.CreateAsset(newTheme, path); - themeItem.objectReferenceValue = newTheme; + themes.DeleteArrayElementAtIndex(index); } } } - protected virtual State[] GetStates() - { - return instance.GetStates(); - } - #endregion Themes #region Events - /* - * EVENTS - */ protected void RemoveEvent(int index, SerializedProperty prop = null) { @@ -706,35 +502,6 @@ protected void AddEvent(int index) events.InsertArrayElementAtIndex(events.arraySize); } - protected void ChangeEvent(int[] indexArray, SerializedProperty prop = null) - { - SerializedProperty className = prop.FindPropertyRelative("ClassName"); - SerializedProperty name = prop.FindPropertyRelative("Name"); - SerializedProperty settings = prop.FindPropertyRelative("Settings"); - SerializedProperty hideEvents = prop.FindPropertyRelative("HideUnityEvents"); - SerializedProperty assemblyQualifiedName = prop.FindPropertyRelative("AssemblyQualifiedName"); - - if (!String.IsNullOrEmpty(className.stringValue)) - { - InteractableEvent.ReceiverData data = eventList[indexArray[0]].AddReceiver(eventOptions.Types[indexArray[1]]); - name.stringValue = data.Name; - hideEvents.boolValue = data.HideUnityEvents; - assemblyQualifiedName.stringValue = eventOptions.AssemblyQualifiedNames[indexArray[1]]; - - InspectorFieldsUtility.PropertySettingsList(settings, data.Fields); - } - } - - protected void SetupEventOptions() - { - eventOptions = InteractableEvent.GetEventTypes(); - } - - protected string[] GetEventList() - { - return new string[] { }; - } - #endregion Events #region PopupUtilities @@ -743,9 +510,6 @@ protected string[] GetEventList() /// Skips the first item in the array (internal added blank value to turn feature off) /// and returns a 0 if no match is found for the blank value /// - /// - /// - /// protected int SpeechKeywordLookup(string option, string[] options) { // starting on 1 to skip the blank value @@ -757,16 +521,12 @@ protected int SpeechKeywordLookup(string option, string[] options) } } return 0; - } - + } + /// /// Draws a popup UI with PropertyField type features. /// Displays prefab pending updates /// - /// - /// - /// - /// protected void DrawDropDownProperty(Rect position, SerializedProperty prop, string[] options, GUIContent label) { EditorGUI.BeginProperty(position, label, prop); @@ -775,6 +535,81 @@ protected void DrawDropDownProperty(Rect position, SerializedProperty prop, stri } EditorGUI.EndProperty(); } + #endregion KeywordUtilities + + #region Inspector Helpers + + /// + /// Get a list of Mixed Reality Input Actions from the input actions profile. + /// + public static bool TryGetInputActions(out string[] descriptionsArray) + { + if (!MixedRealityToolkit.ConfirmInitialized() || !MixedRealityToolkit.Instance.HasActiveProfile) + { + descriptionsArray = null; + return false; + } + + MixedRealityInputAction[] actions = CoreServices.InputSystem.InputSystemProfile.InputActionsProfile.InputActions; + + descriptionsArray = new string[actions.Length]; + for (int i = 0; i < actions.Length; i++) + { + descriptionsArray[i] = actions[i].Description; + } + + return true; + } + + /// + /// Try to get a list of speech commands from the MRTK/Input/SpeechCommands profile + /// + public static bool TryGetMixedRealitySpeechCommands(out SpeechCommands[] commands) + { + if (!MixedRealityToolkit.ConfirmInitialized() || !MixedRealityToolkit.Instance.HasActiveProfile) + { + commands = null; + return false; + } + + commands = CoreServices.InputSystem.InputSystemProfile.SpeechCommandsProfile?.SpeechCommands; + + if (commands == null || commands.Length < 1) + { + commands = null; + return false; + } + + return true; + } + + /// + /// Look for speech commands in the MRTK Speech Command profile + /// Adds a blank value at index zero so the developer can turn the feature off. + /// + public static bool TryGetSpeechKeywords(out string[] keywords) + { + SpeechCommands[] commands; + if (!TryGetMixedRealitySpeechCommands(out commands)) + { + keywords = null; + return false; + } + + List keys = new List + { + "(No Selection)" + }; + + for (var i = 0; i < commands.Length; i++) + { + keys.Add(commands[i].Keyword); + } + + keywords = keys.ToArray(); + return true; + } + + #endregion } - #endregion KeywordUtilities } diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableOnFocusInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableOnFocusInspector.cs index 988b597cacd..16f20a8c80b 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableOnFocusInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableOnFocusInspector.cs @@ -63,7 +63,7 @@ public override void OnInspectorGUI() if (theme.objectReferenceValue != null) { InspectorUIUtility.ListSettings settings = listSettings[i]; - settings.Show = InspectorUIUtility.DrawSectionFoldout("Theme Settings (Click to edit)", listSettings[i].Show, FontStyle.Normal); + settings.Show = InspectorUIUtility.DrawSectionFoldout("Theme Settings (Click to edit)", listSettings[i].Show); if (settings.Show) { UnityEditor.Editor themeEditor = UnityEditor.Editor.CreateEditor(theme.objectReferenceValue); diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableReceiverInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableReceiverInspector.cs index 017e8e02495..625a2fbdcb5 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableReceiverInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableReceiverInspector.cs @@ -8,12 +8,6 @@ namespace Microsoft.MixedReality.Toolkit.UI [CustomEditor(typeof(InteractableReceiver))] public class InteractableReceiverInspector : InteractableReceiverListInspector { - protected override void OnEnable() - { - eventList = ((InteractableReceiver)target).Events; - SetupEventOptions(); - } - public override void OnInspectorGUI() { serializedObject.Update(); @@ -29,15 +23,10 @@ public override void OnInspectorGUI() else { SerializedProperty eventItem = events.GetArrayElementAtIndex(0); - RenderEventSettings(eventItem, 0, eventOptions, ChangeEvent, null); + InteractableEventInspector.RenderEvent(eventItem, false); } serializedObject.ApplyModifiedProperties(); } - - protected override void RemoveEvent(int index, SerializedProperty prop = null) - { - // do not remove events - } } } diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableReceiverListInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableReceiverListInspector.cs index c7a842283b2..067351df133 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableReceiverListInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/InteractableReceiverListInspector.cs @@ -1,9 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. -using Microsoft.MixedReality.Toolkit.Utilities.Editor; -using System; -using System.Collections.Generic; using UnityEditor; using UnityEngine; @@ -12,20 +9,6 @@ namespace Microsoft.MixedReality.Toolkit.UI [CustomEditor(typeof(InteractableReceiverList))] public class InteractableReceiverListInspector : UnityEditor.Editor { - protected List eventList; - protected InteractableTypesContainer eventOptions; - - // indent tracker - protected static int indentOnSectionStart = 0; - - private static readonly GUIContent SelectEventLabel = new GUIContent("Select Event Type", "Select the event type from the list"); - - protected virtual void OnEnable() - { - eventList = ((InteractableReceiverList)target).Events; - SetupEventOptions(); - } - public override void OnInspectorGUI() { serializedObject.Update(); @@ -44,25 +27,18 @@ public override void OnInspectorGUI() { SerializedProperty eventItem = events.GetArrayElementAtIndex(i); - InspectorUIUtility.ListButtonEvent removeEventRef = null; - if (i > 0) - { - removeEventRef = RemoveEvent; - } - - if (RenderEventSettings(eventItem, i, eventOptions, ChangeEvent, removeEventRef)) + bool canRemove = i > 0; + if (InteractableEventInspector.RenderEvent(eventItem, canRemove)) { + events.DeleteArrayElementAtIndex(i); // If removed, skip rendering rest of list till next redraw break; } } - if (eventOptions.ClassNames.Length > 1) + if (GUILayout.Button(new GUIContent("Add Event"))) { - if (GUILayout.Button(new GUIContent("Add Event"))) - { - AddEvent(events.arraySize); - } + AddEvent(events.arraySize); } } @@ -85,128 +61,10 @@ protected virtual void RenderInspectorHeader() } } - protected virtual void RemoveEvent(int index, SerializedProperty prop = null) - { - SerializedProperty events = serializedObject.FindProperty("Events"); - if (events.arraySize > index) - { - events.DeleteArrayElementAtIndex(index); - } - } - protected virtual void AddEvent(int index) { SerializedProperty events = serializedObject.FindProperty("Events"); events.InsertArrayElementAtIndex(events.arraySize); } - - /// - /// Invoked when the event is changed. - /// - /// - /// A two-element sized index array where the first element is the index of the - /// event in the event list, and the second is the new event handler class that - /// was selected. - /// - protected virtual void ChangeEvent(int[] indexArray, SerializedProperty prop = null) - { - SerializedProperty className = prop.FindPropertyRelative("ClassName"); - SerializedProperty name = prop.FindPropertyRelative("Name"); - SerializedProperty assemblyQualifiedName = prop.FindPropertyRelative("AssemblyQualifiedName"); - SerializedProperty settings = prop.FindPropertyRelative("Settings"); - SerializedProperty hideEvents = prop.FindPropertyRelative("HideUnityEvents"); - - if (!String.IsNullOrEmpty(className.stringValue)) - { - InteractableEvent.ReceiverData data = eventList[indexArray[0]].AddReceiver(eventOptions.Types[indexArray[1]]); - name.stringValue = data.Name; - // Technically not necessary due to how this is set in RenderEventSettings, nevertheless included to - // make sure that wherever we set Name/ClassName, we always set AssemblyQualifiedName as well. - // Performance wise this is not a huge deal due to how this is only triggered on changes in the inspector - // in the editor (i.e. dropdown selection has changed, which requires explicit user input). - assemblyQualifiedName.stringValue = eventOptions.AssemblyQualifiedNames[indexArray[1]]; - hideEvents.boolValue = data.HideUnityEvents; - - InspectorFieldsUtility.PropertySettingsList(settings, data.Fields); - } - } - - /// - /// Render event properties for the given event item. If item has been removed, returns true. False otherwise - /// - /// serialized property of the event item to render properties from - /// index of event item in higher order list - /// Event type options - /// Function to call if event properties have changed - /// Function to call if event requested to be removed - /// If item has been removed, returns true. False otherwise - public static bool RenderEventSettings(SerializedProperty eventItem, int index, InteractableTypesContainer options, InspectorUIUtility.MultiListButtonEvent changeEvent, InspectorUIUtility.ListButtonEvent removeEvent) - { - using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) - { - SerializedProperty uEvent = eventItem.FindPropertyRelative("Event"); - SerializedProperty eventName = eventItem.FindPropertyRelative("Name"); - SerializedProperty className = eventItem.FindPropertyRelative("ClassName"); - SerializedProperty assemblyQualifiedName = eventItem.FindPropertyRelative("AssemblyQualifiedName"); - SerializedProperty hideEvents = eventItem.FindPropertyRelative("HideUnityEvents"); - - // show event dropdown - int id = InspectorUIUtility.ReverseLookup(className.stringValue, options.ClassNames); - - using (new EditorGUILayout.HorizontalScope()) - { - Rect position = EditorGUILayout.GetControlRect(); - EditorGUI.BeginProperty(position, SelectEventLabel, className); - { - int newId = EditorGUI.Popup(position, id, options.ClassNames); - - if (id != newId || String.IsNullOrEmpty(className.stringValue)) - { - className.stringValue = options.ClassNames[newId]; - assemblyQualifiedName.stringValue = options.AssemblyQualifiedNames[newId]; - - changeEvent(new int[] { index, newId }, eventItem); - } - - } - EditorGUI.EndProperty(); - - if (removeEvent != null) - { - if (InspectorUIUtility.FlexButton(new GUIContent("Remove Event"), index, removeEvent)) - { - return true; - } - } - - } - EditorGUILayout.Space(); - - if (!hideEvents.boolValue) - { - EditorGUILayout.PropertyField(uEvent, new GUIContent(eventName.stringValue)); - } - - // show event properties - SerializedProperty eventSettings = eventItem.FindPropertyRelative("Settings"); - for (int j = 0; j < eventSettings.arraySize; j++) - { - SerializedProperty propertyField = eventSettings.GetArrayElementAtIndex(j); - bool isEvent = InspectorFieldsUtility.IsPropertyType(propertyField, InspectorField.FieldTypes.Event); - - if (!hideEvents.boolValue || !isEvent) - { - InspectorFieldsUtility.DisplayPropertyField(eventSettings.GetArrayElementAtIndex(j)); - } - } - } - - return false; - } - - protected virtual void SetupEventOptions() - { - eventOptions = InteractableEvent.GetEventTypes(); - } } } diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/PressableButtonInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/PressableButtonInspector.cs index e57bd78753b..6a1daf5bb72 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/PressableButtonInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/PressableButtonInspector.cs @@ -17,8 +17,8 @@ public class PressableButtonInspector : UnityEditor.Editor // All vectors / distances are in local space. private struct ButtonInfo { - // Convenience fields for box collider info - public Bounds TouchCageLocalBounds; + public Vector3 LocalCenter; + public Vector2 PlaneExtents; // The rotation of the push space. public Quaternion PushRotationLocal; @@ -41,8 +41,7 @@ private struct ButtonInfo private PressableButton button; private Transform transform; - private BoxCollider touchCage; - private NearInteractionTouchable touchable; + private NearInteractionTouchableSurface touchable; private ButtonInfo currentInfo; @@ -67,8 +66,6 @@ private void OnEnable() button = (PressableButton)target; transform = button.transform; - touchCage = button.GetComponent(); - if (labelStyle == null) { labelStyle = new GUIStyle(); @@ -82,17 +79,12 @@ private void OnEnable() pressDistance = serializedObject.FindProperty("pressDistance"); releaseDistanceDelta = serializedObject.FindProperty("releaseDistanceDelta"); - touchable = button.GetComponent(); + touchable = button.GetComponent(); } [DrawGizmo(GizmoType.Selected)] private void OnSceneGUI() { - if (touchCage == null) - { - return; - } - if (!VisiblePlanes) { return; @@ -116,10 +108,16 @@ private ButtonInfo GatherCurrentInfo() { ButtonInfo info = new ButtonInfo(); - info.TouchCageLocalBounds = new Bounds(touchCage.center, touchCage.size); + info.LocalCenter = touchable.LocalCenter; + info.PlaneExtents = touchable.Bounds; - Vector3 pressDirLocal = (touchable != null) ? -1.0f * touchable.LocalForward : Vector3.forward; - Vector3 upDirLocal = (touchable != null) ? touchable.LocalUp : Vector3.up; + Vector3 pressDirLocal = (touchable != null) ? touchable.LocalPressDirection : Vector3.forward; + Vector3 upDirLocal = Vector3.up; + + if (touchable is NearInteractionTouchable touchableConcrete) + { + upDirLocal = touchableConcrete.LocalUp; + } info.PushRotationLocal = Quaternion.LookRotation(pressDirLocal, upDirLocal); @@ -138,18 +136,22 @@ private void DrawButtonInfo(ButtonInfo info, bool editingEnabled) EditorGUI.BeginChangeCheck(); } + var targetBehaviour = (MonoBehaviour)target; + bool isOpaque = targetBehaviour.isActiveAndEnabled; + float alpha = (isOpaque) ? 1.0f : 0.5f; + // START PUSH - Handles.color = Color.cyan; - float newStartPushDistance = DrawPlaneAndHandle(startPlaneVertices, info.TouchCageLocalBounds.size * 0.5f, info.StartPushDistance, info, "Start Push Distance", editingEnabled); + Handles.color = ApplyAlpha(Color.cyan, alpha); + float newStartPushDistance = DrawPlaneAndHandle(startPlaneVertices, info.PlaneExtents * 0.5f, info.StartPushDistance, info, "Start Push Distance", editingEnabled); if (editingEnabled && newStartPushDistance != info.StartPushDistance) { EnforceDistanceOrdering(ref info); - info.StartPushDistance = Mathf.Min(newStartPushDistance, info.ReleaseDistance); + info.StartPushDistance = ClampStartPushDistance(Mathf.Min(newStartPushDistance, info.ReleaseDistance)); } // RELEASE DISTANCE - Handles.color = Color.red; - float newReleaseDistance = DrawPlaneAndHandle(releasePlaneVertices, info.TouchCageLocalBounds.size * 0.3f, info.ReleaseDistance, info, "Release Distance", editingEnabled); + Handles.color = ApplyAlpha(Color.red, alpha); + float newReleaseDistance = DrawPlaneAndHandle(releasePlaneVertices, info.PlaneExtents * 0.3f, info.ReleaseDistance, info, "Release Distance", editingEnabled); if (editingEnabled && newReleaseDistance != info.ReleaseDistance) { EnforceDistanceOrdering(ref info); @@ -157,8 +159,8 @@ private void DrawButtonInfo(ButtonInfo info, bool editingEnabled) } // PRESS DISTANCE - Handles.color = Color.yellow; - float newPressDistance = DrawPlaneAndHandle(pressPlaneVertices, info.TouchCageLocalBounds.size * 0.35f, info.PressDistance, info, "Press Distance", editingEnabled); + Handles.color = ApplyAlpha(Color.yellow, alpha); + float newPressDistance = DrawPlaneAndHandle(pressPlaneVertices, info.PlaneExtents * 0.35f, info.PressDistance, info, "Press Distance", editingEnabled); if (editingEnabled && newPressDistance != info.PressDistance) { EnforceDistanceOrdering(ref info); @@ -166,8 +168,9 @@ private void DrawButtonInfo(ButtonInfo info, bool editingEnabled) } // MAX PUSH - Handles.color = Color.cyan; - float newMaxPushDistance = DrawPlaneAndHandle(endPlaneVertices, info.TouchCageLocalBounds.size * 0.5f, info.MaxPushDistance, info, "Max Push Distance", editingEnabled); + var purple = new Color(0.28f, 0.0f, 0.69f); + Handles.color = ApplyAlpha(purple, alpha); + float newMaxPushDistance = DrawPlaneAndHandle(endPlaneVertices, info.PlaneExtents * 0.5f, info.MaxPushDistance, info, "Max Push Distance", editingEnabled); if (editingEnabled && newMaxPushDistance != info.MaxPushDistance) { EnforceDistanceOrdering(ref info); @@ -196,12 +199,12 @@ private void DrawButtonInfo(ButtonInfo info, bool editingEnabled) private void EnforceDistanceOrdering(ref ButtonInfo info) { - info.StartPushDistance = Mathf.Min(new[] { info.StartPushDistance, info.ReleaseDistance, info.PressDistance, info.MaxPushDistance }); + info.StartPushDistance = ClampStartPushDistance(Mathf.Min(new[] { info.StartPushDistance, info.ReleaseDistance, info.PressDistance, info.MaxPushDistance })); info.ReleaseDistance = Mathf.Min(new[] { info.ReleaseDistance, info.PressDistance, info.MaxPushDistance }); info.PressDistance = Mathf.Min(info.PressDistance, info.MaxPushDistance); } - private float DrawPlaneAndHandle(Vector3[] vertices, Vector3 halfExtents, float distance, ButtonInfo info, string label, bool editingEnabled) + private float DrawPlaneAndHandle(Vector3[] vertices, Vector2 halfExtents, float distance, ButtonInfo info, string label, bool editingEnabled) { Vector3 centerWorld = button.GetWorldPositionAlongPushDirection(distance); MakeQuadFromPoint(vertices, centerWorld, halfExtents, info); @@ -231,7 +234,7 @@ private float DrawPlaneAndHandle(Vector3[] vertices, Vector3 halfExtents, float { float handleSize = HandleUtility.GetHandleSize(vertices[1]) * 0.15f; - Vector3 dir = (touchable != null) ? -1.0f * touchable.LocalForward : Vector3.forward; + Vector3 dir = (touchable != null) ? touchable.LocalPressDirection : Vector3.forward; Vector3 planeNormal = button.transform.TransformDirection(dir); Handles.ArrowHandleCap(0, vertices[1], Quaternion.LookRotation(planeNormal), handleSize * 2, EventType.Repaint); Handles.ArrowHandleCap(0, vertices[1], Quaternion.LookRotation(-planeNormal), handleSize * 2, EventType.Repaint); @@ -269,6 +272,8 @@ public override void OnInspectorGUI() DrawPropertiesExcluding(serializedObject, excludeProperties); + startPushDistance.floatValue = ClampStartPushDistance(startPushDistance.floatValue); + // show button state in play mode { EditorGUI.BeginDisabledGroup(Application.isPlaying == false); @@ -286,21 +291,22 @@ public override void OnInspectorGUI() EditorGUI.BeginDisabledGroup(Application.isPlaying == true); EditorGUILayout.Space(); EditorGUILayout.LabelField("Editor Settings", EditorStyles.boldLabel); - VisiblePlanes = SessionState.GetBool(VisiblePlanesKey, true); - bool newValue = EditorGUILayout.Toggle("Show Button Event Planes", VisiblePlanes); - if (newValue != VisiblePlanes) + var prevVisiblePlanes = SessionState.GetBool(VisiblePlanesKey, true); + VisiblePlanes = EditorGUILayout.Toggle("Show Button Event Planes", prevVisiblePlanes); + if (VisiblePlanes != prevVisiblePlanes) { - SessionState.SetBool(VisiblePlanesKey, newValue); + SessionState.SetBool(VisiblePlanesKey, VisiblePlanes); + EditorUtility.SetDirty(target); } // enable plane editing { EditorGUI.BeginDisabledGroup(VisiblePlanes == false); - EditingEnabled = SessionState.GetBool(EditingEnabledKey, false); - newValue = EditorGUILayout.Toggle("Make Planes Editable", EditingEnabled); - if (newValue != EditingEnabled) + var prevEditingEnabled = SessionState.GetBool(EditingEnabledKey, false); + EditingEnabled = EditorGUILayout.Toggle("Make Planes Editable", EditingEnabled); + if (EditingEnabled != prevEditingEnabled) { - SessionState.SetBool(EditingEnabledKey, newValue); + SessionState.SetBool(EditingEnabledKey, EditingEnabled); EditorUtility.SetDirty(target); } EditorGUI.EndDisabledGroup(); @@ -352,14 +358,32 @@ private void DrawLabel(Vector3 origin, Vector3 direction, string content, GUISty Handles.color = colorOnEnter; } - private void MakeQuadFromPoint(Vector3[] vertices, Vector3 centerWorld, Vector3 halfExtents, ButtonInfo info) + private void MakeQuadFromPoint(Vector3[] vertices, Vector3 centerWorld, Vector2 halfExtents, ButtonInfo info) { - Vector3 touchCageOrigin = touchCage.center; + Vector3 touchCageOrigin = touchable.LocalCenter; touchCageOrigin.z = 0.0f; vertices[0] = transform.TransformVector(info.PushRotationLocal * (new Vector3(-halfExtents.x, -halfExtents.y, 0.0f) + touchCageOrigin)) + centerWorld; vertices[1] = transform.TransformVector(info.PushRotationLocal * (new Vector3(-halfExtents.x, +halfExtents.y, 0.0f) + touchCageOrigin)) + centerWorld; vertices[2] = transform.TransformVector(info.PushRotationLocal * (new Vector3(+halfExtents.x, +halfExtents.y, 0.0f) + touchCageOrigin)) + centerWorld; vertices[3] = transform.TransformVector(info.PushRotationLocal * (new Vector3(+halfExtents.x, -halfExtents.y, 0.0f) + touchCageOrigin)) + centerWorld; } + + private float ClampStartPushDistance(float startDistance) + { + // If the touchable is UnityUI based, then the start distance must be positive. + if (touchable is NearInteractionTouchableUnityUI && startDistance < 0.0f) + { + return 0.0f; + } + else + { + return startDistance; + } + } + + private static Color ApplyAlpha(Color color, float alpha) + { + return new Color(color.r, color.g, color.b, color.a * alpha); + } } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/StatesInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/StatesInspector.cs deleted file mode 100644 index 3a59be1c9b1..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/StatesInspector.cs +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using Microsoft.MixedReality.Toolkit.Utilities.Editor; -using System; -using UnityEditor; -using UnityEngine; - - -namespace Microsoft.MixedReality.Toolkit.UI -{ -#if UNITY_EDITOR - [CustomEditor(typeof(States))] - public class StatesInspector : UnityEditor.Editor - { - protected States instance; - protected SerializedProperty stateList; - - // List of interactable states. - protected InteractableTypesContainer stateOptions; - - // indent tracker - protected static int indentOnSectionStart = 0; - - - protected virtual void OnEnable() - { - instance = (States)target; - - stateList = serializedObject.FindProperty("StateList"); - instance.SetupStateOptions(); - } - - public override void OnInspectorGUI() - { - //base.OnInspectorGUI(); - serializedObject.Update(); - - InspectorUIUtility.DrawTitle("States"); - InspectorUIUtility.DrawNotice("Manage state configurations to drive Interactables or Transitions"); - - // get the list of options and InteractableStates - stateOptions = instance.StateOptions; - - SerializedProperty stateLogicName = serializedObject.FindProperty("StateLogicName"); - SerializedProperty assemblyQualifiedName = serializedObject.FindProperty("AssemblyQualifiedName"); - int option = States.ReverseLookup(stateLogicName.stringValue, stateOptions.ClassNames); - - int newLogic = EditorGUILayout.Popup("State Model", option, stateOptions.ClassNames); - if (option != newLogic) - { - stateLogicName.stringValue = stateOptions.ClassNames[newLogic]; - assemblyQualifiedName.stringValue = stateOptions.AssemblyQualifiedNames[newLogic]; - } - - stateList = serializedObject.FindProperty("StateList"); - - int bitCount = 0; - for (int i = 0; i < stateList.arraySize; i++) - { - if (i == 0) - { - bitCount += 1; - } - else - { - bitCount += bitCount; - } - - EditorGUILayout.BeginVertical("Box"); - SerializedProperty stateItem = stateList.GetArrayElementAtIndex(i); - - SerializedProperty name = stateItem.FindPropertyRelative("Name"); - SerializedProperty activeIndex = stateItem.FindPropertyRelative("ActiveIndex"); - SerializedProperty bit = stateItem.FindPropertyRelative("Bit"); - SerializedProperty index = stateItem.FindPropertyRelative("Index"); - - activeIndex.intValue = i; - - EditorGUILayout.BeginHorizontal(); - string[] stateEnums = GetStateOptions(); - int enumIndex = States.ReverseLookup(name.stringValue, stateEnums); - - int newEnumIndex = EditorGUILayout.Popup(name.stringValue + " (" + bitCount + ")", enumIndex, stateEnums); - - name.stringValue = stateEnums[newEnumIndex]; - index.intValue = newEnumIndex; - - InspectorUIUtility.SmallButton(new GUIContent(InspectorUIUtility.Minus, "Remove State"), i, RemoveState); - - EditorGUILayout.EndHorizontal(); - - // assign the bitcount based on location in the list - bit.intValue = bitCount; - - EditorGUILayout.EndVertical(); - } - - InspectorUIUtility.FlexButton(new GUIContent("+", "Add Theme Property"), 0, AddState); - - serializedObject.ApplyModifiedProperties(); - } - - protected void AddState(int index, SerializedProperty prop = null) - { - stateList.InsertArrayElementAtIndex(stateList.arraySize); - } - - protected void RemoveState(int index, SerializedProperty prop = null) - { - stateList.DeleteArrayElementAtIndex(index); - } - - /// - /// Get a list of state names - /// - /// - protected string[] GetStateOptions() - { - return Enum.GetNames(typeof(InteractableStates.InteractableStateEnum)); - } - } -#endif -} diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/ThemeInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/ThemeInspector.cs deleted file mode 100644 index 00365cb9c09..00000000000 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/ThemeInspector.cs +++ /dev/null @@ -1,1376 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using Microsoft.MixedReality.Toolkit.Utilities.Editor; -using System; -using System.Collections.Generic; -using UnityEditor; -using UnityEditor.Animations; -using UnityEngine; -using UnityEngine.UI; - -namespace Microsoft.MixedReality.Toolkit.UI.Editor -{ - /// - /// Inspector for themes, and used by Interactable - /// - -#if UNITY_EDITOR - [CustomEditor(typeof(Theme))] - public class ThemeInspector : UnityEditor.Editor - { - protected SerializedProperty settings; - protected SerializedProperty states; - - protected static InteractableTypesContainer themeOptions; - protected static string[] shaderOptions; - protected static State[] themeStates; - - protected GUIStyle boxStyle; - protected bool layoutComplete = false; - private const float ThemeStateFontScale = 1.2f; - - private static readonly GUIContent AddThemePropertyLabel = new GUIContent("+ Add Theme Property", "Add Theme Property"); - private static readonly GUIContent RemoveThemePropertyContent = new GUIContent("-", "Remove Theme Property"); - private static readonly GUIContent CreateAnimationsContent = new GUIContent("Create Animations", "Create and add an Animator with AnimationClips"); - private static readonly GUIContent EasingContent = new GUIContent("Easing", "should the theme animate state values"); - - protected virtual void OnEnable() - { - SetupThemeOptions(); - } - - public override void OnInspectorGUI() - { - RenderCustomInspector(); - } - - protected virtual void RenderBaseInspector() - { - base.OnInspectorGUI(); - } - - public virtual void RenderCustomInspector() - { - settings = serializedObject.FindProperty("Settings"); - states = serializedObject.FindProperty("States"); - - //base.OnInspectorGUI(); - serializedObject.Update(); - - boxStyle = InspectorUIUtility.Box(0); - - using (new EditorGUILayout.VerticalScope(boxStyle)) - { - if (!RenderStates()) - { - serializedObject.ApplyModifiedProperties(); - return; - } - } - - // If no theme properties assigned, add a default one - if (settings.arraySize < 1 || InspectorUIUtility.FlexButton(AddThemePropertyLabel)) - { - AddThemeProperty(); - } - - RenderThemeSettings(settings, themeOptions, null, GetStates()); - - RenderThemeStates(settings, GetStates(), 0); - - serializedObject.ApplyModifiedProperties(); - } - - /// - /// draw the states property field for assigning states - /// Set the default state if one does not exist - /// - /// - protected bool RenderStates() - { - // If states value is not provided, try to use Default states type - if (states.objectReferenceValue == null) - { - states.objectReferenceValue = GetDefaultInteractableStates(); - } - - GUI.enabled = !(EditorApplication.isPlaying || EditorApplication.isPaused); - EditorGUILayout.PropertyField(states, new GUIContent("States", "The States this Interactable is based on")); - GUI.enabled = true; - - if (states.objectReferenceValue == null || GetStates().Length < 1) - { - InspectorUIUtility.DrawError("Please assign a valid States object!"); - return false; - } - - return true; - } - - /// - /// Get the list of states from the theme - /// - /// - protected virtual State[] GetStates() - { - Theme theme = (Theme)target; - themeStates = theme.GetStates(); - return themeStates; - } - - protected void SetupThemeOptions() - { - themeOptions = InteractableProfileItem.GetThemeTypes(); - } - - protected virtual void AddThemeProperty() - { - SerializedProperty themeObjSettings = serializedObject.FindProperty("Settings"); - themeObjSettings.InsertArrayElementAtIndex(0); - - AddThemePropertySettings(themeObjSettings); - ChangeThemeProperty(themeObjSettings.arraySize - 1, themeObjSettings, null, GetStates(), true); - } - - /// - /// set up the theme properties when a theme property is added - /// - /// - protected virtual void AddThemePropertySettings(SerializedProperty themeSettings) - { - SerializedProperty settingsItem = themeSettings.GetArrayElementAtIndex(themeSettings.arraySize - 1); - SerializedProperty className = settingsItem.FindPropertyRelative("Name"); - SerializedProperty assemblyQualifiedName = settingsItem.FindPropertyRelative("AssemblyQualifiedName"); - if (themeSettings.arraySize == 1) - { - className.stringValue = "ScaleOffsetColorTheme"; - assemblyQualifiedName.stringValue = typeof(ScaleOffsetColorTheme).AssemblyQualifiedName; - } - else - { - className.stringValue = themeOptions.ClassNames[0]; - assemblyQualifiedName.stringValue = themeOptions.AssemblyQualifiedNames[0]; - } - - SerializedProperty easing = settingsItem.FindPropertyRelative("Easing"); - - SerializedProperty time = easing.FindPropertyRelative("LerpTime"); - SerializedProperty curve = easing.FindPropertyRelative("Curve"); - time.floatValue = 0.5f; - curve.animationCurveValue = AnimationCurve.Linear(0, 1, 1, 1); - } - - public static SerializedProperty ChangeThemeProperty(int index, SerializedProperty themeSettings, SerializedProperty target, State[] states, bool isNew = false) - { - SerializedProperty settingsItem = themeSettings.GetArrayElementAtIndex(index); - - SerializedProperty className = settingsItem.FindPropertyRelative("Name"); - - InteractableTypesContainer themeTypes = InteractableProfileItem.GetThemeTypes(); - - // get class value types - if (!string.IsNullOrEmpty(className.stringValue)) - { - int propIndex = InspectorUIUtility.ReverseLookup(className.stringValue, themeTypes.ClassNames); - GameObject renderHost = target != null ? (GameObject)target.objectReferenceValue : null; - - InteractableThemeBase themeBase = (InteractableThemeBase)Activator.CreateInstance(themeTypes.Types[propIndex], renderHost); - - // does this object have the right component types - SerializedProperty isValid = settingsItem.FindPropertyRelative("IsValid"); - SerializedProperty noEasing = settingsItem.FindPropertyRelative("NoEasing"); - noEasing.boolValue = themeBase.NoEasing; - - bool valid = false; - bool hasText = false; - bool hasRenderer = false; - - if (renderHost != null) - { - foreach(Type type in themeBase.Types) - { - if (renderHost.gameObject.GetComponent(type)) - { - hasText = hasText || type == typeof(TextMesh) || type == typeof(Text); - hasRenderer = hasRenderer || type == typeof(Renderer); - valid = true; - } - } - } - - isValid.boolValue = valid; - - // setup the values - // get the state names - List properties = themeBase.ThemeProperties; - List customSettings = themeBase.CustomSettings; - - SerializedProperty sProps = settingsItem.FindPropertyRelative("Properties"); - SerializedProperty history = settingsItem.FindPropertyRelative("History"); - SerializedProperty customHistory = settingsItem.FindPropertyRelative("CustomHistory"); - - SerializedProperty custom = settingsItem.FindPropertyRelative("CustomSettings"); - - if (isNew) - { - sProps.ClearArray(); - custom.ClearArray(); - } - else - { - // stick the copy in the new format into sProps. - sProps = CopyPropertiesFromHistory(sProps, properties, history, out history); - custom = CopyCustomHistory(custom, customSettings, customHistory, out customHistory); - } - - for (int propertyIndex = 0; propertyIndex < properties.Count; propertyIndex++) - { - bool newItem = isNew; - if (isNew) - { - sProps.InsertArrayElementAtIndex(sProps.arraySize); - } - - InteractableThemeProperty property = properties[propertyIndex]; - - SerializedProperty item = sProps.GetArrayElementAtIndex(propertyIndex); - SerializedProperty name = item.FindPropertyRelative("Name"); - SerializedProperty type = item.FindPropertyRelative("Type"); - SerializedProperty values = item.FindPropertyRelative("Values"); - - name.stringValue = property.Name; - type.intValue = (int)property.Type; - - int numOfValues = states.Length; - for (int j = 0; j < numOfValues; j++) - { - if (values.arraySize <= j) - { - values.InsertArrayElementAtIndex(values.arraySize); - newItem = true; - } - - SerializedProperty valueItem = values.GetArrayElementAtIndex(j); - SerializedProperty valueName = valueItem.FindPropertyRelative("Name"); - valueName.stringValue = states[j].Name; - - if (newItem && property.Default != null) - { - if ((InteractableThemePropertyValueTypes)type.intValue == InteractableThemePropertyValueTypes.AnimatorTrigger) - { - InteractableThemePropertyValue propValue = new InteractableThemePropertyValue(); - propValue.Name = valueName.stringValue; - propValue.String = states[j].Name; - - SerializeThemeValues(propValue, valueItem, type.intValue); - } - else - { - // assign default values if new item - SerializeThemeValues(property.Default, valueItem, type.intValue); - } - } - } - - List shaderPropFilter = new List(); - // do we need a propId? - if (property.Type == InteractableThemePropertyValueTypes.Color) - { - if ((!hasText && hasRenderer) || (!hasText && target == null)) - { - shaderPropFilter.Add(ShaderPropertyType.Color); - } - else if (!hasText && !hasRenderer) - { - valid = false; - } - } - - if (property.Type == InteractableThemePropertyValueTypes.ShaderFloat - || property.Type == InteractableThemePropertyValueTypes.ShaderRange) - { - if (hasRenderer || target == null) - { - shaderPropFilter.Add(ShaderPropertyType.Float); - shaderPropFilter.Add(ShaderPropertyType.Range); - } - else - { - valid = false; - } - } - - SerializedProperty propId = item.FindPropertyRelative("PropId"); - if (newItem) - { - propId.intValue = 0; - } - - SerializedProperty shaderList = item.FindPropertyRelative("ShaderOptions"); - SerializedProperty shaderNames = item.FindPropertyRelative("ShaderOptionNames"); - SerializedProperty shaderName = item.FindPropertyRelative("ShaderName"); - - shaderList.ClearArray(); - shaderNames.ClearArray(); - - if (valid && shaderPropFilter.Count > 0) - { - Renderer renderer = null; - if (renderHost != null) - { - renderer = renderHost.gameObject.GetComponent(); - } - - ShaderInfo info = GetShaderProperties(renderer, shaderPropFilter.ToArray()); - PopulateShaderNames(shaderList, shaderNames, shaderName, info); - } - } - - if (!valid) - { - isValid.boolValue = false; - } - } - - return themeSettings; - } - - private static void PopulateShaderNames(SerializedProperty shaderList, SerializedProperty shaderNames, SerializedProperty shaderName, ShaderInfo info) - { - ShaderProperties[] shaderProps = info.ShaderOptions; - shaderName.stringValue = info.Name; - for (int n = 0; n < shaderProps.Length; n++) - { - shaderList.InsertArrayElementAtIndex(shaderList.arraySize); - SerializedProperty shaderListItem = shaderList.GetArrayElementAtIndex(shaderList.arraySize - 1); - SerializedProperty shaderListName = shaderListItem.FindPropertyRelative("Name"); - SerializedProperty shaderListType = shaderListItem.FindPropertyRelative("Type"); - SerializedProperty shaderListRange = shaderListItem.FindPropertyRelative("Range"); - - shaderListName.stringValue = shaderProps[n].Name; - shaderListType.intValue = (int)shaderProps[n].Type; - shaderListRange.vector2Value = shaderProps[n].Range; - - shaderNames.InsertArrayElementAtIndex(shaderNames.arraySize); - SerializedProperty names = shaderNames.GetArrayElementAtIndex(shaderNames.arraySize - 1); - names.stringValue = shaderProps[n].Name; - } - } - - /// - /// copy custom settings from history - /// - /// - /// - /// - /// - /// - private static SerializedProperty CopyCustomHistory(SerializedProperty oldCustom, List newCustomSettings, SerializedProperty customHistory, out SerializedProperty customHistoryOut) - { - int oldCount = oldCustom.arraySize; - - for (int i = oldCount - 1; i > -1; i--) - { - if (customHistory != null) - { - SerializedProperty item = oldCustom.GetArrayElementAtIndex(i); - SerializedProperty name = item.FindPropertyRelative("Name"); - SerializedProperty type = item.FindPropertyRelative("Type"); - - bool hasProperty = false; - for (int j = 0; j < customHistory.arraySize; j++) - { - SerializedProperty historyItem = customHistory.GetArrayElementAtIndex(j); - SerializedProperty historyName = historyItem.FindPropertyRelative("Name"); - SerializedProperty historyType = historyItem.FindPropertyRelative("Type"); - - if (name.stringValue == historyName.stringValue && type.intValue == historyType.intValue) - { - hasProperty = true; - - // update history - historyItem = CopyCustomSettings(item, historyItem); - break; - } - } - - if (!hasProperty) - { - // add new item to history - customHistory.InsertArrayElementAtIndex(customHistory.arraySize); - SerializedProperty historyItem = customHistory.GetArrayElementAtIndex(customHistory.arraySize - 1); - historyItem = CopyCustomSettings(item, historyItem); - } - } - - oldCustom.DeleteArrayElementAtIndex(i); - } - - customHistoryOut = customHistory; - - for (int i = 0; i < newCustomSettings.Count; i++) - { - oldCustom.InsertArrayElementAtIndex(oldCustom.arraySize); - SerializedProperty newProp = oldCustom.GetArrayElementAtIndex(oldCustom.arraySize - 1); - - SerializedProperty newName = newProp.FindPropertyRelative("Name"); - SerializedProperty newType = newProp.FindPropertyRelative("Type"); - SerializedProperty newValue = newProp.FindPropertyRelative("Value"); - newName.stringValue = newCustomSettings[i].Name; - newType.intValue = (int)newCustomSettings[i].Type; - - if (customHistory != null) - { - for (int j = 0; j < customHistory.arraySize; j++) - { - SerializedProperty item = customHistory.GetArrayElementAtIndex(j); - SerializedProperty name = item.FindPropertyRelative("Name"); - SerializedProperty type = item.FindPropertyRelative("Type"); - SerializedProperty value = item.FindPropertyRelative("Value"); - - if (name.stringValue == newName.stringValue && type.intValue == newType.intValue) - { - newValue = CopyThemeValues(value, newValue, newType.intValue); - } - } - } - } - - return oldCustom; - } - - /// - /// copy history values to current theme property - /// - /// - /// - /// - /// - /// - public static SerializedProperty CopyPropertiesFromHistory(SerializedProperty oldProperties, List newProperties, SerializedProperty history, out SerializedProperty historyOut) - { - int oldCount = oldProperties.arraySize; - - for (int i = oldCount - 1; i > -1; i--) - { - if (history != null) - { - SerializedProperty item = oldProperties.GetArrayElementAtIndex(i); - SerializedProperty name = item.FindPropertyRelative("Name"); - SerializedProperty type = item.FindPropertyRelative("Type"); - - bool hasProperty = false; - for (int j = 0; j < history.arraySize; j++) - { - SerializedProperty historyItem = history.GetArrayElementAtIndex(j); - SerializedProperty historyName = historyItem.FindPropertyRelative("Name"); - SerializedProperty historyType = historyItem.FindPropertyRelative("Type"); - - if (name.stringValue == historyName.stringValue && type.intValue == historyType.intValue) - { - hasProperty = true; - - // update history - historyItem = CopyThemeProperties(item, historyItem); - break; - } - } - - if (!hasProperty) - { - // add new item to history - history.InsertArrayElementAtIndex(history.arraySize); - SerializedProperty historyItem = history.GetArrayElementAtIndex(history.arraySize - 1); - historyItem = CopyThemeProperties(item, historyItem); - } - } - - oldProperties.DeleteArrayElementAtIndex(i); - } - - historyOut = history; - - for (int i = 0; i < newProperties.Count; i++) - { - oldProperties.InsertArrayElementAtIndex(oldProperties.arraySize); - SerializedProperty newProp = oldProperties.GetArrayElementAtIndex(oldProperties.arraySize - 1); - - SerializedProperty newName = newProp.FindPropertyRelative("Name"); - SerializedProperty newType = newProp.FindPropertyRelative("Type"); - SerializedProperty newValues = newProp.FindPropertyRelative("Values"); - SerializedProperty newPropId = newProp.FindPropertyRelative("PropId"); - newName.stringValue = newProperties[i].Name; - newType.intValue = (int)newProperties[i].Type; - - if (history != null) - { - for (int j = 0; j < history.arraySize; j++) - { - SerializedProperty item = history.GetArrayElementAtIndex(j); - SerializedProperty name = item.FindPropertyRelative("Name"); - SerializedProperty type = item.FindPropertyRelative("Type"); - SerializedProperty values = item.FindPropertyRelative("Values"); - SerializedProperty propId = item.FindPropertyRelative("PropId"); - - if (name.stringValue == newName.stringValue && type.intValue == newType.intValue) - { - newPropId.intValue = propId.intValue; - - for (int h = 0; h < values.arraySize; h++) - { - if (h >= newValues.arraySize) - { - newValues.InsertArrayElementAtIndex(newValues.arraySize); - } - - SerializedProperty newValue = newValues.GetArrayElementAtIndex(h); - SerializedProperty valueItem = values.GetArrayElementAtIndex(h); - newValue = CopyThemeValues(valueItem, newValue, newType.intValue); - } - } - } - } - } - - return oldProperties; - } - - /// - /// copy some theme property values from serialized properties - /// - /// - /// - /// - public static SerializedProperty CopyThemeProperties(SerializedProperty copyFrom, SerializedProperty copyTo) - { - SerializedProperty newName = copyTo.FindPropertyRelative("Name"); - SerializedProperty newType = copyTo.FindPropertyRelative("Type"); - SerializedProperty newValues = copyTo.FindPropertyRelative("Values"); - SerializedProperty newPropId = copyTo.FindPropertyRelative("PropId"); - - SerializedProperty oldName = copyFrom.FindPropertyRelative("Name"); - SerializedProperty oldType = copyFrom.FindPropertyRelative("Type"); - SerializedProperty oldValues = copyFrom.FindPropertyRelative("Values"); - SerializedProperty oldPropId = copyFrom.FindPropertyRelative("PropId"); - - newName.stringValue = oldName.stringValue; - newType.intValue = oldType.intValue; - newPropId.intValue = oldPropId.intValue; - - newValues.ClearArray(); - - for (int index = 0; index < oldValues.arraySize; index++) - { - newValues.InsertArrayElementAtIndex(newValues.arraySize); - SerializedProperty newValue = newValues.GetArrayElementAtIndex(newValues.arraySize - 1); - SerializedProperty valueItem = oldValues.GetArrayElementAtIndex(index); - newValue = CopyThemeValues(valueItem, newValue, newType.intValue); - } - - return copyTo; - } - - /// - /// copy some theme property values from serialized properties - /// - /// - /// - /// - public static SerializedProperty CopyCustomSettings(SerializedProperty copyFrom, SerializedProperty copyTo) - { - SerializedProperty newName = copyTo.FindPropertyRelative("Name"); - SerializedProperty newType = copyTo.FindPropertyRelative("Type"); - SerializedProperty newValue = copyTo.FindPropertyRelative("Value"); - - SerializedProperty oldName = copyFrom.FindPropertyRelative("Name"); - SerializedProperty oldType = copyFrom.FindPropertyRelative("Type"); - SerializedProperty oldValue = copyFrom.FindPropertyRelative("Value"); - - newName.stringValue = oldName.stringValue; - newType.intValue = oldType.intValue; - - newValue = CopyThemeValues(oldValue, newValue, newType.intValue); - - return copyTo; - } - - /// - /// copy theme values from serialized properties - /// - /// - /// - /// - /// - public static SerializedProperty CopyThemeValues(SerializedProperty copyFrom, SerializedProperty copyTo, int type) - { - SerializedProperty floatFrom; - SerializedProperty floatTo; - SerializedProperty vector2From; - SerializedProperty vector2To; - SerializedProperty stringFrom; - SerializedProperty stringTo; - - switch ((InteractableThemePropertyValueTypes)type) - { - case InteractableThemePropertyValueTypes.Float: - floatFrom = copyFrom.FindPropertyRelative("Float"); - floatTo = copyTo.FindPropertyRelative("Float"); - floatTo.floatValue = floatFrom.floatValue; - break; - case InteractableThemePropertyValueTypes.Int: - SerializedProperty intFrom = copyFrom.FindPropertyRelative("Int"); - SerializedProperty intTo = copyTo.FindPropertyRelative("Int"); - intTo.intValue = intFrom.intValue; - break; - case InteractableThemePropertyValueTypes.Color: - SerializedProperty colorFrom = copyFrom.FindPropertyRelative("Color"); - SerializedProperty colorTo = copyTo.FindPropertyRelative("Color"); - colorTo.colorValue = colorFrom.colorValue; - break; - case InteractableThemePropertyValueTypes.ShaderFloat: - floatFrom = copyFrom.FindPropertyRelative("Float"); - floatTo = copyTo.FindPropertyRelative("Float"); - floatTo.floatValue = floatFrom.floatValue; - break; - case InteractableThemePropertyValueTypes.ShaderRange: - vector2From = copyFrom.FindPropertyRelative("Vector2"); - vector2To = copyTo.FindPropertyRelative("Vector2"); - vector2To.vector2Value = vector2From.vector2Value; - break; - case InteractableThemePropertyValueTypes.Vector2: - vector2From = copyFrom.FindPropertyRelative("Vector2"); - vector2To = copyTo.FindPropertyRelative("Vector2"); - vector2To.vector2Value = vector2From.vector2Value; - break; - case InteractableThemePropertyValueTypes.Vector3: - SerializedProperty vector3From = copyFrom.FindPropertyRelative("Vector3"); - SerializedProperty vector3To = copyTo.FindPropertyRelative("Vector3"); - vector3To.vector3Value = vector3From.vector3Value; - break; - case InteractableThemePropertyValueTypes.Vector4: - SerializedProperty vector4From = copyFrom.FindPropertyRelative("Vector4"); - SerializedProperty vector4To = copyTo.FindPropertyRelative("Vector4"); - vector4To.vector4Value = vector4From.vector4Value; - break; - case InteractableThemePropertyValueTypes.Quaternion: - SerializedProperty quaternionFrom = copyFrom.FindPropertyRelative("Quaternion"); - SerializedProperty quaternionTo = copyTo.FindPropertyRelative("Quaternion"); - quaternionTo.quaternionValue = quaternionFrom.quaternionValue; - break; - case InteractableThemePropertyValueTypes.Texture: - SerializedProperty textureFrom = copyFrom.FindPropertyRelative("Texture"); - SerializedProperty textureTo = copyTo.FindPropertyRelative("Texture"); - textureTo.objectReferenceValue = textureFrom.objectReferenceValue; - break; - case InteractableThemePropertyValueTypes.Material: - SerializedProperty materialFrom = copyFrom.FindPropertyRelative("Material"); - SerializedProperty materialTo = copyTo.FindPropertyRelative("Material"); - materialTo.objectReferenceValue = materialFrom.objectReferenceValue; - break; - case InteractableThemePropertyValueTypes.AudioClip: - SerializedProperty audioClipFrom = copyFrom.FindPropertyRelative("AudioClip"); - SerializedProperty audioClipTo = copyTo.FindPropertyRelative("AudioClip"); - audioClipTo.objectReferenceValue = audioClipFrom.objectReferenceValue; - break; - case InteractableThemePropertyValueTypes.Animaiton: - SerializedProperty animationFrom = copyFrom.FindPropertyRelative("Animation"); - SerializedProperty animationTo = copyTo.FindPropertyRelative("Animation"); - animationTo.objectReferenceValue = animationFrom.objectReferenceValue; - break; - case InteractableThemePropertyValueTypes.GameObject: - SerializedProperty gameObjectFrom = copyFrom.FindPropertyRelative("GameObject"); - SerializedProperty gameObjectTo = copyTo.FindPropertyRelative("GameObject"); - gameObjectTo.objectReferenceValue = gameObjectFrom.objectReferenceValue; - break; - case InteractableThemePropertyValueTypes.String: - stringFrom = copyFrom.FindPropertyRelative("String"); - stringTo = copyTo.FindPropertyRelative("String"); - stringTo.stringValue = stringFrom.stringValue; - break; - case InteractableThemePropertyValueTypes.Bool: - SerializedProperty boolFrom = copyFrom.FindPropertyRelative("Bool"); - SerializedProperty boolTo = copyTo.FindPropertyRelative("Bool"); - boolTo.boolValue = boolFrom.boolValue; - break; - case InteractableThemePropertyValueTypes.AnimatorTrigger: - stringFrom = copyFrom.FindPropertyRelative("String"); - stringTo = copyTo.FindPropertyRelative("String"); - stringTo.stringValue = stringFrom.stringValue; - break; - default: - break; - } - - return copyTo; - } - - /// - /// load theme property values into a serialized property - /// - /// - /// - /// - /// - public static SerializedProperty SerializeThemeValues(InteractableThemePropertyValue copyFrom, SerializedProperty copyTo, int type) - { - SerializedProperty floatTo; - SerializedProperty vector2To; - SerializedProperty stringTo; - - switch ((InteractableThemePropertyValueTypes)type) - { - case InteractableThemePropertyValueTypes.Float: - floatTo = copyTo.FindPropertyRelative("Float"); - floatTo.floatValue = copyFrom.Float; - break; - case InteractableThemePropertyValueTypes.Int: - SerializedProperty intTo = copyTo.FindPropertyRelative("Int"); - intTo.intValue = copyFrom.Int; - break; - case InteractableThemePropertyValueTypes.Color: - SerializedProperty colorTo = copyTo.FindPropertyRelative("Color"); - colorTo.colorValue = copyFrom.Color; - break; - case InteractableThemePropertyValueTypes.ShaderFloat: - floatTo = copyTo.FindPropertyRelative("Float"); - floatTo.floatValue = copyFrom.Float; - break; - case InteractableThemePropertyValueTypes.ShaderRange: - vector2To = copyTo.FindPropertyRelative("Vector2"); - vector2To.vector2Value = copyFrom.Vector2; - break; - case InteractableThemePropertyValueTypes.Vector2: - vector2To = copyTo.FindPropertyRelative("Vector2"); - vector2To.vector2Value = copyFrom.Vector2; - break; - case InteractableThemePropertyValueTypes.Vector3: - SerializedProperty vector3To = copyTo.FindPropertyRelative("Vector3"); - vector3To.vector3Value = copyFrom.Vector3; - break; - case InteractableThemePropertyValueTypes.Vector4: - SerializedProperty vector4To = copyTo.FindPropertyRelative("Vector4"); - vector4To.vector4Value = copyFrom.Vector4; - break; - case InteractableThemePropertyValueTypes.Quaternion: - SerializedProperty quaternionTo = copyTo.FindPropertyRelative("Quaternion"); - quaternionTo.quaternionValue = copyFrom.Quaternion; - break; - case InteractableThemePropertyValueTypes.Texture: - SerializedProperty textureTo = copyTo.FindPropertyRelative("Texture"); - textureTo.objectReferenceValue = copyFrom.Texture; - break; - case InteractableThemePropertyValueTypes.Material: - SerializedProperty materialTo = copyTo.FindPropertyRelative("Material"); - materialTo.objectReferenceValue = copyFrom.Material; - break; - case InteractableThemePropertyValueTypes.AudioClip: - SerializedProperty audioClipTo = copyTo.FindPropertyRelative("AudioClip"); - audioClipTo.objectReferenceValue = copyFrom.AudioClip; - break; - case InteractableThemePropertyValueTypes.Animaiton: - SerializedProperty animationTo = copyTo.FindPropertyRelative("Animation"); - animationTo.objectReferenceValue = copyFrom.Animation; - break; - case InteractableThemePropertyValueTypes.GameObject: - SerializedProperty gameObjectTo = copyTo.FindPropertyRelative("GameObject"); - gameObjectTo.objectReferenceValue = copyFrom.GameObject; - break; - case InteractableThemePropertyValueTypes.String: - stringTo = copyTo.FindPropertyRelative("String"); - stringTo.stringValue = copyFrom.String; - break; - case InteractableThemePropertyValueTypes.Bool: - SerializedProperty boolTo = copyTo.FindPropertyRelative("Bool"); - boolTo.boolValue = copyFrom.Bool; - break; - case InteractableThemePropertyValueTypes.AnimatorTrigger: - stringTo = copyTo.FindPropertyRelative("String"); - stringTo.stringValue = copyFrom.String; - break; - default: - break; - } - - return copyTo; - } - - public static void RenderThemeSettings(SerializedProperty themeSettings, - InteractableTypesContainer themeOptions, - SerializedProperty gameObjectProperty, - State[] states, - int margin = 0) - { - GUIStyle box = InspectorUIUtility.Box(margin); - - // Loop through all InteractableThemePropertySettings of Theme - for (int settingIndex = 0; settingIndex < themeSettings.arraySize; settingIndex++) - { - SerializedProperty settingsItem = themeSettings.GetArrayElementAtIndex(settingIndex); - SerializedProperty className = settingsItem.FindPropertyRelative("Name"); - - using (new EditorGUILayout.VerticalScope(box)) - { - using (new EditorGUILayout.HorizontalScope()) - { - int id = InspectorUIUtility.ReverseLookup(className.stringValue, themeOptions.ClassNames); - int newId = EditorGUILayout.Popup("Theme Property", id, themeOptions.ClassNames); - - if (themeSettings.arraySize > 1) - { - if (InspectorUIUtility.SmallButton(RemoveThemePropertyContent)) - { - themeSettings.DeleteArrayElementAtIndex(settingIndex); - continue; - } - } - - if (id != newId) - { - SerializedProperty assemblyQualifiedName = settingsItem.FindPropertyRelative("AssemblyQualifiedName"); - className.stringValue = themeOptions.ClassNames[newId]; - assemblyQualifiedName.stringValue = themeOptions.AssemblyQualifiedNames[newId]; - - themeSettings = ChangeThemeProperty(settingIndex, themeSettings, gameObjectProperty, states); - } - } - - SerializedProperty themeProperties = settingsItem.FindPropertyRelative("Properties"); - int animatorCount = 0; - - // Loop through all InteractableThemeProperty of InteractableThemePropertySettings - for (int p = 0; p < themeProperties.arraySize; p++) - { - SerializedProperty propertyItem = themeProperties.GetArrayElementAtIndex(p); - - SerializedProperty propType = propertyItem.FindPropertyRelative("Type"); - InteractableThemePropertyValueTypes type = (InteractableThemePropertyValueTypes)propType.intValue; - - if (type == InteractableThemePropertyValueTypes.AnimatorTrigger) - { - animatorCount++; - } - - SerializedProperty shaderNames = propertyItem.FindPropertyRelative("ShaderOptionNames"); - if (shaderNames.arraySize > 0) - { - RenderShaderProperties(propertyItem, gameObjectProperty, type); - } - else - { - // If there are no shader options available - SerializedProperty shaderList = propertyItem.FindPropertyRelative("ShaderOptions"); - SerializedProperty shaderName = propertyItem.FindPropertyRelative("ShaderName"); - - ShaderPropertyType[] filter = GetShaderPropertyFilters(type); - ShaderInfo info = GetShaderProperties(null, filter); - PopulateShaderNames(shaderList, shaderNames, shaderName, info); - } - } - - SerializedProperty customSettings = settingsItem.FindPropertyRelative("CustomSettings"); - RenderCustomSettings(customSettings); - - if (animatorCount < themeProperties.arraySize) - { - RenderEasingProperties(settingsItem); - } - - // check to see if an animatorController exists - if (animatorCount > 0 && gameObjectProperty != null) - { - GameObject host = gameObjectProperty.objectReferenceValue as GameObject; - Animator animator = null; - - if (host != null) - { - animator = host.GetComponent(); - } - - if (animator == null && host != null) - { - SerializedProperty themeTargetProperty = settingsItem.FindPropertyRelative("ThemeTarget"); - SerializedProperty targetStates = themeTargetProperty.FindPropertyRelative("States"); - targetStates = GetSerializedStates(targetStates, states); - -#pragma warning disable 0219 - // disable value is never used warning - //assigning values to be passed to the FlexButton - SerializedProperty targetProperty = themeTargetProperty.FindPropertyRelative("Target"); - SerializedProperty props = themeTargetProperty.FindPropertyRelative("Properties"); - targetProperty = gameObjectProperty; - props = themeProperties; -#pragma warning restore 0219 // enable value is never used warning - - if (InspectorUIUtility.FlexButton(CreateAnimationsContent)) - { - AddAnimator(themeTargetProperty); - } - } - } - - } - } - } - - /// - /// Render shader name options for InteractableThemeProperty in a InteractableThemePropertySettings - /// - /// SerializedProperty of InteractableThemeProperty - /// SerializedProperty for gameobject associated with Theme and consequently the InteractableThemeProperty - /// Theme property type - private static void RenderShaderProperties(SerializedProperty themePropertyItem, - SerializedProperty gameObjectProperty, - InteractableThemePropertyValueTypes type) - { - bool hasTextComp = false; - SerializedProperty propId = themePropertyItem.FindPropertyRelative("PropId"); - SerializedProperty name = themePropertyItem.FindPropertyRelative("Name"); - - SerializedProperty shaderNames = themePropertyItem.FindPropertyRelative("ShaderOptionNames"); - SerializedProperty shaderName = themePropertyItem.FindPropertyRelative("ShaderName"); - - string[] shaderOptionNames = InspectorUIUtility.GetOptions(shaderNames); - string propName = shaderOptionNames[propId.intValue]; - bool hasShaderProperty = true; - - if (gameObjectProperty == null) - { - EditorGUILayout.LabelField(new GUIContent("Shader: " + shaderName.stringValue)); - } - else - { - GameObject renderHost = gameObjectProperty.objectReferenceValue as GameObject; - if (renderHost != null) - { - Renderer renderer = renderHost.GetComponent(); - hasTextComp = InteractableColorTheme.HasTextComponentOnObject(renderHost); - if (renderer != null && !hasTextComp) - { - ShaderPropertyType[] filter = GetShaderPropertyFilters(type); - ShaderInfo info = GetShaderProperties(renderer, filter); - - if (info.Name != shaderName.stringValue) - { - hasShaderProperty = false; - - for (int i = 0; i < info.ShaderOptions.Length; i++) - { - if (info.ShaderOptions[i].Name == propName) - { - hasShaderProperty = true; - break; - } - } - } - - } - } - - } - - if (!hasTextComp) - { - GUIStyle popupStyle = new GUIStyle(EditorStyles.popup); - popupStyle.margin.right = Mathf.RoundToInt(Screen.width - (Screen.width - 40)); - propId.intValue = EditorGUILayout.Popup("Material " + name.stringValue + "Id", propId.intValue, shaderOptionNames, popupStyle); - - if (!hasShaderProperty) - { - InspectorUIUtility.DrawError(propName + " is not available on the currently assigned Material."); - } - } - else - { - EditorGUILayout.LabelField(new GUIContent("Text Property: Color")); - } - - GUILayout.Space(5); - - // Handle issue where the material color id renders on objects it shouldn't - // theme is save for a game object with a renderer, but when put on a textmesh, rendering prop values show up. - // when changing the theme type on a TextMesh, everything works, but the rendering prop is removed from the theme on the renderer object. - // make this passive, only show up when needed. - } - - private static ShaderPropertyType[] GetShaderPropertyFilters(InteractableThemePropertyValueTypes type) - { - ShaderPropertyType[] filter = new ShaderPropertyType[0]; - switch (type) - { - case InteractableThemePropertyValueTypes.Color: - filter = new ShaderPropertyType[] { ShaderPropertyType.Color }; - break; - case InteractableThemePropertyValueTypes.ShaderFloat: - filter = new ShaderPropertyType[] { ShaderPropertyType.Float }; - break; - case InteractableThemePropertyValueTypes.ShaderRange: - filter = new ShaderPropertyType[] { ShaderPropertyType.Float }; - break; - default: - break; - } - - return filter; - } - - /// - /// Renders easing & related time properties for InteractableThemePropertySettings - /// - /// Serialized property of a InteractableThemePropertySettings object - private static void RenderEasingProperties(SerializedProperty settingsItem) - { - SerializedProperty easing = settingsItem.FindPropertyRelative("Easing"); - SerializedProperty enabled = easing.FindPropertyRelative("Enabled"); - - SerializedProperty noEasing = settingsItem.FindPropertyRelative("NoEasing"); - if (!noEasing.boolValue) - { - enabled.boolValue = EditorGUILayout.Toggle(EasingContent, enabled.boolValue); - - if (enabled.boolValue) - { - using (new EditorGUI.IndentLevelScope()) - { - SerializedProperty time = easing.FindPropertyRelative("LerpTime"); - SerializedProperty curve = easing.FindPropertyRelative("Curve"); - - EditorGUILayout.PropertyField(time, new GUIContent("Duration", "Animation duration")); - EditorGUILayout.PropertyField(curve, new GUIContent("Animation Curve")); - } - } - } - else - { - enabled.boolValue = false; - } - } - - /// - /// Render list of custom settings part of a InteractableThemePropertySettings object - /// - /// SerializedProperty for InteractableThemePropertySettings.CustomSettings - private static void RenderCustomSettings(SerializedProperty customSettings) - { - for (int p = 0; p < customSettings.arraySize; p++) - { - SerializedProperty item = customSettings.GetArrayElementAtIndex(p); - SerializedProperty name = item.FindPropertyRelative("Name"); - SerializedProperty propType = item.FindPropertyRelative("Type"); - SerializedProperty value = item.FindPropertyRelative("Value"); - InteractableThemePropertyValueTypes type = (InteractableThemePropertyValueTypes)propType.intValue; - - RenderValue(value, name.stringValue, name.stringValue, type); - } - } - - public static SerializedProperty GetSerializedStates(SerializedProperty serialized, State[] states) - { - serialized.ClearArray(); - for (int i = 0; i < states.Length; i++) - { - serialized.InsertArrayElementAtIndex(serialized.arraySize); - SerializedProperty state = serialized.GetArrayElementAtIndex(serialized.arraySize - 1); - SerializedProperty activeIndex = state.FindPropertyRelative("ActiveIndex"); - SerializedProperty bit = state.FindPropertyRelative("Bit"); - SerializedProperty index = state.FindPropertyRelative("Index"); - SerializedProperty name = state.FindPropertyRelative("Name"); - SerializedProperty value = state.FindPropertyRelative("Value"); - - activeIndex.intValue = states[i].ActiveIndex; - bit.intValue = states[i].Bit; - index.intValue = states[i].Index; - name.stringValue = states[i].Name; - value.intValue = states[i].Value; - } - - return serialized; - } - - /// - /// Render a single property value - /// - /// - /// - /// - /// - public static void RenderValue(SerializedProperty item, string name, string propName, InteractableThemePropertyValueTypes type) - { - SerializedProperty floatValue = item.FindPropertyRelative("Float"); - SerializedProperty vector2Value = item.FindPropertyRelative("Vector2"); - SerializedProperty stringValue = item.FindPropertyRelative("String"); - - switch (type) - { - case InteractableThemePropertyValueTypes.Float: - floatValue.floatValue = EditorGUILayout.FloatField(name, floatValue.floatValue); - break; - case InteractableThemePropertyValueTypes.Int: - SerializedProperty intValue = item.FindPropertyRelative("Int"); - intValue.intValue = EditorGUILayout.IntField(name, intValue.intValue); - break; - case InteractableThemePropertyValueTypes.Color: - SerializedProperty colorValue = item.FindPropertyRelative("Color"); - colorValue.colorValue = EditorGUILayout.ColorField(new GUIContent(propName, propName), colorValue.colorValue); - break; - case InteractableThemePropertyValueTypes.ShaderFloat: - floatValue.floatValue = EditorGUILayout.FloatField(new GUIContent(propName, propName), floatValue.floatValue); - break; - case InteractableThemePropertyValueTypes.ShaderRange: - vector2Value.vector2Value = EditorGUILayout.Vector2Field(new GUIContent(propName, propName), vector2Value.vector2Value); - break; - case InteractableThemePropertyValueTypes.Vector2: - vector2Value.vector2Value = EditorGUILayout.Vector2Field(name, vector2Value.vector2Value); - break; - case InteractableThemePropertyValueTypes.Vector3: - SerializedProperty vector3Value = item.FindPropertyRelative("Vector3"); - vector3Value.vector3Value = EditorGUILayout.Vector3Field(name, vector3Value.vector3Value); - break; - case InteractableThemePropertyValueTypes.Vector4: - SerializedProperty vector4Value = item.FindPropertyRelative("Vector4"); - vector4Value.vector4Value = EditorGUILayout.Vector4Field(name, vector4Value.vector4Value); - break; - case InteractableThemePropertyValueTypes.Quaternion: - SerializedProperty quaternionValue = item.FindPropertyRelative("Quaternion"); - Vector4 vect4 = new Vector4(quaternionValue.quaternionValue.x, quaternionValue.quaternionValue.y, quaternionValue.quaternionValue.z, quaternionValue.quaternionValue.w); - vect4 = EditorGUILayout.Vector4Field(name, vect4); - quaternionValue.quaternionValue = new Quaternion(vect4.x, vect4.y, vect4.z, vect4.w); - break; - case InteractableThemePropertyValueTypes.Texture: - SerializedProperty texture = item.FindPropertyRelative("Texture"); - EditorGUILayout.PropertyField(texture, new GUIContent(name, ""), false); - break; - case InteractableThemePropertyValueTypes.Material: - SerializedProperty material = item.FindPropertyRelative("Material"); - EditorGUILayout.PropertyField(material, new GUIContent(name, ""), false); - break; - case InteractableThemePropertyValueTypes.AudioClip: - SerializedProperty audio = item.FindPropertyRelative("AudioClip"); - EditorGUILayout.PropertyField(audio, new GUIContent(name, ""), false); - break; - case InteractableThemePropertyValueTypes.Animaiton: - SerializedProperty animation = item.FindPropertyRelative("Animation"); - EditorGUILayout.PropertyField(animation, new GUIContent(name, ""), false); - break; - case InteractableThemePropertyValueTypes.GameObject: - SerializedProperty gameObjectValue = item.FindPropertyRelative("GameObject"); - EditorGUILayout.PropertyField(gameObjectValue, new GUIContent(name, ""), false); - break; - case InteractableThemePropertyValueTypes.String: - stringValue.stringValue = EditorGUILayout.TextField(name, stringValue.stringValue); - break; - case InteractableThemePropertyValueTypes.Bool: - SerializedProperty boolValue = item.FindPropertyRelative("Bool"); - boolValue.boolValue = EditorGUILayout.Toggle(name, boolValue.boolValue); - break; - case InteractableThemePropertyValueTypes.AnimatorTrigger: - stringValue.stringValue = EditorGUILayout.TextField(name, stringValue.stringValue); - break; - default: - break; - } - } - - public static void RenderThemeStates(SerializedProperty settings, State[] states, int margin = 0) - { - GUIStyle box = InspectorUIUtility.Box(margin); - - EditorGUILayout.BeginVertical(box); - - for (int n = 0; n < states.Length; n++) - { - InspectorUIUtility.DrawLabel(states[n].Name, (int)(InspectorUIUtility.DefaultFontSize * ThemeStateFontScale), InspectorUIUtility.ColorTint50); - - for (int j = 0; j < settings.arraySize; j++) - { - SerializedProperty settingsItem = settings.GetArrayElementAtIndex(j); - - SerializedProperty properties = settingsItem.FindPropertyRelative("Properties"); - using (new EditorGUI.IndentLevelScope()) - { - for (int i = 0; i < properties.arraySize; i++) - { - SerializedProperty propertyItem = properties.GetArrayElementAtIndex(i); - SerializedProperty name = propertyItem.FindPropertyRelative("Name"); - SerializedProperty type = propertyItem.FindPropertyRelative("Type"); - SerializedProperty values = propertyItem.FindPropertyRelative("Values"); - SerializedProperty shaderNames = propertyItem.FindPropertyRelative("ShaderOptionNames"); - SerializedProperty propId = propertyItem.FindPropertyRelative("PropId"); - - string shaderPropName = "Shader"; - - if (shaderNames.arraySize > propId.intValue) - { - SerializedProperty propName = shaderNames.GetArrayElementAtIndex(propId.intValue); - shaderPropName = propName.stringValue.Substring(1); - } - - if (n >= values.arraySize) - { - // the state values for this theme were not created yet - continue; - } - - SerializedProperty item = values.GetArrayElementAtIndex(n); - RenderValue(item, name.stringValue, shaderPropName, (InteractableThemePropertyValueTypes)type.intValue); - } - } - } - }// for loop - GUILayout.Space(5); - - EditorGUILayout.EndVertical(); - GUILayout.Space(5); - } - - public static void AddAnimator(SerializedProperty prop) - { - SerializedProperty target = prop.FindPropertyRelative("Target"); - SerializedProperty targetStates = prop.FindPropertyRelative("States"); - - GameObject host = target.objectReferenceValue as GameObject; - string path = "Assets/Animations"; - - if (host != null) - { - string controllerName = host.name + "Controller.controller"; - - path = EditorUtility.SaveFilePanelInProject( - "Save Animator Controller", - controllerName, - "controller", - "Create a name and select a location for the new Animator Controller"); - - if (path.Length != 0) - { - // we have a location - UnityEditor.Animations.AnimatorController controller = UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPath(path); - AnimatorStateMachine stateMachine = controller.layers[0].stateMachine; - - for (int i = 0; i < targetStates.arraySize; i++) - { - string name = targetStates.GetArrayElementAtIndex(i).stringValue; - - controller.AddParameter(name, AnimatorControllerParameterType.Trigger); - AnimationClip clip = AnimatorController.AllocateAnimatorClip(name); - - AnimationClipSettings settings = AnimationUtility.GetAnimationClipSettings(clip); - settings.loopTime = false; - AnimationUtility.SetAnimationClipSettings(clip, settings); - - AssetDatabase.AddObjectToAsset(clip, controller); - AnimatorState newState = controller.AddMotion(clip); - - //AnimatorState newState = stateMachine.AddState(name); - AnimatorStateTransition transition = stateMachine.AddAnyStateTransition(newState); - transition.AddCondition(AnimatorConditionMode.If, 0, name); - transition.duration = 1; - } - - Animator animator = host.AddComponent(); - animator.runtimeAnimatorController = controller; - } - } - } - - public static ShaderInfo GetShaderProperties(Renderer renderer, ShaderPropertyType[] filter) - { - ShaderInfo info = new ShaderInfo(); - List properties = new List(); - Material material = null; - - if (renderer != null) - { - material = InteractableThemeShaderUtils.GetValidMaterial(renderer); - } - else - { - material = new Material(Shader.Find("Mixed Reality Toolkit/Standard")); - } - - if (material != null) - { - info.Name = material.shader.name; - int count = ShaderUtil.GetPropertyCount(material.shader); - - for (int i = 0; i < count; i++) - { - string name = ShaderUtil.GetPropertyName(material.shader, i); - ShaderPropertyType type = ShaderUtilConvert(ShaderUtil.GetPropertyType(material.shader, i)); - bool isHidden = ShaderUtil.IsShaderPropertyHidden(material.shader, i); - Vector2 range = new Vector2(ShaderUtil.GetRangeLimits(material.shader, i, 1), ShaderUtil.GetRangeLimits(material.shader, i, 2)); - - if (!isHidden && HasShaderPropertyType(filter, type)) - { - properties.Add(new ShaderProperties() { Name = name, Type = type, Range = range }); - } - } - } - - info.ShaderOptions = properties.ToArray(); - return info; - } - - public static States GetDefaultInteractableStates() - { - AssetDatabase.Refresh(); - string[] stateLocations = AssetDatabase.FindAssets("DefaultInteractableStates"); - if (stateLocations.Length > 0) - { - for (int i = 0; i < stateLocations.Length; i++) - { - string path = AssetDatabase.GUIDToAssetPath(stateLocations[i]); - States defaultStates = (States)AssetDatabase.LoadAssetAtPath(path, typeof(States)); - if (defaultStates != null) - { - return defaultStates; - //states.objectReferenceValue = defaultStates; - } - } - } - - return null; - } - - public static ShaderPropertyType ShaderUtilConvert(ShaderUtil.ShaderPropertyType type) - { - ShaderPropertyType shaderType; - switch (type) - { - case ShaderUtil.ShaderPropertyType.Color: - shaderType = ShaderPropertyType.Color; - break; - case ShaderUtil.ShaderPropertyType.Vector: - shaderType = ShaderPropertyType.Vector; - break; - case ShaderUtil.ShaderPropertyType.Float: - shaderType = ShaderPropertyType.Float; - break; - case ShaderUtil.ShaderPropertyType.Range: - shaderType = ShaderPropertyType.Range; - break; - case ShaderUtil.ShaderPropertyType.TexEnv: - shaderType = ShaderPropertyType.TexEnv; - break; - default: - shaderType = ShaderPropertyType.None; - break; - } - return shaderType; - } - - public static bool HasShaderPropertyType(ShaderPropertyType[] filter, ShaderPropertyType type) - { - for (int i = 0; i < filter.Length; i++) - { - if (filter[i] == type) - { - return true; - } - } - - return false; - } - } -#endif -} diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Pointers/SpherePointerInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Pointers/SpherePointerInspector.cs index f7cc7115e38..d6c45dc1d48 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Pointers/SpherePointerInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Pointers/SpherePointerInspector.cs @@ -11,7 +11,10 @@ namespace Microsoft.MixedReality.Toolkit.Input public class SpherePointerInspector : BaseControllerPointerInspector { private SerializedProperty sphereCastRadius; - private SerializedProperty debugMode; + private SerializedProperty nearObjectMargin; + private SerializedProperty grabLayerMasks; + private SerializedProperty triggerInteraction; + private bool spherePointerFoldout = true; @@ -20,7 +23,9 @@ protected override void OnEnable() base.OnEnable(); sphereCastRadius = serializedObject.FindProperty("sphereCastRadius"); - debugMode = serializedObject.FindProperty("debugMode"); + nearObjectMargin = serializedObject.FindProperty("nearObjectMargin"); + grabLayerMasks = serializedObject.FindProperty("grabLayerMasks"); + triggerInteraction = serializedObject.FindProperty("triggerInteraction"); } public override void OnInspectorGUI() @@ -33,10 +38,13 @@ public override void OnInspectorGUI() if (spherePointerFoldout) { - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(sphereCastRadius); - EditorGUILayout.PropertyField(debugMode); - EditorGUI.indentLevel--; + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(sphereCastRadius); + EditorGUILayout.PropertyField(nearObjectMargin); + EditorGUILayout.PropertyField(triggerInteraction); + EditorGUILayout.PropertyField(grabLayerMasks, true); + } } serializedObject.ApplyModifiedProperties(); diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipConnectorInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipConnectorInspector.cs index 25e840cf9b2..81d644bd708 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipConnectorInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipConnectorInspector.cs @@ -171,8 +171,11 @@ public override void OnInspectorGUI() } serializedObject.ApplyModifiedProperties(); + } - EditorUtility.SetDirty(connector); + public override bool RequiresConstantRepaint() + { + return true; } private ConnectorPivotDirection DrawPivotDirection(ConnectorPivotDirection selection) diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipInspector.cs index dbe8ab87c59..475da843407 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Tooltips/ToolTipInspector.cs @@ -210,8 +210,11 @@ public override void OnInspectorGUI() } serializedObject.ApplyModifiedProperties(); + } - EditorUtility.SetDirty(toolTip); + public override bool RequiresConstantRepaint() + { + return true; } protected virtual void OnSceneGUI() diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes.meta b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes.meta new file mode 100644 index 00000000000..5f5394d2746 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 783d7920a8bc9344283e9b3fe3b10e95 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/StatesInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/StatesInspector.cs new file mode 100644 index 00000000000..4611bc87982 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/StatesInspector.cs @@ -0,0 +1,97 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using Microsoft.MixedReality.Toolkit.Utilities.Editor; +using System; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI +{ +#if UNITY_EDITOR + [CustomEditor(typeof(States))] + public class StatesInspector : UnityEditor.Editor + { + protected States instance; + protected SerializedProperty stateList; + + private static GUIContent RemoveStateLabel; + private static readonly GUIContent AddStateLabel = new GUIContent("+", "Add State"); + + protected virtual void OnEnable() + { + instance = (States)target; + + RemoveStateLabel = new GUIContent(InspectorUIUtility.Minus, "Remove State"); + stateList = serializedObject.FindProperty("stateList"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + InspectorUIUtility.DrawTitle("States"); + InspectorUIUtility.DrawNotice("Manage state configurations to drive Interactables or Transitions"); + + SerializedProperty stateModelClassName = serializedObject.FindProperty("StateModelClassName"); + SerializedProperty assemblyQualifiedName = serializedObject.FindProperty("AssemblyQualifiedName"); + + var stateModelTypes = TypeCacheUtility.GetSubClasses(); + var stateModelClassNames = stateModelTypes.Select(t => t?.Name).ToArray(); + int id = Array.IndexOf(stateModelClassNames, stateModelClassName.stringValue); + int newId = EditorGUILayout.Popup("State Model", id, stateModelClassNames); + if (id != newId) + { + Type newType = stateModelTypes[newId]; + stateModelClassName.stringValue = newType.Name; + assemblyQualifiedName.stringValue = newType.AssemblyQualifiedName; + } + + for (int i = 0; i < stateList.arraySize; i++) + { + using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) + { + SerializedProperty stateItem = stateList.GetArrayElementAtIndex(i); + + SerializedProperty name = stateItem.FindPropertyRelative("Name"); + SerializedProperty activeIndex = stateItem.FindPropertyRelative("ActiveIndex"); + SerializedProperty bit = stateItem.FindPropertyRelative("Bit"); + SerializedProperty index = stateItem.FindPropertyRelative("Index"); + + // assign the bitcount based on location in the list as power of 2 + bit.intValue = 1 << i; + + activeIndex.intValue = i; + + using (new EditorGUILayout.HorizontalScope()) + { + string[] stateEnums = Enum.GetNames(typeof(InteractableStates.InteractableStateEnum)); + int enumIndex = Array.IndexOf(stateEnums, name.stringValue); + + int newEnumIndex = EditorGUILayout.Popup(name.stringValue + " (" + bit.intValue + ")", enumIndex, stateEnums); + if (newEnumIndex == -1) { newEnumIndex = 0; } + + name.stringValue = stateEnums[newEnumIndex]; + index.intValue = newEnumIndex; + + if (InspectorUIUtility.SmallButton(RemoveStateLabel)) + { + stateList.DeleteArrayElementAtIndex(i); + break; + } + } + } + } + + if (InspectorUIUtility.FlexButton(AddStateLabel)) + { + stateList.InsertArrayElementAtIndex(stateList.arraySize); + } + + serializedObject.ApplyModifiedProperties(); + } + } +#endif +} diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/StatesInspector.cs.meta b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/StatesInspector.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/StatesInspector.cs.meta rename to Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/StatesInspector.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/ThemeInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/ThemeInspector.cs new file mode 100644 index 00000000000..714568781b4 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/ThemeInspector.cs @@ -0,0 +1,622 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using Microsoft.MixedReality.Toolkit.Utilities.Editor; +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.UI.Editor +{ +#if UNITY_EDITOR + /// + /// Inspector for themes, and used by Interactable + /// + [CustomEditor(typeof(Theme))] + public class ThemeInspector : UnityEditor.Editor + { + protected SerializedProperty themeDefinitions; + protected SerializedProperty states; + protected Theme theme; + protected State[] themeStates; + + private const float ThemeStateFontScale = 1.1f; + private const int ThemeBoxMargin = 25; + + private static readonly GUIContent AddThemePropertyLabel = new GUIContent("Add Theme Definition", "Add Theme Definition"); + private static readonly GUIContent RemoveThemePropertyContent = new GUIContent("Delete", "Remove Theme Definition"); + private static readonly GUIContent CreateAnimationsContent = new GUIContent("Create Animations", "Create and add an Animator with AnimationClips"); + private static readonly GUIContent EasingContent = new GUIContent("Easing", "should the theme animate state values"); + + public void OnEnable() + { + theme = target as Theme; + themeDefinitions = serializedObject.FindProperty("definitions"); + states = serializedObject.FindProperty("states"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + themeStates = theme.States?.StateList.ToArray(); + if (themeStates == null) + { + themeStates = new State[0]; + } + + // If no theme properties assigned, add a default one + if (themeDefinitions.arraySize < 1) + { + AddThemeDefinition(); + } + + RenderTheme(); + + serializedObject.ApplyModifiedProperties(); + } + + #region Rendering Methods + + public virtual void RenderTheme() + { + if (!RenderStates()) + { + serializedObject.ApplyModifiedProperties(); + return; + } + + EditorGUILayout.Space(); + + RenderThemeDefinitions(); + + } + + /// + /// draw the states property field for assigning states + /// Set the default state if one does not exist + /// + protected bool RenderStates() + { + using (new EditorGUILayout.VerticalScope()) + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + EditorGUILayout.PropertyField(states, new GUIContent("States", "The States this Interactable is based on")); + if (check.changed) + { + theme.States = states.objectReferenceValue as States; + theme.ValidateDefinitions(); + } + } + + if (states.objectReferenceValue == null || themeStates.Length < 1) + { + InspectorUIUtility.DrawError("Please assign a valid States object!"); + return false; + } + } + + return true; + } + + public void RenderThemeDefinitions() + { + GUIStyle box = InspectorUIUtility.HelpBox(EditorGUI.indentLevel * ThemeBoxMargin); + + // Loop through all InteractableThemePropertySettings of Theme + for (int index = 0; index < themeDefinitions.arraySize; index++) + { + using (new EditorGUILayout.VerticalScope(box)) + { + SerializedProperty themeDefinition = themeDefinitions.GetArrayElementAtIndex(index); + SerializedProperty className = themeDefinition.FindPropertyRelative("ClassName"); + + string themeDefinition_prefKey = theme.name + "_Definitions" + index; + bool show = false; + using (new EditorGUILayout.HorizontalScope()) + { + show = InspectorUIUtility.DrawSectionFoldoutWithKey(className.stringValue, themeDefinition_prefKey, MixedRealityStylesUtility.BoldFoldoutStyle); + + if (RenderDeleteButton(index)) + { + return; + } + } + + if (show) + { + EditorGUILayout.Space(); + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.LabelField("General Properties", EditorStyles.boldLabel); + + using (new EditorGUILayout.HorizontalScope()) + { + var themeTypes = TypeCacheUtility.GetSubClasses(); + var themeClassNames = themeTypes.Select(t => t?.Name).ToArray(); + int id = Array.IndexOf(themeClassNames, className.stringValue); + int newId = EditorGUILayout.Popup("Theme Runtime", id, themeClassNames); + + // Some old Themes did not properly save a value here + SerializedProperty assemblyQualifiedName = themeDefinition.FindPropertyRelative("AssemblyQualifiedName"); + if (string.IsNullOrEmpty(assemblyQualifiedName.stringValue) && newId != -1) + { + assemblyQualifiedName.stringValue = themeTypes[newId].AssemblyQualifiedName; + } + + // If user changed the theme type for current themeDefinition + if (id != newId && newId != -1) + { + Type oldType = id != -1 ? themeTypes[id] : null; + Type newType = themeTypes[newId]; + ChangeThemeDefinitionType(index, oldType, newType); + return; + } + } + + var themeType = theme.Definitions[index].ThemeType; + if (themeType != null) + { + SerializedProperty customProperties = themeDefinition.FindPropertyRelative("customProperties"); + RenderCustomProperties(customProperties); + + var themeExample = (InteractableThemeBase)Activator.CreateInstance(themeType); + + if (themeExample.IsEasingSupported) + { + RenderEasingProperties(themeDefinition); + } + + if (themeExample.AreShadersSupported) + { + RenderShaderProperties(themeDefinition); + } + + EditorGUILayout.Space(); + + RenderThemeStates(themeDefinition); + } + else + { + InspectorUIUtility.DrawError("Theme Runtime Type is not valid"); + } + } + } + } + } + + // If no theme properties assigned, add a default one + if (themeDefinitions.arraySize < 1 || GUILayout.Button(AddThemePropertyLabel)) + { + AddThemeDefinition(); + } + } + + private void RenderThemeStates(SerializedProperty themeDefinition) + { + EditorGUILayout.LabelField("State Properties", EditorStyles.boldLabel); + + using (new EditorGUI.IndentLevelScope()) + { + for (int n = 0; n < themeStates.Length; n++) + { + InspectorUIUtility.DrawLabel(themeStates[n].Name, (int)(InspectorUIUtility.DefaultFontSize * ThemeStateFontScale), InspectorUIUtility.ColorTint50); + SerializedProperty stateProperties = themeDefinition.FindPropertyRelative("stateProperties"); + using (new EditorGUI.IndentLevelScope()) + { + for (int i = 0; i < stateProperties.arraySize; i++) + { + SerializedProperty propertyItem = stateProperties.GetArrayElementAtIndex(i); + SerializedProperty values = propertyItem.FindPropertyRelative("values"); + + if (n >= values.arraySize) + { + // This property does not have the correct number of state values + continue; + } + + SerializedProperty name = propertyItem.FindPropertyRelative("name"); + SerializedProperty type = propertyItem.FindPropertyRelative("type"); + SerializedProperty statePropertyValue = values.GetArrayElementAtIndex(n); + + RenderValue(statePropertyValue, name.stringValue, (ThemePropertyTypes)type.intValue); + } + } + } + GUILayout.Space(5); + } + GUILayout.Space(5); + } + + /// + /// Renders easing and related time properties for InteractableThemePropertySettings + /// + /// Serialized property of a ThemeDefinition object + private static void RenderEasingProperties(SerializedProperty themeDefinition) + { + SerializedProperty easing = themeDefinition.FindPropertyRelative("easing"); + SerializedProperty enabled = easing.FindPropertyRelative("Enabled"); + + enabled.boolValue = EditorGUILayout.Toggle(EasingContent, enabled.boolValue); + + if (enabled.boolValue) + { + using (new EditorGUI.IndentLevelScope()) + { + SerializedProperty time = easing.FindPropertyRelative("LerpTime"); + SerializedProperty curve = easing.FindPropertyRelative("Curve"); + + EditorGUILayout.PropertyField(time, new GUIContent("Duration", "Duration for easing between values in seconds")); + EditorGUILayout.PropertyField(curve, new GUIContent("Animation Curve", "Curve that defines rate of easing between values")); + } + } + } + + private static void RenderShaderProperties(SerializedProperty themeDefinition) + { + SerializedProperty stateProperties = themeDefinition.FindPropertyRelative("stateProperties"); + + for (int i = 0; i < stateProperties.arraySize; i++) + { + SerializedProperty stateProperty = stateProperties.GetArrayElementAtIndex(i); + SerializedProperty type = stateProperty.FindPropertyRelative("type"); + + if (ThemeStateProperty.IsShaderPropertyType((ThemePropertyTypes)type.enumValueIndex)) + { + SerializedProperty statePropertyName = stateProperty.FindPropertyRelative("name"); + SerializedProperty shader = stateProperty.FindPropertyRelative("targetShader"); + SerializedProperty shaderPropertyname = stateProperty.FindPropertyRelative("shaderPropertyName"); + + // Temporary workaround to help migrate old ThemeDefinitions to new model if applicable + MigrateShaderData(stateProperty, shader, shaderPropertyname); + + EditorGUILayout.PropertyField(shader, new GUIContent(statePropertyName.stringValue + " Shader"), false); + + var propertyList = GetShaderPropertyList(shader.objectReferenceValue as Shader, GetShaderPropertyFilter((ThemePropertyTypes)type.enumValueIndex)); + int selectedIndex = propertyList.IndexOf(shaderPropertyname.stringValue); + + int newIndex = EditorGUILayout.Popup(statePropertyName.stringValue + " Property", selectedIndex, propertyList.ToArray()); + if (newIndex != selectedIndex) + { + shaderPropertyname.stringValue = propertyList[newIndex]; + } + } + } + } + + /// + /// Temporary utility function to migrate shader data from deprecated properties to new valid properties + /// + private static void MigrateShaderData(SerializedProperty stateProperty, SerializedProperty shader, SerializedProperty shaderPropertyname) + { + if (shader.objectReferenceValue == null) + { + SerializedProperty shaderOptions = stateProperty.FindPropertyRelative("ShaderOptions"); + if (shaderOptions.arraySize > 0) + { + var shaderName = stateProperty.FindPropertyRelative("ShaderName"); + var shaderOptionNames = stateProperty.FindPropertyRelative("ShaderOptionNames"); + var shaderOptionIndex = stateProperty.FindPropertyRelative("PropId"); + var shaderOption = shaderOptionNames.GetArrayElementAtIndex(shaderOptionIndex.intValue); + + // Migrate data over to new model + shader.objectReferenceValue = Shader.Find(shaderName.stringValue); + shaderPropertyname.stringValue = shaderOption.stringValue; + + // Wipe old data from trigering this again + shaderOptions.ClearArray(); + + stateProperty.serializedObject.ApplyModifiedProperties(); + } + else + { + shader.objectReferenceValue = StandardShaderUtility.MrtkStandardShader; + + SerializedProperty type = stateProperty.FindPropertyRelative("type"); + if (type.enumValueIndex == (int)ThemePropertyTypes.Color) + { + shaderPropertyname.stringValue = "_Color"; + } + else if (type.enumValueIndex == (int)ThemePropertyTypes.Texture) + { + shaderPropertyname.stringValue = "_MainTex"; + } + } + } + } + + /// + /// Render list of custom settings part of a InteractableThemePropertySettings object + /// + /// SerializedProperty for InteractableThemePropertySettings.CustomSettings + private static void RenderCustomProperties(SerializedProperty customProperties) + { + for (int p = 0; p < customProperties.arraySize; p++) + { + SerializedProperty item = customProperties.GetArrayElementAtIndex(p); + SerializedProperty name = item.FindPropertyRelative("Name"); + SerializedProperty propType = item.FindPropertyRelative("Type"); + SerializedProperty value = item.FindPropertyRelative("Value"); + ThemePropertyTypes type = (ThemePropertyTypes)propType.intValue; + + RenderValue(value, name.stringValue, type); + } + } + + /// + /// Render a single property value + /// + public static void RenderValue(SerializedProperty item, string name, ThemePropertyTypes type) + { + SerializedProperty floatValue = item.FindPropertyRelative("Float"); + SerializedProperty vector2Value = item.FindPropertyRelative("Vector2"); + SerializedProperty stringValue = item.FindPropertyRelative("String"); + + switch (type) + { + case ThemePropertyTypes.Float: + floatValue.floatValue = EditorGUILayout.FloatField(name, floatValue.floatValue); + break; + case ThemePropertyTypes.Int: + SerializedProperty intValue = item.FindPropertyRelative("Int"); + intValue.intValue = EditorGUILayout.IntField(name, intValue.intValue); + break; + case ThemePropertyTypes.Color: + SerializedProperty colorValue = item.FindPropertyRelative("Color"); + colorValue.colorValue = EditorGUILayout.ColorField(name, colorValue.colorValue); + break; + case ThemePropertyTypes.ShaderFloat: + floatValue.floatValue = EditorGUILayout.FloatField(name, floatValue.floatValue); + break; + case ThemePropertyTypes.ShaderRange: + vector2Value.vector2Value = EditorGUILayout.Vector2Field(name, vector2Value.vector2Value); + break; + case ThemePropertyTypes.Vector2: + vector2Value.vector2Value = EditorGUILayout.Vector2Field(name, vector2Value.vector2Value); + break; + case ThemePropertyTypes.Vector3: + SerializedProperty vector3Value = item.FindPropertyRelative("Vector3"); + vector3Value.vector3Value = EditorGUILayout.Vector3Field(name, vector3Value.vector3Value); + break; + case ThemePropertyTypes.Vector4: + SerializedProperty vector4Value = item.FindPropertyRelative("Vector4"); + vector4Value.vector4Value = EditorGUILayout.Vector4Field(name, vector4Value.vector4Value); + break; + case ThemePropertyTypes.Quaternion: + SerializedProperty quaternionValue = item.FindPropertyRelative("Quaternion"); + Vector4 vect4 = new Vector4(quaternionValue.quaternionValue.x, quaternionValue.quaternionValue.y, quaternionValue.quaternionValue.z, quaternionValue.quaternionValue.w); + vect4 = EditorGUILayout.Vector4Field(name, vect4); + quaternionValue.quaternionValue = new Quaternion(vect4.x, vect4.y, vect4.z, vect4.w); + break; + case ThemePropertyTypes.Texture: + SerializedProperty texture = item.FindPropertyRelative("Texture"); + EditorGUILayout.PropertyField(texture, new GUIContent(name, ""), false); + break; + case ThemePropertyTypes.Material: + SerializedProperty material = item.FindPropertyRelative("Material"); + EditorGUILayout.PropertyField(material, new GUIContent(name, ""), false); + break; + case ThemePropertyTypes.AudioClip: + SerializedProperty audio = item.FindPropertyRelative("AudioClip"); + EditorGUILayout.PropertyField(audio, new GUIContent(name, ""), false); + break; + case ThemePropertyTypes.Animaiton: + SerializedProperty animation = item.FindPropertyRelative("Animation"); + EditorGUILayout.PropertyField(animation, new GUIContent(name, ""), false); + break; + case ThemePropertyTypes.GameObject: + SerializedProperty gameObjectValue = item.FindPropertyRelative("GameObject"); + EditorGUILayout.PropertyField(gameObjectValue, new GUIContent(name, ""), false); + break; + case ThemePropertyTypes.String: + stringValue.stringValue = EditorGUILayout.TextField(name, stringValue.stringValue); + break; + case ThemePropertyTypes.Bool: + SerializedProperty boolValue = item.FindPropertyRelative("Bool"); + boolValue.boolValue = EditorGUILayout.Toggle(name, boolValue.boolValue); + break; + case ThemePropertyTypes.AnimatorTrigger: + stringValue.stringValue = EditorGUILayout.TextField(name, stringValue.stringValue); + break; + case ThemePropertyTypes.Shader: + SerializedProperty shaderObjectValue = item.FindPropertyRelative("Shader"); + EditorGUILayout.PropertyField(shaderObjectValue, new GUIContent(name, ""), false); + break; + default: + break; + } + } + + protected bool RenderDeleteButton(int index) + { + // Create Delete button if we have an array of themes + if (themeDefinitions.arraySize > 1 && InspectorUIUtility.SmallButton(RemoveThemePropertyContent)) + { + ClearHistoryCache(index); + DeleteThemeDefinition((uint)index); + + serializedObject.Update(); + EditorUtility.SetDirty(theme); + return true; + } + + return false; + } + + #endregion + + #region Theme Definition Management + + protected virtual void AddThemeDefinition() + { + Type defaultType = typeof(InteractableActivateTheme); + + ThemeDefinition newDefinition = ThemeDefinition.GetDefaultThemeDefinition(defaultType).Value; + if (theme.Definitions == null) + { + theme.Definitions = new List(); + } + theme.Definitions.Add(newDefinition); + theme.History.Add(new Dictionary()); + theme.ValidateDefinitions(); + + serializedObject.Update(); + EditorUtility.SetDirty(theme); + } + + protected void DeleteThemeDefinition(uint index) + { + if (!(theme != null && theme.Definitions != null && index < theme.Definitions.Count)) + { + Debug.LogError("Cannot delete ThemeDefinition. Invalid Theme object"); + return; + } + + theme.Definitions.RemoveAt((int)index); + } + + private void ChangeThemeDefinitionType(int index, Type oldType, Type newType) + { + // Save theme definition to cache + SaveThemeDefinitionHistory(index, oldType); + + // Try to load theme from history cache + ThemeDefinition? definition = LoadThemeDefinitionHistory(index, newType); + if (definition == null) + { + // if not available, then create a new one + definition = ThemeDefinition.GetDefaultThemeDefinition(newType); + } + + theme.Definitions[index] = definition.Value; + theme.ValidateDefinitions(); + + themeDefinitions.serializedObject.Update(); + EditorUtility.SetDirty(theme); + } + + #endregion + + #region Theme Definition History + + protected void ClearHistoryCache(int index) + { + if (theme == null || theme.History == null || index >= theme.History.Count) + { + return; + } + + theme.History.RemoveAt(index); + } + + /// + /// Check that access for the provided index is valid into the definitions and history of the provided Theme + /// + /// Theme container object to inspector + /// index of ThemeDefinintion and History cache to access + /// true if access at index is possible, false otherwise + private static bool ValidThemeHistoryAccess(Theme target, uint index) + { + return target != null && target.History != null && target.Definitions != null + && index < target.History.Count; + } + + protected void SaveThemeDefinitionHistory(int index, Type definitionClassType) + { + if (definitionClassType == null) + { + return; + } + + if (theme == null || theme.History == null || theme.Definitions == null) + { + Debug.LogWarning("Could not save ThemeDefinition to history cache"); + return; + } + + // If cache list is out of sync for some reason, wipe and start fresh + if (theme.History.Count != theme.Definitions.Count) + { + theme.History.Clear(); + for (int i = 0; i < theme.Definitions.Count; i++) + { + theme.History.Add(new Dictionary()); + } + } + + var definition = theme.Definitions[index]; + var cache = theme.History[index]; + cache[definitionClassType] = definition; + } + + protected ThemeDefinition? LoadThemeDefinitionHistory(int index, Type newDefinitionClassType) + { + if (!ValidThemeHistoryAccess(theme, (uint)index)) + { + Debug.LogWarning("Could not load ThemeDefinition to history cache"); + return null; + } + + var cache = theme.History[index]; + if (cache.ContainsKey(newDefinitionClassType)) + { + return cache[newDefinitionClassType]; + } + else + { + return null; + } + } + + #endregion + + private static ShaderUtil.ShaderPropertyType[] GetShaderPropertyFilter(ThemePropertyTypes shaderPropertyType) + { + ShaderUtil.ShaderPropertyType[] shaderTypes = null; + switch (shaderPropertyType) + { + case ThemePropertyTypes.Color: + shaderTypes = new ShaderUtil.ShaderPropertyType[] { ShaderUtil.ShaderPropertyType.Color }; + break; + case ThemePropertyTypes.Texture: + shaderTypes = new ShaderUtil.ShaderPropertyType[] { ShaderUtil.ShaderPropertyType.TexEnv }; + break; + case ThemePropertyTypes.ShaderFloat: + case ThemePropertyTypes.ShaderRange: + shaderTypes = new ShaderUtil.ShaderPropertyType[] { ShaderUtil.ShaderPropertyType.Float, ShaderUtil.ShaderPropertyType.Range }; + break; + } + + return shaderTypes; + } + + private static List GetShaderPropertyList(Shader shader, ShaderUtil.ShaderPropertyType[] filterTypes = null) + { + List results = new List(); + + if (shader == null) return results; + + int count = ShaderUtil.GetPropertyCount(shader); + results.Capacity = count; + + for (int i = 0; i < count; i++) + { + bool isHidden = ShaderUtil.IsShaderPropertyHidden(shader, i); + bool isValidPropertyType = filterTypes == null || filterTypes.Contains(ShaderUtil.GetPropertyType(shader, i)); + if (!isHidden && isValidPropertyType) + { + results.Add(ShaderUtil.GetPropertyName(shader, i)); + } + } + + results.Sort(); + return results; + } + } +#endif +} diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/ThemeInspector.cs.meta b/Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/ThemeInspector.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.SDK/Inspectors/UX/Interactable/ThemeInspector.cs.meta rename to Assets/MixedRealityToolkit.SDK/Inspectors/UX/VisualThemes/ThemeInspector.cs.meta diff --git a/Assets/MixedRealityToolkit.SDK/Inspectors/Utilities/Solvers/SolverInspector.cs b/Assets/MixedRealityToolkit.SDK/Inspectors/Utilities/Solvers/SolverInspector.cs index 1a6641eb153..6e0f0011dad 100644 --- a/Assets/MixedRealityToolkit.SDK/Inspectors/Utilities/Solvers/SolverInspector.cs +++ b/Assets/MixedRealityToolkit.SDK/Inspectors/Utilities/Solvers/SolverInspector.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Utilities.Solvers; @@ -44,4 +44,4 @@ public override void OnInspectorGUI() serializedObject.ApplyModifiedProperties(); } } -} \ No newline at end of file +} diff --git a/Assets/MixedRealityToolkit.SDK/MRTK.SDK.sentinel b/Assets/MixedRealityToolkit.SDK/MRTK.SDK.sentinel new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Assets/MixedRealityToolkit.SDK/MRTK.SDK.sentinel.meta b/Assets/MixedRealityToolkit.SDK/MRTK.SDK.sentinel.meta new file mode 100644 index 00000000000..78dbdbb9928 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/MRTK.SDK.sentinel.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 864352254c16b15409725d9eb8efcbda +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Microsoft.MixedReality.Toolkit.SDK.asmdef b/Assets/MixedRealityToolkit.SDK/Microsoft.MixedReality.Toolkit.SDK.asmdef index bcf274b5835..7d1762ac9a2 100644 --- a/Assets/MixedRealityToolkit.SDK/Microsoft.MixedReality.Toolkit.SDK.asmdef +++ b/Assets/MixedRealityToolkit.SDK/Microsoft.MixedReality.Toolkit.SDK.asmdef @@ -5,9 +5,10 @@ "Microsoft.MixedReality.Toolkit.Async", "Microsoft.MixedReality.Toolkit.Editor.Inspectors", "Microsoft.MixedReality.Toolkit.Editor.Utilities", + "Microsoft.MixedReality.Toolkit.Services.InputAnimation", + "Microsoft.MixedReality.Toolkit.Services.InputSimulation", "Microsoft.MixedReality.Toolkit.Services.InputSystem", - "Unity.TextMeshPro", - "Microsoft.MixedReality.Toolkit.Services.InputAnimation" + "Unity.TextMeshPro" ], "optionalUnityReferences": [], "includePlatforms": [], diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityControllerMappingProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityControllerMappingProfile.asset index c6a4c2addae..80b18815ca0 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityControllerMappingProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityControllerMappingProfile.asset @@ -13,7 +13,7 @@ MonoBehaviour: m_Name: DefaultMixedRealityControllerMappingProfile m_EditorClassIdentifier: isCustomProfile: 0 - mixedRealityControllerMappingProfiles: + mixedRealityControllerMappings: - controllerType: reference: Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input.WindowsMixedRealityArticulatedHand, Microsoft.MixedReality.Toolkit.Providers.WindowsMixedReality @@ -1069,8 +1069,8 @@ MonoBehaviour: id: 1 description: Select axisConstraint: 2 - keyCode: 344 - axisCodeX: + keyCode: 0 + axisCodeX: AXIS_9 axisCodeY: invertXAxis: 0 invertYAxis: 0 @@ -1134,7 +1134,7 @@ MonoBehaviour: id: 0 description: None axisConstraint: 0 - keyCode: 346 + keyCode: 338 axisCodeX: axisCodeY: invertXAxis: 0 @@ -1173,7 +1173,7 @@ MonoBehaviour: id: 2 description: Menu axisConstraint: 2 - keyCode: 337 + keyCode: 336 axisCodeX: axisCodeY: invertXAxis: 0 @@ -1295,8 +1295,8 @@ MonoBehaviour: id: 1 description: Select axisConstraint: 2 - keyCode: 345 - axisCodeX: + keyCode: 0 + axisCodeX: AXIS_10 axisCodeY: invertXAxis: 0 invertYAxis: 0 @@ -1360,7 +1360,7 @@ MonoBehaviour: id: 0 description: None axisConstraint: 0 - keyCode: 347 + keyCode: 339 axisCodeX: axisCodeY: invertXAxis: 0 @@ -1475,9 +1475,9 @@ MonoBehaviour: invertXAxis: 0 invertYAxis: 0 - id: 2 - description: Trigger Press + description: Trigger Press (Select) axisType: 2 - inputType: 13 + inputType: 25 inputAction: id: 1 description: Select @@ -1662,9 +1662,9 @@ MonoBehaviour: invertXAxis: 0 invertYAxis: 0 - id: 2 - description: Trigger Press + description: Trigger Press (Select) axisType: 2 - inputType: 13 + inputType: 25 inputAction: id: 1 description: Select @@ -1848,9 +1848,9 @@ MonoBehaviour: invertXAxis: 0 invertYAxis: 0 - id: 2 - description: Trigger Press + description: Trigger Press (Select) axisType: 2 - inputType: 13 + inputType: 25 inputAction: id: 1 description: Select @@ -1969,9 +1969,9 @@ MonoBehaviour: invertXAxis: 0 invertYAxis: 0 - id: 2 - description: Trigger Press + description: Trigger Press (Select) axisType: 2 - inputType: 13 + inputType: 25 inputAction: id: 1 description: Select @@ -2132,7 +2132,7 @@ MonoBehaviour: - id: 5 description: Trigger Press (Select) axisType: 2 - inputType: 13 + inputType: 25 inputAction: id: 1 description: Select @@ -2254,7 +2254,7 @@ MonoBehaviour: - id: 2 description: Grip Press axisType: 3 - inputType: 7 + inputType: 13 inputAction: id: 7 description: Grip Press @@ -2293,7 +2293,7 @@ MonoBehaviour: - id: 5 description: Trigger Press (Select) axisType: 2 - inputType: 13 + inputType: 25 inputAction: id: 1 description: Select @@ -2579,37 +2579,6 @@ MonoBehaviour: axisCodeY: invertXAxis: 0 invertYAxis: 0 - - controllerType: - reference: Microsoft.MixedReality.Toolkit.Services.InputSimulation.SimulatedGestureHand, - Microsoft.MixedReality.Toolkit.Services.InputSimulation - handedness: 2 - interactions: - - id: 0 - description: Select - axisType: 2 - inputType: 25 - inputAction: - id: 1 - description: Select - axisConstraint: 2 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 1 - description: Grip Pose - axisType: 7 - inputType: 14 - inputAction: - id: 3 - description: Grip Pose - axisConstraint: 7 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - controllerType: reference: Microsoft.MixedReality.Toolkit.OpenVR.Input.GenericOpenVRController, Microsoft.MixedReality.Toolkit.Providers.OpenVR @@ -2644,7 +2613,7 @@ MonoBehaviour: - id: 2 description: Trigger Press (Select) axisType: 2 - inputType: 13 + inputType: 25 inputAction: id: 1 description: Select @@ -2818,7 +2787,7 @@ MonoBehaviour: - id: 2 description: Trigger Press (Select) axisType: 2 - inputType: 13 + inputType: 25 inputAction: id: 1 description: Select @@ -2958,174 +2927,3 @@ MonoBehaviour: axisCodeY: invertXAxis: 0 invertYAxis: 0 - - controllerType: - reference: Microsoft.MixedReality.Toolkit.Services.InputSimulation.SimulatedArticulatedHand, - Microsoft.MixedReality.Toolkit.Services.InputSimulation - handedness: 1 - interactions: - - id: 0 - description: Spatial Pointer - axisType: 7 - inputType: 3 - inputAction: - id: 4 - description: Pointer Pose - axisConstraint: 7 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 1 - description: Spatial Grip - axisType: 7 - inputType: 14 - inputAction: - id: 3 - description: Grip Pose - axisConstraint: 7 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 2 - description: Select - axisType: 2 - inputType: 25 - inputAction: - id: 1 - description: Select - axisConstraint: 2 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 3 - description: Grab - axisType: 3 - inputType: 13 - inputAction: - id: 7 - description: Grip Press - axisConstraint: 3 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 4 - description: Index Finger Pose - axisType: 7 - inputType: 33 - inputAction: - id: 13 - description: Index Finger Pose - axisConstraint: 7 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - controllerType: - reference: Microsoft.MixedReality.Toolkit.Services.InputSimulation.SimulatedArticulatedHand, - Microsoft.MixedReality.Toolkit.Services.InputSimulation - handedness: 2 - interactions: - - id: 0 - description: Spatial Pointer - axisType: 7 - inputType: 3 - inputAction: - id: 4 - description: Pointer Pose - axisConstraint: 7 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 1 - description: Spatial Grip - axisType: 7 - inputType: 14 - inputAction: - id: 3 - description: Grip Pose - axisConstraint: 7 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 2 - description: Select - axisType: 2 - inputType: 25 - inputAction: - id: 1 - description: Select - axisConstraint: 2 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 3 - description: Grab - axisType: 3 - inputType: 13 - inputAction: - id: 7 - description: Grip Press - axisConstraint: 3 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 4 - description: Index Finger Pose - axisType: 7 - inputType: 33 - inputAction: - id: 13 - description: Index Finger Pose - axisConstraint: 7 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - controllerType: - reference: Microsoft.MixedReality.Toolkit.Services.InputSimulation.SimulatedGestureHand, - Microsoft.MixedReality.Toolkit.Services.InputSimulation - handedness: 1 - interactions: - - id: 0 - description: Select - axisType: 2 - inputType: 25 - inputAction: - id: 1 - description: Select - axisConstraint: 2 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 - - id: 1 - description: Grip Pose - axisType: 7 - inputType: 14 - inputAction: - id: 3 - description: Grip Pose - axisConstraint: 7 - keyCode: 0 - axisCodeX: - axisCodeY: - invertXAxis: 0 - invertYAxis: 0 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityGesturesProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityGesturesProfile.asset index d8586092798..939f4a0c42d 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityGesturesProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityGesturesProfile.asset @@ -13,7 +13,7 @@ MonoBehaviour: m_Name: DefaultMixedRealityGesturesProfile m_EditorClassIdentifier: isCustomProfile: 0 - manipulationGestures: 12 + manipulationGestures: 13 navigationGestures: 112 useRailsNavigation: 0 railsNavigationGestures: 896 @@ -37,3 +37,9 @@ MonoBehaviour: id: 9 description: Manipulate Action axisConstraint: 0 + - description: Tap + gestureType: 4 + action: + id: 1 + description: Select + axisConstraint: 2 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityHandTrackingProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityHandTrackingProfile.asset index be21e54589c..8623dc856c3 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityHandTrackingProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityHandTrackingProfile.asset @@ -21,5 +21,5 @@ MonoBehaviour: type: 3} handMeshPrefab: {fileID: 1887883006053652, guid: a86f479797fea8f4189f924b3b6ad979, type: 3} - enableHandMeshVisualization: 1 - enableHandJointVisualization: 1 + handMeshVisualizationModes: -1 + handJointVisualizationModes: -1 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputRecordingProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputRecordingProfile.asset index a4cfa88a9ae..8227ba78bfd 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputRecordingProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputRecordingProfile.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3e721f74104fc5e498856a7c337d6632, type: 3} m_Name: DefaultMixedRealityInputRecordingProfile m_EditorClassIdentifier: - isCustomProfile: 1 + isCustomProfile: 0 jointPositionThreshold: 0.001 jointRotationThreshold: 0.02 cameraPositionThreshold: 0.002 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputSimulationProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputSimulationProfile.asset index deb31e32130..5e91e59225d 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputSimulationProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputSimulationProfile.asset @@ -13,28 +13,49 @@ MonoBehaviour: m_Name: DefaultMixedRealityInputSimulationProfile m_EditorClassIdentifier: isCustomProfile: 0 + indicatorsPrefab: {fileID: 0} + mouseRotationSensitivity: 0.1 + mouseX: Mouse X + mouseY: Mouse Y + mouseScroll: Mouse ScrollWheel + doublePressTime: 0.4 isCameraControlEnabled: 1 - extraMouseSensitivityScale: 3 - defaultMouseSensitivity: 0.1 - mouseLookButton: 1 + mouseLookSpeed: 3 + mouseLookButton: + bindingType: 1 + code: 1 + mouseLookToggle: 0 isControllerLookInverted: 1 currentControlMode: 0 - fastControlKey: 305 + fastControlKey: + bindingType: 2 + code: 305 controlSlowSpeed: 0.1 controlFastSpeed: 1 moveHorizontal: Horizontal moveVertical: Vertical - mouseX: Mouse X - mouseY: Mouse Y + moveUpDown: UpDown lookHorizontal: AXIS_4 lookVertical: AXIS_5 simulateEyePosition: 0 - handSimulationMode: 2 - toggleLeftHandKey: 116 - toggleRightHandKey: 121 + defaultHandSimulationMode: 2 + toggleLeftHandKey: + bindingType: 2 + code: 116 + toggleRightHandKey: + bindingType: 2 + code: 121 handHideTimeout: 0.2 - leftHandManipulationKey: 304 - rightHandManipulationKey: 32 + leftHandManipulationKey: + bindingType: 2 + code: 304 + rightHandManipulationKey: + bindingType: 2 + code: 32 + mouseHandRotationSpeed: 30 + handRotateButton: + bindingType: 2 + code: 306 defaultHandGesture: 2 leftMouseHandGesture: 3 middleMouseHandGesture: 0 @@ -43,12 +64,5 @@ MonoBehaviour: holdStartDuration: 0.5 navigationStartThreshold: 0.03 defaultHandDistance: 0.5 - handDepthMultiplier: 0.1 + handDepthMultiplier: 0.03 handJitterAmount: 0 - yawHandCWKey: 101 - yawHandCCWKey: 113 - pitchHandCWKey: 102 - pitchHandCCWKey: 114 - rollHandCWKey: 120 - rollHandCCWKey: 122 - handRotationSpeed: 100 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputSystemProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputSystemProfile.asset index 79a29ac4a48..ac81a219f8f 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputSystemProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityInputSystemProfile.asset @@ -77,10 +77,10 @@ MonoBehaviour: deviceManagerProfile: {fileID: 11400000, guid: d0f5a7f6d1f9f0b4cb6eb35c797a0f04, type: 2} - componentType: - reference: Microsoft.MixedReality.Toolkit.Input.InputPlaybackService, Microsoft.MixedReality.Toolkit.Services.InputAnimation + reference: Microsoft.MixedReality.Toolkit.Input.InputPlaybackService, Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor componentName: Input Playback Service priority: 0 - runtimePlatform: -1 + runtimePlatform: 208 deviceManagerProfile: {fileID: 0} focusProviderType: reference: Microsoft.MixedReality.Toolkit.Input.FocusProvider, Microsoft.MixedReality.Toolkit.Services.InputSystem diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityMouseInputProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityMouseInputProfile.asset index 6868b187974..4750c0bb89e 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityMouseInputProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealityMouseInputProfile.asset @@ -13,4 +13,5 @@ MonoBehaviour: m_Name: DefaultMixedRealityMouseInputProfile m_EditorClassIdentifier: isCustomProfile: 0 - mouseSpeed: 0.25 + cursorSpeed: 1 + wheelSpeed: 1 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealitySceneSystemProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealitySceneSystemProfile.asset index 2f77aef43a4..238d7095bb3 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealitySceneSystemProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealitySceneSystemProfile.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b81dae1d46879b444aa9847f7961649f, type: 3} m_Name: DefaultMixedRealitySceneSystemProfile m_EditorClassIdentifier: - isCustomProfile: 1 + isCustomProfile: 0 useManagerScene: 1 managerScene: Name: DefaultManagerScene diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealitySpatialAwarenessSystemProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealitySpatialAwarenessSystemProfile.asset index 504e973e598..258255818f6 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealitySpatialAwarenessSystemProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/DefaultMixedRealitySpatialAwarenessSystemProfile.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 19f279aded72cb741b4de89a54359dd4, type: 3} m_Name: DefaultMixedRealitySpatialAwarenessSystemProfile m_EditorClassIdentifier: - isCustomProfile: 1 + isCustomProfile: 0 observerConfigurations: - componentType: reference: Microsoft.MixedReality.Toolkit.WindowsMixedReality.SpatialAwareness.WindowsMixedRealitySpatialMeshObserver, diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1HandTrackingProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1HandTrackingProfile.asset index 3e933063882..b072f017922 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1HandTrackingProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1HandTrackingProfile.asset @@ -21,5 +21,5 @@ MonoBehaviour: type: 3} handMeshPrefab: {fileID: 1887883006053652, guid: a86f479797fea8f4189f924b3b6ad979, type: 3} - enableHandMeshVisualization: 0 - enableHandJointVisualization: 1 + handMeshVisualizationModes: 0 + handJointVisualizationModes: 1 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1InputSimulationProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1InputSimulationProfile.asset index 27e8e31caa6..26c614290ae 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1InputSimulationProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1InputSimulationProfile.asset @@ -12,29 +12,50 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 78a4b02a0d9e7044fa19c6d432d0cafa, type: 3} m_Name: DefaultHoloLens1InputSimulationProfile m_EditorClassIdentifier: - isCustomProfile: 1 + isCustomProfile: 0 + indicatorsPrefab: {fileID: 0} + mouseRotationSensitivity: 0.1 + mouseX: Mouse X + mouseY: Mouse Y + mouseScroll: Mouse ScrollWheel + doublePressTime: 0.4 isCameraControlEnabled: 1 - extraMouseSensitivityScale: 3 - defaultMouseSensitivity: 0.1 - mouseLookButton: 1 + mouseLookSpeed: 3 + mouseLookButton: + bindingType: 1 + code: 1 + mouseLookToggle: 0 isControllerLookInverted: 1 currentControlMode: 0 - fastControlKey: 305 + fastControlKey: + bindingType: 2 + code: 305 controlSlowSpeed: 0.1 controlFastSpeed: 1 moveHorizontal: Horizontal moveVertical: Vertical - mouseX: Mouse X - mouseY: Mouse Y + moveUpDown: UpDown lookHorizontal: AXIS_4 lookVertical: AXIS_5 simulateEyePosition: 0 - handSimulationMode: 1 - toggleLeftHandKey: 116 - toggleRightHandKey: 121 + defaultHandSimulationMode: 1 + toggleLeftHandKey: + bindingType: 2 + code: 116 + toggleRightHandKey: + bindingType: 2 + code: 121 handHideTimeout: 0.2 - leftHandManipulationKey: 304 - rightHandManipulationKey: 32 + leftHandManipulationKey: + bindingType: 2 + code: 304 + rightHandManipulationKey: + bindingType: 2 + code: 32 + mouseHandRotationSpeed: 30 + handRotateButton: + bindingType: 2 + code: 306 defaultHandGesture: 2 leftMouseHandGesture: 3 middleMouseHandGesture: 0 @@ -43,12 +64,5 @@ MonoBehaviour: holdStartDuration: 0.5 navigationStartThreshold: 0.03 defaultHandDistance: 0.5 - handDepthMultiplier: 0.1 + handDepthMultiplier: 0.03 handJitterAmount: 0 - yawHandCWKey: 101 - yawHandCCWKey: 113 - pitchHandCWKey: 102 - pitchHandCCWKey: 114 - rollHandCWKey: 120 - rollHandCCWKey: 122 - handRotationSpeed: 100 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1InputSystemProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1InputSystemProfile.asset index c390dac4b34..77da349d4a9 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1InputSystemProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens1/DefaultHoloLens1InputSystemProfile.asset @@ -85,16 +85,17 @@ MonoBehaviour: deviceManagerProfile: {fileID: 11400000, guid: d0f5a7f6d1f9f0b4cb6eb35c797a0f04, type: 2} - componentType: - reference: Microsoft.MixedReality.Toolkit.Input.InputPlaybackService, Microsoft.MixedReality.Toolkit.Services.InputAnimation + reference: Microsoft.MixedReality.Toolkit.Input.InputPlaybackService, Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor componentName: Input Playback Service priority: 0 - runtimePlatform: -1 + runtimePlatform: 208 deviceManagerProfile: {fileID: 0} focusProviderType: reference: Microsoft.MixedReality.Toolkit.Input.FocusProvider, Microsoft.MixedReality.Toolkit.Services.InputSystem raycastProviderType: reference: Microsoft.MixedReality.Toolkit.Input.DefaultRaycastProvider, Microsoft.MixedReality.Toolkit.Services.InputSystem focusQueryBufferSize: 128 + focusIndividualCompoundCollider: 0 inputActionsProfile: {fileID: 11400000, guid: 723eb97b02944311b92861f473eee53e, type: 2} inputActionRulesProfile: {fileID: 11400000, guid: 03945385d89102f41855bc8f5116b199, diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens2/DefaultHoloLens2HandTrackingProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens2/DefaultHoloLens2HandTrackingProfile.asset index 4b65db4c41c..890b79fbd05 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens2/DefaultHoloLens2HandTrackingProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens2/DefaultHoloLens2HandTrackingProfile.asset @@ -21,5 +21,5 @@ MonoBehaviour: type: 3} handMeshPrefab: {fileID: 1887883006053652, guid: a86f479797fea8f4189f924b3b6ad979, type: 3} - enableHandMeshVisualization: 0 - enableHandJointVisualization: 1 + handMeshVisualizationModes: 0 + handJointVisualizationModes: 1 diff --git a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens2/DefaultHoloLens2InputSystemProfile.asset b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens2/DefaultHoloLens2InputSystemProfile.asset index 81d107eca86..669814158c0 100644 --- a/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens2/DefaultHoloLens2InputSystemProfile.asset +++ b/Assets/MixedRealityToolkit.SDK/Profiles/HoloLens2/DefaultHoloLens2InputSystemProfile.asset @@ -85,10 +85,10 @@ MonoBehaviour: deviceManagerProfile: {fileID: 11400000, guid: d0f5a7f6d1f9f0b4cb6eb35c797a0f04, type: 2} - componentType: - reference: Microsoft.MixedReality.Toolkit.Input.InputPlaybackService, Microsoft.MixedReality.Toolkit.Services.InputAnimation + reference: Microsoft.MixedReality.Toolkit.Input.InputPlaybackService, Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor componentName: Input Playback Service priority: 0 - runtimePlatform: -1 + runtimePlatform: 208 deviceManagerProfile: {fileID: 0} focusProviderType: reference: Microsoft.MixedReality.Toolkit.Input.FocusProvider, Microsoft.MixedReality.Toolkit.Services.InputSystem diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLine.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLine.mat index 1f60c53da62..e7a937392a8 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLine.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLine.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -103,17 +104,21 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -130,6 +135,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -157,6 +163,11 @@ Material: - _UVSec: 0 - _UseUIAlphaClip: 0 - _VertexColors: 1 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 0 m_Colors: @@ -172,5 +183,8 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLineNoTarget.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLineNoTarget.mat index f7fc838500c..10898654d21 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLineNoTarget.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLineNoTarget.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -103,6 +104,7 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 @@ -110,11 +112,13 @@ Material: - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -131,6 +135,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -159,6 +164,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 1 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 @@ -177,5 +183,8 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_GrabPointerGrabPoint.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_GrabPointerGrabPoint.mat index d9ec9447f1e..485c38b7b3e 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_GrabPointerGrabPoint.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_GrabPointerGrabPoint.mat @@ -72,6 +72,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -102,6 +103,7 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 @@ -109,11 +111,13 @@ Material: - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -130,6 +134,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -158,6 +163,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 @@ -176,5 +182,8 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_GrabPointerTetherLine.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_GrabPointerTetherLine.mat index 41055cff6ed..90701d5e11a 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_GrabPointerTetherLine.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_GrabPointerTetherLine.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -103,6 +104,7 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 @@ -110,11 +112,13 @@ Material: - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -131,6 +135,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -159,6 +164,7 @@ Material: - _UseUIAlphaClip: 0 - _VertexColors: 1 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 @@ -177,5 +183,8 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_PressableInteractablesButtonBox.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_PressableInteractablesButtonBox.mat index 0d2dcd08591..3d0fd72e942 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_PressableInteractablesButtonBox.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_PressableInteractablesButtonBox.mat @@ -77,6 +77,7 @@ Material: - _FadeMinValue: 0 - _FluentLightIntensity: 1 - _HoverLight: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 24.5 - _InstancedColor: 0 @@ -112,6 +113,7 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Slider_Default.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Slider_Default.mat index b659e6135a9..6180b710e9d 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Slider_Default.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Slider_Default.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -103,17 +104,21 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 1 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -130,6 +135,7 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 1 + - _ProximityLightSubtractive: 0 - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 @@ -152,6 +158,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -168,4 +179,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Blue.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Blue.mat index a3ce5114463..16670aae16a 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Blue.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Blue.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0, g: 0.17241383, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Charcoal.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Charcoal.mat index 20c43455d81..8212faca6b2 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Charcoal.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Charcoal.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.108 - _BorderWidth: 0.132 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0.32352942, g: 0.32352942, b: 0.32352942, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Cyan.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Cyan.mat index 35b495da1fd..eb80ed4a35d 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Cyan.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Cyan.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -103,17 +104,21 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -130,6 +135,8 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -151,6 +158,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -167,4 +179,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Emerald.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Emerald.mat index fc27a05b170..6576a3c8c98 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Emerald.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Emerald.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -103,17 +104,21 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -130,6 +135,8 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -151,6 +158,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -167,4 +179,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_GlowingCyan.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_GlowingCyan.mat index ecb0364d097..49b0c4d6fa5 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_GlowingCyan.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_GlowingCyan.mat @@ -123,6 +123,7 @@ Material: - _GlossyReflections: 1 - _HoverLight: 1 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 1 - _InnerGlowPower: 4.9 - _InstancedColor: 0 @@ -162,6 +163,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Gray.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Gray.mat index dd0b02b9dba..d00e62d566d 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Gray.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Gray.mat @@ -45,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -67,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -90,25 +100,41 @@ Material: - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -121,16 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 - _Stencil: 0 - _StencilComparison: 0 - _StencilOperation: 0 - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -142,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Green.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Green.mat index 73df52641df..dd22f84bcf0 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Green.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Green.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0, g: 0.6911765, b: 0.17636906, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_LightGray.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_LightGray.mat index eb36df693bc..5605c35206a 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_LightGray.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_LightGray.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -103,17 +104,21 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -130,6 +135,8 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -151,6 +158,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -167,4 +179,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Lime.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Lime.mat index 1ab5a13c48e..6b594cbf050 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Lime.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Lime.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0.61972624, g: 0.8897059, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_LimeDesaturated.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_LimeDesaturated.mat index 9d97b882416..bb6a69f66b7 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_LimeDesaturated.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_LimeDesaturated.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -117,6 +118,7 @@ Material: - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -157,6 +159,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Magenta.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Magenta.mat index af663c7f12c..21047d3976a 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Magenta.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Magenta.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 1, g: 0, b: 0.84827566, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Orange.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Orange.mat index 73153aecfe7..d3206232123 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Orange.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Orange.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -103,17 +104,21 @@ Material: - _EnableHoverColorOverride: 0 - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -130,6 +135,8 @@ Material: - _OcclusionStrength: 1 - _Parallax: 0.02 - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -151,6 +158,11 @@ Material: - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: @@ -167,4 +179,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Purple.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Purple.mat index cd4ad30fd4c..29db0540989 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Purple.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Purple.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0.5724139, g: 0, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_PurpleDesaturated.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_PurpleDesaturated.mat index 03720980869..4c4e6485bed 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_PurpleDesaturated.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_PurpleDesaturated.mat @@ -73,6 +73,7 @@ Material: - _AlbedoAlphaMode: 0 - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 - _BorderLightOpaqueAlpha: 1 @@ -117,6 +118,7 @@ Material: - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -157,6 +159,7 @@ Material: - _UVSec: 0 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Red.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Red.mat index 7394a60e893..54acc289fed 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Red.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Red.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 1, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentBlue.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentBlue.mat index d5e75913357..2254f1d4499 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentBlue.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentBlue.mat @@ -45,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -67,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -90,25 +100,41 @@ Material: - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 2 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -121,16 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 5 - _Stencil: 0 - _StencilComparison: 0 - _StencilOperation: 0 - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 0 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0, g: 0.17241383, b: 1, a: 0.5019608} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -142,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentCyan.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentCyan.mat index e1590528ab0..1845c9a1151 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentCyan.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentCyan.mat @@ -45,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -67,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -90,25 +100,41 @@ Material: - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 2 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -121,16 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 5 - _Stencil: 0 - _StencilComparison: 0 - _StencilOperation: 0 - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 0 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0, g: 0.751724, b: 1, a: 0.5019608} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -142,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentEmerald.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentEmerald.mat index 51ae41195e9..8182de779de 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentEmerald.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentEmerald.mat @@ -45,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -67,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -90,25 +100,41 @@ Material: - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 2 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -121,16 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 5 - _Stencil: 0 - _StencilComparison: 0 - _StencilOperation: 0 - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 0 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0, g: 0.75, b: 0.75, a: 0.5019608} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -142,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentGray.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentGray.mat index c88aff45a21..24f9c37d286 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentGray.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentGray.mat @@ -45,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -67,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -90,25 +100,41 @@ Material: - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 2 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -121,16 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 5 - _Stencil: 0 - _StencilComparison: 0 - _StencilOperation: 0 - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 0 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.5019608} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -142,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentLightGray.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentLightGray.mat index 56f1d06c586..ace15ed2932 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentLightGray.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentLightGray.mat @@ -45,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -67,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -90,25 +100,41 @@ Material: - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 2 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -121,16 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 5 - _Stencil: 0 - _StencilComparison: 0 - _StencilOperation: 0 - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 0 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 0.75, g: 0.75, b: 0.75, a: 0.5019608} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -142,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentRed.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentRed.mat index ed9da07a88a..893d3a955ce 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentRed.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_TransparentRed.mat @@ -45,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -67,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -90,25 +100,41 @@ Material: - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 2 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -121,16 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 5 - _Stencil: 0 - _StencilComparison: 0 - _StencilOperation: 0 - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 0 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 1, g: 0, b: 0, a: 0.5019608} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -142,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_White.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_White.mat index 71739822ffb..ecc81b8b325 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_White.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_White.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Yellow.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Yellow.mat index 051917dcd6f..3bba617e5e7 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Yellow.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Standard_Yellow.mat @@ -25,6 +25,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _ChannelMap: + 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} @@ -41,6 +45,10 @@ Material: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} + - _IridescentSpectrumMap: + 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} @@ -63,13 +71,19 @@ Material: m_Offset: {x: 0, y: 0} m_Floats: - _AlbedoAlphaMode: 0 + - _AlbedoAssignedAtRuntime: 0 - _BlendOp: 0 + - _BlendedClippingWidth: 1 - _BorderLight: 0 - _BorderLightOpaque: 0 + - _BorderLightOpaqueAlpha: 1 + - _BorderLightReplacesAlbedo: 0 - _BorderLightUsesHoverColor: 1 - _BorderMinValue: 0.1 - _BorderWidth: 0.1 - _BumpScale: 1 + - _ClippingBorder: 0 + - _ClippingBorderWidth: 0.025 - _ClippingPlane: 0 - _ClippingPlaneBorder: 0 - _ClippingPlaneBorderWidth: 0.025 @@ -82,27 +96,45 @@ Material: - _DstBlend: 0 - _EdgeSmoothingValue: 0.002 - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 - _EnableEmission: 0 - _EnableHoverColorOpaqueOverride: 0 - _EnableHoverColorOverride: 0 + - _EnableLocalSpaceTriplanarMapping: 0 - _EnableNormalMap: 0 + - _EnableProximityLightColorOverride: 0 + - _EnableTriplanarMapping: 0 - _EnvironmentColorIntensity: 0.5 - _EnvironmentColorThreshold: 1.5 - _EnvironmentColoring: 0 - _FadeBeginDistance: 0.85 - _FadeCompleteDistance: 0.5 + - _FadeMinValue: 0 + - _FluentLightIntensity: 1 - _GlossMapScale: 1 - _Glossiness: 0 - _GlossyReflections: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 + - _InnerGlowPower: 4 + - _InstancedColor: 0 + - _Iridescence: 0 + - _IridescenceAngle: -0.78 + - _IridescenceIntensity: 0.5 + - _IridescenceThreshold: 0.05 - _Lightmapping: 1 - _Metallic: 0 - _Mode: 0 + - _NearLightFade: 0 - _NearPlaneFade: 0 + - _NormalMapScale: 1 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _ProximityLight: 0 + - _ProximityLightSubtractive: 0 + - _ProximityLightTwoSided: 0 - _Reflections: 0 - _Refraction: 0 - _RefractiveIndex: 1.1 @@ -115,12 +147,25 @@ Material: - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 + - _SphericalHarmonics: 0 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _TriplanarMappingBlendSharpness: 4 - _UVSec: 0 + - _VertexColors: 0 + - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 + - _VertexExtrusionValue: 0 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 - _ZTest: 4 - _ZWrite: 1 m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - _Color: {r: 1, g: 0.93103456, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} @@ -132,4 +177,7 @@ Material: - _HoverColorOpaqueOverride: {r: 1, g: 1, b: 1, a: 1} - _HoverColorOverride: {r: 1, g: 1, b: 1, a: 1} - _InnerGlowColor: {r: 1, g: 1, b: 1, a: 0.75} + - _ProximityLightCenterColorOverride: {r: 1, g: 0, b: 0, a: 0} + - _ProximityLightMiddleColorOverride: {r: 0, g: 1, b: 0, a: 0.5} + - _ProximityLightOuterColorOverride: {r: 0, g: 0, b: 1, a: 1} - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Wireframe.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Wireframe.mat index 0ad3a983ca8..354c340903f 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Wireframe.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_Wireframe.mat @@ -56,7 +56,11 @@ Material: m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Floats: + - _BlendOp: 0 - _BumpScale: 1 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 0 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 - _DstBlend: 0 @@ -67,11 +71,15 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _RenderQueueOverride: -1 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - _UVSec: 0 - _WireThickness: 100 + - _ZOffsetFactor: 0 + - _ZOffsetUnits: 0 + - _ZTest: 4 - _ZWrite: 1 m_Colors: - _BaseColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MouseCursor.mat b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MouseCursor.mat index da94e36fc29..4e330928cad 100644 --- a/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MouseCursor.mat +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MouseCursor.mat @@ -121,6 +121,7 @@ Material: - _FluentLightIntensity: 1 - _HoverLight: 0 - _HoverLightOpaque: 0 + - _IgnoreZScale: 0 - _InnerGlow: 0 - _InnerGlowPower: 4 - _InstancedColor: 0 @@ -162,6 +163,7 @@ Material: - _VertColorScale: 1 - _VertexColors: 0 - _VertexExtrusion: 0 + - _VertexExtrusionSmoothNormals: 0 - _VertexExtrusionValue: 0 - _ZOffsetFactor: 0 - _ZOffsetUnits: 0 diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Models/Handle_Base.FBX b/Assets/MixedRealityToolkit.SDK/StandardAssets/Models/Handle_Base.FBX new file mode 100644 index 00000000000..250e2f865c0 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Models/Handle_Base.FBX differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Models/Handle_Base.FBX.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Models/Handle_Base.FBX.meta new file mode 100644 index 00000000000..8fbc8a506bb --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Models/Handle_Base.FBX.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 05caa5187fce40347be70de0b50397ce +ModelImporter: + serializedVersion: 23 + fileIDToRecycleName: + 100000: Handle 1 + 100002: //RootNode + 100004: HandleActive + 100006: HandleInsert + 400000: Handle 1 + 400002: //RootNode + 400004: HandleActive + 400006: HandleInsert + 2100000: MAT_HandleInsert + 2100002: MAT_Handle + 2300000: Handle 1 + 2300002: HandleActive + 2300004: HandleInsert + 3300000: Handle 1 + 3300002: HandleActive + 3300004: HandleInsert + 4300000: HandleInsert + 4300002: Handle + 4300004: HandleActive + externalObjects: {} + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + previousCalculatedGlobalScale: 1 + hasPreviousCalculatedGlobalScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/Handle_Base.prefab b/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/Handle_Base.prefab new file mode 100644 index 00000000000..60abdce761e --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/Handle_Base.prefab @@ -0,0 +1,266 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3942053967792406232 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3942053967791973112} + - component: {fileID: 3942053967791170266} + - component: {fileID: 3942053967790202906} + m_Layer: 0 + m_Name: HandleGrab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3942053967791973112 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406232} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.000037663674, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3942053967791973116} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3942053967791170266 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406232} + m_Mesh: {fileID: 4300000, guid: 05caa5187fce40347be70de0b50397ce, type: 3} +--- !u!23 &3942053967790202906 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406232} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 05caa5187fce40347be70de0b50397ce, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &3942053967792406234 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3942053967791973114} + - component: {fileID: 3942053967791170268} + - component: {fileID: 3942053967790202908} + m_Layer: 0 + m_Name: HandleActive + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3942053967791973114 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406234} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.000037663674, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3942053967791973116} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3942053967791170268 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406234} + m_Mesh: {fileID: 4300004, guid: 05caa5187fce40347be70de0b50397ce, type: 3} +--- !u!23 &3942053967790202908 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406234} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100002, guid: 05caa5187fce40347be70de0b50397ce, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 &3942053967792406236 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3942053967791973116} + m_Layer: 0 + m_Name: Handle_Base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3942053967791973116 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406236} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0719, y: 0.0077, z: -0.000037664} + m_LocalScale: {x: 0.38838, y: 0.38838, z: 0.38838} + m_Children: + - {fileID: 3942053967791973114} + - {fileID: 3942053967791973112} + - {fileID: 3942053967791973118} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3942053967792406238 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3942053967791973118} + - component: {fileID: 3942053967791170270} + - component: {fileID: 3942053967790202910} + m_Layer: 0 + m_Name: HandleNormal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3942053967791973118 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406238} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.0000009984516, y: -0.000037663656, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3942053967791973116} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3942053967791170270 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406238} + m_Mesh: {fileID: 4300002, guid: 05caa5187fce40347be70de0b50397ce, type: 3} +--- !u!23 &3942053967790202910 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3942053967792406238} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100002, guid: 05caa5187fce40347be70de0b50397ce, type: 3} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/Handle_Base.prefab.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/Handle_Base.prefab.meta new file mode 100644 index 00000000000..0318f9de55e --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/Handle_Base.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 59e23c09211c299469144947f5c1eaae +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/InputSimulationIndicators.prefab b/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/InputSimulationIndicators.prefab new file mode 100644 index 00000000000..2cf086fec65 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/InputSimulationIndicators.prefab @@ -0,0 +1,630 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &88827165642526427 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 88827165642526406} + - component: {fileID: 88827165642526405} + - component: {fileID: 88827165642526404} + - component: {fileID: 4137909700219083952} + - component: {fileID: 5132640426869185316} + m_Layer: 5 + m_Name: InputSimulationIndicators + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &88827165642526406 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827165642526427} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 88827166801953500} + - {fileID: 88827166579638949} + - {fileID: 8325064691973078804} + - {fileID: 1322003684956962036} + m_Father: {fileID: 0} + m_RootOrder: 0 + 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: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &88827165642526405 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827165642526427} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &88827165642526404 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827165642526427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff4e3b9019304b5aaec5664de0778d21, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &4137909700219083952 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827165642526427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &5132640426869185316 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827165642526427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 09d59cd26ba94244d98c1c39c5f79a87, type: 3} + m_Name: + m_EditorClassIdentifier: + imageHandLeft: {fileID: 88827166801953501} + imageHandRight: {fileID: 88827166579638970} + iconHandActiveLeft: {fileID: 21300000, guid: a1bfd276cecd2504aa94f334850481d9, type: 3} + iconHandActiveRight: {fileID: 21300000, guid: c1ec574bfa2be924783de54868caee68, + type: 3} + iconHandIdleLeft: {fileID: 21300000, guid: 4162248f738e54a438ae5c54e18f0784, type: 3} + iconHandIdleRight: {fileID: 21300000, guid: 84bd1d5b692eba545b145e3ef5333c38, type: 3} + iconHandUntrackedLeft: {fileID: 21300000, guid: f87b5f944e8630e408748d05d33bed27, + type: 3} + iconHandUntrackedRight: {fileID: 21300000, guid: e516b67fb96d9af4b83378670e1d4058, + type: 3} +--- !u!1 &88827166579638969 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 88827166579638949} + - component: {fileID: 88827166579638971} + - component: {fileID: 88827166579638970} + - component: {fileID: 6778320965283063222} + m_Layer: 5 + m_Name: StatusHandRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &88827166579638949 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827166579638969} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_Children: [] + m_Father: {fileID: 88827165642526406} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.55, y: 0} + m_AnchorMax: {x: 0.55, y: 0} + m_AnchoredPosition: {x: 0, y: 86.400024} + m_SizeDelta: {x: 128, y: 128} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &88827166579638971 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827166579638969} + m_CullTransparentMesh: 0 +--- !u!114 &88827166579638970 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827166579638969} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 84bd1d5b692eba545b145e3ef5333c38, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &6778320965283063222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827166579638969} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.89944786, b: 0.5774314, a: 1} + m_PressedColor: {r: 1, g: 0.8870895, b: 0.049000025, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 88827166579638970} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 5132640426869185316} + m_MethodName: ToggleRightHand + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &88827166801953491 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 88827166801953500} + - component: {fileID: 88827166801953502} + - component: {fileID: 88827166801953501} + - component: {fileID: 7546130808568886425} + m_Layer: 5 + m_Name: StatusHandLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &88827166801953500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827166801953491} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_Children: [] + m_Father: {fileID: 88827165642526406} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.45, y: 0} + m_AnchorMax: {x: 0.45, y: 0} + m_AnchoredPosition: {x: 0, y: 86.4} + m_SizeDelta: {x: 128, y: 128} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &88827166801953502 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827166801953491} + m_CullTransparentMesh: 0 +--- !u!114 &88827166801953501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827166801953491} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 4162248f738e54a438ae5c54e18f0784, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &7546130808568886425 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88827166801953491} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.89944786, b: 0.5774314, a: 1} + m_PressedColor: {r: 1, g: 0.8870895, b: 0.049000025, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 88827166801953501} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 5132640426869185316} + m_MethodName: ToggleLeftHand + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &214598272433293189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1322003684956962036} + - component: {fileID: 3497514282981585806} + - component: {fileID: 7380648388625788671} + - component: {fileID: 1565191411964991729} + m_Layer: 5 + m_Name: ResetHandRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1322003684956962036 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214598272433293189} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_Children: [] + m_Father: {fileID: 88827165642526406} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.55, y: 0} + m_AnchorMax: {x: 0.55, y: 0} + m_AnchoredPosition: {x: 0, y: 36.400024} + m_SizeDelta: {x: 128, y: 64} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3497514282981585806 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214598272433293189} + m_CullTransparentMesh: 0 +--- !u!114 &7380648388625788671 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214598272433293189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: aa45486a0040b0942a3fe77bcba4ff4c, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &1565191411964991729 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214598272433293189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.89944786, b: 0.5774314, a: 1} + m_PressedColor: {r: 1, g: 0.8870895, b: 0.049000025, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7380648388625788671} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 5132640426869185316} + m_MethodName: ResetRightHand + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &5585107593872063751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8325064691973078804} + - component: {fileID: 7935400406275604710} + - component: {fileID: 694148418821802352} + - component: {fileID: 5381656745967390351} + m_Layer: 5 + m_Name: ResetHandLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8325064691973078804 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5585107593872063751} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 1} + m_Children: [] + m_Father: {fileID: 88827165642526406} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.46, y: 0} + m_AnchorMax: {x: 0.46, y: 0} + m_AnchoredPosition: {x: 0, y: 36.4} + m_SizeDelta: {x: 128, y: 64} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7935400406275604710 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5585107593872063751} + m_CullTransparentMesh: 0 +--- !u!114 &694148418821802352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5585107593872063751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: aa45486a0040b0942a3fe77bcba4ff4c, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &5381656745967390351 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5585107593872063751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.89944786, b: 0.5774314, a: 1} + m_PressedColor: {r: 1, g: 0.8870895, b: 0.049000025, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 694148418821802352} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 5132640426869185316} + m_MethodName: ResetLeftHand + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/InputSimulationIndicators.prefab.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/InputSimulationIndicators.prefab.meta new file mode 100644 index 00000000000..ad09f86918d --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Prefabs/InputSimulationIndicators.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9639144363d7b8b45ba926081168805a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabArea.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabArea.png new file mode 100644 index 00000000000..9af42352799 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabArea.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabArea.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabArea.png.meta new file mode 100644 index 00000000000..94ca826457b --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabArea.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: ed822fedd9a3ed640a9a7aaedabcaef4 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabAreaSingle.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabAreaSingle.png new file mode 100644 index 00000000000..e68c6253d2e Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabAreaSingle.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabAreaSingle.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabAreaSingle.png.meta new file mode 100644 index 00000000000..395a30b81bb --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/GrabAreaSingle.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: f1fd3fdd34a654947a68d8526ab133e5 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconAdd.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconAdd.png new file mode 100644 index 00000000000..1960245eca2 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconAdd.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconAdd.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconAdd.png.meta new file mode 100644 index 00000000000..52ba3f35096 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconAdd.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: d6a8d6d764af76740ad06383ee810941 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconCamera.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconCamera.png new file mode 100644 index 00000000000..35f9c8b0847 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconCamera.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconCamera.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconCamera.png.meta new file mode 100644 index 00000000000..179b4f9dc82 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconCamera.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 114589bc5b891c3488cbb8607b6b9171 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconDot.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconDot.png new file mode 100644 index 00000000000..6562480de09 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconDot.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconDot.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconDot.png.meta new file mode 100644 index 00000000000..cd92c8cf368 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconDot.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 2e264b2035e178e4dac9e40cfcf38662 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveLeft.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveLeft.png new file mode 100644 index 00000000000..326d2992fa9 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveLeft.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveLeft.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveLeft.png.meta new file mode 100644 index 00000000000..db9a21d99cc --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveLeft.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: a1bfd276cecd2504aa94f334850481d9 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: a9d8187b2e6a4ab4e87622bca1eb8f6f + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveRight.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveRight.png new file mode 100644 index 00000000000..7290c0a2e9a Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveRight.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveRight.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveRight.png.meta new file mode 100644 index 00000000000..8b6866fdd11 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandActiveRight.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: c1ec574bfa2be924783de54868caee68 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: e9ed8acc92ab14942b8fdc9b89ecf368 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleLeft.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleLeft.png new file mode 100644 index 00000000000..1ff5cfb5872 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleLeft.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleLeft.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleLeft.png.meta new file mode 100644 index 00000000000..08da0923da2 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleLeft.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 4162248f738e54a438ae5c54e18f0784 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 8e22007b6e9dc5f4aa80afac68b149b5 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleRight.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleRight.png new file mode 100644 index 00000000000..da38c1243f6 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleRight.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleRight.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleRight.png.meta new file mode 100644 index 00000000000..34b09a3df76 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandIdleRight.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 84bd1d5b692eba545b145e3ef5333c38 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 19930f098d55ab34d9cc60675ab81f73 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedLeft.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedLeft.png new file mode 100644 index 00000000000..4c2e47f2290 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedLeft.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedLeft.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedLeft.png.meta new file mode 100644 index 00000000000..418cda720fa --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedLeft.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: f87b5f944e8630e408748d05d33bed27 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: d80a81f8fd4885342be71ab799aec2c1 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedRight.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedRight.png new file mode 100644 index 00000000000..2cbc5511c6a Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedRight.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedRight.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedRight.png.meta new file mode 100644 index 00000000000..d8caea3e9a6 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHandUntrackedRight.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: e516b67fb96d9af4b83378670e1d4058 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 9ae2290afbc82e8449aa53772efce35b + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHome.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHome.png new file mode 100644 index 00000000000..f56e40ed2f2 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHome.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHome.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHome.png.meta new file mode 100644 index 00000000000..43c74533210 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconHome.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 85835ae0b6c3c1c418a57400fcbb788c +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMRTKLogo.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMRTKLogo.png new file mode 100644 index 00000000000..2d9d7767d93 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMRTKLogo.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMRTKLogo.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMRTKLogo.png.meta new file mode 100644 index 00000000000..c0b580221a2 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMRTKLogo.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 74ebfa89af37aba43b08982d7f97eb7d +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMessage.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMessage.png new file mode 100644 index 00000000000..458cb3bcdd5 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMessage.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMessage.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMessage.png.meta new file mode 100644 index 00000000000..32ecd3e4465 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMessage.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 937867e9be7912d4a903cd401ee0a959 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMicrophone.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMicrophone.png new file mode 100644 index 00000000000..784976d953d Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMicrophone.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMicrophone.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMicrophone.png.meta new file mode 100644 index 00000000000..417c3404fee --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconMicrophone.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 49a59150fd8a7c1438828c262032e023 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconRefresh.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconRefresh.png new file mode 100644 index 00000000000..633426a2786 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconRefresh.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconRefresh.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconRefresh.png.meta new file mode 100644 index 00000000000..688a3ccea27 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconRefresh.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 559e1da0e65611c4f93ec931e1e6a8a2 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSearch.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSearch.png new file mode 100644 index 00000000000..4ea6118f06e Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSearch.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSearch.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSearch.png.meta new file mode 100644 index 00000000000..1643a0f43b8 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSearch.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: ed2f699f32ec17f4cad3423d2c449119 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSettings.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSettings.png new file mode 100644 index 00000000000..70578e10736 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSettings.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSettings.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSettings.png.meta new file mode 100644 index 00000000000..946f31f8ab3 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconSettings.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: ac8550a474419054d9621216812fd098 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconStar.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconStar.png new file mode 100644 index 00000000000..ef9a05b6278 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconStar.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconStar.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconStar.png.meta new file mode 100644 index 00000000000..f14846e5ca0 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/IconStar.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: ea677436af9004848a7f20878e38257c +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/ResetRotation.png b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/ResetRotation.png new file mode 100644 index 00000000000..449dc869dc0 Binary files /dev/null and b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/ResetRotation.png differ diff --git a/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/ResetRotation.png.meta b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/ResetRotation.png.meta new file mode 100644 index 00000000000..420b8a266e0 --- /dev/null +++ b/Assets/MixedRealityToolkit.SDK/StandardAssets/Textures/ResetRotation.png.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: aa45486a0040b0942a3fe77bcba4ff4c +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 14a98d77f51a7844e8a57cb76e219090 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.SDK/Version.txt b/Assets/MixedRealityToolkit.SDK/Version.txt index e670c2aeaab..4df313d1cc0 100644 --- a/Assets/MixedRealityToolkit.SDK/Version.txt +++ b/Assets/MixedRealityToolkit.SDK/Version.txt @@ -1 +1 @@ -Microsoft Mixed Reality Toolkit 2.0.0 \ No newline at end of file +Microsoft Mixed Reality Toolkit 2.1.0 \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/BoundarySystem/MixedRealityBoundarySystem.cs b/Assets/MixedRealityToolkit.Services/BoundarySystem/MixedRealityBoundarySystem.cs index 8eb684e614d..0e6c49c616a 100644 --- a/Assets/MixedRealityToolkit.Services/BoundarySystem/MixedRealityBoundarySystem.cs +++ b/Assets/MixedRealityToolkit.Services/BoundarySystem/MixedRealityBoundarySystem.cs @@ -29,10 +29,13 @@ public MixedRealityBoundarySystem( private BoundaryEventData boundaryEventData = null; + /// + public override string Name { get; protected set; } = "Mixed Reality Boundary System"; + /// public override void Initialize() { - if (!Application.isPlaying) { return; } + if (!Application.isPlaying || !XRDevice.isPresent) { return; } MixedRealityBoundaryVisualizationProfile profile = ConfigurationProfile as MixedRealityBoundaryVisualizationProfile; if (profile == null) { return; } @@ -87,7 +90,6 @@ public override void Destroy() // and clean up the parent. if (boundaryVisualizationParent != null) { - if (Application.isEditor) { Object.DestroyImmediate(boundaryVisualizationParent); @@ -181,7 +183,7 @@ public override void Destroy() /// private void RaiseBoundaryVisualizationChanged() { - if (!Application.isPlaying) { return; } + if (!Application.isPlaying || boundaryEventData == null) { return; } boundaryEventData.Initialize(this, ShowFloor, ShowPlayArea, ShowTrackedArea, ShowBoundaryWalls, ShowBoundaryCeiling); HandleEvent(boundaryEventData, OnVisualizationChanged); } @@ -209,7 +211,6 @@ public override void HandleEvent(BaseEventData eventData, ExecuteEvents.Event /// /// Registers the GameObject to listen for boundary events. /// - /// public override void Register(GameObject listener) { base.Register(listener); @@ -218,7 +219,6 @@ public override void Register(GameObject listener) /// /// UnRegisters the GameObject to listen for boundary events. /// /// - /// public override void Unregister(GameObject listener) { base.Unregister(listener); @@ -290,7 +290,7 @@ private GameObject BoundaryVisualizationParent private int ignoreRaycastLayerValue = 2; private MixedRealityBoundaryVisualizationProfile boundaryVisualizationProfile = null; - + /// public MixedRealityBoundaryVisualizationProfile BoundaryVisualizationProfile { diff --git a/Assets/MixedRealityToolkit.Services/CameraSystem/MixedRealityCameraSystem.cs b/Assets/MixedRealityToolkit.Services/CameraSystem/MixedRealityCameraSystem.cs index a1952553012..097f8eb80f4 100644 --- a/Assets/MixedRealityToolkit.Services/CameraSystem/MixedRealityCameraSystem.cs +++ b/Assets/MixedRealityToolkit.Services/CameraSystem/MixedRealityCameraSystem.cs @@ -25,6 +25,9 @@ public MixedRealityCameraSystem( { } + /// + public override string Name { get; protected set; } = "Mixed Reality Camera System"; + /// /// Is the current camera displaying on an Opaque (AR) device or a VR / immersive device /// diff --git a/Assets/MixedRealityToolkit.Services/DiagnosticsSystem/MixedRealityDiagnosticsSystem.cs b/Assets/MixedRealityToolkit.Services/DiagnosticsSystem/MixedRealityDiagnosticsSystem.cs index 469f3d16d09..498184bb0fd 100644 --- a/Assets/MixedRealityToolkit.Services/DiagnosticsSystem/MixedRealityDiagnosticsSystem.cs +++ b/Assets/MixedRealityToolkit.Services/DiagnosticsSystem/MixedRealityDiagnosticsSystem.cs @@ -17,6 +17,9 @@ public MixedRealityDiagnosticsSystem( MixedRealityDiagnosticsProfile profile) : base(registrar, profile) { } + /// + public override string Name { get; protected set; } = "Mixed Reality Diagnostics System"; + /// /// The parent object under which all visualization game objects will be placed. /// diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/Editor/InputRecordingWindow.cs.meta b/Assets/MixedRealityToolkit.Services/InputAnimation/Editor/InputRecordingWindow.cs.meta deleted file mode 100644 index 3673f9e193a..00000000000 --- a/Assets/MixedRealityToolkit.Services/InputAnimation/Editor/InputRecordingWindow.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: da69aa8ddea817e4b9f651d46fa8b025 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/Editor/MixedRealityToolkit.Services.InputAnimation.Editor.asmdef b/Assets/MixedRealityToolkit.Services/InputAnimation/Editor/MixedRealityToolkit.Services.InputAnimation.Editor.asmdef deleted file mode 100644 index 6e7a70f1a6b..00000000000 --- a/Assets/MixedRealityToolkit.Services/InputAnimation/Editor/MixedRealityToolkit.Services.InputAnimation.Editor.asmdef +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "Microsoft.MixedReality.Toolkit.Services.InputAnimation.Editor", - "references": [ - "Microsoft.MixedReality.Toolkit", - "Microsoft.MixedReality.Toolkit.Editor.Utilities", - "Microsoft.MixedReality.Toolkit.Services.InputAnimation", - "Microsoft.MixedReality.Toolkit.Services.InputSimulation" - ], - "optionalUnityReferences": [], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false -} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/InputRecordingService.cs b/Assets/MixedRealityToolkit.Services/InputAnimation/InputRecordingService.cs index ea75707948a..0a6fe40ceb9 100644 --- a/Assets/MixedRealityToolkit.Services/InputAnimation/InputRecordingService.cs +++ b/Assets/MixedRealityToolkit.Services/InputAnimation/InputRecordingService.cs @@ -166,7 +166,7 @@ public void StartRecording() unlimitedRecordingStartTime = Time.time; } - OnRecordingStarted.Invoke(); + OnRecordingStarted?.Invoke(); } /// @@ -174,7 +174,7 @@ public void StopRecording() { IsRecording = false; - OnRecordingStopped.Invoke(); + OnRecordingStopped?.Invoke(); } /// diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/MixedRealityToolkit.Services.InputAnimation.asmdef b/Assets/MixedRealityToolkit.Services/InputAnimation/MixedRealityToolkit.Services.InputAnimation.asmdef index e3dfe0cc24a..f186ef9aa48 100644 --- a/Assets/MixedRealityToolkit.Services/InputAnimation/MixedRealityToolkit.Services.InputAnimation.asmdef +++ b/Assets/MixedRealityToolkit.Services/InputAnimation/MixedRealityToolkit.Services.InputAnimation.asmdef @@ -1,8 +1,7 @@ { "name": "Microsoft.MixedReality.Toolkit.Services.InputAnimation", "references": [ - "Microsoft.MixedReality.Toolkit", - "Microsoft.MixedReality.Toolkit.Services.InputSimulation" + "Microsoft.MixedReality.Toolkit" ], "optionalUnityReferences": [], "includePlatforms": [], diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Flat.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Flat.json index bea7e1d31aa..2c16bd3015d 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Flat.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Flat.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":-0.0470723882317543,"y":-0.18403607606887818,"z":-0.5408412218093872},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":0.0}}},{"joint":"Wrist","pose":{"position":{"x":0.06179157271981239,"y":-0.15333214402198792,"z":-0.0469515398144722},"rotation":{"x":-0.5501163005828857,"y":-0.11712269484996796,"z":0.001836930401623249,"w":0.8265576958656311}}},{"joint":"Palm","pose":{"position":{"x":0.05801215022802353,"y":-0.1058567613363266,"z":-0.02556976117193699},"rotation":{"x":-0.5501163005828857,"y":-0.11712269484996796,"z":0.001836930401623249,"w":0.8265576958656311}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.03695414960384369,"y":-0.1407443881034851,"z":-0.03328647091984749},"rotation":{"x":-0.5855690240859985,"y":-0.10429229587316513,"z":0.5890942811965942,"w":0.547493577003479}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":0.00045104348100721836,"y":-0.11720659583806992,"z":-0.01997363194823265},"rotation":{"x":-0.5386121273040772,"y":0.04485885053873062,"z":0.5422580242156982,"w":0.6437124609947205}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":-0.016296127811074258,"y":-0.09359179437160492,"z":-0.006718119606375694},"rotation":{"x":-0.6040476560592651,"y":-0.08891747146844864,"z":0.5752687454223633,"w":0.5448194742202759}}},{"joint":"ThumbTip","pose":{"position":{"x":-0.03216664865612984,"y":-0.08244754374027252,"z":-0.001603197306394577},"rotation":{"x":-0.6040476560592651,"y":-0.08891747146844864,"z":0.5752687454223633,"w":0.5448194742202759}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.04794362187385559,"y":-0.13700048625469209,"z":-0.03438100963830948},"rotation":{"x":-0.534980297088623,"y":-0.28449201583862307,"z":-0.061086010187864307,"w":0.7931764721870422}}},{"joint":"IndexKnuckle","pose":{"position":{"x":0.023209279403090478,"y":-0.08038382232189179,"z":-0.017351558431982995},"rotation":{"x":-0.599485456943512,"y":-0.1474478840827942,"z":0.04840812832117081,"w":0.7852058410644531}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":0.009743190370500088,"y":-0.03727291524410248,"z":-0.006295463070273399},"rotation":{"x":-0.6344203948974609,"y":-0.08629350364208222,"z":0.11939872056245804,"w":0.7588865756988525}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":0.0026917937211692335,"y":-0.013759316876530648,"z":-0.0017971978522837163},"rotation":{"x":-0.6451734304428101,"y":-0.12336783856153488,"z":0.00809548981487751,"w":0.7542511224746704}}},{"joint":"IndexTip","pose":{"position":{"x":-0.0002534952946007252,"y":0.0007631087210029364,"z":0.0002575620310381055},"rotation":{"x":-0.6451734304428101,"y":-0.12336783856153488,"z":0.00809548981487751,"w":0.7542511224746704}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.056570135056972507,"y":-0.13634957373142243,"z":-0.03486650064587593},"rotation":{"x":-0.6017327308654785,"y":-0.1049300879240036,"z":0.008752312511205674,"w":0.7917264699935913}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.045069482177495959,"y":-0.07444917410612107,"z":-0.018345370888710023},"rotation":{"x":-0.5885983109474182,"y":-0.10035836696624756,"z":0.025189023464918138,"w":0.8017893433570862}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":0.035030756145715716,"y":-0.025001518428325654,"z":-0.0032290546223521234},"rotation":{"x":-0.6631931662559509,"y":-0.09005288034677506,"z":-0.0027521485462784769,"w":0.7431085109710693}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":0.031546302139759067,"y":0.0013798222644254566,"z":-0.0004363078624010086},"rotation":{"x":-0.6468731164932251,"y":-0.11953263729810715,"z":-0.06937266886234284,"w":0.7504633665084839}}},{"joint":"MiddleTip","pose":{"position":{"x":0.030048875138163568,"y":0.017790958285331727,"z":0.0018172836862504483},"rotation":{"x":-0.6468731164932251,"y":-0.11953263729810715,"z":-0.06937266886234284,"w":0.7504633665084839}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.06806596368551254,"y":-0.13525664806365968,"z":-0.034837257117033008},"rotation":{"x":-0.5803540945053101,"y":0.014031633734703064,"z":0.05480925738811493,"w":0.8123965859413147}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.06544187664985657,"y":-0.07453925907611847,"z":-0.013881120830774308},"rotation":{"x":-0.6466344594955444,"y":-0.03600946068763733,"z":0.02467469871044159,"w":0.7615609765052795}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":0.06159381568431854,"y":-0.03093438223004341,"z":-0.006733019836246967},"rotation":{"x":-0.6550348401069641,"y":-0.06099399924278259,"z":-0.04121965169906616,"w":0.7520787715911865}}},{"joint":"RingDistalJoint","pose":{"position":{"x":0.06070023775100708,"y":-0.007464663125574589,"z":-0.003544492181390524},"rotation":{"x":-0.6712727546691895,"y":-0.05777180939912796,"z":-0.05727298930287361,"w":0.7370488047599793}}},{"joint":"RingTip","pose":{"position":{"x":0.060552775859832767,"y":0.010114867240190506,"z":-0.0019072332652285696},"rotation":{"x":-0.6712727546691895,"y":-0.05777180939912796,"z":-0.05727298930287361,"w":0.7370488047599793}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.07710164040327072,"y":-0.13650110363960267,"z":-0.032643478363752368},"rotation":{"x":-0.5344982147216797,"y":0.1545339822769165,"z":0.10820292681455612,"w":0.8238464593887329}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.08530370891094208,"y":-0.08254323154687882,"z":-0.010162543505430222},"rotation":{"x":-0.6702333688735962,"y":0.05704934149980545,"z":0.006686835549771786,"w":0.7399358749389648}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":0.08779342472553253,"y":-0.049793362617492679,"z":-0.0070251524448394779},"rotation":{"x":-0.6393072605133057,"y":0.030266048386693,"z":-0.15569603443145753,"w":0.7524937987327576}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.09219621121883393,"y":-0.03264733776450157,"z":-0.0037694787606596948},"rotation":{"x":-0.6555882692337036,"y":-0.0018634665757417679,"z":-0.09289215505123139,"w":0.7497090101242065}}},{"joint":"PinkyTip","pose":{"position":{"x":0.09392204880714417,"y":-0.018381092697381974,"z":-0.0017222119495272637},"rotation":{"x":-0.6555882692337036,"y":-0.0018634665757417679,"z":-0.09289215505123139,"w":0.7497090101242065}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": -0.0470723882317543, + "y": -0.18403607606887818, + "z": -0.5408412218093872 + }, + "rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.06179157271981239, + "y": -0.15333214402198792, + "z": -0.0469515398144722 + }, + "rotation": { + "x": -0.5501163005828857, + "y": -0.11712269484996796, + "z": 0.001836930401623249, + "w": 0.8265576958656311 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.05801215022802353, + "y": -0.1058567613363266, + "z": -0.02556976117193699 + }, + "rotation": { + "x": -0.5501163005828857, + "y": -0.11712269484996796, + "z": 0.001836930401623249, + "w": 0.8265576958656311 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.03695414960384369, + "y": -0.1407443881034851, + "z": -0.03328647091984749 + }, + "rotation": { + "x": -0.5855690240859985, + "y": -0.10429229587316513, + "z": 0.5890942811965942, + "w": 0.547493577003479 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": 0.00045104348100721836, + "y": -0.11720659583806992, + "z": -0.01997363194823265 + }, + "rotation": { + "x": -0.5386121273040772, + "y": 0.04485885053873062, + "z": 0.5422580242156982, + "w": 0.6437124609947205 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": -0.016296127811074258, + "y": -0.09359179437160492, + "z": -0.006718119606375694 + }, + "rotation": { + "x": -0.6040476560592651, + "y": -0.08891747146844864, + "z": 0.5752687454223633, + "w": 0.5448194742202759 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": -0.03216664865612984, + "y": -0.08244754374027252, + "z": -0.001603197306394577 + }, + "rotation": { + "x": -0.6040476560592651, + "y": -0.08891747146844864, + "z": 0.5752687454223633, + "w": 0.5448194742202759 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.04794362187385559, + "y": -0.13700048625469209, + "z": -0.03438100963830948 + }, + "rotation": { + "x": -0.534980297088623, + "y": -0.28449201583862307, + "z": -0.061086010187864307, + "w": 0.7931764721870422 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": 0.023209279403090478, + "y": -0.08038382232189179, + "z": -0.017351558431982995 + }, + "rotation": { + "x": -0.599485456943512, + "y": -0.1474478840827942, + "z": 0.04840812832117081, + "w": 0.7852058410644531 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": 0.009743190370500088, + "y": -0.03727291524410248, + "z": -0.006295463070273399 + }, + "rotation": { + "x": -0.6344203948974609, + "y": -0.08629350364208222, + "z": 0.11939872056245804, + "w": 0.7588865756988525 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": 0.0026917937211692335, + "y": -0.013759316876530648, + "z": -0.0017971978522837163 + }, + "rotation": { + "x": -0.6451734304428101, + "y": -0.12336783856153488, + "z": 0.00809548981487751, + "w": 0.7542511224746704 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": -0.0002534952946007252, + "y": 0.0007631087210029364, + "z": 0.0002575620310381055 + }, + "rotation": { + "x": -0.6451734304428101, + "y": -0.12336783856153488, + "z": 0.00809548981487751, + "w": 0.7542511224746704 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.056570135056972507, + "y": -0.13634957373142243, + "z": -0.03486650064587593 + }, + "rotation": { + "x": -0.6017327308654785, + "y": -0.1049300879240036, + "z": 0.008752312511205674, + "w": 0.7917264699935913 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.045069482177495959, + "y": -0.07444917410612107, + "z": -0.018345370888710023 + }, + "rotation": { + "x": -0.5885983109474182, + "y": -0.10035836696624756, + "z": 0.025189023464918138, + "w": 0.8017893433570862 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": 0.035030756145715716, + "y": -0.025001518428325654, + "z": -0.0032290546223521234 + }, + "rotation": { + "x": -0.6631931662559509, + "y": -0.09005288034677506, + "z": -0.0027521485462784769, + "w": 0.7431085109710693 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": 0.031546302139759067, + "y": 0.0013798222644254566, + "z": -0.0004363078624010086 + }, + "rotation": { + "x": -0.6468731164932251, + "y": -0.11953263729810715, + "z": -0.06937266886234284, + "w": 0.7504633665084839 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.030048875138163568, + "y": 0.017790958285331727, + "z": 0.0018172836862504483 + }, + "rotation": { + "x": -0.6468731164932251, + "y": -0.11953263729810715, + "z": -0.06937266886234284, + "w": 0.7504633665084839 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.06806596368551254, + "y": -0.13525664806365968, + "z": -0.034837257117033008 + }, + "rotation": { + "x": -0.5803540945053101, + "y": 0.014031633734703064, + "z": 0.05480925738811493, + "w": 0.8123965859413147 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.06544187664985657, + "y": -0.07453925907611847, + "z": -0.013881120830774308 + }, + "rotation": { + "x": -0.6466344594955444, + "y": -0.03600946068763733, + "z": 0.02467469871044159, + "w": 0.7615609765052795 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": 0.06159381568431854, + "y": -0.03093438223004341, + "z": -0.006733019836246967 + }, + "rotation": { + "x": -0.6550348401069641, + "y": -0.06099399924278259, + "z": -0.04121965169906616, + "w": 0.7520787715911865 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": 0.06070023775100708, + "y": -0.007464663125574589, + "z": -0.003544492181390524 + }, + "rotation": { + "x": -0.6712727546691895, + "y": -0.05777180939912796, + "z": -0.05727298930287361, + "w": 0.7370488047599793 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.060552775859832767, + "y": 0.010114867240190506, + "z": -0.0019072332652285696 + }, + "rotation": { + "x": -0.6712727546691895, + "y": -0.05777180939912796, + "z": -0.05727298930287361, + "w": 0.7370488047599793 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.07710164040327072, + "y": -0.13650110363960267, + "z": -0.032643478363752368 + }, + "rotation": { + "x": -0.5344982147216797, + "y": 0.1545339822769165, + "z": 0.10820292681455612, + "w": 0.8238464593887329 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.08530370891094208, + "y": -0.08254323154687882, + "z": -0.010162543505430222 + }, + "rotation": { + "x": -0.6702333688735962, + "y": 0.05704934149980545, + "z": 0.006686835549771786, + "w": 0.7399358749389648 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": 0.08779342472553253, + "y": -0.049793362617492679, + "z": -0.0070251524448394779 + }, + "rotation": { + "x": -0.6393072605133057, + "y": 0.030266048386693, + "z": -0.15569603443145753, + "w": 0.7524937987327576 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.09219621121883393, + "y": -0.03264733776450157, + "z": -0.0037694787606596948 + }, + "rotation": { + "x": -0.6555882692337036, + "y": -0.0018634665757417679, + "z": -0.09289215505123139, + "w": 0.7497090101242065 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.09392204880714417, + "y": -0.018381092697381974, + "z": -0.0017222119495272637 + }, + "rotation": { + "x": -0.6555882692337036, + "y": -0.0018634665757417679, + "z": -0.09289215505123139, + "w": 0.7497090101242065 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Grab.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Grab.json index 2d7764bdd17..30222106cde 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Grab.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Grab.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":-0.08690944314002991,"y":0.013536587357521057,"z":-0.3781388998031616},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":0.0}}},{"joint":"Wrist","pose":{"position":{"x":0.059647563844919208,"y":-0.018170714378356935,"z":-0.07320141047239304},"rotation":{"x":-0.44069746136665347,"y":-0.3151600956916809,"z":-0.029152734205126764,"w":0.8398429155349731}}},{"joint":"Palm","pose":{"position":{"x":0.040150947868824008,"y":0.022433746606111528,"z":-0.04928050562739372},"rotation":{"x":-0.44069746136665347,"y":-0.3151600956916809,"z":-0.029152734205126764,"w":0.8398429155349731}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.033823080360889438,"y":-0.014000600203871727,"z":-0.06483504176139832},"rotation":{"x":0.46251192688941958,"y":0.15892137587070466,"z":-0.748396635055542,"w":-0.44902268052101138}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":-0.0048112208023667339,"y":-0.005827075336128473,"z":-0.04063580185174942},"rotation":{"x":0.32614850997924807,"y":-0.017511412501335145,"z":-0.7735356688499451,"w":-0.5439797639846802}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":-0.02188277430832386,"y":0.0075818500481545929,"z":-0.01290540024638176},"rotation":{"x":0.22856087982654572,"y":-0.09300848096609116,"z":-0.7769821286201477,"w":-0.5795565247535706}}},{"joint":"ThumbTip","pose":{"position":{"x":-0.026505667716264726,"y":0.015197398141026497,"z":0.0034610535949468614},"rotation":{"x":0.22856087982654572,"y":-0.09300848096609116,"z":-0.7769821286201477,"w":-0.5795565247535706}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.04238410294055939,"y":-0.007463002577424049,"z":-0.06319385766983032},"rotation":{"x":-0.420803427696228,"y":-0.44982725381851199,"z":-0.04907778277993202,"w":0.7862387895584106}}},{"joint":"IndexKnuckle","pose":{"position":{"x":-0.0008817678317427635,"y":0.03838954120874405,"z":-0.04752813279628754},"rotation":{"x":0.004830620251595974,"y":0.18448397517204286,"z":-0.1560613363981247,"w":-0.9703620672225952}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":-0.014839660376310349,"y":0.03651837632060051,"z":-0.01135229505598545},"rotation":{"x":-0.5098936557769775,"y":0.03039226494729519,"z":-0.30394697189331057,"w":-0.8042332530021668}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":-0.008270945399999619,"y":0.015406630001962185,"z":0.0006891884841024876},"rotation":{"x":-0.7222777009010315,"y":-0.08202659338712692,"z":-0.2391108274459839,"w":-0.6440979242324829}}},{"joint":"IndexTip","pose":{"position":{"x":-0.0009594520088285208,"y":0.000933439121581614,"z":-0.00021468542399816215},"rotation":{"x":-0.7222777009010315,"y":-0.08202659338712692,"z":-0.2391108274459839,"w":-0.6440979242324829}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.04958740621805191,"y":-0.004707379266619682,"z":-0.06129273772239685},"rotation":{"x":-0.5128890872001648,"y":-0.29369285702705386,"z":0.018453821539878846,"w":0.8064419627189636}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.020074930042028428,"y":0.04420189931988716,"z":-0.04323747381567955},"rotation":{"x":-0.07308150827884674,"y":0.17278942465782166,"z":-0.10241489112377167,"w":-0.9769001603126526}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":0.005748542491346598,"y":0.0362907275557518,"z":-0.001959702931344509},"rotation":{"x":-0.7482351660728455,"y":0.06403420120477677,"z":-0.2061866670846939,"w":-0.6274414658546448}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":0.012452101334929467,"y":0.007901951670646668,"z":-0.0057104239240288738},"rotation":{"x":-0.9225407838821411,"y":-0.07818678766489029,"z":-0.1428528130054474,"w":-0.3514384627342224}}},{"joint":"MiddleTip","pose":{"position":{"x":0.01802952028810978,"y":-0.003061514813452959,"z":-0.01820256933569908},"rotation":{"x":-0.9225407838821411,"y":-0.07818678766489029,"z":-0.1428528130054474,"w":-0.3514384627342224}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.05912885442376137,"y":-0.0009383354336023331,"z":-0.05809984356164932},"rotation":{"x":-0.49521127343177798,"y":-0.17924758791923524,"z":0.07874160259962082,"w":0.846425473690033}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.038666337728500369,"y":0.04252086579799652,"z":-0.03421220928430557},"rotation":{"x":-0.1513676941394806,"y":0.15960678458213807,"z":-0.05129222199320793,"w":-0.9741657376289368}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":0.02693704515695572,"y":0.030163494870066644,"z":0.0016453623538836837},"rotation":{"x":-0.8552912473678589,"y":0.0920121893286705,"z":-0.11032526195049286,"w":-0.4979609251022339}}},{"joint":"RingDistalJoint","pose":{"position":{"x":0.029263043776154519,"y":0.009234108030796051,"z":-0.009864533320069313},"rotation":{"x":-0.9685380458831787,"y":-0.018125316128134729,"z":-0.094183549284935,"w":-0.23075833916664124}}},{"joint":"RingTip","pose":{"position":{"x":0.032915160059928897,"y":0.0007288604974746704,"z":-0.02667597308754921},"rotation":{"x":-0.9685380458831787,"y":-0.018125316128134729,"z":-0.094183549284935,"w":-0.23075833916664124}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.0675557404756546,"y":-0.0004099104553461075,"z":-0.05376683175563812},"rotation":{"x":-0.44121748208999636,"y":-0.05341072380542755,"z":0.14569664001464845,"w":0.8838818073272705}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.05575947463512421,"y":0.04002845287322998,"z":-0.02176406979560852},"rotation":{"x":-0.2122899889945984,"y":0.1802181601524353,"z":0.03122050315141678,"w":-0.959945559501648}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":0.046450983732938769,"y":0.029760107398033143,"z":0.0001273825764656067},"rotation":{"x":-0.8192430138587952,"y":0.16303858160972596,"z":-0.0602981373667717,"w":-0.5465834140777588}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.044868819415569308,"y":0.011532457545399666,"z":-0.007741663604974747},"rotation":{"x":-0.9710148572921753,"y":0.04234015569090843,"z":0.042903631925582889,"w":-0.23259779810905457}}},{"joint":"PinkyTip","pose":{"position":{"x":0.04328276216983795,"y":0.004625056870281696,"z":-0.0214386023581028},"rotation":{"x":-0.9710148572921753,"y":0.04234015569090843,"z":0.042903631925582889,"w":-0.23259779810905457}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": -0.08690944314002991, + "y": 0.013536587357521057, + "z": -0.3781388998031616 + }, + "rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.059647563844919208, + "y": -0.018170714378356935, + "z": -0.07320141047239304 + }, + "rotation": { + "x": -0.44069746136665347, + "y": -0.3151600956916809, + "z": -0.029152734205126764, + "w": 0.8398429155349731 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.040150947868824008, + "y": 0.022433746606111528, + "z": -0.04928050562739372 + }, + "rotation": { + "x": -0.44069746136665347, + "y": -0.3151600956916809, + "z": -0.029152734205126764, + "w": 0.8398429155349731 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.033823080360889438, + "y": -0.014000600203871727, + "z": -0.06483504176139832 + }, + "rotation": { + "x": 0.46251192688941958, + "y": 0.15892137587070466, + "z": -0.748396635055542, + "w": -0.44902268052101138 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": -0.0048112208023667339, + "y": -0.005827075336128473, + "z": -0.04063580185174942 + }, + "rotation": { + "x": 0.32614850997924807, + "y": -0.017511412501335145, + "z": -0.7735356688499451, + "w": -0.5439797639846802 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": -0.02188277430832386, + "y": 0.0075818500481545929, + "z": -0.01290540024638176 + }, + "rotation": { + "x": 0.22856087982654572, + "y": -0.09300848096609116, + "z": -0.7769821286201477, + "w": -0.5795565247535706 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": -0.026505667716264726, + "y": 0.015197398141026497, + "z": 0.0034610535949468614 + }, + "rotation": { + "x": 0.22856087982654572, + "y": -0.09300848096609116, + "z": -0.7769821286201477, + "w": -0.5795565247535706 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.04238410294055939, + "y": -0.007463002577424049, + "z": -0.06319385766983032 + }, + "rotation": { + "x": -0.420803427696228, + "y": -0.44982725381851199, + "z": -0.04907778277993202, + "w": 0.7862387895584106 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": -0.0008817678317427635, + "y": 0.03838954120874405, + "z": -0.04752813279628754 + }, + "rotation": { + "x": 0.004830620251595974, + "y": 0.18448397517204286, + "z": -0.1560613363981247, + "w": -0.9703620672225952 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": -0.014839660376310349, + "y": 0.03651837632060051, + "z": -0.01135229505598545 + }, + "rotation": { + "x": -0.5098936557769775, + "y": 0.03039226494729519, + "z": -0.30394697189331057, + "w": -0.8042332530021668 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": -0.008270945399999619, + "y": 0.015406630001962185, + "z": 0.0006891884841024876 + }, + "rotation": { + "x": -0.7222777009010315, + "y": -0.08202659338712692, + "z": -0.2391108274459839, + "w": -0.6440979242324829 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": -0.0009594520088285208, + "y": 0.000933439121581614, + "z": -0.00021468542399816215 + }, + "rotation": { + "x": -0.7222777009010315, + "y": -0.08202659338712692, + "z": -0.2391108274459839, + "w": -0.6440979242324829 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.04958740621805191, + "y": -0.004707379266619682, + "z": -0.06129273772239685 + }, + "rotation": { + "x": -0.5128890872001648, + "y": -0.29369285702705386, + "z": 0.018453821539878846, + "w": 0.8064419627189636 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.020074930042028428, + "y": 0.04420189931988716, + "z": -0.04323747381567955 + }, + "rotation": { + "x": -0.07308150827884674, + "y": 0.17278942465782166, + "z": -0.10241489112377167, + "w": -0.9769001603126526 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": 0.005748542491346598, + "y": 0.0362907275557518, + "z": -0.001959702931344509 + }, + "rotation": { + "x": -0.7482351660728455, + "y": 0.06403420120477677, + "z": -0.2061866670846939, + "w": -0.6274414658546448 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": 0.012452101334929467, + "y": 0.007901951670646668, + "z": -0.0057104239240288738 + }, + "rotation": { + "x": -0.9225407838821411, + "y": -0.07818678766489029, + "z": -0.1428528130054474, + "w": -0.3514384627342224 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.01802952028810978, + "y": -0.003061514813452959, + "z": -0.01820256933569908 + }, + "rotation": { + "x": -0.9225407838821411, + "y": -0.07818678766489029, + "z": -0.1428528130054474, + "w": -0.3514384627342224 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.05912885442376137, + "y": -0.0009383354336023331, + "z": -0.05809984356164932 + }, + "rotation": { + "x": -0.49521127343177798, + "y": -0.17924758791923524, + "z": 0.07874160259962082, + "w": 0.846425473690033 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.038666337728500369, + "y": 0.04252086579799652, + "z": -0.03421220928430557 + }, + "rotation": { + "x": -0.1513676941394806, + "y": 0.15960678458213807, + "z": -0.05129222199320793, + "w": -0.9741657376289368 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": 0.02693704515695572, + "y": 0.030163494870066644, + "z": 0.0016453623538836837 + }, + "rotation": { + "x": -0.8552912473678589, + "y": 0.0920121893286705, + "z": -0.11032526195049286, + "w": -0.4979609251022339 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": 0.029263043776154519, + "y": 0.009234108030796051, + "z": -0.009864533320069313 + }, + "rotation": { + "x": -0.9685380458831787, + "y": -0.018125316128134729, + "z": -0.094183549284935, + "w": -0.23075833916664124 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.032915160059928897, + "y": 0.0007288604974746704, + "z": -0.02667597308754921 + }, + "rotation": { + "x": -0.9685380458831787, + "y": -0.018125316128134729, + "z": -0.094183549284935, + "w": -0.23075833916664124 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.0675557404756546, + "y": -0.0004099104553461075, + "z": -0.05376683175563812 + }, + "rotation": { + "x": -0.44121748208999636, + "y": -0.05341072380542755, + "z": 0.14569664001464845, + "w": 0.8838818073272705 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.05575947463512421, + "y": 0.04002845287322998, + "z": -0.02176406979560852 + }, + "rotation": { + "x": -0.2122899889945984, + "y": 0.1802181601524353, + "z": 0.03122050315141678, + "w": -0.959945559501648 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": 0.046450983732938769, + "y": 0.029760107398033143, + "z": 0.0001273825764656067 + }, + "rotation": { + "x": -0.8192430138587952, + "y": 0.16303858160972596, + "z": -0.0602981373667717, + "w": -0.5465834140777588 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.044868819415569308, + "y": 0.011532457545399666, + "z": -0.007741663604974747 + }, + "rotation": { + "x": -0.9710148572921753, + "y": 0.04234015569090843, + "z": 0.042903631925582889, + "w": -0.23259779810905457 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.04328276216983795, + "y": 0.004625056870281696, + "z": -0.0214386023581028 + }, + "rotation": { + "x": -0.9710148572921753, + "y": 0.04234015569090843, + "z": 0.042903631925582889, + "w": -0.23259779810905457 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Open.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Open.json index 55fb126014d..3ca3c5e3fa6 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Open.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Open.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":-0.0780251994729042,"y":-0.05990780144929886,"z":-0.3291178047657013},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":0.0}}},{"joint":"Wrist","pose":{"position":{"x":0.07397598028182984,"y":-0.1239677220582962,"z":-0.05636374652385712},"rotation":{"x":-0.5306746959686279,"y":-0.24036270380020142,"z":-0.0010364949703216553,"w":0.8126773834228516}}},{"joint":"Palm","pose":{"position":{"x":0.06148417666554451,"y":-0.08249785006046295,"z":-0.04003134369850159},"rotation":{"x":-0.5306746959686279,"y":-0.24036270380020142,"z":-0.0010364949703216553,"w":0.8126773834228516}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.05004027485847473,"y":-0.1168040931224823,"z":-0.046657364815473559},"rotation":{"x":-0.5606539249420166,"y":-0.098196841776371,"z":0.670694887638092,"w":0.4761941432952881}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":0.014790681190788746,"y":-0.1000247374176979,"z":-0.031946491450071338},"rotation":{"x":-0.5155644416809082,"y":-0.0010041594505310059,"z":0.6619959473609924,"w":0.5445378422737122}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":-0.0062080565840005878,"y":-0.0828109011054039,"z":-0.01753186620771885},"rotation":{"x":-0.5490170121192932,"y":-0.08343470841646195,"z":0.6728134751319885,"w":0.48939600586891177}}},{"joint":"ThumbTip","pose":{"position":{"x":-0.02095535211265087,"y":-0.07516473531723023,"z":-0.010627731680870057},"rotation":{"x":-0.5490170121192932,"y":-0.08343470841646195,"z":0.6728134751319885,"w":0.48939600586891177}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.058891069144010547,"y":-0.11150021106004715,"z":-0.047359079122543338},"rotation":{"x":-0.5242606997489929,"y":-0.3638727068901062,"z":0.0003723353147506714,"w":0.7699006795883179}}},{"joint":"IndexKnuckle","pose":{"position":{"x":0.025922514498233796,"y":-0.06404880434274674,"z":-0.036451879888772967},"rotation":{"x":-0.5153175592422485,"y":-0.13684964179992677,"z":0.0975230410695076,"w":0.840372622013092}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":0.012116845697164536,"y":-0.028988275676965715,"z":-0.0184309259057045},"rotation":{"x":-0.5083625912666321,"y":-0.08690404891967774,"z":0.1772240400314331,"w":0.8382880687713623}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":0.0047910469584167,"y":-0.01052884478121996,"z":-0.007911253720521927},"rotation":{"x":-0.4986042380332947,"y":-0.10437075048685074,"z":0.07316453754901886,"w":0.8577484488487244}}},{"joint":"IndexTip","pose":{"position":{"x":0.0011067038867622614,"y":0.0017288230592384935,"z":-0.0008905145805329084},"rotation":{"x":-0.4986042380332947,"y":-0.10437075048685074,"z":0.07316453754901886,"w":0.8577484488487244}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.06627093255519867,"y":-0.1093648374080658,"z":-0.04731958359479904},"rotation":{"x":-0.5980523824691773,"y":-0.19373856484889985,"z":0.061999037861824039,"w":0.7752125859260559}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.04579643905162811,"y":-0.05998942255973816,"z":-0.035861626267433169},"rotation":{"x":0.07707051932811737,"y":0.09493987262248993,"z":-0.06967925280332566,"w":-0.9900561571121216}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":0.03759719431400299,"y":-0.054239436984062198,"z":0.004158938303589821},"rotation":{"x":-0.5364435911178589,"y":0.035090312361717227,"z":-0.1292860358953476,"w":-0.8333183526992798}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":0.039636775851249698,"y":-0.07725092768669129,"z":0.014920881018042565},"rotation":{"x":-0.7898687720298767,"y":-0.05351902171969414,"z":-0.050689004361629489,"w":-0.6095116138458252}}},{"joint":"MiddleTip","pose":{"position":{"x":0.04198702797293663,"y":-0.09284322708845139,"z":0.010831182822585106},"rotation":{"x":-0.7898687720298767,"y":-0.05351902171969414,"z":-0.050689004361629489,"w":-0.6095116138458252}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.07596171647310257,"y":-0.10612225532531738,"z":-0.04667811840772629},"rotation":{"x":-0.5675100088119507,"y":-0.08019199222326279,"z":0.10617346316576004,"w":0.8125444054603577}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.06377431005239487,"y":-0.06213853880763054,"z":-0.030012063682079316},"rotation":{"x":-0.03975258022546768,"y":0.09559198468923569,"z":-0.024301081895828248,"w":-0.9943375587463379}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":0.056988153606653216,"y":-0.06515654176473618,"z":0.005276134237647057},"rotation":{"x":-0.7588484287261963,"y":0.0701710507273674,"z":-0.045488141477108,"w":-0.6459669470787048}}},{"joint":"RingDistalJoint","pose":{"position":{"x":0.05652663856744766,"y":-0.08611556887626648,"z":0.0018516592681407929},"rotation":{"x":-0.9129649996757507,"y":-0.005179869011044502,"z":-0.007560268044471741,"w":-0.408629447221756}}},{"joint":"RingTip","pose":{"position":{"x":0.056841082870960239,"y":-0.09943331778049469,"z":-0.010053567588329316},"rotation":{"x":-0.9129649996757507,"y":-0.005179869011044502,"z":-0.007560268044471741,"w":-0.408629447221756}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.08423660695552826,"y":-0.10567539930343628,"z":-0.044220417737960818},"rotation":{"x":-0.5077040791511536,"y":0.04072892665863037,"z":0.1517779380083084,"w":0.8470779657363892}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.0801829993724823,"y":-0.06412312388420105,"z":-0.021305494010448457},"rotation":{"x":-0.08299122005701065,"y":0.1249239444732666,"z":0.04155319184064865,"w":-0.9878235459327698}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":0.07411551475524903,"y":-0.0677957683801651,"z":0.0015332028269767762},"rotation":{"x":-0.715654730796814,"y":0.1371033787727356,"z":0.001321159303188324,"w":-0.6849520206451416}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.07075578719377518,"y":-0.08515383303165436,"z":0.00044181570410728455},"rotation":{"x":-0.8999292254447937,"y":0.06855495274066925,"z":0.11455988883972168,"w":-0.41592133045196535}}},{"joint":"PinkyTip","pose":{"position":{"x":0.0670883059501648,"y":-0.09537018835544586,"z":-0.008319821208715439},"rotation":{"x":-0.8999292254447937,"y":0.06855495274066925,"z":0.11455988883972168,"w":-0.41592133045196535}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": -0.0780251994729042, + "y": -0.05990780144929886, + "z": -0.3291178047657013 + }, + "rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.07397598028182984, + "y": -0.1239677220582962, + "z": -0.05636374652385712 + }, + "rotation": { + "x": -0.5306746959686279, + "y": -0.24036270380020142, + "z": -0.0010364949703216553, + "w": 0.8126773834228516 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.06148417666554451, + "y": -0.08249785006046295, + "z": -0.04003134369850159 + }, + "rotation": { + "x": -0.5306746959686279, + "y": -0.24036270380020142, + "z": -0.0010364949703216553, + "w": 0.8126773834228516 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.05004027485847473, + "y": -0.1168040931224823, + "z": -0.046657364815473559 + }, + "rotation": { + "x": -0.5606539249420166, + "y": -0.098196841776371, + "z": 0.670694887638092, + "w": 0.4761941432952881 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": 0.014790681190788746, + "y": -0.1000247374176979, + "z": -0.031946491450071338 + }, + "rotation": { + "x": -0.5155644416809082, + "y": -0.0010041594505310059, + "z": 0.6619959473609924, + "w": 0.5445378422737122 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": -0.0062080565840005878, + "y": -0.0828109011054039, + "z": -0.01753186620771885 + }, + "rotation": { + "x": -0.5490170121192932, + "y": -0.08343470841646195, + "z": 0.6728134751319885, + "w": 0.48939600586891177 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": -0.02095535211265087, + "y": -0.07516473531723023, + "z": -0.010627731680870057 + }, + "rotation": { + "x": -0.5490170121192932, + "y": -0.08343470841646195, + "z": 0.6728134751319885, + "w": 0.48939600586891177 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.058891069144010547, + "y": -0.11150021106004715, + "z": -0.047359079122543338 + }, + "rotation": { + "x": -0.5242606997489929, + "y": -0.3638727068901062, + "z": 0.0003723353147506714, + "w": 0.7699006795883179 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": 0.025922514498233796, + "y": -0.06404880434274674, + "z": -0.036451879888772967 + }, + "rotation": { + "x": -0.5153175592422485, + "y": -0.13684964179992677, + "z": 0.0975230410695076, + "w": 0.840372622013092 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": 0.012116845697164536, + "y": -0.028988275676965715, + "z": -0.0184309259057045 + }, + "rotation": { + "x": -0.5083625912666321, + "y": -0.08690404891967774, + "z": 0.1772240400314331, + "w": 0.8382880687713623 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": 0.0047910469584167, + "y": -0.01052884478121996, + "z": -0.007911253720521927 + }, + "rotation": { + "x": -0.4986042380332947, + "y": -0.10437075048685074, + "z": 0.07316453754901886, + "w": 0.8577484488487244 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": 0.0011067038867622614, + "y": 0.0017288230592384935, + "z": -0.0008905145805329084 + }, + "rotation": { + "x": -0.4986042380332947, + "y": -0.10437075048685074, + "z": 0.07316453754901886, + "w": 0.8577484488487244 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.06627093255519867, + "y": -0.1093648374080658, + "z": -0.04731958359479904 + }, + "rotation": { + "x": -0.5980523824691773, + "y": -0.19373856484889985, + "z": 0.061999037861824039, + "w": 0.7752125859260559 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.04579643905162811, + "y": -0.05998942255973816, + "z": -0.035861626267433169 + }, + "rotation": { + "x": 0.07707051932811737, + "y": 0.09493987262248993, + "z": -0.06967925280332566, + "w": -0.9900561571121216 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": 0.03759719431400299, + "y": -0.054239436984062198, + "z": 0.004158938303589821 + }, + "rotation": { + "x": -0.5364435911178589, + "y": 0.035090312361717227, + "z": -0.1292860358953476, + "w": -0.8333183526992798 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": 0.039636775851249698, + "y": -0.07725092768669129, + "z": 0.014920881018042565 + }, + "rotation": { + "x": -0.7898687720298767, + "y": -0.05351902171969414, + "z": -0.050689004361629489, + "w": -0.6095116138458252 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.04198702797293663, + "y": -0.09284322708845139, + "z": 0.010831182822585106 + }, + "rotation": { + "x": -0.7898687720298767, + "y": -0.05351902171969414, + "z": -0.050689004361629489, + "w": -0.6095116138458252 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.07596171647310257, + "y": -0.10612225532531738, + "z": -0.04667811840772629 + }, + "rotation": { + "x": -0.5675100088119507, + "y": -0.08019199222326279, + "z": 0.10617346316576004, + "w": 0.8125444054603577 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.06377431005239487, + "y": -0.06213853880763054, + "z": -0.030012063682079316 + }, + "rotation": { + "x": -0.03975258022546768, + "y": 0.09559198468923569, + "z": -0.024301081895828248, + "w": -0.9943375587463379 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": 0.056988153606653216, + "y": -0.06515654176473618, + "z": 0.005276134237647057 + }, + "rotation": { + "x": -0.7588484287261963, + "y": 0.0701710507273674, + "z": -0.045488141477108, + "w": -0.6459669470787048 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": 0.05652663856744766, + "y": -0.08611556887626648, + "z": 0.0018516592681407929 + }, + "rotation": { + "x": -0.9129649996757507, + "y": -0.005179869011044502, + "z": -0.007560268044471741, + "w": -0.408629447221756 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.056841082870960239, + "y": -0.09943331778049469, + "z": -0.010053567588329316 + }, + "rotation": { + "x": -0.9129649996757507, + "y": -0.005179869011044502, + "z": -0.007560268044471741, + "w": -0.408629447221756 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.08423660695552826, + "y": -0.10567539930343628, + "z": -0.044220417737960818 + }, + "rotation": { + "x": -0.5077040791511536, + "y": 0.04072892665863037, + "z": 0.1517779380083084, + "w": 0.8470779657363892 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.0801829993724823, + "y": -0.06412312388420105, + "z": -0.021305494010448457 + }, + "rotation": { + "x": -0.08299122005701065, + "y": 0.1249239444732666, + "z": 0.04155319184064865, + "w": -0.9878235459327698 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": 0.07411551475524903, + "y": -0.0677957683801651, + "z": 0.0015332028269767762 + }, + "rotation": { + "x": -0.715654730796814, + "y": 0.1371033787727356, + "z": 0.001321159303188324, + "w": -0.6849520206451416 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.07075578719377518, + "y": -0.08515383303165436, + "z": 0.00044181570410728455 + }, + "rotation": { + "x": -0.8999292254447937, + "y": 0.06855495274066925, + "z": 0.11455988883972168, + "w": -0.41592133045196535 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.0670883059501648, + "y": -0.09537018835544586, + "z": -0.008319821208715439 + }, + "rotation": { + "x": -0.8999292254447937, + "y": 0.06855495274066925, + "z": 0.11455988883972168, + "w": -0.41592133045196535 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_OpenSteadyGrabPoint.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_OpenSteadyGrabPoint.json index e13e84ad20f..d20d15e7a14 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_OpenSteadyGrabPoint.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_OpenSteadyGrabPoint.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":-0.0681008753599599,"y":-0.023189845320302993,"z":-0.32335868163499981},"rotation":{"x":0,"y":0,"z":0,"w":0}}},{"joint":"Wrist","pose":{"position":{"x":0.083900304394774139,"y":-0.087249765929300338,"z":-0.050604623393155634},"rotation":{"x":-0.53067469596862793,"y":-0.24036270380020142,"z":-0.0010364949703216553,"w":0.81267738342285156}}},{"joint":"Palm","pose":{"position":{"x":0.071408500778488815,"y":-0.045779893931467086,"z":-0.034272220567800105},"rotation":{"x":-0.53067469596862793,"y":-0.24036270380020142,"z":-0.0010364949703216553,"w":0.81267738342285156}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.059964598971419036,"y":-0.080086136993486434,"z":-0.040898241684772074},"rotation":{"x":-0.5606539249420166,"y":-0.098196841776371,"z":0.670694887638092,"w":0.47619414329528809}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":0.024715005303733051,"y":-0.063306781288702041,"z":-0.026187368319369853},"rotation":{"x":-0.5155644416809082,"y":-0.0010041594505310059,"z":0.66199594736099243,"w":0.54453784227371216}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":0.0037162675289437175,"y":-0.046092944976408035,"z":-0.011772743077017367},"rotation":{"x":-0.54901701211929321,"y":-0.083434708416461945,"z":0.67281347513198853,"w":0.48939600586891174}}},{"joint":"ThumbTip","pose":{"position":{"x":-0.011031027999706566,"y":-0.038446779188234359,"z":-0.0048686085501685739},"rotation":{"x":-0.54901701211929321,"y":-0.083434708416461945,"z":0.67281347513198853,"w":0.48939600586891174}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.068815393256954849,"y":-0.074782254931051284,"z":-0.041599955991841853},"rotation":{"x":-0.52426069974899292,"y":-0.3638727068901062,"z":0.00037233531475067139,"w":0.76990067958831787}}},{"joint":"IndexKnuckle","pose":{"position":{"x":0.0358468386111781,"y":-0.027330848213750869,"z":-0.030692756758071482},"rotation":{"x":-0.51531755924224854,"y":-0.13684964179992676,"z":0.0975230410695076,"w":0.840372622013092}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":0.02204116981010884,"y":0.0077296804520301521,"z":-0.012671802775003016},"rotation":{"x":-0.50836259126663208,"y":-0.086904048919677734,"z":0.17722404003143311,"w":0.8382880687713623}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":0.014715371071361005,"y":0.026189111347775906,"z":-0.0021521305898204446},"rotation":{"x":-0.49860423803329468,"y":-0.10437075048685074,"z":0.07316453754901886,"w":0.85774844884872437}}},{"joint":"IndexTip","pose":{"position":{"x":0.011031027999706566,"y":0.038446779188234359,"z":0.0048686085501685739},"rotation":{"x":-0.49860423803329468,"y":-0.10437075048685074,"z":0.07316453754901886,"w":0.85774844884872437}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.076195256668142974,"y":-0.07264688127906993,"z":-0.041560460464097559},"rotation":{"x":-0.59805238246917725,"y":-0.19373856484889984,"z":0.061999037861824036,"w":0.77521258592605591}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.055720763164572418,"y":-0.023271466430742294,"z":-0.030102503136731684},"rotation":{"x":0.077070519328117371,"y":0.094939872622489929,"z":-0.069679252803325653,"w":-0.99005615711212158}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":0.047521518426947296,"y":-0.017521480855066329,"z":0.0099180614342913032},"rotation":{"x":-0.53644359111785889,"y":0.035090312361717224,"z":-0.1292860358953476,"w":-0.83331835269927979}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":0.049561099964194,"y":-0.040532971557695419,"z":0.020680004148744047},"rotation":{"x":-0.78986877202987671,"y":-0.053519021719694138,"z":-0.050689004361629486,"w":-0.6095116138458252}}},{"joint":"MiddleTip","pose":{"position":{"x":0.051911352085880935,"y":-0.05612527095945552,"z":0.016590305953286588},"rotation":{"x":-0.78986877202987671,"y":-0.053519021719694138,"z":-0.050689004361629486,"w":-0.6095116138458252}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.085886040586046875,"y":-0.069404299196321517,"z":-0.040918995277024806},"rotation":{"x":-0.56751000881195068,"y":-0.080191992223262787,"z":0.10617346316576004,"w":0.81254440546035767}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.073698634165339172,"y":-0.025420582678634673,"z":-0.024252940551377833},"rotation":{"x":-0.039752580225467682,"y":0.095591984689235687,"z":-0.024301081895828247,"w":-0.99433755874633789}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":0.066912477719597518,"y":-0.02843858563574031,"z":0.011035257368348539},"rotation":{"x":-0.75884842872619629,"y":0.0701710507273674,"z":-0.045488141477108,"w":-0.64596694707870483}}},{"joint":"RingDistalJoint","pose":{"position":{"x":0.066450962680391967,"y":-0.049397612747270614,"z":0.0076107823988422751},"rotation":{"x":-0.91296499967575073,"y":-0.0051798690110445023,"z":-0.0075602680444717407,"w":-0.408629447221756}}},{"joint":"RingTip","pose":{"position":{"x":0.066765406983904541,"y":-0.062715361651498824,"z":-0.0042944444576278329},"rotation":{"x":-0.91296499967575073,"y":-0.0051798690110445023,"z":-0.0075602680444717407,"w":-0.408629447221756}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.094160931068472564,"y":-0.068957443174440414,"z":-0.038461294607259333},"rotation":{"x":-0.50770407915115356,"y":0.040728926658630371,"z":0.15177793800830841,"w":0.84707796573638916}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.0901073234854266,"y":-0.027405167755205184,"z":-0.015546370879746974},"rotation":{"x":-0.082991220057010651,"y":0.1249239444732666,"z":0.041553191840648651,"w":-0.98782354593276978}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":0.084039838868193328,"y":-0.031077812251169235,"z":0.0072923259576782584},"rotation":{"x":-0.715654730796814,"y":0.1371033787727356,"z":0.001321159303188324,"w":-0.6849520206451416}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.080680111306719482,"y":-0.048435876902658492,"z":0.0062009388348087668},"rotation":{"x":-0.8999292254447937,"y":0.06855495274066925,"z":0.11455988883972168,"w":-0.41592133045196533}}},{"joint":"PinkyTip","pose":{"position":{"x":0.0770126300631091,"y":-0.058652232226449996,"z":-0.0025606980780139565},"rotation":{"x":-0.8999292254447937,"y":0.06855495274066925,"z":0.11455988883972168,"w":-0.41592133045196533}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": -0.0681008753599599, + "y": -0.023189845320302993, + "z": -0.32335868163499981 + }, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "w": 0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.083900304394774139, + "y": -0.087249765929300338, + "z": -0.050604623393155634 + }, + "rotation": { + "x": -0.53067469596862793, + "y": -0.24036270380020142, + "z": -0.0010364949703216553, + "w": 0.81267738342285156 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.071408500778488815, + "y": -0.045779893931467086, + "z": -0.034272220567800105 + }, + "rotation": { + "x": -0.53067469596862793, + "y": -0.24036270380020142, + "z": -0.0010364949703216553, + "w": 0.81267738342285156 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.059964598971419036, + "y": -0.080086136993486434, + "z": -0.040898241684772074 + }, + "rotation": { + "x": -0.5606539249420166, + "y": -0.098196841776371, + "z": 0.670694887638092, + "w": 0.47619414329528809 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": 0.024715005303733051, + "y": -0.063306781288702041, + "z": -0.026187368319369853 + }, + "rotation": { + "x": -0.5155644416809082, + "y": -0.0010041594505310059, + "z": 0.66199594736099243, + "w": 0.54453784227371216 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": 0.0037162675289437175, + "y": -0.046092944976408035, + "z": -0.011772743077017367 + }, + "rotation": { + "x": -0.54901701211929321, + "y": -0.083434708416461945, + "z": 0.67281347513198853, + "w": 0.48939600586891174 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": -0.011031027999706566, + "y": -0.038446779188234359, + "z": -0.0048686085501685739 + }, + "rotation": { + "x": -0.54901701211929321, + "y": -0.083434708416461945, + "z": 0.67281347513198853, + "w": 0.48939600586891174 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.068815393256954849, + "y": -0.074782254931051284, + "z": -0.041599955991841853 + }, + "rotation": { + "x": -0.52426069974899292, + "y": -0.3638727068901062, + "z": 0.00037233531475067139, + "w": 0.76990067958831787 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": 0.0358468386111781, + "y": -0.027330848213750869, + "z": -0.030692756758071482 + }, + "rotation": { + "x": -0.51531755924224854, + "y": -0.13684964179992676, + "z": 0.0975230410695076, + "w": 0.840372622013092 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": 0.02204116981010884, + "y": 0.0077296804520301521, + "z": -0.012671802775003016 + }, + "rotation": { + "x": -0.50836259126663208, + "y": -0.086904048919677734, + "z": 0.17722404003143311, + "w": 0.8382880687713623 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": 0.014715371071361005, + "y": 0.026189111347775906, + "z": -0.0021521305898204446 + }, + "rotation": { + "x": -0.49860423803329468, + "y": -0.10437075048685074, + "z": 0.07316453754901886, + "w": 0.85774844884872437 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": 0.011031027999706566, + "y": 0.038446779188234359, + "z": 0.0048686085501685739 + }, + "rotation": { + "x": -0.49860423803329468, + "y": -0.10437075048685074, + "z": 0.07316453754901886, + "w": 0.85774844884872437 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.076195256668142974, + "y": -0.07264688127906993, + "z": -0.041560460464097559 + }, + "rotation": { + "x": -0.59805238246917725, + "y": -0.19373856484889984, + "z": 0.061999037861824036, + "w": 0.77521258592605591 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.055720763164572418, + "y": -0.023271466430742294, + "z": -0.030102503136731684 + }, + "rotation": { + "x": 0.077070519328117371, + "y": 0.094939872622489929, + "z": -0.069679252803325653, + "w": -0.99005615711212158 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": 0.047521518426947296, + "y": -0.017521480855066329, + "z": 0.0099180614342913032 + }, + "rotation": { + "x": -0.53644359111785889, + "y": 0.035090312361717224, + "z": -0.1292860358953476, + "w": -0.83331835269927979 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": 0.049561099964194, + "y": -0.040532971557695419, + "z": 0.020680004148744047 + }, + "rotation": { + "x": -0.78986877202987671, + "y": -0.053519021719694138, + "z": -0.050689004361629486, + "w": -0.6095116138458252 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.051911352085880935, + "y": -0.05612527095945552, + "z": 0.016590305953286588 + }, + "rotation": { + "x": -0.78986877202987671, + "y": -0.053519021719694138, + "z": -0.050689004361629486, + "w": -0.6095116138458252 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.085886040586046875, + "y": -0.069404299196321517, + "z": -0.040918995277024806 + }, + "rotation": { + "x": -0.56751000881195068, + "y": -0.080191992223262787, + "z": 0.10617346316576004, + "w": 0.81254440546035767 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.073698634165339172, + "y": -0.025420582678634673, + "z": -0.024252940551377833 + }, + "rotation": { + "x": -0.039752580225467682, + "y": 0.095591984689235687, + "z": -0.024301081895828247, + "w": -0.99433755874633789 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": 0.066912477719597518, + "y": -0.02843858563574031, + "z": 0.011035257368348539 + }, + "rotation": { + "x": -0.75884842872619629, + "y": 0.0701710507273674, + "z": -0.045488141477108, + "w": -0.64596694707870483 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": 0.066450962680391967, + "y": -0.049397612747270614, + "z": 0.0076107823988422751 + }, + "rotation": { + "x": -0.91296499967575073, + "y": -0.0051798690110445023, + "z": -0.0075602680444717407, + "w": -0.408629447221756 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.066765406983904541, + "y": -0.062715361651498824, + "z": -0.0042944444576278329 + }, + "rotation": { + "x": -0.91296499967575073, + "y": -0.0051798690110445023, + "z": -0.0075602680444717407, + "w": -0.408629447221756 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.094160931068472564, + "y": -0.068957443174440414, + "z": -0.038461294607259333 + }, + "rotation": { + "x": -0.50770407915115356, + "y": 0.040728926658630371, + "z": 0.15177793800830841, + "w": 0.84707796573638916 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.0901073234854266, + "y": -0.027405167755205184, + "z": -0.015546370879746974 + }, + "rotation": { + "x": -0.082991220057010651, + "y": 0.1249239444732666, + "z": 0.041553191840648651, + "w": -0.98782354593276978 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": 0.084039838868193328, + "y": -0.031077812251169235, + "z": 0.0072923259576782584 + }, + "rotation": { + "x": -0.715654730796814, + "y": 0.1371033787727356, + "z": 0.001321159303188324, + "w": -0.6849520206451416 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.080680111306719482, + "y": -0.048435876902658492, + "z": 0.0062009388348087668 + }, + "rotation": { + "x": -0.8999292254447937, + "y": 0.06855495274066925, + "z": 0.11455988883972168, + "w": -0.41592133045196533 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.0770126300631091, + "y": -0.058652232226449996, + "z": -0.0025606980780139565 + }, + "rotation": { + "x": -0.8999292254447937, + "y": 0.06855495274066925, + "z": 0.11455988883972168, + "w": -0.41592133045196533 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Pinch.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Pinch.json index b820954e258..0a3c8882d99 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Pinch.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Pinch.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":-0.055795830441638827,"y":-0.050494263647124171,"z":-0.31160801439546049},"rotation":{"x":0,"y":0,"z":0,"w":0}}},{"joint":"Wrist","pose":{"position":{"x":0.094970445381477475,"y":-0.071920572547242045,"z":-0.043240679195150733},"rotation":{"x":-0.57126933336257935,"y":-0.40886738896369934,"z":-0.11714609712362289,"w":0.70179426670074463}}},{"joint":"Palm","pose":{"position":{"x":0.078446935163810849,"y":-0.025236195651814342,"z":-0.038608604809269309},"rotation":{"x":-0.57126933336257935,"y":-0.40886738896369934,"z":-0.11714609712362289,"w":0.70179426670074463}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.0704388425219804,"y":-0.063463031081482768,"z":-0.0446559542324394},"rotation":{"x":0.59957319498062134,"y":0.056990712881088257,"z":-0.661469042301178,"w":-0.44784826040267944}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":0.030931103276088834,"y":-0.041895947186276317,"z":-0.03173214360140264},"rotation":{"x":0.48144450783729553,"y":-0.077987000346183777,"z":-0.66726517677307129,"w":-0.56365346908569336}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":0.011377685004845262,"y":-0.0191096484195441,"z":-0.013179950183257461},"rotation":{"x":0.48974254727363586,"y":-0.04340343177318573,"z":-0.678149402141571,"w":-0.54698729515075684}}},{"joint":"ThumbTip","pose":{"position":{"x":-0.00054007698781788349,"y":-0.0076306506525725126,"z":-0.0031634948682039976},"rotation":{"x":0.48974254727363586,"y":-0.04340343177318573,"z":-0.678149402141571,"w":-0.54698729515075684}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.079071666346862912,"y":-0.057821920840069652,"z":-0.042442125966772437},"rotation":{"x":-0.54839807748794556,"y":-0.5408281683921814,"z":-0.10956580191850662,"w":0.6282992959022522}}},{"joint":"IndexKnuckle","pose":{"position":{"x":0.042313426034525037,"y":-0.0047555731143802404,"z":-0.054694456746801734},"rotation":{"x":0.33803752064704895,"y":0.34615525603294373,"z":-0.075356766581535339,"w":-0.87192034721374512}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":0.015641395235434175,"y":0.0171373023185879,"z":-0.033025106182321906},"rotation":{"x":0.011520777828991413,"y":0.23532292246818543,"z":-0.26723867654800415,"w":-0.93442928791046143}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":0.0043656446505337954,"y":0.014503426151350141,"z":-0.01055326103232801},"rotation":{"x":-0.18848013877868652,"y":0.1752738356590271,"z":-0.23216751217842102,"w":-0.938201367855072}}},{"joint":"IndexTip","pose":{"position":{"x":0.00054007698781788349,"y":0.0076306506525725126,"z":0.0031634948682039976},"rotation":{"x":-0.18848013877868652,"y":0.1752738356590271,"z":-0.23216751217842102,"w":-0.938201367855072}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.085573996650055051,"y":-0.055481004295870662,"z":-0.039088224759325385},"rotation":{"x":-0.64046329259872437,"y":-0.373137503862381,"z":-0.082113638520240784,"w":0.66620767116546631}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.061702992068603635,"y":0.00021764193661510944,"z":-0.04510785429738462},"rotation":{"x":0.1714177131652832,"y":0.3295632004737854,"z":-0.056909773498773575,"w":-0.92670679092407227}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":0.033647007541731,"y":0.01268923026509583,"z":-0.012882571434602141},"rotation":{"x":-0.52955335378646851,"y":0.20503298938274384,"z":-0.28541553020477295,"w":-0.77215194702148438}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":0.033218997763469815,"y":-0.014666470466181636,"z":-0.00248397677205503},"rotation":{"x":-0.80611693859100342,"y":0.037188127636909485,"z":-0.25478187203407288,"w":-0.5337793231010437}}},{"joint":"MiddleTip","pose":{"position":{"x":0.039724528091028333,"y":-0.030166196404024959,"z":-0.0077722163405269384},"rotation":{"x":-0.80611693859100342,"y":0.037188127636909485,"z":-0.25478187203407288,"w":-0.5337793231010437}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.094046983169391751,"y":-0.05198403331451118,"z":-0.034078513970598578},"rotation":{"x":-0.63099503517150879,"y":-0.25767973065376282,"z":-0.040025528520345688,"w":0.73064666986465454}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.076233054744079709,"y":-0.00047668232582509518,"z":-0.030205076327547431},"rotation":{"x":0.061521425843238831,"y":0.32744783163070679,"z":-0.026347285136580467,"w":-0.94250476360321045}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":0.051643508719280362,"y":0.003435472259297967,"z":0.00062574469484388828},"rotation":{"x":-0.7006344199180603,"y":0.22492779791355133,"z":-0.23193849623203278,"w":-0.63627457618713379}}},{"joint":"RingDistalJoint","pose":{"position":{"x":0.0525671869982034,"y":-0.0204183969181031,"z":-0.0013549791183322668},"rotation":{"x":-0.88947725296020508,"y":0.068172931671142578,"z":-0.23703967034816742,"w":-0.38538727164268494}}},{"joint":"RingTip","pose":{"position":{"x":0.0596969083417207,"y":-0.034293188480660319,"z":-0.0127856710460037},"rotation":{"x":-0.88947725296020508,"y":0.068172931671142578,"z":-0.23703967034816742,"w":-0.38538727164268494}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.10081055318005383,"y":-0.050989105133339763,"z":-0.027507969876751304},"rotation":{"x":-0.58761417865753174,"y":-0.13647006452083588,"z":0.010980717837810516,"w":0.79747408628463745}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.088435876416042447,"y":-0.00084916572086513042,"z":-0.01290042488835752},"rotation":{"x":-0.015533886849880219,"y":0.36132562160491943,"z":0.044756371527910233,"w":-0.9312441349029541}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":0.071086059557273984,"y":-0.000761339208111167,"z":0.0060971176717430353},"rotation":{"x":-0.6863744854927063,"y":0.30161058902740479,"z":-0.18428879976272583,"w":-0.63567912578582764}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.068500611232593656,"y":-0.02024311083368957,"z":0.0036448633763939142},"rotation":{"x":-0.93071597814559937,"y":0.13045383989810944,"z":-0.11257931590080261,"w":-0.32351988554000854}}},{"joint":"PinkyTip","pose":{"position":{"x":0.070451776729896665,"y":-0.030086855171248317,"z":-0.00828781514428556},"rotation":{"x":-0.93071597814559937,"y":0.13045383989810944,"z":-0.11257931590080261,"w":-0.32351988554000854}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": -0.055795830441638827, + "y": -0.050494263647124171, + "z": -0.31160801439546049 + }, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "w": 0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.094970445381477475, + "y": -0.071920572547242045, + "z": -0.043240679195150733 + }, + "rotation": { + "x": -0.57126933336257935, + "y": -0.40886738896369934, + "z": -0.11714609712362289, + "w": 0.70179426670074463 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.078446935163810849, + "y": -0.025236195651814342, + "z": -0.038608604809269309 + }, + "rotation": { + "x": -0.57126933336257935, + "y": -0.40886738896369934, + "z": -0.11714609712362289, + "w": 0.70179426670074463 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.0704388425219804, + "y": -0.063463031081482768, + "z": -0.0446559542324394 + }, + "rotation": { + "x": 0.59957319498062134, + "y": 0.056990712881088257, + "z": -0.661469042301178, + "w": -0.44784826040267944 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": 0.030931103276088834, + "y": -0.041895947186276317, + "z": -0.03173214360140264 + }, + "rotation": { + "x": 0.48144450783729553, + "y": -0.077987000346183777, + "z": -0.66726517677307129, + "w": -0.56365346908569336 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": 0.011377685004845262, + "y": -0.0191096484195441, + "z": -0.013179950183257461 + }, + "rotation": { + "x": 0.48974254727363586, + "y": -0.04340343177318573, + "z": -0.678149402141571, + "w": -0.54698729515075684 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": -0.00054007698781788349, + "y": -0.0076306506525725126, + "z": -0.0031634948682039976 + }, + "rotation": { + "x": 0.48974254727363586, + "y": -0.04340343177318573, + "z": -0.678149402141571, + "w": -0.54698729515075684 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.079071666346862912, + "y": -0.057821920840069652, + "z": -0.042442125966772437 + }, + "rotation": { + "x": -0.54839807748794556, + "y": -0.5408281683921814, + "z": -0.10956580191850662, + "w": 0.6282992959022522 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": 0.042313426034525037, + "y": -0.0047555731143802404, + "z": -0.054694456746801734 + }, + "rotation": { + "x": 0.33803752064704895, + "y": 0.34615525603294373, + "z": -0.075356766581535339, + "w": -0.87192034721374512 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": 0.015641395235434175, + "y": 0.0171373023185879, + "z": -0.033025106182321906 + }, + "rotation": { + "x": 0.011520777828991413, + "y": 0.23532292246818543, + "z": -0.26723867654800415, + "w": -0.93442928791046143 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": 0.0043656446505337954, + "y": 0.014503426151350141, + "z": -0.01055326103232801 + }, + "rotation": { + "x": -0.18848013877868652, + "y": 0.1752738356590271, + "z": -0.23216751217842102, + "w": -0.938201367855072 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": 0.00054007698781788349, + "y": 0.0076306506525725126, + "z": 0.0031634948682039976 + }, + "rotation": { + "x": -0.18848013877868652, + "y": 0.1752738356590271, + "z": -0.23216751217842102, + "w": -0.938201367855072 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.085573996650055051, + "y": -0.055481004295870662, + "z": -0.039088224759325385 + }, + "rotation": { + "x": -0.64046329259872437, + "y": -0.373137503862381, + "z": -0.082113638520240784, + "w": 0.66620767116546631 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.061702992068603635, + "y": 0.00021764193661510944, + "z": -0.04510785429738462 + }, + "rotation": { + "x": 0.1714177131652832, + "y": 0.3295632004737854, + "z": -0.056909773498773575, + "w": -0.92670679092407227 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": 0.033647007541731, + "y": 0.01268923026509583, + "z": -0.012882571434602141 + }, + "rotation": { + "x": -0.52955335378646851, + "y": 0.20503298938274384, + "z": -0.28541553020477295, + "w": -0.77215194702148438 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": 0.033218997763469815, + "y": -0.014666470466181636, + "z": -0.00248397677205503 + }, + "rotation": { + "x": -0.80611693859100342, + "y": 0.037188127636909485, + "z": -0.25478187203407288, + "w": -0.5337793231010437 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.039724528091028333, + "y": -0.030166196404024959, + "z": -0.0077722163405269384 + }, + "rotation": { + "x": -0.80611693859100342, + "y": 0.037188127636909485, + "z": -0.25478187203407288, + "w": -0.5337793231010437 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.094046983169391751, + "y": -0.05198403331451118, + "z": -0.034078513970598578 + }, + "rotation": { + "x": -0.63099503517150879, + "y": -0.25767973065376282, + "z": -0.040025528520345688, + "w": 0.73064666986465454 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.076233054744079709, + "y": -0.00047668232582509518, + "z": -0.030205076327547431 + }, + "rotation": { + "x": 0.061521425843238831, + "y": 0.32744783163070679, + "z": -0.026347285136580467, + "w": -0.94250476360321045 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": 0.051643508719280362, + "y": 0.003435472259297967, + "z": 0.00062574469484388828 + }, + "rotation": { + "x": -0.7006344199180603, + "y": 0.22492779791355133, + "z": -0.23193849623203278, + "w": -0.63627457618713379 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": 0.0525671869982034, + "y": -0.0204183969181031, + "z": -0.0013549791183322668 + }, + "rotation": { + "x": -0.88947725296020508, + "y": 0.068172931671142578, + "z": -0.23703967034816742, + "w": -0.38538727164268494 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.0596969083417207, + "y": -0.034293188480660319, + "z": -0.0127856710460037 + }, + "rotation": { + "x": -0.88947725296020508, + "y": 0.068172931671142578, + "z": -0.23703967034816742, + "w": -0.38538727164268494 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.10081055318005383, + "y": -0.050989105133339763, + "z": -0.027507969876751304 + }, + "rotation": { + "x": -0.58761417865753174, + "y": -0.13647006452083588, + "z": 0.010980717837810516, + "w": 0.79747408628463745 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.088435876416042447, + "y": -0.00084916572086513042, + "z": -0.01290042488835752 + }, + "rotation": { + "x": -0.015533886849880219, + "y": 0.36132562160491943, + "z": 0.044756371527910233, + "w": -0.9312441349029541 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": 0.071086059557273984, + "y": -0.000761339208111167, + "z": 0.0060971176717430353 + }, + "rotation": { + "x": -0.6863744854927063, + "y": 0.30161058902740479, + "z": -0.18428879976272583, + "w": -0.63567912578582764 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.068500611232593656, + "y": -0.02024311083368957, + "z": 0.0036448633763939142 + }, + "rotation": { + "x": -0.93071597814559937, + "y": 0.13045383989810944, + "z": -0.11257931590080261, + "w": -0.32351988554000854 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.070451776729896665, + "y": -0.030086855171248317, + "z": -0.00828781514428556 + }, + "rotation": { + "x": -0.93071597814559937, + "y": 0.13045383989810944, + "z": -0.11257931590080261, + "w": -0.32351988554000854 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_PinchSteadyWrist.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_PinchSteadyWrist.json index 6e4cf37aa88..1564f59d505 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_PinchSteadyWrist.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_PinchSteadyWrist.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":-0.06115446984767914,"y":-0.09662134945392609,"z":-0.2845369577407837},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":0.0}}},{"joint":"Wrist","pose":{"position":{"x":0.09835253655910492,"y":-0.13776640594005586,"z":-0.039533719420433047},"rotation":{"x":-0.5504903793334961,"y":-0.3628506064414978,"z":0.009051494300365448,"w":0.7516400218009949}}},{"joint":"Palm","pose":{"position":{"x":0.0762285590171814,"y":-0.0935618057847023,"z":-0.03025330975651741},"rotation":{"x":-0.5504903793334961,"y":-0.3628506064414978,"z":0.009051494300365448,"w":0.7516400218009949}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.0726172998547554,"y":-0.13283079862594605,"z":-0.03489827364683151},"rotation":{"x":0.5268919467926025,"y":0.07137523591518402,"z":-0.7376347184181213,"w":-0.4172084629535675}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":0.033425573259592059,"y":-0.11720558255910874,"z":-0.01445704698562622},"rotation":{"x":0.434413880109787,"y":-0.0821000337600708,"z":-0.7344200611114502,"w":-0.5157689452171326}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":0.014360085129737854,"y":-0.09762166440486908,"z":0.006609674543142319},"rotation":{"x":0.4773363769054413,"y":0.019135713577270509,"z":-0.7483649849891663,"w":-0.4610738456249237}}},{"joint":"ThumbTip","pose":{"position":{"x":-0.00011064158752560616,"y":-0.08949866145849228,"z":0.017393887042999269},"rotation":{"x":0.4773363769054413,"y":0.019135713577270509,"z":-0.7483649849891663,"w":-0.4610738456249237}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.08073623478412628,"y":-0.125896617770195,"z":-0.034658633172512057},"rotation":{"x":-0.5162340998649597,"y":-0.5017301440238953,"z":0.006298713386058807,"w":0.6940672993659973}}},{"joint":"IndexKnuckle","pose":{"position":{"x":0.03474228084087372,"y":-0.0794244259595871,"z":-0.03704426437616348},"rotation":{"x":0.24844542145729066,"y":0.2553045451641083,"z":-0.1957876831293106,"w":-0.9136616587638855}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":0.011708781123161316,"y":-0.06496208906173706,"z":-0.006560325622558594},"rotation":{"x":-0.07294681668281555,"y":0.11601599305868149,"z":-0.3479400873184204,"w":-0.9274918437004089}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":0.007551820017397404,"y":-0.07041776180267334,"z":0.017747312784194948},"rotation":{"x":-0.23120707273483277,"y":0.04230353981256485,"z":-0.283862441778183,"w":-0.9298091530799866}}},{"joint":"IndexTip","pose":{"position":{"x":0.008366326801478863,"y":-0.07753925025463104,"z":0.03171003982424736},"rotation":{"x":-0.23120707273483277,"y":0.04230353981256485,"z":-0.283862441778183,"w":-0.9298091530799866}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.08751480281352997,"y":-0.12250128388404846,"z":-0.03293202817440033},"rotation":{"x":-0.6167790293693543,"y":-0.3379325270652771,"z":0.047245174646377566,"w":0.7093328237533569}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.05473826080560684,"y":-0.07110955566167832,"z":-0.03227551281452179},"rotation":{"x":0.14497825503349305,"y":0.23276910185813905,"z":-0.15017877519130708,"w":-0.9498769640922546}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":0.03288401663303375,"y":-0.061863791197538379,"z":0.005947750061750412},"rotation":{"x":-0.529046893119812,"y":0.08228799700737,"z":-0.27945762872695925,"w":-0.7971096038818359}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":0.03765859827399254,"y":-0.08771546185016632,"z":0.018359089270234109},"rotation":{"x":-0.7883356809616089,"y":-0.06667964905500412,"z":-0.20251651108264924,"w":-0.5779290795326233}}},{"joint":"MiddleTip","pose":{"position":{"x":0.044593729078769687,"y":-0.10324498265981674,"z":0.013978719711303711},"rotation":{"x":-0.7883356809616089,"y":-0.06667964905500412,"z":-0.20251651108264924,"w":-0.5779290795326233}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.09642073512077332,"y":-0.11764736473560333,"z":-0.03004951775074005},"rotation":{"x":-0.6103544235229492,"y":-0.2158902883529663,"z":0.09254944324493408,"w":0.756500780582428}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.07221101969480515,"y":-0.06899281591176987,"z":-0.021143771708011628},"rotation":{"x":0.05531589314341545,"y":0.22126297652721406,"z":-0.10504759848117829,"w":-0.9679690599441528}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":0.05479241907596588,"y":-0.06659357994794846,"z":0.014326661825180054},"rotation":{"x":-0.7176058888435364,"y":0.09858439117670059,"z":-0.19834160804748536,"w":-0.6603801846504211}}},{"joint":"RingDistalJoint","pose":{"position":{"x":0.05848679319024086,"y":-0.09022481739521027,"z":0.013152096420526505},"rotation":{"x":-0.902705729007721,"y":-0.04138700291514397,"z":-0.16108426451683045,"w":-0.39749816060066225}}},{"joint":"RingTip","pose":{"position":{"x":0.0647393986582756,"y":-0.10384124517440796,"z":0.000916551798582077},"rotation":{"x":-0.902705729007721,"y":-0.04138700291514397,"z":-0.16108426451683045,"w":-0.39749816060066225}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.10431554913520813,"y":-0.11550788581371308,"z":-0.02525215595960617},"rotation":{"x":-0.5731514096260071,"y":-0.08393544703722,"z":0.14239011704921723,"w":0.8026066422462463}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.08813987672328949,"y":-0.06685832887887955,"z":-0.0073963552713394169},"rotation":{"x":0.004650826565921307,"y":0.2523718476295471,"z":-0.022669829428195955,"w":-0.967362105846405}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":0.07569940388202667,"y":-0.066920705139637,"z":0.014825716614723206},"rotation":{"x":-0.6876563429832459,"y":0.1765523999929428,"z":-0.14831064641475678,"w":-0.6885376572608948}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.0749262273311615,"y":-0.08663906902074814,"z":0.014672402292490006},"rotation":{"x":-0.927348792552948,"y":0.0344926156103611,"z":-0.02340996265411377,"w":-0.37271565198898318}}},{"joint":"PinkyTip","pose":{"position":{"x":0.07520446181297302,"y":-0.09743660688400269,"z":0.0034288540482521059},"rotation":{"x":-0.927348792552948,"y":0.0344926156103611,"z":-0.02340996265411377,"w":-0.37271565198898318}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": -0.06115446984767914, + "y": -0.09662134945392609, + "z": -0.2845369577407837 + }, + "rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.09835253655910492, + "y": -0.13776640594005586, + "z": -0.039533719420433047 + }, + "rotation": { + "x": -0.5504903793334961, + "y": -0.3628506064414978, + "z": 0.009051494300365448, + "w": 0.7516400218009949 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.0762285590171814, + "y": -0.0935618057847023, + "z": -0.03025330975651741 + }, + "rotation": { + "x": -0.5504903793334961, + "y": -0.3628506064414978, + "z": 0.009051494300365448, + "w": 0.7516400218009949 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.0726172998547554, + "y": -0.13283079862594605, + "z": -0.03489827364683151 + }, + "rotation": { + "x": 0.5268919467926025, + "y": 0.07137523591518402, + "z": -0.7376347184181213, + "w": -0.4172084629535675 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": 0.033425573259592059, + "y": -0.11720558255910874, + "z": -0.01445704698562622 + }, + "rotation": { + "x": 0.434413880109787, + "y": -0.0821000337600708, + "z": -0.7344200611114502, + "w": -0.5157689452171326 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": 0.014360085129737854, + "y": -0.09762166440486908, + "z": 0.006609674543142319 + }, + "rotation": { + "x": 0.4773363769054413, + "y": 0.019135713577270509, + "z": -0.7483649849891663, + "w": -0.4610738456249237 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": -0.00011064158752560616, + "y": -0.08949866145849228, + "z": 0.017393887042999269 + }, + "rotation": { + "x": 0.4773363769054413, + "y": 0.019135713577270509, + "z": -0.7483649849891663, + "w": -0.4610738456249237 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.08073623478412628, + "y": -0.125896617770195, + "z": -0.034658633172512057 + }, + "rotation": { + "x": -0.5162340998649597, + "y": -0.5017301440238953, + "z": 0.006298713386058807, + "w": 0.6940672993659973 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": 0.03474228084087372, + "y": -0.0794244259595871, + "z": -0.03704426437616348 + }, + "rotation": { + "x": 0.24844542145729066, + "y": 0.2553045451641083, + "z": -0.1957876831293106, + "w": -0.9136616587638855 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": 0.011708781123161316, + "y": -0.06496208906173706, + "z": -0.006560325622558594 + }, + "rotation": { + "x": -0.07294681668281555, + "y": 0.11601599305868149, + "z": -0.3479400873184204, + "w": -0.9274918437004089 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": 0.007551820017397404, + "y": -0.07041776180267334, + "z": 0.017747312784194948 + }, + "rotation": { + "x": -0.23120707273483277, + "y": 0.04230353981256485, + "z": -0.283862441778183, + "w": -0.9298091530799866 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": 0.008366326801478863, + "y": -0.07753925025463104, + "z": 0.03171003982424736 + }, + "rotation": { + "x": -0.23120707273483277, + "y": 0.04230353981256485, + "z": -0.283862441778183, + "w": -0.9298091530799866 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.08751480281352997, + "y": -0.12250128388404846, + "z": -0.03293202817440033 + }, + "rotation": { + "x": -0.6167790293693543, + "y": -0.3379325270652771, + "z": 0.047245174646377566, + "w": 0.7093328237533569 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.05473826080560684, + "y": -0.07110955566167832, + "z": -0.03227551281452179 + }, + "rotation": { + "x": 0.14497825503349305, + "y": 0.23276910185813905, + "z": -0.15017877519130708, + "w": -0.9498769640922546 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": 0.03288401663303375, + "y": -0.061863791197538379, + "z": 0.005947750061750412 + }, + "rotation": { + "x": -0.529046893119812, + "y": 0.08228799700737, + "z": -0.27945762872695925, + "w": -0.7971096038818359 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": 0.03765859827399254, + "y": -0.08771546185016632, + "z": 0.018359089270234109 + }, + "rotation": { + "x": -0.7883356809616089, + "y": -0.06667964905500412, + "z": -0.20251651108264924, + "w": -0.5779290795326233 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.044593729078769687, + "y": -0.10324498265981674, + "z": 0.013978719711303711 + }, + "rotation": { + "x": -0.7883356809616089, + "y": -0.06667964905500412, + "z": -0.20251651108264924, + "w": -0.5779290795326233 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.09642073512077332, + "y": -0.11764736473560333, + "z": -0.03004951775074005 + }, + "rotation": { + "x": -0.6103544235229492, + "y": -0.2158902883529663, + "z": 0.09254944324493408, + "w": 0.756500780582428 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.07221101969480515, + "y": -0.06899281591176987, + "z": -0.021143771708011628 + }, + "rotation": { + "x": 0.05531589314341545, + "y": 0.22126297652721406, + "z": -0.10504759848117829, + "w": -0.9679690599441528 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": 0.05479241907596588, + "y": -0.06659357994794846, + "z": 0.014326661825180054 + }, + "rotation": { + "x": -0.7176058888435364, + "y": 0.09858439117670059, + "z": -0.19834160804748536, + "w": -0.6603801846504211 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": 0.05848679319024086, + "y": -0.09022481739521027, + "z": 0.013152096420526505 + }, + "rotation": { + "x": -0.902705729007721, + "y": -0.04138700291514397, + "z": -0.16108426451683045, + "w": -0.39749816060066225 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.0647393986582756, + "y": -0.10384124517440796, + "z": 0.000916551798582077 + }, + "rotation": { + "x": -0.902705729007721, + "y": -0.04138700291514397, + "z": -0.16108426451683045, + "w": -0.39749816060066225 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.10431554913520813, + "y": -0.11550788581371308, + "z": -0.02525215595960617 + }, + "rotation": { + "x": -0.5731514096260071, + "y": -0.08393544703722, + "z": 0.14239011704921723, + "w": 0.8026066422462463 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.08813987672328949, + "y": -0.06685832887887955, + "z": -0.0073963552713394169 + }, + "rotation": { + "x": 0.004650826565921307, + "y": 0.2523718476295471, + "z": -0.022669829428195955, + "w": -0.967362105846405 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": 0.07569940388202667, + "y": -0.066920705139637, + "z": 0.014825716614723206 + }, + "rotation": { + "x": -0.6876563429832459, + "y": 0.1765523999929428, + "z": -0.14831064641475678, + "w": -0.6885376572608948 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.0749262273311615, + "y": -0.08663906902074814, + "z": 0.014672402292490006 + }, + "rotation": { + "x": -0.927348792552948, + "y": 0.0344926156103611, + "z": -0.02340996265411377, + "w": -0.37271565198898318 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.07520446181297302, + "y": -0.09743660688400269, + "z": 0.0034288540482521059 + }, + "rotation": { + "x": -0.927348792552948, + "y": 0.0344926156103611, + "z": -0.02340996265411377, + "w": -0.37271565198898318 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Poke.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Poke.json index b729855b6c2..c39648c8923 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Poke.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Poke.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":-0.0002162586897611618,"y":-0.07638707756996155,"z":-0.5826087594032288},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":0.0}}},{"joint":"Wrist","pose":{"position":{"x":0.042526353150606158,"y":-0.05274807661771774,"z":-0.002824799157679081},"rotation":{"x":-0.3676998019218445,"y":-0.23572500050067902,"z":-0.11507342755794525,"w":0.8920522332191467}}},{"joint":"Palm","pose":{"position":{"x":0.03201436251401901,"y":-0.019188636913895608,"z":0.02868746407330036},"rotation":{"x":-0.3676998019218445,"y":-0.23572500050067902,"z":-0.11507342755794525,"w":0.8920522332191467}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.020570117980241777,"y":-0.04709470272064209,"z":0.006985310930758715},"rotation":{"x":0.3615202307701111,"y":0.20331884920597077,"z":-0.6839582324028015,"w":-0.6008830666542053}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":-0.009850621223449707,"y":-0.04070408642292023,"z":0.034042149782180789},"rotation":{"x":0.21800242364406587,"y":0.02305757999420166,"z":-0.7068297266960144,"w":-0.673233151435852}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":-0.02049688994884491,"y":-0.03254491835832596,"z":0.06248035654425621},"rotation":{"x":0.258157342672348,"y":0.0635419636964798,"z":-0.7039065957069397,"w":-0.6593562960624695}}},{"joint":"ThumbTip","pose":{"position":{"x":-0.028410332277417184,"y":-0.028122693300247194,"z":0.07770571112632752},"rotation":{"x":0.258157342672348,"y":0.0635419636964798,"z":-0.7039065957069397,"w":-0.6593562960624695}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.029027197510004045,"y":-0.042809583246707919,"z":0.009094133973121643},"rotation":{"x":-0.3631853759288788,"y":-0.3677399158477783,"z":-0.1473514586687088,"w":0.8432979583740234}}},{"joint":"IndexKnuckle","pose":{"position":{"x":-0.0017803632654249669,"y":0.0004678480327129364,"z":0.03705211728811264},"rotation":{"x":-0.27657586336135867,"y":-0.15855258703231812,"z":0.0009860674617812038,"w":0.947831392288208}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":-0.014122002758085728,"y":0.021943308413028718,"z":0.06970683485269547},"rotation":{"x":-0.2553846836090088,"y":-0.12617842853069306,"z":0.09538201987743378,"w":0.9538831114768982}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":-0.020550768822431566,"y":0.0322258397936821,"z":0.08830686658620835},"rotation":{"x":-0.30963119864463808,"y":-0.11118883639574051,"z":-0.031351685523986819,"w":0.9441277980804443}}},{"joint":"IndexTip","pose":{"position":{"x":-0.02332291379570961,"y":0.04081675410270691,"z":0.09968645870685578},"rotation":{"x":-0.30963119864463808,"y":-0.11118883639574051,"z":-0.031351685523986819,"w":0.9441277980804443}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.035866666585206988,"y":-0.041708216071128848,"z":0.010740639641880989},"rotation":{"x":-0.43399062752723696,"y":-0.2068476676940918,"z":-0.05406999588012695,"w":0.8751816153526306}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.018060242757201196,"y":0.002479703165590763,"z":0.04112553596496582},"rotation":{"x":0.005038086324930191,"y":0.1527022123336792,"z":0.021530797705054284,"w":-0.9880359768867493}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":0.005449346732348204,"y":0.0031707696616649629,"z":0.08099328726530075},"rotation":{"x":-0.49786925315856936,"y":0.13922974467277528,"z":-0.07507844269275665,"w":-0.8527824878692627}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":0.0013555703917518259,"y":-0.01869615726172924,"z":0.09269960224628449},"rotation":{"x":-0.7163864970207214,"y":0.07041004300117493,"z":-0.030646607279777528,"w":-0.6939578652381897}}},{"joint":"MiddleTip","pose":{"position":{"x":0.0004728742642328143,"y":-0.03479576110839844,"z":0.09213778376579285},"rotation":{"x":-0.7163864970207214,"y":0.07041004300117493,"z":-0.030646607279777528,"w":-0.6939578652381897}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.044932689517736438,"y":-0.04016602039337158,"z":0.013597620651125908},"rotation":{"x":-0.3939853310585022,"y":-0.10114617645740509,"z":0.016117071732878686,"w":0.9133923053741455}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.03491469845175743,"y":-0.003818823955953121,"z":0.047541361302137378},"rotation":{"x":-0.11738020181655884,"y":0.15373656153678895,"z":0.05639626830816269,"w":-0.9795019030570984}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":0.023768775165081025,"y":-0.01135534793138504,"z":0.08033758401870728},"rotation":{"x":-0.7923092842102051,"y":0.16401034593582154,"z":-0.02978098951280117,"w":-0.5869977474212647}}},{"joint":"RingDistalJoint","pose":{"position":{"x":0.02067880891263485,"y":-0.031320542097091678,"z":0.0737735852599144},"rotation":{"x":-0.9346709847450256,"y":0.0874316394329071,"z":-0.023773543536663057,"w":-0.344605952501297}}},{"joint":"RingTip","pose":{"position":{"x":0.020386409014463426,"y":-0.04289411008358002,"z":0.06018315628170967},"rotation":{"x":-0.9346709847450256,"y":0.0874316394329071,"z":-0.023773543536663057,"w":-0.344605952501297}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.05288681760430336,"y":-0.041848354041576388,"z":0.01654883660376072},"rotation":{"x":-0.33144858479499819,"y":0.002071807160973549,"z":0.085218146443367,"w":0.9396145343780518}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.050300415605306628,"y":-0.011202438734471798,"z":0.054917603731155398},"rotation":{"x":-0.16419324278831483,"y":0.1696346402168274,"z":0.12252454459667206,"w":-0.9639865159988403}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":0.04166591167449951,"y":-0.017666997388005258,"z":0.07580538094043732},"rotation":{"x":-0.7474591135978699,"y":0.20672142505645753,"z":0.04626481607556343,"w":-0.6297129392623901}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.03587989881634712,"y":-0.03386271744966507,"z":0.0722469910979271},"rotation":{"x":-0.928327202796936,"y":0.13445810973644257,"z":0.1272566169500351,"w":-0.3232197165489197}}},{"joint":"PinkyTip","pose":{"position":{"x":0.03135494887828827,"y":-0.04178089275956154,"z":0.06164591759443283},"rotation":{"x":-0.928327202796936,"y":0.13445810973644257,"z":0.1272566169500351,"w":-0.3232197165489197}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": -0.0002162586897611618, + "y": -0.07638707756996155, + "z": -0.5826087594032288 + }, + "rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.042526353150606158, + "y": -0.05274807661771774, + "z": -0.002824799157679081 + }, + "rotation": { + "x": -0.3676998019218445, + "y": -0.23572500050067902, + "z": -0.11507342755794525, + "w": 0.8920522332191467 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.03201436251401901, + "y": -0.019188636913895608, + "z": 0.02868746407330036 + }, + "rotation": { + "x": -0.3676998019218445, + "y": -0.23572500050067902, + "z": -0.11507342755794525, + "w": 0.8920522332191467 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.020570117980241777, + "y": -0.04709470272064209, + "z": 0.006985310930758715 + }, + "rotation": { + "x": 0.3615202307701111, + "y": 0.20331884920597077, + "z": -0.6839582324028015, + "w": -0.6008830666542053 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": -0.009850621223449707, + "y": -0.04070408642292023, + "z": 0.034042149782180789 + }, + "rotation": { + "x": 0.21800242364406587, + "y": 0.02305757999420166, + "z": -0.7068297266960144, + "w": -0.673233151435852 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": -0.02049688994884491, + "y": -0.03254491835832596, + "z": 0.06248035654425621 + }, + "rotation": { + "x": 0.258157342672348, + "y": 0.0635419636964798, + "z": -0.7039065957069397, + "w": -0.6593562960624695 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": -0.028410332277417184, + "y": -0.028122693300247194, + "z": 0.07770571112632752 + }, + "rotation": { + "x": 0.258157342672348, + "y": 0.0635419636964798, + "z": -0.7039065957069397, + "w": -0.6593562960624695 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.029027197510004045, + "y": -0.042809583246707919, + "z": 0.009094133973121643 + }, + "rotation": { + "x": -0.3631853759288788, + "y": -0.3677399158477783, + "z": -0.1473514586687088, + "w": 0.8432979583740234 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": -0.0017803632654249669, + "y": 0.0004678480327129364, + "z": 0.03705211728811264 + }, + "rotation": { + "x": -0.27657586336135867, + "y": -0.15855258703231812, + "z": 0.0009860674617812038, + "w": 0.947831392288208 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": -0.014122002758085728, + "y": 0.021943308413028718, + "z": 0.06970683485269547 + }, + "rotation": { + "x": -0.2553846836090088, + "y": -0.12617842853069306, + "z": 0.09538201987743378, + "w": 0.9538831114768982 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": -0.020550768822431566, + "y": 0.0322258397936821, + "z": 0.08830686658620835 + }, + "rotation": { + "x": -0.30963119864463808, + "y": -0.11118883639574051, + "z": -0.031351685523986819, + "w": 0.9441277980804443 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": -0.02332291379570961, + "y": 0.04081675410270691, + "z": 0.09968645870685578 + }, + "rotation": { + "x": -0.30963119864463808, + "y": -0.11118883639574051, + "z": -0.031351685523986819, + "w": 0.9441277980804443 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.035866666585206988, + "y": -0.041708216071128848, + "z": 0.010740639641880989 + }, + "rotation": { + "x": -0.43399062752723696, + "y": -0.2068476676940918, + "z": -0.05406999588012695, + "w": 0.8751816153526306 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.018060242757201196, + "y": 0.002479703165590763, + "z": 0.04112553596496582 + }, + "rotation": { + "x": 0.005038086324930191, + "y": 0.1527022123336792, + "z": 0.021530797705054284, + "w": -0.9880359768867493 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": 0.005449346732348204, + "y": 0.0031707696616649629, + "z": 0.08099328726530075 + }, + "rotation": { + "x": -0.49786925315856936, + "y": 0.13922974467277528, + "z": -0.07507844269275665, + "w": -0.8527824878692627 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": 0.0013555703917518259, + "y": -0.01869615726172924, + "z": 0.09269960224628449 + }, + "rotation": { + "x": -0.7163864970207214, + "y": 0.07041004300117493, + "z": -0.030646607279777528, + "w": -0.6939578652381897 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.0004728742642328143, + "y": -0.03479576110839844, + "z": 0.09213778376579285 + }, + "rotation": { + "x": -0.7163864970207214, + "y": 0.07041004300117493, + "z": -0.030646607279777528, + "w": -0.6939578652381897 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.044932689517736438, + "y": -0.04016602039337158, + "z": 0.013597620651125908 + }, + "rotation": { + "x": -0.3939853310585022, + "y": -0.10114617645740509, + "z": 0.016117071732878686, + "w": 0.9133923053741455 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.03491469845175743, + "y": -0.003818823955953121, + "z": 0.047541361302137378 + }, + "rotation": { + "x": -0.11738020181655884, + "y": 0.15373656153678895, + "z": 0.05639626830816269, + "w": -0.9795019030570984 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": 0.023768775165081025, + "y": -0.01135534793138504, + "z": 0.08033758401870728 + }, + "rotation": { + "x": -0.7923092842102051, + "y": 0.16401034593582154, + "z": -0.02978098951280117, + "w": -0.5869977474212647 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": 0.02067880891263485, + "y": -0.031320542097091678, + "z": 0.0737735852599144 + }, + "rotation": { + "x": -0.9346709847450256, + "y": 0.0874316394329071, + "z": -0.023773543536663057, + "w": -0.344605952501297 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.020386409014463426, + "y": -0.04289411008358002, + "z": 0.06018315628170967 + }, + "rotation": { + "x": -0.9346709847450256, + "y": 0.0874316394329071, + "z": -0.023773543536663057, + "w": -0.344605952501297 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.05288681760430336, + "y": -0.041848354041576388, + "z": 0.01654883660376072 + }, + "rotation": { + "x": -0.33144858479499819, + "y": 0.002071807160973549, + "z": 0.085218146443367, + "w": 0.9396145343780518 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.050300415605306628, + "y": -0.011202438734471798, + "z": 0.054917603731155398 + }, + "rotation": { + "x": -0.16419324278831483, + "y": 0.1696346402168274, + "z": 0.12252454459667206, + "w": -0.9639865159988403 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": 0.04166591167449951, + "y": -0.017666997388005258, + "z": 0.07580538094043732 + }, + "rotation": { + "x": -0.7474591135978699, + "y": 0.20672142505645753, + "z": 0.04626481607556343, + "w": -0.6297129392623901 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.03587989881634712, + "y": -0.03386271744966507, + "z": 0.0722469910979271 + }, + "rotation": { + "x": -0.928327202796936, + "y": 0.13445810973644257, + "z": 0.1272566169500351, + "w": -0.3232197165489197 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.03135494887828827, + "y": -0.04178089275956154, + "z": 0.06164591759443283 + }, + "rotation": { + "x": -0.928327202796936, + "y": 0.13445810973644257, + "z": 0.1272566169500351, + "w": -0.3232197165489197 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_ThumbsUp.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_ThumbsUp.json index c93b9a1a557..433a7c1b95b 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_ThumbsUp.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_ThumbsUp.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":-0.01725071482360363,"y":-0.08121182024478913,"z":-0.47676876187324526},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":0.0}}},{"joint":"Wrist","pose":{"position":{"x":0.08615099638700485,"y":-0.024168234318494798,"z":0.034818120300769809},"rotation":{"x":-0.24332590401172639,"y":0.6052875518798828,"z":0.5141062140464783,"w":-0.5566452741622925}}},{"joint":"Palm","pose":{"position":{"x":0.03520287200808525,"y":-0.010816145688295365,"z":0.04648737236857414},"rotation":{"x":-0.24332590401172639,"y":0.6052875518798828,"z":0.5141062140464783,"w":-0.5566452741622925}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.06692907959222794,"y":-0.0030839829705655576,"z":0.020349422469735147},"rotation":{"x":0.39406728744506838,"y":0.7213952541351318,"z":0.33115363121032717,"w":-0.46385547518730166}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":0.048644911497831348,"y":0.034663256257772449,"z":0.004639927297830582},"rotation":{"x":0.34302714467048647,"y":0.719179630279541,"z":0.2980014383792877,"w":-0.5261238217353821}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":0.030924495309591295,"y":0.05998371168971062,"z":-0.004000300541520119},"rotation":{"x":0.4403221607208252,"y":0.6942930817604065,"z":0.3865111470222473,"w":-0.4186002314090729}}},{"joint":"ThumbTip","pose":{"position":{"x":0.02607334591448307,"y":0.07819978147745133,"z":-0.011070644482970238},"rotation":{"x":0.4403221607208252,"y":0.6942930817604065,"z":0.3865111470222473,"w":-0.4186002314090729}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.06430374830961228,"y":-0.01019766554236412,"z":0.02929815649986267},"rotation":{"x":-0.22792501747608186,"y":0.6316274404525757,"z":0.5866482257843018,"w":-0.45270389318466189}}},{"joint":"IndexKnuckle","pose":{"position":{"x":0.011573880910873413,"y":0.02339656837284565,"z":0.03546718880534172},"rotation":{"x":0.3942926526069641,"y":-0.7424762845039368,"z":-0.21414896845817567,"w":0.49741214513778689}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":-0.021892068907618524,"y":0.020658958703279496,"z":0.020219745114445688},"rotation":{"x":0.5834210515022278,"y":-0.7061115503311157,"z":0.3634859323501587,"w":0.17027443647384644}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":-0.017463261261582376,"y":0.00348295527510345,"z":0.0038637774996459486},"rotation":{"x":0.6371655464172363,"y":-0.4360961318016052,"z":0.6206539869308472,"w":-0.13840782642364503}}},{"joint":"IndexTip","pose":{"position":{"x":-0.001938387518748641,"y":-0.0027357139624655248,"z":0.0005815188633278012},"rotation":{"x":0.6371655464172363,"y":-0.4360961318016052,"z":0.6206539869308472,"w":-0.13840782642364503}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.06397924572229386,"y":-0.016921602189540864,"z":0.03521520271897316},"rotation":{"x":-0.16760338842868806,"y":0.5928976535797119,"z":0.5015624761581421,"w":-0.6073026657104492}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.01083554606884718,"y":0.006482137367129326,"z":0.049619730561971667},"rotation":{"x":0.5027921199798584,"y":-0.7059369087219238,"z":-0.16476257145404817,"w":0.4708792269229889}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":-0.025254713371396066,"y":-0.003984889946877956,"z":0.02779259905219078},"rotation":{"x":0.6809582710266113,"y":-0.6233372688293457,"z":0.3824990391731262,"w":-0.039771441370248798}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":-0.00917090568691492,"y":-0.015904264524579049,"z":0.007921875454485417},"rotation":{"x":0.6229440569877625,"y":-0.2391648292541504,"z":0.642637312412262,"w":-0.37781840562820437}}},{"joint":"MiddleTip","pose":{"position":{"x":0.008252275176346302,"y":-0.013008372858166695,"z":0.009888304397463799},"rotation":{"x":0.6229440569877625,"y":-0.2391648292541504,"z":0.642637312412262,"w":-0.37781840562820437}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.06303475052118302,"y":-0.02612213045358658,"z":0.04269380867481232},"rotation":{"x":-0.18103565275669099,"y":0.5941647887229919,"z":0.39771339297294619,"w":-0.6752913594245911}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.010207276791334153,"y":-0.013390008360147477,"z":0.055441394448280337},"rotation":{"x":0.5632884502410889,"y":-0.6713510751724243,"z":-0.15870888531208039,"w":0.45477786660194399}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":-0.01994304731488228,"y":-0.024818312376737596,"z":0.03496982902288437},"rotation":{"x":0.7331446409225464,"y":-0.5462665557861328,"z":0.3692132830619812,"w":-0.16697438061237336}}},{"joint":"RingDistalJoint","pose":{"position":{"x":-0.0031065356452018024,"y":-0.028507214039564134,"z":0.019337791949510576},"rotation":{"x":0.6351615786552429,"y":-0.23133434355258943,"z":0.5935887098312378,"w":-0.43731656670570376}}},{"joint":"RingTip","pose":{"position":{"x":0.015546157956123352,"y":-0.023027585819363595,"z":0.021024812012910844},"rotation":{"x":0.6351615786552429,"y":-0.23133434355258943,"z":0.5935887098312378,"w":-0.43731656670570376}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.06254640221595764,"y":-0.034929849207401279,"z":0.04593820124864578},"rotation":{"x":-0.19249169528484345,"y":0.581859290599823,"z":0.2601516842842102,"w":-0.7461285591125488}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.009921858087182045,"y":-0.03408779203891754,"z":0.05945640057325363},"rotation":{"x":0.6286200881004334,"y":-0.6190594434738159,"z":-0.18423764407634736,"w":0.43321672081947329}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":-0.007876850664615631,"y":-0.041423700749874118,"z":0.04655241593718529},"rotation":{"x":0.7744045257568359,"y":-0.5470465421676636,"z":0.2698802649974823,"w":-0.1682688444852829}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.0036155348643660547,"y":-0.042087383568286899,"z":0.03132062032818794},"rotation":{"x":0.7368069291114807,"y":-0.19751593470573426,"z":0.4435950815677643,"w":-0.47120407223701479}}},{"joint":"PinkyTip","pose":{"position":{"x":0.016652610152959825,"y":-0.034032851457595828,"z":0.02879030816257},"rotation":{"x":0.7368069291114807,"y":-0.19751593470573426,"z":0.4435950815677643,"w":-0.47120407223701479}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": -0.01725071482360363, + "y": -0.08121182024478913, + "z": -0.47676876187324526 + }, + "rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.08615099638700485, + "y": -0.024168234318494798, + "z": 0.034818120300769809 + }, + "rotation": { + "x": -0.24332590401172639, + "y": 0.6052875518798828, + "z": 0.5141062140464783, + "w": -0.5566452741622925 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.03520287200808525, + "y": -0.010816145688295365, + "z": 0.04648737236857414 + }, + "rotation": { + "x": -0.24332590401172639, + "y": 0.6052875518798828, + "z": 0.5141062140464783, + "w": -0.5566452741622925 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.06692907959222794, + "y": -0.0030839829705655576, + "z": 0.020349422469735147 + }, + "rotation": { + "x": 0.39406728744506838, + "y": 0.7213952541351318, + "z": 0.33115363121032717, + "w": -0.46385547518730166 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": 0.048644911497831348, + "y": 0.034663256257772449, + "z": 0.004639927297830582 + }, + "rotation": { + "x": 0.34302714467048647, + "y": 0.719179630279541, + "z": 0.2980014383792877, + "w": -0.5261238217353821 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": 0.030924495309591295, + "y": 0.05998371168971062, + "z": -0.004000300541520119 + }, + "rotation": { + "x": 0.4403221607208252, + "y": 0.6942930817604065, + "z": 0.3865111470222473, + "w": -0.4186002314090729 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": 0.02607334591448307, + "y": 0.07819978147745133, + "z": -0.011070644482970238 + }, + "rotation": { + "x": 0.4403221607208252, + "y": 0.6942930817604065, + "z": 0.3865111470222473, + "w": -0.4186002314090729 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.06430374830961228, + "y": -0.01019766554236412, + "z": 0.02929815649986267 + }, + "rotation": { + "x": -0.22792501747608186, + "y": 0.6316274404525757, + "z": 0.5866482257843018, + "w": -0.45270389318466189 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": 0.011573880910873413, + "y": 0.02339656837284565, + "z": 0.03546718880534172 + }, + "rotation": { + "x": 0.3942926526069641, + "y": -0.7424762845039368, + "z": -0.21414896845817567, + "w": 0.49741214513778689 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": -0.021892068907618524, + "y": 0.020658958703279496, + "z": 0.020219745114445688 + }, + "rotation": { + "x": 0.5834210515022278, + "y": -0.7061115503311157, + "z": 0.3634859323501587, + "w": 0.17027443647384644 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": -0.017463261261582376, + "y": 0.00348295527510345, + "z": 0.0038637774996459486 + }, + "rotation": { + "x": 0.6371655464172363, + "y": -0.4360961318016052, + "z": 0.6206539869308472, + "w": -0.13840782642364503 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": -0.001938387518748641, + "y": -0.0027357139624655248, + "z": 0.0005815188633278012 + }, + "rotation": { + "x": 0.6371655464172363, + "y": -0.4360961318016052, + "z": 0.6206539869308472, + "w": -0.13840782642364503 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.06397924572229386, + "y": -0.016921602189540864, + "z": 0.03521520271897316 + }, + "rotation": { + "x": -0.16760338842868806, + "y": 0.5928976535797119, + "z": 0.5015624761581421, + "w": -0.6073026657104492 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.01083554606884718, + "y": 0.006482137367129326, + "z": 0.049619730561971667 + }, + "rotation": { + "x": 0.5027921199798584, + "y": -0.7059369087219238, + "z": -0.16476257145404817, + "w": 0.4708792269229889 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": -0.025254713371396066, + "y": -0.003984889946877956, + "z": 0.02779259905219078 + }, + "rotation": { + "x": 0.6809582710266113, + "y": -0.6233372688293457, + "z": 0.3824990391731262, + "w": -0.039771441370248798 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": -0.00917090568691492, + "y": -0.015904264524579049, + "z": 0.007921875454485417 + }, + "rotation": { + "x": 0.6229440569877625, + "y": -0.2391648292541504, + "z": 0.642637312412262, + "w": -0.37781840562820437 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.008252275176346302, + "y": -0.013008372858166695, + "z": 0.009888304397463799 + }, + "rotation": { + "x": 0.6229440569877625, + "y": -0.2391648292541504, + "z": 0.642637312412262, + "w": -0.37781840562820437 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.06303475052118302, + "y": -0.02612213045358658, + "z": 0.04269380867481232 + }, + "rotation": { + "x": -0.18103565275669099, + "y": 0.5941647887229919, + "z": 0.39771339297294619, + "w": -0.6752913594245911 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.010207276791334153, + "y": -0.013390008360147477, + "z": 0.055441394448280337 + }, + "rotation": { + "x": 0.5632884502410889, + "y": -0.6713510751724243, + "z": -0.15870888531208039, + "w": 0.45477786660194399 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": -0.01994304731488228, + "y": -0.024818312376737596, + "z": 0.03496982902288437 + }, + "rotation": { + "x": 0.7331446409225464, + "y": -0.5462665557861328, + "z": 0.3692132830619812, + "w": -0.16697438061237336 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": -0.0031065356452018024, + "y": -0.028507214039564134, + "z": 0.019337791949510576 + }, + "rotation": { + "x": 0.6351615786552429, + "y": -0.23133434355258943, + "z": 0.5935887098312378, + "w": -0.43731656670570376 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.015546157956123352, + "y": -0.023027585819363595, + "z": 0.021024812012910844 + }, + "rotation": { + "x": 0.6351615786552429, + "y": -0.23133434355258943, + "z": 0.5935887098312378, + "w": -0.43731656670570376 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.06254640221595764, + "y": -0.034929849207401279, + "z": 0.04593820124864578 + }, + "rotation": { + "x": -0.19249169528484345, + "y": 0.581859290599823, + "z": 0.2601516842842102, + "w": -0.7461285591125488 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.009921858087182045, + "y": -0.03408779203891754, + "z": 0.05945640057325363 + }, + "rotation": { + "x": 0.6286200881004334, + "y": -0.6190594434738159, + "z": -0.18423764407634736, + "w": 0.43321672081947329 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": -0.007876850664615631, + "y": -0.041423700749874118, + "z": 0.04655241593718529 + }, + "rotation": { + "x": 0.7744045257568359, + "y": -0.5470465421676636, + "z": 0.2698802649974823, + "w": -0.1682688444852829 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.0036155348643660547, + "y": -0.042087383568286899, + "z": 0.03132062032818794 + }, + "rotation": { + "x": 0.7368069291114807, + "y": -0.19751593470573426, + "z": 0.4435950815677643, + "w": -0.47120407223701479 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.016652610152959825, + "y": -0.034032851457595828, + "z": 0.02879030816257 + }, + "rotation": { + "x": 0.7368069291114807, + "y": -0.19751593470573426, + "z": 0.4435950815677643, + "w": -0.47120407223701479 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Victory.json b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Victory.json index 485cc87a937..acb5c4d4ddf 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Victory.json +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/ArticulatedHandPose_Victory.json @@ -1 +1,436 @@ -{"items":[{"joint":"None","pose":{"position":{"x":0.0021753902547061445,"y":-0.13046418130397798,"z":-0.45588064193725588},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":0.0}}},{"joint":"Wrist","pose":{"position":{"x":0.07915662229061127,"y":-0.13887012004852296,"z":-0.010340530425310135},"rotation":{"x":-0.5914298295974731,"y":-0.2676140367984772,"z":-0.06283169984817505,"w":0.7577439546585083}}},{"joint":"Palm","pose":{"position":{"x":0.06830108910799027,"y":-0.09366560727357865,"z":-0.0000256318598985672},"rotation":{"x":-0.5914298295974731,"y":-0.2676140367984772,"z":-0.06283169984817505,"w":0.7577439546585083}}},{"joint":"ThumbMetacarpalJoint","pose":{"position":{"x":0.05787024274468422,"y":-0.12883375585079194,"z":-0.005382232367992401},"rotation":{"x":0.4801919758319855,"y":-0.04491055756807327,"z":-0.7443504333496094,"w":-0.4627794027328491}}},{"joint":"ThumbProximalJoint","pose":{"position":{"x":0.030012525618076326,"y":-0.10770050436258316,"z":0.016813457012176515},"rotation":{"x":0.312323659658432,"y":-0.2742984890937805,"z":-0.6935320496559143,"w":-0.5894817113876343}}},{"joint":"ThumbDistalJoint","pose":{"position":{"x":0.026396021246910096,"y":-0.08305369317531586,"z":0.03835996612906456},"rotation":{"x":0.26157766580581667,"y":-0.3302468955516815,"z":-0.6686716675758362,"w":-0.6136223673820496}}},{"joint":"ThumbTip","pose":{"position":{"x":0.027343440800905229,"y":-0.07000578194856644,"z":0.04939644783735275},"rotation":{"x":0.26157766580581667,"y":-0.3302468955516815,"z":-0.6686716675758362,"w":-0.6136223673820496}}},{"joint":"IndexMetacarpal","pose":{"position":{"x":0.06611358374357224,"y":-0.12426556646823883,"z":-0.0055283233523368839},"rotation":{"x":-0.5613270998001099,"y":-0.42208683490753176,"z":-0.06766947358846665,"w":0.7086432576179504}}},{"joint":"IndexKnuckle","pose":{"position":{"x":0.034438081085681918,"y":-0.0725482851266861,"z":-0.004708992317318916},"rotation":{"x":-0.6286489963531494,"y":-0.2787279188632965,"z":0.040076885372400287,"w":0.7249277830123901}}},{"joint":"IndexMiddleJoint","pose":{"position":{"x":0.015563697554171086,"y":-0.03562714159488678,"z":-0.0024565430358052255},"rotation":{"x":-0.6645650863647461,"y":-0.2075067013502121,"z":0.10458821058273316,"w":0.7102522253990173}}},{"joint":"IndexDistalJoint","pose":{"position":{"x":0.005756473168730736,"y":-0.015270628966391087,"z":-0.0017626225017011166},"rotation":{"x":-0.6223592162132263,"y":-0.24349386990070344,"z":0.01842544600367546,"w":0.7439839839935303}}},{"joint":"IndexTip","pose":{"position":{"x":0.00011674128472805023,"y":-0.0018588211387395859,"z":-0.00020025699632242322},"rotation":{"x":-0.6223592162132263,"y":-0.24349386990070344,"z":0.01842544600367546,"w":0.7439839839935303}}},{"joint":"MiddleMetacarpal","pose":{"position":{"x":0.07268297672271729,"y":-0.12254584580659867,"z":-0.004201311618089676},"rotation":{"x":-0.6534333825111389,"y":-0.22906279563903809,"z":-0.018352244049310685,"w":0.7212615013122559}}},{"joint":"MiddleKnuckle","pose":{"position":{"x":0.054447855800390246,"y":-0.06595612317323685,"z":-0.0017550308257341385},"rotation":{"x":-0.5899049043655396,"y":-0.16088859736919404,"z":-0.018363818526268007,"w":0.7910826206207275}}},{"joint":"MiddleMiddleJoint","pose":{"position":{"x":0.04355549067258835,"y":-0.022029317915439607,"z":0.010043984279036522},"rotation":{"x":-0.6020974516868591,"y":-0.14070262014865876,"z":-0.036361001431941989,"w":0.7852000594139099}}},{"joint":"MiddleDistalJoint","pose":{"position":{"x":0.03923114016652107,"y":0.0012873951345682145,"z":0.015791211277246476},"rotation":{"x":-0.5366969108581543,"y":-0.17153941094875337,"z":-0.09987709671258927,"w":0.8206644058227539}}},{"joint":"MiddleTip","pose":{"position":{"x":0.03647539019584656,"y":0.015714645385742189,"z":0.021557386964559556},"rotation":{"x":-0.5366969108581543,"y":-0.17153941094875337,"z":-0.09987709671258927,"w":0.8206644058227539}}},{"joint":"RingMetacarpal","pose":{"position":{"x":0.08137646317481995,"y":-0.11985518038272858,"z":-0.00190657377243042},"rotation":{"x":-0.6267969012260437,"y":-0.10518965870141983,"z":0.02498382329940796,"w":0.7716453075408936}}},{"joint":"RingKnuckle","pose":{"position":{"x":0.07067620009183884,"y":-0.06669728457927704,"z":0.008708799257874489},"rotation":{"x":0.40646883845329287,"y":0.1807955503463745,"z":0.030094729736447336,"w":-0.8951042294502258}}},{"joint":"RingMiddleJoint","pose":{"position":{"x":0.060088954865932468,"y":-0.04056686535477638,"z":0.03008754923939705},"rotation":{"x":-0.2107616662979126,"y":0.18913404643535615,"z":-0.04620787873864174,"w":-0.9580028653144836}}},{"joint":"RingDistalJoint","pose":{"position":{"x":0.0528024360537529,"y":-0.0495174415409565,"z":0.047927625477313998},"rotation":{"x":-0.449715256690979,"y":0.15903393924236298,"z":-0.020673276856541635,"w":-0.8789007067680359}}},{"joint":"RingTip","pose":{"position":{"x":0.048170287162065509,"y":-0.06364263594150543,"z":0.05758979544043541},"rotation":{"x":-0.449715256690979,"y":0.15903393924236298,"z":-0.020673276856541635,"w":-0.8789007067680359}}},{"joint":"PinkyMetacarpal","pose":{"position":{"x":0.08909709751605988,"y":-0.11985252797603607,"z":0.001964922994375229},"rotation":{"x":-0.5780324339866638,"y":-0.0013396204449236394,"z":0.06318691372871399,"w":0.8135625720024109}}},{"joint":"PinkyKnuckle","pose":{"position":{"x":0.0851951465010643,"y":-0.07107751816511154,"z":0.019172409549355508},"rotation":{"x":0.31776368618011477,"y":0.2502634525299072,"z":0.05463750660419464,"w":-0.9129235744476318}}},{"joint":"PinkyMiddleJoint","pose":{"position":{"x":0.07433749735355377,"y":-0.055455759167671207,"z":0.03647337108850479},"rotation":{"x":-0.17528946697711945,"y":0.2344343513250351,"z":0.019245747476816179,"w":-0.9560556411743164}}},{"joint":"PinkyDistalJoint","pose":{"position":{"x":0.06645255535840988,"y":-0.06111001968383789,"z":0.050835996866226199},"rotation":{"x":-0.4488738477230072,"y":0.26990553736686709,"z":0.08396486192941666,"w":-0.8479632139205933}}},{"joint":"PinkyTip","pose":{"position":{"x":0.05911727994680405,"y":-0.07095448672771454,"z":0.05705229192972183},"rotation":{"x":-0.4488738477230072,"y":0.26990553736686709,"z":0.08396486192941666,"w":-0.8479632139205933}}}]} \ No newline at end of file +{ + "items": [ + { + "joint": "None", + "pose": { + "position": { + "x": 0.0021753902547061445, + "y": -0.13046418130397798, + "z": -0.45588064193725588 + }, + "rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } + } + }, + { + "joint": "Wrist", + "pose": { + "position": { + "x": 0.07915662229061127, + "y": -0.13887012004852296, + "z": -0.010340530425310135 + }, + "rotation": { + "x": -0.5914298295974731, + "y": -0.2676140367984772, + "z": -0.06283169984817505, + "w": 0.7577439546585083 + } + } + }, + { + "joint": "Palm", + "pose": { + "position": { + "x": 0.06830108910799027, + "y": -0.09366560727357865, + "z": -0.0000256318598985672 + }, + "rotation": { + "x": -0.5914298295974731, + "y": -0.2676140367984772, + "z": -0.06283169984817505, + "w": 0.7577439546585083 + } + } + }, + { + "joint": "ThumbMetacarpalJoint", + "pose": { + "position": { + "x": 0.05787024274468422, + "y": -0.12883375585079194, + "z": -0.005382232367992401 + }, + "rotation": { + "x": 0.4801919758319855, + "y": -0.04491055756807327, + "z": -0.7443504333496094, + "w": -0.4627794027328491 + } + } + }, + { + "joint": "ThumbProximalJoint", + "pose": { + "position": { + "x": 0.030012525618076326, + "y": -0.10770050436258316, + "z": 0.016813457012176515 + }, + "rotation": { + "x": 0.312323659658432, + "y": -0.2742984890937805, + "z": -0.6935320496559143, + "w": -0.5894817113876343 + } + } + }, + { + "joint": "ThumbDistalJoint", + "pose": { + "position": { + "x": 0.026396021246910096, + "y": -0.08305369317531586, + "z": 0.03835996612906456 + }, + "rotation": { + "x": 0.26157766580581667, + "y": -0.3302468955516815, + "z": -0.6686716675758362, + "w": -0.6136223673820496 + } + } + }, + { + "joint": "ThumbTip", + "pose": { + "position": { + "x": 0.027343440800905229, + "y": -0.07000578194856644, + "z": 0.04939644783735275 + }, + "rotation": { + "x": 0.26157766580581667, + "y": -0.3302468955516815, + "z": -0.6686716675758362, + "w": -0.6136223673820496 + } + } + }, + { + "joint": "IndexMetacarpal", + "pose": { + "position": { + "x": 0.06611358374357224, + "y": -0.12426556646823883, + "z": -0.0055283233523368839 + }, + "rotation": { + "x": -0.5613270998001099, + "y": -0.42208683490753176, + "z": -0.06766947358846665, + "w": 0.7086432576179504 + } + } + }, + { + "joint": "IndexKnuckle", + "pose": { + "position": { + "x": 0.034438081085681918, + "y": -0.0725482851266861, + "z": -0.004708992317318916 + }, + "rotation": { + "x": -0.6286489963531494, + "y": -0.2787279188632965, + "z": 0.040076885372400287, + "w": 0.7249277830123901 + } + } + }, + { + "joint": "IndexMiddleJoint", + "pose": { + "position": { + "x": 0.015563697554171086, + "y": -0.03562714159488678, + "z": -0.0024565430358052255 + }, + "rotation": { + "x": -0.6645650863647461, + "y": -0.2075067013502121, + "z": 0.10458821058273316, + "w": 0.7102522253990173 + } + } + }, + { + "joint": "IndexDistalJoint", + "pose": { + "position": { + "x": 0.005756473168730736, + "y": -0.015270628966391087, + "z": -0.0017626225017011166 + }, + "rotation": { + "x": -0.6223592162132263, + "y": -0.24349386990070344, + "z": 0.01842544600367546, + "w": 0.7439839839935303 + } + } + }, + { + "joint": "IndexTip", + "pose": { + "position": { + "x": 0.00011674128472805023, + "y": -0.0018588211387395859, + "z": -0.00020025699632242322 + }, + "rotation": { + "x": -0.6223592162132263, + "y": -0.24349386990070344, + "z": 0.01842544600367546, + "w": 0.7439839839935303 + } + } + }, + { + "joint": "MiddleMetacarpal", + "pose": { + "position": { + "x": 0.07268297672271729, + "y": -0.12254584580659867, + "z": -0.004201311618089676 + }, + "rotation": { + "x": -0.6534333825111389, + "y": -0.22906279563903809, + "z": -0.018352244049310685, + "w": 0.7212615013122559 + } + } + }, + { + "joint": "MiddleKnuckle", + "pose": { + "position": { + "x": 0.054447855800390246, + "y": -0.06595612317323685, + "z": -0.0017550308257341385 + }, + "rotation": { + "x": -0.5899049043655396, + "y": -0.16088859736919404, + "z": -0.018363818526268007, + "w": 0.7910826206207275 + } + } + }, + { + "joint": "MiddleMiddleJoint", + "pose": { + "position": { + "x": 0.04355549067258835, + "y": -0.022029317915439607, + "z": 0.010043984279036522 + }, + "rotation": { + "x": -0.6020974516868591, + "y": -0.14070262014865876, + "z": -0.036361001431941989, + "w": 0.7852000594139099 + } + } + }, + { + "joint": "MiddleDistalJoint", + "pose": { + "position": { + "x": 0.03923114016652107, + "y": 0.0012873951345682145, + "z": 0.015791211277246476 + }, + "rotation": { + "x": -0.5366969108581543, + "y": -0.17153941094875337, + "z": -0.09987709671258927, + "w": 0.8206644058227539 + } + } + }, + { + "joint": "MiddleTip", + "pose": { + "position": { + "x": 0.03647539019584656, + "y": 0.015714645385742189, + "z": 0.021557386964559556 + }, + "rotation": { + "x": -0.5366969108581543, + "y": -0.17153941094875337, + "z": -0.09987709671258927, + "w": 0.8206644058227539 + } + } + }, + { + "joint": "RingMetacarpal", + "pose": { + "position": { + "x": 0.08137646317481995, + "y": -0.11985518038272858, + "z": -0.00190657377243042 + }, + "rotation": { + "x": -0.6267969012260437, + "y": -0.10518965870141983, + "z": 0.02498382329940796, + "w": 0.7716453075408936 + } + } + }, + { + "joint": "RingKnuckle", + "pose": { + "position": { + "x": 0.07067620009183884, + "y": -0.06669728457927704, + "z": 0.008708799257874489 + }, + "rotation": { + "x": 0.40646883845329287, + "y": 0.1807955503463745, + "z": 0.030094729736447336, + "w": -0.8951042294502258 + } + } + }, + { + "joint": "RingMiddleJoint", + "pose": { + "position": { + "x": 0.060088954865932468, + "y": -0.04056686535477638, + "z": 0.03008754923939705 + }, + "rotation": { + "x": -0.2107616662979126, + "y": 0.18913404643535615, + "z": -0.04620787873864174, + "w": -0.9580028653144836 + } + } + }, + { + "joint": "RingDistalJoint", + "pose": { + "position": { + "x": 0.0528024360537529, + "y": -0.0495174415409565, + "z": 0.047927625477313998 + }, + "rotation": { + "x": -0.449715256690979, + "y": 0.15903393924236298, + "z": -0.020673276856541635, + "w": -0.8789007067680359 + } + } + }, + { + "joint": "RingTip", + "pose": { + "position": { + "x": 0.048170287162065509, + "y": -0.06364263594150543, + "z": 0.05758979544043541 + }, + "rotation": { + "x": -0.449715256690979, + "y": 0.15903393924236298, + "z": -0.020673276856541635, + "w": -0.8789007067680359 + } + } + }, + { + "joint": "PinkyMetacarpal", + "pose": { + "position": { + "x": 0.08909709751605988, + "y": -0.11985252797603607, + "z": 0.001964922994375229 + }, + "rotation": { + "x": -0.5780324339866638, + "y": -0.0013396204449236394, + "z": 0.06318691372871399, + "w": 0.8135625720024109 + } + } + }, + { + "joint": "PinkyKnuckle", + "pose": { + "position": { + "x": 0.0851951465010643, + "y": -0.07107751816511154, + "z": 0.019172409549355508 + }, + "rotation": { + "x": 0.31776368618011477, + "y": 0.2502634525299072, + "z": 0.05463750660419464, + "w": -0.9129235744476318 + } + } + }, + { + "joint": "PinkyMiddleJoint", + "pose": { + "position": { + "x": 0.07433749735355377, + "y": -0.055455759167671207, + "z": 0.03647337108850479 + }, + "rotation": { + "x": -0.17528946697711945, + "y": 0.2344343513250351, + "z": 0.019245747476816179, + "w": -0.9560556411743164 + } + } + }, + { + "joint": "PinkyDistalJoint", + "pose": { + "position": { + "x": 0.06645255535840988, + "y": -0.06111001968383789, + "z": 0.050835996866226199 + }, + "rotation": { + "x": -0.4488738477230072, + "y": 0.26990553736686709, + "z": 0.08396486192941666, + "w": -0.8479632139205933 + } + } + }, + { + "joint": "PinkyTip", + "pose": { + "position": { + "x": 0.05911727994680405, + "y": -0.07095448672771454, + "z": 0.05705229192972183 + }, + "rotation": { + "x": -0.4488738477230072, + "y": 0.26990553736686709, + "z": 0.08396486192941666, + "w": -0.8479632139205933 + } + } + } + ] +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/BaseInputSimulationService.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/BaseInputSimulationService.cs new file mode 100644 index 00000000000..5d53a049258 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/BaseInputSimulationService.cs @@ -0,0 +1,155 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// Base class for services that create simulated input devices. + /// + public abstract class BaseInputSimulationService : BaseInputDeviceManager + { + /// + /// Dictionary to capture all active hands detected + /// + private readonly Dictionary trackedHands = new Dictionary(); + + /// + /// Active controllers + /// + private IMixedRealityController[] activeControllers = new IMixedRealityController[0]; + + /// + public override IMixedRealityController[] GetActiveControllers() + { + return activeControllers; + } + + #region BaseInputDeviceManager Implementation + + public BaseInputSimulationService( + IMixedRealityServiceRegistrar registrar, + IMixedRealityInputSystem inputSystem, + string name, + uint priority, + BaseMixedRealityProfile profile) : base(registrar, inputSystem, name, priority, profile) + {} + + #endregion BaseInputDeviceManager Implementation + + // Register input sources for hands based on hand data + protected void UpdateHandDevice(HandSimulationMode simulationMode, Handedness handedness, SimulatedHandData handData) + { + if (handData != null && handData.IsTracked) + { + SimulatedHand controller = GetOrAddHandDevice(handedness, simulationMode); + controller.UpdateState(handData); + } + else + { + RemoveHandDevice(handedness); + } + } + + public SimulatedHand GetHandDevice(Handedness handedness) + { + if (trackedHands.TryGetValue(handedness, out SimulatedHand controller)) + { + return controller; + } + return null; + } + + protected SimulatedHand GetOrAddHandDevice(Handedness handedness, HandSimulationMode simulationMode) + { + var controller = GetHandDevice(handedness); + if (controller != null) + { + if (controller.SimulationMode == simulationMode) + { + return controller; + } + else + { + // Remove and recreate hand device if simulation mode doesn't match + RemoveHandDevice(handedness); + } + } + + SupportedControllerType st = simulationMode == HandSimulationMode.Gestures ? SupportedControllerType.GGVHand : SupportedControllerType.ArticulatedHand; + IMixedRealityPointer[] pointers = RequestPointers(st, handedness); + + var inputSource = InputSystem?.RequestNewGenericInputSource($"{handedness} Hand", pointers, InputSourceType.Hand); + switch (simulationMode) + { + case HandSimulationMode.Articulated: + controller = new SimulatedArticulatedHand(TrackingState.Tracked, handedness, inputSource); + break; + case HandSimulationMode.Gestures: + controller = new SimulatedGestureHand(TrackingState.Tracked, handedness, inputSource); + break; + default: + controller = null; + break; + } + + System.Type controllerType = simulationMode == HandSimulationMode.Gestures ? typeof(SimulatedGestureHand) : typeof(SimulatedArticulatedHand); + if (controller == null) + { + Debug.LogError($"Failed to create {controllerType} controller"); + return null; + } + + if (!controller.SetupConfiguration(controllerType, InputSourceType.Hand)) + { + // Controller failed to be setup correctly. + Debug.LogError($"Failed to Setup {controllerType} controller"); + // Return null so we don't raise the source detected. + return null; + } + + for (int i = 0; i < controller.InputSource?.Pointers?.Length; i++) + { + controller.InputSource.Pointers[i].Controller = controller; + } + + InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + + trackedHands.Add(handedness, controller); + UpdateActiveControllers(); + + return controller; + } + + protected void RemoveHandDevice(Handedness handedness) + { + var controller = GetHandDevice(handedness); + if (controller != null) + { + InputSystem?.RaiseSourceLost(controller.InputSource, controller); + + trackedHands.Remove(handedness); + UpdateActiveControllers(); + } + } + + protected void RemoveAllHandDevices() + { + foreach (var controller in trackedHands.Values) + { + InputSystem?.RaiseSourceLost(controller.InputSource, controller); + } + trackedHands.Clear(); + UpdateActiveControllers(); + } + + private void UpdateActiveControllers() + { + activeControllers = trackedHands.Values.ToArray(); + } + } +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/BaseInputSimulationService.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/BaseInputSimulationService.cs.meta new file mode 100644 index 00000000000..47d4fd0809d --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/BaseInputSimulationService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca3059555b884c946976bf3fc39db8de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/InputPlaybackService.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputPlaybackService.cs similarity index 81% rename from Assets/MixedRealityToolkit.Services/InputAnimation/InputPlaybackService.cs rename to Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputPlaybackService.cs index 7510cef200f..7444509d79c 100644 --- a/Assets/MixedRealityToolkit.Services/InputAnimation/InputPlaybackService.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputPlaybackService.cs @@ -16,11 +16,20 @@ namespace Microsoft.MixedReality.Toolkit.Input (SupportedPlatforms)(-1), // Supported on all platforms "Input Playback Service")] public class InputPlaybackService : - BaseInputDeviceManager, + BaseInputSimulationService, IMixedRealityInputPlaybackService { private static readonly int jointCount = Enum.GetNames(typeof(TrackedHandJoint)).Length; + /// + /// Pose data for the left hand. + /// + public SimulatedHandData HandDataLeft { get; } = new SimulatedHandData(); + /// + /// Pose data for the right hand. + /// + public SimulatedHandData HandDataRight { get; } = new SimulatedHandData(); + /// /// Constructor. /// @@ -37,23 +46,19 @@ public InputPlaybackService( BaseMixedRealityProfile profile = null) : base(registrar, inputSystem, name, priority, profile) {} -#if UNITY_EDITOR - private IInputSimulationService inputSimService = null; - private IInputSimulationService InputSimService + /// + public bool CheckCapability(MixedRealityCapability capability) { - get + switch (capability) { - if (inputSimService == null) - { - if (MixedRealityServiceRegistry.TryGetService(out IMixedRealityInputSystem inputSystem)) - { - inputSimService = (inputSystem as IMixedRealityDataProviderAccess).GetDataProvider(); - } - } - return inputSimService; + case MixedRealityCapability.ArticulatedHand: + return true; + case MixedRealityCapability.GGVHand: + return true; } + + return false; } -#endif private InputAnimation animation = null; /// @@ -132,14 +137,6 @@ public override void Update() private void SetPlaying(bool playing) { isPlaying = playing; - -#if UNITY_EDITOR - if (InputSimService != null) - { - // Disable user input while playing animation - InputSimService.UserInputEnabled = !isPlaying; - } -#endif } /// Evaluate the animation and update the simulation service to apply input. @@ -158,30 +155,26 @@ private void Evaluate() CameraCache.Main.transform.SetPositionAndRotation(cameraPose.Position, cameraPose.Rotation); } -#if UNITY_EDITOR - if (InputSimService != null) - { - EvaluateHandData(InputSimService.HandDataLeft, Handedness.Left); - EvaluateHandData(InputSimService.HandDataRight, Handedness.Right); - } -#endif + EvaluateHandData(HandDataLeft, Handedness.Left); + EvaluateHandData(HandDataRight, Handedness.Right); } -#if UNITY_EDITOR private void EvaluateHandData(SimulatedHandData handData, Handedness handedness) { animation.EvaluateHandState(localTime, handedness, out bool isTracked, out bool isPinching); - handData.Update(isTracked, isPinching, + if (handData.Update(isTracked, isPinching, (MixedRealityPose[] joints) => { for (int i = 0; i < jointCount; ++i) { joints[i] = animation.EvaluateHandJoint(localTime, handedness, (TrackedHandJoint)i); } - }); + })) + { + UpdateHandDevice(HandSimulationMode.Articulated, handedness, handData); + } } -#endif /// public bool LoadInputAnimation(string filepath) diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/InputPlaybackService.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputPlaybackService.cs.meta similarity index 83% rename from Assets/MixedRealityToolkit.Services/InputAnimation/InputPlaybackService.cs.meta rename to Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputPlaybackService.cs.meta index 1b629ca2c75..95c876183fd 100644 --- a/Assets/MixedRealityToolkit.Services/InputAnimation/InputPlaybackService.cs.meta +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputPlaybackService.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 14acfa2d14d25ab49944c39e20b8ddbf +guid: 930a450cc06098348a66371835143ab3 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationService.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationService.cs index f81100fb780..065e91e962d 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationService.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationService.cs @@ -3,14 +3,21 @@ using Microsoft.MixedReality.Toolkit.Utilities; using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Runtime; using UnityEngine; +using UnityEngine.XR; namespace Microsoft.MixedReality.Toolkit.Input { + /// + /// Utility struct that provides mouse delta in pixels (screen space), normalized viewport coordinates, and world units. + /// + public class MouseDelta + { + public Vector3 screenDelta = Vector3.zero; + public Vector3 viewportDelta = Vector3.zero; + public Vector3 worldDelta = Vector3.zero; + } + [MixedRealityDataProvider( typeof(IMixedRealityInputSystem), SupportedPlatforms.WindowsEditor | SupportedPlatforms.MacEditor | SupportedPlatforms.LinuxEditor, @@ -18,39 +25,108 @@ namespace Microsoft.MixedReality.Toolkit.Input "Profiles/DefaultMixedRealityInputSimulationProfile.asset", "MixedRealityToolkit.SDK")] [HelpURL("https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/InputSimulation/InputSimulationService.html")] - public class InputSimulationService : BaseInputDeviceManager, IInputSimulationService, IMixedRealityEyeGazeDataProvider, IMixedRealityCapabilityCheck + public class InputSimulationService : + BaseInputSimulationService, + IInputSimulationService, + IMixedRealityEyeGazeDataProvider, + IMixedRealityCapabilityCheck { private ManualCameraControl cameraControl = null; private SimulatedHandDataProvider handDataProvider = null; - /// - /// Pose data for the left hand. - /// + private HandSimulationMode handSimulationMode; + /// + public HandSimulationMode HandSimulationMode + { + get => handSimulationMode; + set + { + handSimulationMode = value; + } + } + + /// public SimulatedHandData HandDataLeft { get; } = new SimulatedHandData(); - /// - /// Pose data for the right hand. - /// + /// public SimulatedHandData HandDataRight { get; } = new SimulatedHandData(); + /// + public bool IsSimulatingHandLeft => (handDataProvider != null ? handDataProvider.IsSimulatingLeft : false); + /// + public bool IsSimulatingHandRight => (handDataProvider != null ? handDataProvider.IsSimulatingRight : false); + + /// + public bool IsAlwaysVisibleHandLeft + { + get { return handDataProvider != null ? handDataProvider.IsAlwaysVisibleLeft : false; } + set { if (handDataProvider != null) { handDataProvider.IsAlwaysVisibleLeft = value; } } + } + /// + public bool IsAlwaysVisibleHandRight + { + get { return handDataProvider != null ? handDataProvider.IsAlwaysVisibleRight : false; } + set { if (handDataProvider != null) { handDataProvider.IsAlwaysVisibleRight = value; } } + } + + /// + public Vector3 HandPositionLeft + { + get { return handDataProvider != null ? handDataProvider.HandStateLeft.ViewportPosition : Vector3.zero; } + set { if (handDataProvider != null) { handDataProvider.HandStateLeft.ViewportPosition = value; } } + } + + /// + public Vector3 HandPositionRight + { + get { return handDataProvider != null ? handDataProvider.HandStateRight.ViewportPosition : Vector3.zero; } + set { if (handDataProvider != null) { handDataProvider.HandStateRight.ViewportPosition = value; } } + } + + /// + public Vector3 HandRotationLeft + { + get { return handDataProvider != null ? handDataProvider.HandStateLeft.ViewportRotation : Vector3.zero; } + set { if (handDataProvider != null) { handDataProvider.HandStateLeft.ViewportRotation = value; } } + } + + /// + public Vector3 HandRotationRight + { + get { return handDataProvider != null ? handDataProvider.HandStateRight.ViewportRotation : Vector3.zero; } + set { if (handDataProvider != null) { handDataProvider.HandStateRight.ViewportRotation = value; } } + } + + /// + public void ResetHandLeft() + { + if (handDataProvider != null) + { + handDataProvider.ResetHand(Handedness.Left); + } + } + /// + public void ResetHandRight() + { + if (handDataProvider != null) + { + handDataProvider.ResetHand(Handedness.Right); + } + } + /// /// If true then keyboard and mouse input are used to simulate hands. /// public bool UserInputEnabled { get; set; } = true; /// - /// Dictionary to capture all active hands detected - /// - private readonly Dictionary trackedHands = new Dictionary(); - - /// - /// Active controllers + /// Timestamp of the last hand device update /// - private IMixedRealityController[] activeControllers = new IMixedRealityController[0]; + private long lastHandUpdateTimestamp = 0; /// - /// Timestamp of the last hand device update + /// Indicators to show input simulation state in the viewport. /// - private long lastHandUpdateTimestamp = 0; + private GameObject indicators; #region BaseInputDeviceManager Implementation @@ -67,11 +143,11 @@ public bool CheckCapability(MixedRealityCapability capability) switch (capability) { case MixedRealityCapability.ArticulatedHand: - return (InputSimulationProfile.HandSimulationMode == HandSimulationMode.Articulated); + return (HandSimulationMode == HandSimulationMode.Articulated); case MixedRealityCapability.GGVHand: // If any hand simulation is enabled, GGV interactions are supported. - return (InputSimulationProfile.HandSimulationMode != HandSimulationMode.Disabled); + return (HandSimulationMode != HandSimulationMode.Disabled); case MixedRealityCapability.EyeTracking: return InputSimulationProfile.SimulateEyePosition; @@ -80,18 +156,15 @@ public bool CheckCapability(MixedRealityCapability capability) return false; } - /// - public override IMixedRealityController[] GetActiveControllers() - { - return activeControllers; - } - /// public override void Initialize() { ArticulatedHandPose.LoadGesturePoses(); + + HandSimulationMode = InputSimulationProfile.DefaultHandSimulationMode; } + /// public override void Destroy() { ArticulatedHandPose.ResetGesturePoses(); @@ -100,11 +173,24 @@ public override void Destroy() /// public override void Enable() { + var profile = InputSimulationProfile; + + if (indicators == null && profile.IndicatorsPrefab) + { + indicators = GameObject.Instantiate(profile.IndicatorsPrefab); + } + + ResetMouseDelta(); } /// public override void Disable() { + if (indicators) + { + GameObject.Destroy(indicators); + } + DisableCameraControl(); DisableHandSimulation(); } @@ -114,19 +200,47 @@ public override void Update() { var profile = InputSimulationProfile; - if (profile.IsCameraControlEnabled) + switch (HandSimulationMode) + { + case HandSimulationMode.Disabled: + DisableHandSimulation(); + break; + + case HandSimulationMode.Articulated: + case HandSimulationMode.Gestures: + EnableHandSimulation(); + break; + } + + // If an XRDevice is present, the user will not be able to control the camera + // as it is controlled by the device. We therefore disable camera controls in + // this case. + // This was causing issues while simulating in editor for VR, as the UpDown + // camera movement is mapped to controller AXIS_3, which happens to be the + // select trigger for WMR controllers. + if (profile.IsCameraControlEnabled && !XRDevice.isPresent) { EnableCameraControl(); - if (CameraCache.Main) - { - cameraControl.UpdateTransform(CameraCache.Main.transform); - } } else { DisableCameraControl(); } + MouseDelta mouseDelta = UpdateMouseDelta(); + if (UserInputEnabled) + { + if (handDataProvider != null) + { + handDataProvider.UpdateHandData(HandDataLeft, HandDataRight, mouseDelta); + } + + if (cameraControl != null && CameraCache.Main) + { + cameraControl.UpdateTransform(CameraCache.Main.transform, mouseDelta); + } + } + if (profile.SimulateEyePosition) { // In the simulated eye gaze condition, let's set the eye tracking calibration status automatically to true @@ -135,23 +249,6 @@ public override void Update() // Update the simulated eye gaze with the current camera position and forward vector InputSystem?.EyeGazeProvider?.UpdateEyeGaze(this, new Ray(CameraCache.Main.transform.position, CameraCache.Main.transform.forward), DateTime.UtcNow); } - - switch (profile.HandSimulationMode) - { - case HandSimulationMode.Disabled: - DisableHandSimulation(); - break; - - case HandSimulationMode.Articulated: - case HandSimulationMode.Gestures: - EnableHandSimulation(); - - if (UserInputEnabled) - { - handDataProvider.UpdateHandData(HandDataLeft, HandDataRight); - } - break; - } } /// @@ -161,21 +258,19 @@ public override void LateUpdate() // Apply hand data in LateUpdate to ensure external changes are applied. // HandDataLeft/Right can be modified after the services Update() call. - if (profile.HandSimulationMode != HandSimulationMode.Disabled) + if (HandSimulationMode == HandSimulationMode.Disabled) + { + RemoveAllHandDevices(); + } + else { DateTime currentTime = DateTime.UtcNow; double msSinceLastHandUpdate = currentTime.Subtract(new DateTime(lastHandUpdateTimestamp)).TotalMilliseconds; // TODO implement custom hand device update frequency here, use 1000/fps instead of 0 if (msSinceLastHandUpdate > 0) { - if (HandDataLeft.Timestamp > lastHandUpdateTimestamp) - { - UpdateHandInputSource(Handedness.Left, HandDataLeft); - } - if (HandDataRight.Timestamp > lastHandUpdateTimestamp) - { - UpdateHandInputSource(Handedness.Right, HandDataRight); - } + UpdateHandDevice(HandSimulationMode, Handedness.Left, HandDataLeft); + UpdateHandDevice(HandSimulationMode, Handedness.Right, HandDataRight); lastHandUpdateTimestamp = currentTime.Ticks; } @@ -243,124 +338,113 @@ private void DisableHandSimulation() } } - // Register input sources for hands based on changes of the data provider - private void UpdateHandInputSource(Handedness handedness, SimulatedHandData handData) + private Vector3 lastMousePosition; + private bool wasFocused; + private bool wasCursorLocked; + + private void ResetMouseDelta() + { + lastMousePosition = UnityEngine.Input.mousePosition; + } + + private MouseDelta UpdateMouseDelta() { var profile = InputSimulationProfile; - if (profile.HandSimulationMode == HandSimulationMode.Disabled) + bool isFocused = Application.isFocused; + bool gainedFocus = (!wasFocused && isFocused); + wasFocused = isFocused; + + bool isCursorLocked = UnityEngine.Cursor.lockState != CursorLockMode.None; + bool cursorLockChanged = (wasCursorLocked != isCursorLocked); + wasCursorLocked = isCursorLocked; + + // Reset in cases where mouse position is jumping + if (gainedFocus || cursorLockChanged) { - RemoveAllHandDevices(); + ResetMouseDelta(); + return new MouseDelta(); } else { - if (handData != null && handData.IsTracked) + Vector3 screenDelta; + Vector3 worldDelta; + if (UnityEngine.Cursor.lockState == CursorLockMode.Locked) { - SimulatedHand controller = GetOrAddHandDevice(handedness, profile.HandSimulationMode); - controller.UpdateState(handData); - } - else - { - RemoveHandDevice(handedness); - } - } - } - - public SimulatedHand GetHandDevice(Handedness handedness) - { - if (trackedHands.TryGetValue(handedness, out SimulatedHand controller)) - { - return controller; - } - return null; - } + screenDelta.x = UnityEngine.Input.GetAxis(profile.MouseX); + screenDelta.y = UnityEngine.Input.GetAxis(profile.MouseY); - private SimulatedHand GetOrAddHandDevice(Handedness handedness, HandSimulationMode simulationMode) - { - var controller = GetHandDevice(handedness); - if (controller != null) - { - if (controller.SimulationMode == simulationMode) - { - return controller; + worldDelta.z = UnityEngine.Input.GetAxis(profile.MouseScroll); } else { - // Remove and recreate hand device if simulation mode doesn't match - RemoveHandDevice(handedness); - } - } - - SupportedControllerType st = simulationMode == HandSimulationMode.Gestures ? SupportedControllerType.GGVHand : SupportedControllerType.ArticulatedHand; - IMixedRealityPointer[] pointers = RequestPointers(st, handedness); + // Use frame-to-frame mouse delta in pixels to determine mouse rotation. + // The traditional GetAxis("Mouse X") method doesn't work under Remote Desktop. + screenDelta.x = (UnityEngine.Input.mousePosition.x - lastMousePosition.x); + screenDelta.y = (UnityEngine.Input.mousePosition.y - lastMousePosition.y); - var inputSource = InputSystem?.RequestNewGenericInputSource($"{handedness} Hand", pointers, InputSourceType.Hand); - switch (simulationMode) - { - case HandSimulationMode.Articulated: - controller = new SimulatedArticulatedHand(TrackingState.Tracked, handedness, inputSource); - break; - case HandSimulationMode.Gestures: - controller = new SimulatedGestureHand(TrackingState.Tracked, handedness, inputSource); - break; - default: - controller = null; - break; - } + worldDelta.z = UnityEngine.Input.mouseScrollDelta.y; + } - System.Type controllerType = simulationMode == HandSimulationMode.Gestures ? typeof(SimulatedGestureHand) : typeof(SimulatedArticulatedHand); - if (controller == null) - { - Debug.LogError($"Failed to create {controllerType} controller"); - return null; - } + // Interpret scroll values as world space delta + worldDelta.z *= profile.HandDepthMultiplier; - if (!controller.SetupConfiguration(controllerType, InputSourceType.Hand)) - { - // Controller failed to be setup correctly. - Debug.LogError($"Failed to Setup {controllerType} controller"); - // Return null so we don't raise the source detected. - return null; - } + // Convert world space scroll delta into screen space pixels + screenDelta.z = WorldToScreen(new Vector2(worldDelta.z, 0)).x; - for (int i = 0; i < controller.InputSource?.Pointers?.Length; i++) - { - controller.InputSource.Pointers[i].Controller = controller; - } + // Convert screen space x/y delta into world space + Vector2 worldDelta2D = ScreenToWorld(new Vector2(screenDelta.x, screenDelta.y)); + worldDelta.x = worldDelta2D.x; + worldDelta.y = worldDelta2D.y; - InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + // Viewport delta x and y can be computed from screen x/y. + // Note that the conversion functions do not change Z, it is expected to always be in world space units. + Vector3 viewportDelta = CameraCache.Main.ScreenToViewportPoint(screenDelta); + // Compute viewport-scale z delta + viewportDelta.z = WorldToViewport(new Vector2(worldDelta.z, 0)).x; - trackedHands.Add(handedness, controller); - UpdateActiveControllers(); + lastMousePosition = UnityEngine.Input.mousePosition; - return controller; + return new MouseDelta() + { + screenDelta = screenDelta, + worldDelta = worldDelta, + viewportDelta = viewportDelta, + }; + } } - private void RemoveHandDevice(Handedness handedness) - { - var controller = GetHandDevice(handedness); - if (controller != null) - { - InputSystem?.RaiseSourceLost(controller.InputSource, controller); + // Default world-space distance for converting screen/viewport scroll offsets into world space depth offset. + // The pixel-to-world-unit ratio changes with depth, so have to chose a fixed distance for conversion. + private const float mouseWorldDepth = 0.5f; + // Center of the viewport is at (0.5, 0.5) + private readonly Vector2 viewportCenter = new Vector2(0.5f, 0.5f); - trackedHands.Remove(handedness); - UpdateActiveControllers(); - } + private Vector2 ScreenToWorld(Vector2 screenDelta) + { + Vector3 deltaViewport3D = new Vector3( + screenDelta.x / CameraCache.Main.pixelWidth + viewportCenter.x, + screenDelta.y / CameraCache.Main.pixelHeight + viewportCenter.y, + mouseWorldDepth); + Vector3 deltaWorld3D = CameraCache.Main.ViewportToWorldPoint(deltaViewport3D); + Vector3 deltaLocal3D = CameraCache.Main.transform.InverseTransformPoint(deltaWorld3D); + return new Vector2(deltaLocal3D.x, deltaLocal3D.y); } - private void RemoveAllHandDevices() + private Vector2 WorldToScreen(Vector2 deltaWorld) { - foreach (var controller in trackedHands.Values) - { - InputSystem?.RaiseSourceLost(controller.InputSource, controller); - } - trackedHands.Clear(); - UpdateActiveControllers(); + Vector3 deltaWorld3D = CameraCache.Main.transform.TransformPoint(new Vector3(deltaWorld.x, deltaWorld.y, mouseWorldDepth)); + Vector3 deltaViewport3D = CameraCache.Main.WorldToViewportPoint(deltaWorld3D); + return new Vector2( + (deltaViewport3D.x - viewportCenter.x) * CameraCache.Main.pixelWidth, + (deltaViewport3D.y - viewportCenter.y) * CameraCache.Main.pixelHeight); } - private void UpdateActiveControllers() + private Vector2 WorldToViewport(Vector2 deltaWorld) { - activeControllers = trackedHands.Values.ToArray(); + Vector3 deltaWorld3D = CameraCache.Main.transform.TransformPoint(new Vector3(deltaWorld.x, deltaWorld.y, mouseWorldDepth)); + Vector3 deltaViewport3D = CameraCache.Main.WorldToViewportPoint(deltaWorld3D); + return new Vector2(deltaViewport3D.x - viewportCenter.x, deltaViewport3D.y - viewportCenter.y); } } } diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/Editor/InputRecordingWindow.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationWindow.cs similarity index 69% rename from Assets/MixedRealityToolkit.Services/InputAnimation/Editor/InputRecordingWindow.cs rename to Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationWindow.cs index 88773f9a11a..21cc964355e 100644 --- a/Assets/MixedRealityToolkit.Services/InputAnimation/Editor/InputRecordingWindow.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationWindow.cs @@ -1,22 +1,19 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. -using Microsoft.MixedReality.Toolkit; +using Microsoft.MixedReality.Toolkit.Utilities; using Microsoft.MixedReality.Toolkit.Utilities.Editor; using UnityEngine; -using UnityEngine.Playables; -using UnityEngine.SceneManagement; using UnityEditor; using System; using System.IO; -using System.Text.RegularExpressions; namespace Microsoft.MixedReality.Toolkit.Input { /// - /// Tools for recording and playing back input animation in the Unity editor. + /// Tools for simulating and recording input as well as playing back input animation in the Unity editor. /// - public class InputRecordingWindow : EditorWindow + public class InputSimulationWindow : EditorWindow { private InputAnimation animation { @@ -26,6 +23,22 @@ private InputAnimation animation private string loadedFilePath = ""; + private IInputSimulationService simulationService = null; + private IInputSimulationService SimulationService + { + get + { + if (simulationService == null) + { + if (MixedRealityServiceRegistry.TryGetService(out IMixedRealityInputSystem inputSystem)) + { + simulationService = (inputSystem as IMixedRealityDataProviderAccess).GetDataProvider(); + } + } + return simulationService; + } + } + private IMixedRealityInputRecordingService recordingService = null; private IMixedRealityInputRecordingService RecordingService { @@ -88,11 +101,11 @@ private set private Texture2D iconJumpBack = null; private Texture2D iconJumpFwd = null; - [MenuItem("Mixed Reality Toolkit/Utilities/Input Recording")] + [MenuItem("Mixed Reality Toolkit/Utilities/Input Simulation")] private static void ShowWindow() { - InputRecordingWindow window = GetWindow(); - window.titleContent = new GUIContent("Input Recording"); + InputSimulationWindow window = GetWindow(); + window.titleContent = new GUIContent("Input Simulation"); window.minSize = new Vector2(380.0f, 680.0f); window.Show(); } @@ -101,6 +114,16 @@ private void OnGUI() { LoadIcons(); + if (!Application.isPlaying) + { + EditorGUILayout.HelpBox("Input simulation is only available in play mode", MessageType.Info); + return; + } + + DrawSimulationGUI(); + + EditorGUILayout.Separator(); + string[] modeStrings = Enum.GetNames(typeof(ToolMode)); Mode = (ToolMode)GUILayout.SelectionGrid((int)Mode, modeStrings, modeStrings.Length); @@ -136,13 +159,113 @@ private void OnGUI() #endif } - private void DrawRecordingGUI() + private void DrawSimulationGUI() { - if (!Application.isPlaying) + if (SimulationService == null) { - EditorGUILayout.HelpBox("Input test recording is only available in play mode", MessageType.Info); + EditorGUILayout.HelpBox("No input simulation service found", MessageType.Info); return; } + + DrawHeadGUI(); + DrawHandsGUI(); + } + + private void DrawHeadGUI() + { + if (!CameraCache.Main) + { + return; + } + + using (new GUILayout.VerticalScope(EditorStyles.helpBox)) + { + GUILayout.Label($"Head:"); + + Transform headTransform = CameraCache.Main.transform; + Vector3 newPosition = EditorGUILayout.Vector3Field("Position", headTransform.position); + Vector3 newRotation = DrawRotationGUI("Rotation", headTransform.rotation.eulerAngles); + bool resetHand = GUILayout.Button("Reset"); + + if (newPosition != headTransform.position) + { + headTransform.position = newPosition; + } + if (newRotation != headTransform.rotation.eulerAngles) + { + headTransform.rotation = Quaternion.Euler(newRotation); + } + if (resetHand) + { + headTransform.position = Vector3.zero; + headTransform.rotation = Quaternion.identity; + } + } + } + + private void DrawHandsGUI() + { + HandSimulationMode newHandSimMode = (HandSimulationMode)EditorGUILayout.EnumPopup("Hand Simulation Mode", SimulationService.HandSimulationMode); + + if (newHandSimMode != SimulationService.HandSimulationMode) + { + SimulationService.HandSimulationMode = newHandSimMode; + } + + using (new GUILayout.HorizontalScope()) + { + DrawHandGUI( + "Left", + SimulationService.IsAlwaysVisibleHandLeft, v => SimulationService.IsAlwaysVisibleHandLeft = v, + SimulationService.HandPositionLeft, v => SimulationService.HandPositionLeft = v, + SimulationService.HandRotationLeft, v => SimulationService.HandRotationLeft = v, + SimulationService.ResetHandLeft); + + DrawHandGUI( + "Right", + SimulationService.IsAlwaysVisibleHandRight, v => SimulationService.IsAlwaysVisibleHandRight = v, + SimulationService.HandPositionRight, v => SimulationService.HandPositionRight = v, + SimulationService.HandRotationRight, v => SimulationService.HandRotationRight = v, + SimulationService.ResetHandRight); + } + } + + private void DrawHandGUI(string name, + bool isAlwaysVisible, Action setAlwaysVisible, + Vector3 position, Action setPosition, + Vector3 rotation, Action setRotation, + Action reset) + { + using (new GUILayout.VerticalScope(EditorStyles.helpBox)) + { + GUILayout.Label($"{name} Hand:"); + + bool newIsAlwaysVisible = EditorGUILayout.Toggle("Always Visible", isAlwaysVisible); + Vector3 newPosition = EditorGUILayout.Vector3Field("Position", position); + Vector3 newRotation = DrawRotationGUI("Rotation", rotation); + bool resetHand = GUILayout.Button("Reset"); + + if (newIsAlwaysVisible != isAlwaysVisible) + { + setAlwaysVisible(newIsAlwaysVisible); + } + if (newPosition != position) + { + setPosition(newPosition); + } + if (newRotation != rotation) + { + setRotation(newRotation); + } + if (resetHand) + { + reset(); + } + } + } + + private void DrawRecordingGUI() + { if (RecordingService == null) { EditorGUILayout.HelpBox("No input recording service found", MessageType.Info); @@ -192,12 +315,6 @@ private void DrawRecordingGUI() private void DrawPlaybackGUI() { - if (!Application.isPlaying) - { - EditorGUILayout.HelpBox("Input test playback is only available in play mode", MessageType.Info); - return; - } - DrawAnimationInfo(); using (new GUILayout.HorizontalScope()) @@ -292,6 +409,13 @@ private void DrawAnimationInfo() } } + private Vector3 DrawRotationGUI(string label, Vector3 rotation) + { + Vector3 newRotation = EditorGUILayout.Vector3Field(label, rotation); + + return newRotation; + } + private void SaveAnimation(bool loadAfterExport) { string outputPath; diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationWindow.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationWindow.cs.meta new file mode 100644 index 00000000000..70177ac1182 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/InputSimulationWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51a705c87f917a846bc2d6d22071f950 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/KeyBindingInspector.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/KeyBindingInspector.cs new file mode 100644 index 00000000000..39f2ad9a81a --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/KeyBindingInspector.cs @@ -0,0 +1,144 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities.Editor; +using UnityEditor; +using UnityEngine; +using System; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// Inspector for KeyBindings. + /// This shows a simple dropdown list for selecting a binding, as well as a button for binding keys by pressing them. + /// + [CustomPropertyDrawer(typeof(KeyBinding))] + public class KeyBindingInspector : PropertyDrawer + { + // Draw the property inside the given rect + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty bindingType = property.FindPropertyRelative("bindingType"); + SerializedProperty code = property.FindPropertyRelative("code"); + + // Using BeginProperty / EndProperty on the parent property means that + // prefab override logic works on the entire property. + EditorGUI.BeginProperty(position, label, property); + + // Draw label + position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); + Rect autoBindPosition = new Rect(position.x + position.width - 20.0f, position.y, 20.0f, position.height); + Rect codePosition = new Rect(position.x, position.y, position.width - 22.0f, position.height); + + // Don't make child fields be indented + var indent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + + // Show the traditional long dropdown list for selecting a key binding. + if (KeyBinding.KeyBindingToEnumMap.TryGetValue(Tuple.Create((KeyBinding.KeyType)bindingType.intValue, code.intValue), out int index)) + { + int newIndex = EditorGUI.Popup(codePosition, index, KeyBinding.AllCodeNames); + + if (newIndex != index) + { + if (KeyBinding.EnumToKeyBindingMap.TryGetValue(newIndex, out var kb)) + { + bindingType.intValue = (int)kb.Item1; + code.intValue = kb.Item2; + } + } + } + + // Show a popup for binding by pressing a key or mouse button. + // Note that this method does not work for shift keys (Unity event limitation) + if (GUI.Button(autoBindPosition, "")) + { + KeyBindingPopupWindow.Show(property); + } + + // Set indent back to what it was + EditorGUI.indentLevel = indent; + + EditorGUI.EndProperty(); + + property.serializedObject.ApplyModifiedProperties(); + } + } + + /// + /// Utility window that listens to input events to set a key binding. + /// Pressing a key or mouse button will define the binding and then immediately close the popup. + /// + /// + /// The shift keys don't raise input events on their own, so this popup does not work for shift keys. + /// These have to be bound by selecting from the traditional dropdown list. + /// + public class KeyBindingPopupWindow : EditorWindow + { + private static KeyBindingPopupWindow window; + + private SerializedProperty keyBindingProp; + private SerializedProperty bindingTypeProp; + private SerializedProperty codeProp; + + /// + /// Create a new popup. + /// + public static void Show(SerializedProperty keyBinding) + { + if (window != null) + { + window.Close(); + } + + window = null; + + window = CreateInstance(); + window.titleContent = new GUIContent($"Key Binding : {keyBinding.name}"); + window.keyBindingProp = keyBinding; + window.bindingTypeProp = keyBinding.FindPropertyRelative("bindingType"); + window.codeProp = keyBinding.FindPropertyRelative("code"); + + var windowSize = new Vector2(256f, 128f); + window.maxSize = windowSize; + window.minSize = windowSize; + window.CenterOnMainWin(); + window.ShowUtility(); + } + + private void OnGUI() + { + Event evt = Event.current; + switch (evt.type) + { + case EventType.KeyUp: + ApplyKeyCode(evt.keyCode); + break; + + case EventType.MouseUp: + ApplyMouseButton(evt.button); + break; + } + } + + // Set the binding based on a keyboard key + private void ApplyKeyCode(KeyCode keyCode) + { + bindingTypeProp.intValue = (int)KeyBinding.KeyType.Key; + codeProp.intValue = (int)keyCode; + keyBindingProp.serializedObject.ApplyModifiedProperties(); + + Close(); + } + + // Set the binding based on a mouse button + private void ApplyMouseButton(int button) + { + bindingTypeProp.intValue = (int)KeyBinding.KeyType.Mouse; + codeProp.intValue = button; + keyBindingProp.serializedObject.ApplyModifiedProperties(); + + Close(); + } + } +} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/KeyBindingInspector.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/KeyBindingInspector.cs.meta new file mode 100644 index 00000000000..758739b2256 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/KeyBindingInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e85e97339813a2f4ead7067ecee43f16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/ManualCameraControl.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/ManualCameraControl.cs new file mode 100644 index 00000000000..69b785d6464 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/ManualCameraControl.cs @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// Class for manually controlling the camera in the Unity editor. Attach to the MainCamera object. + /// + public class ManualCameraControl + { + private MixedRealityInputSimulationProfile profile; + + private bool isGamepadLookEnabled = true; + private bool isFlyKeypressEnabled = true; + private Vector3 lastTrackerToUnityTranslation = Vector3.zero; + private Quaternion lastTrackerToUnityRotation = Quaternion.identity; + + private static readonly KeyBinding cancelRotationKey = KeyBinding.FromKey(KeyCode.Escape); + private readonly MouseRotationProvider mouseRotation = new MouseRotationProvider(); + + public ManualCameraControl(MixedRealityInputSimulationProfile _profile) + { + profile = _profile; + } + + private static float InputCurve(float x) + { + // smoothing input curve, converts from [-1,1] to [-2,2] + return Mathf.Sign(x) * (1.0f - Mathf.Cos(0.5f * Mathf.PI * Mathf.Clamp(x, -1.0f, 1.0f))); + } + + /// + /// Translate and rotate the camera transform based on keyboard and mouse input. + /// + public void UpdateTransform(Transform transform, MouseDelta mouseDelta) + { + // Undo the last tracker to Unity transforms applied + transform.Translate(-this.lastTrackerToUnityTranslation, Space.World); + transform.Rotate(-this.lastTrackerToUnityRotation.eulerAngles, Space.World); + + // Calculate and apply the camera control movement this frame + Vector3 rotate = GetCameraControlRotation(mouseDelta); + Vector3 translate = GetCameraControlTranslation(transform); + + transform.Rotate(rotate.x, 0.0f, 0.0f); + transform.Rotate(0.0f, rotate.y, 0.0f, Space.World); + transform.Rotate(0.0f, 0.0f, rotate.z); + transform.Translate(translate, Space.World); + + transform.Rotate(this.lastTrackerToUnityRotation.eulerAngles, Space.World); + transform.Translate(this.lastTrackerToUnityTranslation, Space.World); + } + + private static float GetKeyDir(string neg, string pos) + { + return UnityEngine.Input.GetKey(neg) ? -1.0f : UnityEngine.Input.GetKey(pos) ? 1.0f : 0.0f; + } + + private Vector3 GetCameraControlTranslation(Transform transform) + { + Vector3 deltaPosition = Vector3.zero; + + // Support fly up/down keypresses if the current project maps it. This isn't a standard + // Unity InputManager mapping, so it has to gracefully fail if unavailable. + if (this.isFlyKeypressEnabled) + { + try + { + deltaPosition += InputCurve(UnityEngine.Input.GetAxis("Fly")) * transform.up; + } + catch (System.Exception) + { + this.isFlyKeypressEnabled = false; + } + } + else + { + // use page up/down in this case + deltaPosition += GetKeyDir("page down", "page up") * Vector3.up; + } + + deltaPosition += InputCurve(UnityEngine.Input.GetAxis(profile.MoveHorizontal)) * transform.right; + + Vector3 forward; + Vector3 up; + if (profile.CurrentControlMode == InputSimulationControlMode.Walk) + { + up = Vector3.up; + forward = Vector3.ProjectOnPlane(transform.forward, up).normalized; + } + else + { + forward = transform.forward; + up = transform.up; + } + deltaPosition += InputCurve(UnityEngine.Input.GetAxis(profile.MoveVertical)) * forward; + deltaPosition += InputCurve(UnityEngine.Input.GetAxis(profile.MoveUpDown)) * up; + + float accel = KeyInputSystem.GetKey(profile.FastControlKey) ? profile.ControlFastSpeed : profile.ControlSlowSpeed; + return accel * deltaPosition; + } + + private Vector3 GetCameraControlRotation(MouseDelta mouseDelta) + { + float inversionFactor = profile.IsControllerLookInverted ? -1.0f : 1.0f; + + Vector3 rot = Vector3.zero; + + if (this.isGamepadLookEnabled) + { + try + { + // Get the axes information from the right stick of X360 controller + rot.x += InputCurve(UnityEngine.Input.GetAxis(profile.LookVertical)) * inversionFactor; + rot.y += InputCurve(UnityEngine.Input.GetAxis(profile.LookHorizontal)); + } + catch (System.Exception) + { + this.isGamepadLookEnabled = false; + } + } + + mouseRotation.Update(profile.MouseLookButton, cancelRotationKey, profile.MouseLookToggle); + if (mouseRotation.IsRotating) + { + rot.x += -InputCurve(mouseDelta.screenDelta.y * profile.MouseRotationSensitivity); + rot.y += InputCurve(mouseDelta.screenDelta.x * profile.MouseRotationSensitivity); + rot.z += InputCurve(mouseDelta.screenDelta.z * profile.MouseRotationSensitivity); + } + + rot *= profile.MouseLookSpeed; + + return rot; + } + + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ManualCameraControl.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/ManualCameraControl.cs.meta similarity index 83% rename from Assets/MixedRealityToolkit.Services/InputSimulation/ManualCameraControl.cs.meta rename to Assets/MixedRealityToolkit.Services/InputSimulation/Editor/ManualCameraControl.cs.meta index 127328ec73c..effbe13fdfd 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ManualCameraControl.cs.meta +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/ManualCameraControl.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 94dd522e01e6c9c4fb24c876c5705a6a +guid: 9fa8cbe9ae0e4fa41ac858966a8ed215 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor.asmdef b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor.asmdef index cbc03df79c6..fbb30bb5042 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor.asmdef +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor.asmdef @@ -4,6 +4,7 @@ "Microsoft.MixedReality.Toolkit", "Microsoft.MixedReality.Toolkit.Editor.Inspectors", "Microsoft.MixedReality.Toolkit.Editor.Utilities", + "Microsoft.MixedReality.Toolkit.Services.InputAnimation", "Microsoft.MixedReality.Toolkit.Services.InputSystem", "Microsoft.MixedReality.Toolkit.Services.InputSimulation" ], diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MixedRealityInputSimulationProfileInspector.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MixedRealityInputSimulationProfileInspector.cs index 702345a9095..4810beed21f 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MixedRealityInputSimulationProfileInspector.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MixedRealityInputSimulationProfileInspector.cs @@ -11,11 +11,15 @@ namespace Microsoft.MixedReality.Toolkit.Input [CustomEditor(typeof(MixedRealityInputSimulationProfile))] public class MixedRealityInputSimulationProfileInspector : BaseMixedRealityToolkitConfigurationProfileInspector { + private SerializedProperty indicatorsPrefab; + private SerializedProperty doublePressTime; + private SerializedProperty isCameraControlEnabled; - private SerializedProperty extraMouseSensitivityScale; - private SerializedProperty defaultMouseSensitivity; + private SerializedProperty mouseLookSpeed; + private SerializedProperty mouseRotationSensitivity; private SerializedProperty mouseLookButton; + private SerializedProperty mouseLookToggle; private SerializedProperty isControllerLookInverted; private SerializedProperty currentControlMode; private SerializedProperty fastControlKey; @@ -23,12 +27,14 @@ public class MixedRealityInputSimulationProfileInspector : BaseMixedRealityToolk private SerializedProperty controlFastSpeed; private SerializedProperty moveHorizontal; private SerializedProperty moveVertical; + private SerializedProperty moveUpDown; private SerializedProperty mouseX; private SerializedProperty mouseY; + private SerializedProperty mouseScroll; private SerializedProperty lookHorizontal; private SerializedProperty lookVertical; - private SerializedProperty handSimulationMode; + private SerializedProperty defaultHandSimulationMode; private SerializedProperty simulateEyePosition; @@ -37,6 +43,8 @@ public class MixedRealityInputSimulationProfileInspector : BaseMixedRealityToolk private SerializedProperty handHideTimeout; private SerializedProperty leftHandManipulationKey; private SerializedProperty rightHandManipulationKey; + private SerializedProperty mouseHandRotationSpeed; + private SerializedProperty handRotateButton; private SerializedProperty defaultHandGesture; private SerializedProperty leftMouseHandGesture; @@ -48,14 +56,6 @@ public class MixedRealityInputSimulationProfileInspector : BaseMixedRealityToolk private SerializedProperty handDepthMultiplier; private SerializedProperty handJitterAmount; - private SerializedProperty yawHandCWKey; - private SerializedProperty yawHandCCWKey; - private SerializedProperty pitchHandCWKey; - private SerializedProperty pitchHandCCWKey; - private SerializedProperty rollHandCWKey; - private SerializedProperty rollHandCCWKey; - private SerializedProperty handRotationSpeed; - private SerializedProperty holdStartDuration; private SerializedProperty navigationStartThreshold; @@ -66,11 +66,15 @@ protected override void OnEnable() { base.OnEnable(); + indicatorsPrefab = serializedObject.FindProperty("indicatorsPrefab"); + doublePressTime = serializedObject.FindProperty("doublePressTime"); + isCameraControlEnabled = serializedObject.FindProperty("isCameraControlEnabled"); - extraMouseSensitivityScale = serializedObject.FindProperty("extraMouseSensitivityScale"); - defaultMouseSensitivity = serializedObject.FindProperty("defaultMouseSensitivity"); + mouseLookSpeed = serializedObject.FindProperty("mouseLookSpeed"); + mouseRotationSensitivity = serializedObject.FindProperty("mouseRotationSensitivity"); mouseLookButton = serializedObject.FindProperty("mouseLookButton"); + mouseLookToggle = serializedObject.FindProperty("mouseLookToggle"); isControllerLookInverted = serializedObject.FindProperty("isControllerLookInverted"); currentControlMode = serializedObject.FindProperty("currentControlMode"); fastControlKey = serializedObject.FindProperty("fastControlKey"); @@ -78,12 +82,14 @@ protected override void OnEnable() controlFastSpeed = serializedObject.FindProperty("controlFastSpeed"); moveHorizontal = serializedObject.FindProperty("moveHorizontal"); moveVertical = serializedObject.FindProperty("moveVertical"); + moveUpDown = serializedObject.FindProperty("moveUpDown"); mouseX = serializedObject.FindProperty("mouseX"); mouseY = serializedObject.FindProperty("mouseY"); + mouseScroll = serializedObject.FindProperty("mouseScroll"); lookHorizontal = serializedObject.FindProperty("lookHorizontal"); lookVertical = serializedObject.FindProperty("lookVertical"); - handSimulationMode = serializedObject.FindProperty("handSimulationMode"); + defaultHandSimulationMode = serializedObject.FindProperty("defaultHandSimulationMode"); simulateEyePosition = serializedObject.FindProperty("simulateEyePosition"); @@ -92,6 +98,8 @@ protected override void OnEnable() handHideTimeout = serializedObject.FindProperty("handHideTimeout"); leftHandManipulationKey = serializedObject.FindProperty("leftHandManipulationKey"); rightHandManipulationKey = serializedObject.FindProperty("rightHandManipulationKey"); + mouseHandRotationSpeed = serializedObject.FindProperty("mouseHandRotationSpeed"); + handRotateButton = serializedObject.FindProperty("handRotateButton"); defaultHandGesture = serializedObject.FindProperty("defaultHandGesture"); leftMouseHandGesture = serializedObject.FindProperty("leftMouseHandGesture"); @@ -105,14 +113,6 @@ protected override void OnEnable() defaultHandDistance = serializedObject.FindProperty("defaultHandDistance"); handDepthMultiplier = serializedObject.FindProperty("handDepthMultiplier"); handJitterAmount = serializedObject.FindProperty("handJitterAmount"); - - yawHandCWKey = serializedObject.FindProperty("yawHandCWKey"); - yawHandCCWKey = serializedObject.FindProperty("yawHandCCWKey"); - pitchHandCWKey = serializedObject.FindProperty("pitchHandCWKey"); - pitchHandCCWKey = serializedObject.FindProperty("pitchHandCCWKey"); - rollHandCWKey = serializedObject.FindProperty("rollHandCWKey"); - rollHandCCWKey = serializedObject.FindProperty("rollHandCCWKey"); - handRotationSpeed = serializedObject.FindProperty("handRotationSpeed"); } public override void OnInspectorGUI() @@ -123,14 +123,25 @@ public override void OnInspectorGUI() using (new GUIEnabledWrapper(!IsProfileLock((BaseMixedRealityProfile)target))) { + EditorGUILayout.PropertyField(indicatorsPrefab); + + EditorGUILayout.Space(); + EditorGUILayout.BeginVertical("Label"); + EditorGUILayout.PropertyField(mouseRotationSensitivity); + EditorGUILayout.PropertyField(mouseX); + EditorGUILayout.PropertyField(mouseY); + EditorGUILayout.PropertyField(mouseScroll); + EditorGUILayout.PropertyField(doublePressTime); + EditorGUILayout.EndVertical(); + EditorGUILayout.PropertyField(isCameraControlEnabled); { EditorGUILayout.BeginVertical("Label"); using (new GUIEnabledWrapper(isCameraControlEnabled.boolValue)) { - EditorGUILayout.PropertyField(extraMouseSensitivityScale); - EditorGUILayout.PropertyField(defaultMouseSensitivity); + EditorGUILayout.PropertyField(mouseLookSpeed); EditorGUILayout.PropertyField(mouseLookButton); + EditorGUILayout.PropertyField(mouseLookToggle); EditorGUILayout.PropertyField(isControllerLookInverted); EditorGUILayout.PropertyField(currentControlMode); EditorGUILayout.PropertyField(fastControlKey); @@ -138,8 +149,7 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(controlFastSpeed); EditorGUILayout.PropertyField(moveHorizontal); EditorGUILayout.PropertyField(moveVertical); - EditorGUILayout.PropertyField(mouseX); - EditorGUILayout.PropertyField(mouseY); + EditorGUILayout.PropertyField(moveUpDown); EditorGUILayout.PropertyField(lookHorizontal); EditorGUILayout.PropertyField(lookVertical); @@ -151,46 +161,36 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(simulateEyePosition); EditorGUILayout.Space(); - EditorGUILayout.PropertyField(handSimulationMode); + EditorGUILayout.PropertyField(defaultHandSimulationMode); { EditorGUILayout.BeginVertical("Label"); - bool isHandSimEnabled = (handSimulationMode.enumValueIndex != (int)HandSimulationMode.Disabled); - using (new GUIEnabledWrapper(isHandSimEnabled)) - { - EditorGUILayout.PropertyField(toggleLeftHandKey); - EditorGUILayout.PropertyField(toggleRightHandKey); - EditorGUILayout.PropertyField(handHideTimeout); - EditorGUILayout.PropertyField(leftHandManipulationKey); - EditorGUILayout.PropertyField(rightHandManipulationKey); - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(defaultHandGesture); - EditorGUILayout.PropertyField(leftMouseHandGesture); - EditorGUILayout.PropertyField(middleMouseHandGesture); - EditorGUILayout.PropertyField(rightMouseHandGesture); - EditorGUILayout.PropertyField(handGestureAnimationSpeed); - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(holdStartDuration); - EditorGUILayout.PropertyField(navigationStartThreshold); - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(defaultHandDistance); - EditorGUILayout.PropertyField(handDepthMultiplier); - EditorGUILayout.PropertyField(handJitterAmount); - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(yawHandCWKey); - EditorGUILayout.PropertyField(yawHandCCWKey); - EditorGUILayout.PropertyField(pitchHandCWKey); - EditorGUILayout.PropertyField(pitchHandCCWKey); - EditorGUILayout.PropertyField(rollHandCWKey); - EditorGUILayout.PropertyField(rollHandCCWKey); - EditorGUILayout.PropertyField(handRotationSpeed); - EditorGUILayout.Space(); - EditorGUILayout.EndVertical(); - } + EditorGUILayout.PropertyField(toggleLeftHandKey); + EditorGUILayout.PropertyField(toggleRightHandKey); + EditorGUILayout.PropertyField(handHideTimeout); + EditorGUILayout.PropertyField(leftHandManipulationKey); + EditorGUILayout.PropertyField(rightHandManipulationKey); + EditorGUILayout.PropertyField(mouseHandRotationSpeed); + EditorGUILayout.PropertyField(handRotateButton); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(defaultHandGesture); + EditorGUILayout.PropertyField(leftMouseHandGesture); + EditorGUILayout.PropertyField(middleMouseHandGesture); + EditorGUILayout.PropertyField(rightMouseHandGesture); + EditorGUILayout.PropertyField(handGestureAnimationSpeed); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(holdStartDuration); + EditorGUILayout.PropertyField(navigationStartThreshold); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(defaultHandDistance); + EditorGUILayout.PropertyField(handDepthMultiplier); + EditorGUILayout.PropertyField(handJitterAmount); + EditorGUILayout.Space(); + + EditorGUILayout.EndVertical(); } serializedObject.ApplyModifiedProperties(); diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MouseRotationProvider.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MouseRotationProvider.cs new file mode 100644 index 00000000000..39a4eb36f1e --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MouseRotationProvider.cs @@ -0,0 +1,153 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// Utility class to manage toggling of mouse rotation and associated features, + /// such as cursor visibility/locking + /// + public class MouseRotationProvider + { + private bool isRotating = false; + /// + /// True when rotation is currently active. + /// + public bool IsRotating => isRotating; + + // Refcount to ensure the cursor is locked iff at least one rotation is in progress. + private static int numRotating = 0; + private static bool isMouseJumping = false; + private static bool wasCursorVisible = true; + + /// + /// Start or stop rotation based on the key binding. + /// + /// + /// Also manages shared features such as cursor visibility that can be activated by different rotation providers. + /// + public void Update(KeyBinding rotationKey, KeyBinding cancelRotationKey, bool toggle) + { + bool wasRotating = isRotating; + + // Only allow the mouse to control rotation when Unity has focus. + // This enables the player to temporarily alt-tab away without having the player + // look around randomly back in the Unity Game window. + if (!Application.isFocused) + { + isRotating = false; + } + else + { + if (toggle) + { + if (isRotating) + { + // Pressing escape will stop capture + isRotating = !KeyInputSystem.GetKeyDown(cancelRotationKey); + } + else + { + // Capture focus when starting rotation + isRotating = KeyInputSystem.GetKeyDown(rotationKey); + } + } + else + { + // Rotate only while key is pressed + isRotating = KeyInputSystem.GetKey(rotationKey); + } + } + + if (!wasRotating && isRotating) + { + OnStartRotating(rotationKey); + } + else if (wasRotating && !isRotating) + { + OnEndRotating(rotationKey); + } + } + + private static void OnStartRotating(KeyBinding rotationKey) + { + if (numRotating == 0) + { + if (rotationKey.BindingType == KeyBinding.KeyType.Mouse) + { + // Enable jumping when a mouse button is used + SetWantsMouseJumping(true); + } + else if (rotationKey.BindingType == KeyBinding.KeyType.Key) + { + // Use cursor locking when using a key + UnityEngine.Cursor.lockState = CursorLockMode.Locked; + // save current cursor visibility before hiding it + wasCursorVisible = UnityEngine.Cursor.visible; + UnityEngine.Cursor.visible = false; + } + } + + ++numRotating; + } + + private static void OnEndRotating(KeyBinding rotationKey) + { + --numRotating; + + if (numRotating == 0) + { + if (rotationKey.BindingType == KeyBinding.KeyType.Mouse) + { + // Enable jumping when a mouse button is used + SetWantsMouseJumping(false); + } + else if (rotationKey.BindingType == KeyBinding.KeyType.Key) + { + // Use cursor locking when using a key + UnityEngine.Cursor.lockState = CursorLockMode.None; + UnityEngine.Cursor.visible = wasCursorVisible; + } + } + } + + /// + /// Mouse jumping is where the mouse cursor appears outside the Unity game window, but + /// disappears when it enters the Unity game window. + /// + /// Show the cursor + private static void SetWantsMouseJumping(bool wantsJumping) + { + if (wantsJumping != isMouseJumping) + { + isMouseJumping = wantsJumping; + + if (wantsJumping) + { + // unlock the cursor if it was locked + UnityEngine.Cursor.lockState = CursorLockMode.None; + + // save original state of cursor before hiding + wasCursorVisible = UnityEngine.Cursor.visible; + // hide the cursor + UnityEngine.Cursor.visible = false; + } + else + { + // recenter the cursor (setting lockCursor has side-effects under the hood) + UnityEngine.Cursor.lockState = CursorLockMode.Locked; + UnityEngine.Cursor.lockState = CursorLockMode.None; + + // restore the cursor + UnityEngine.Cursor.visible = wasCursorVisible; + } + + #if UNITY_EDITOR + UnityEditor.EditorGUIUtility.SetWantsMouseJumping(wantsJumping ? 1 : 0); + #endif + } + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MouseRotationProvider.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MouseRotationProvider.cs.meta new file mode 100644 index 00000000000..1ddf15ce9a0 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/MouseRotationProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 53e31e4e5eb6aed43b4e9a62ece9365a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandDataProvider.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/SimulatedHandDataProvider.cs similarity index 66% rename from Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandDataProvider.cs rename to Assets/MixedRealityToolkit.Services/InputSimulation/Editor/SimulatedHandDataProvider.cs index 8fa95c7d38b..8328ec80ddb 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandDataProvider.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/SimulatedHandDataProvider.cs @@ -18,10 +18,8 @@ namespace Microsoft.MixedReality.Toolkit.Input /// /// Internal class to define current gesture and smoothly animate hand data points. /// - [Serializable] internal class SimulatedHandState { - [SerializeField] private Handedness handedness = Handedness.None; public Handedness Handedness => handedness; @@ -30,13 +28,13 @@ internal class SimulatedHandState // Activate the pinch gesture public bool IsPinching { get; private set; } - public Vector3 ScreenPosition; - // Rotation of the hand - public Vector3 HandRotateEulerAngles = Vector3.zero; + // Position of the hand in viewport space + public Vector3 ViewportPosition = Vector3.zero; + // Rotation of the hand relative to the camera + public Vector3 ViewportRotation = Vector3.zero; // Random offset to simulate tracking inaccuracy public Vector3 JitterOffset = Vector3.zero; - [SerializeField] private ArticulatedHandPose.GestureId gesture = ArticulatedHandPose.GestureId.None; public ArticulatedHandPose.GestureId Gesture { @@ -73,33 +71,22 @@ public SimulatedHandState(Handedness _handedness) handedness = _handedness; } - public void Reset() + public void SimulateInput(MouseDelta mouseDelta, bool useMouseRotation, float rotationSensitivity, float rotationScale, float noiseAmount) { - ScreenPosition = Vector3.zero; - HandRotateEulerAngles = Vector3.zero; - JitterOffset = Vector3.zero; - - ResetGesture(); - } - - /// - /// Set the position in viewport space rather than screen space (pixels). - /// - public void SetViewportPosition(Vector3 point) - { - ScreenPosition = CameraCache.Main.ViewportToScreenPoint(point); - } - - public void SimulateInput(Vector3 mouseDelta, float noiseAmount, Vector3 rotationDeltaEulerAngles) - { - // Apply mouse delta x/y in screen space, but depth offset in world space - ScreenPosition.x += mouseDelta.x; - ScreenPosition.y += mouseDelta.y; - Vector3 newWorldPoint = CameraCache.Main.ScreenToWorldPoint(ScreenPosition); - newWorldPoint += CameraCache.Main.transform.forward * mouseDelta.z; - ScreenPosition = CameraCache.Main.WorldToScreenPoint(newWorldPoint); + if (useMouseRotation) + { + Vector3 rotationDeltaEulerAngles = Vector3.zero; + rotationDeltaEulerAngles.x += -mouseDelta.screenDelta.y * rotationSensitivity; + rotationDeltaEulerAngles.y += mouseDelta.screenDelta.x * rotationSensitivity; + rotationDeltaEulerAngles.z += mouseDelta.screenDelta.z * rotationSensitivity; + rotationDeltaEulerAngles *= rotationScale; - HandRotateEulerAngles += rotationDeltaEulerAngles; + ViewportRotation = ViewportRotation + rotationDeltaEulerAngles; + } + else + { + ViewportPosition += mouseDelta.viewportDelta; + } JitterOffset = UnityEngine.Random.insideUnitSphere * noiseAmount; } @@ -115,6 +102,13 @@ public void ResetGesture() } } + public void ResetRotation() + { + // Use wrist joint rotation as the default + Quaternion rotationRef = pose.GetLocalJointPose(TrackedHandJoint.Wrist, handedness).Rotation; + ViewportRotation = rotationRef.eulerAngles; + } + internal void FillCurrentFrame(MixedRealityPose[] jointsOut) { ArticulatedHandPose gesturePose = ArticulatedHandPose.GetGesturePose(gesture); @@ -129,9 +123,15 @@ internal void FillCurrentFrame(MixedRealityPose[] jointsOut) } poseBlending = gestureBlending; - Quaternion rotation = Quaternion.Euler(HandRotateEulerAngles); - Vector3 position = CameraCache.Main.ScreenToWorldPoint(ScreenPosition + JitterOffset); - pose.ComputeJointPoses(handedness, rotation, position, jointsOut); + Vector3 screenPosition = CameraCache.Main.ViewportToScreenPoint(ViewportPosition); + Vector3 worldPosition = CameraCache.Main.ScreenToWorldPoint(screenPosition + JitterOffset); + + // Apply rotation relative to the wrist joint + Quaternion rotationRef = pose.GetLocalJointPose(TrackedHandJoint.Wrist, handedness).Rotation; + Quaternion localRotation = Quaternion.Euler(ViewportRotation) * Quaternion.Inverse(rotationRef); + + Quaternion worldRotation = CameraCache.Main.transform.rotation * localRotation; + pose.ComputeJointPoses(handedness, worldRotation, worldPosition, jointsOut); } } @@ -153,21 +153,34 @@ public class SimulatedHandDataProvider /// public bool IsAlwaysVisibleRight = false; - private SimulatedHandState HandStateLeft; - private SimulatedHandState HandStateRight; + internal SimulatedHandState HandStateLeft; + internal SimulatedHandState HandStateRight; // If true then hands are controlled by user input private bool isSimulatingLeft = false; private bool isSimulatingRight = false; - // Last frame's mouse position for computing delta - private Vector3? lastMousePosition = null; + /// + /// Left hand is controlled by user input. + /// + public bool IsSimulatingLeft => isSimulatingLeft; + /// + /// Right hand is controlled by user input. + /// + public bool IsSimulatingRight => isSimulatingRight; + + // Most recent time hand control was enabled, + private float lastSimulationLeft = -1.0e6f; + private float lastSimulationRight = -1.0e6f; // Last timestamp when hands were tracked - private long lastSimulatedTimestampLeft = 0; - private long lastSimulatedTimestampRight = 0; + private long lastHandTrackedTimestampLeft = 0; + private long lastHandTrackedTimestampRight = 0; // Cached delegates for hand joint generation private SimulatedHandData.HandJointDataGenerator generatorLeft; private SimulatedHandData.HandJointDataGenerator generatorRight; + private static readonly KeyBinding cancelRotationKey = KeyBinding.FromKey(KeyCode.Escape); + private readonly MouseRotationProvider mouseRotation = new MouseRotationProvider(); + public SimulatedHandDataProvider(MixedRealityInputSimulationProfile _profile) { profile = _profile; @@ -177,22 +190,16 @@ public SimulatedHandDataProvider(MixedRealityInputSimulationProfile _profile) HandStateLeft.Gesture = profile.DefaultHandGesture; HandStateRight.Gesture = profile.DefaultHandGesture; - - HandStateLeft.Reset(); - HandStateRight.Reset(); } /// /// Capture a snapshot of simulated hand data based on current state. /// - public bool UpdateHandData(SimulatedHandData handDataLeft, SimulatedHandData handDataRight) + public bool UpdateHandData(SimulatedHandData handDataLeft, SimulatedHandData handDataRight, MouseDelta mouseDelta) { - SimulateUserInput(); + SimulateUserInput(mouseDelta); bool handDataChanged = false; - // TODO: DateTime.UtcNow can be quite imprecise, better use Stopwatch.GetTimestamp - // https://stackoverflow.com/questions/2143140/c-sharp-datetime-now-precision - long timestamp = DateTime.UtcNow.Ticks; // Cache the generator delegates so we don't gc alloc every frame if (generatorLeft == null) @@ -205,8 +212,8 @@ public bool UpdateHandData(SimulatedHandData handDataLeft, SimulatedHandData han generatorRight = HandStateRight.FillCurrentFrame; } - handDataChanged |= handDataLeft.UpdateWithTimestamp(timestamp, HandStateLeft.IsTracked, HandStateLeft.IsPinching, generatorLeft); - handDataChanged |= handDataRight.UpdateWithTimestamp(timestamp, HandStateRight.IsTracked, HandStateRight.IsPinching, generatorRight); + handDataChanged |= handDataLeft.Update(HandStateLeft.IsTracked, HandStateLeft.IsPinching, generatorLeft); + handDataChanged |= handDataRight.Update(HandStateRight.IsTracked, HandStateRight.IsPinching, generatorRight); return handDataChanged; } @@ -214,13 +221,15 @@ public bool UpdateHandData(SimulatedHandData handDataLeft, SimulatedHandData han /// /// Update hand state based on keyboard and mouse input /// - private void SimulateUserInput() + private void SimulateUserInput(MouseDelta mouseDelta) { - if (UnityEngine.Input.GetKeyDown(profile.ToggleLeftHandKey)) + float time = Time.time; + + if (KeyInputSystem.GetKeyDown(profile.ToggleLeftHandKey)) { IsAlwaysVisibleLeft = !IsAlwaysVisibleLeft; } - if (UnityEngine.Input.GetKeyDown(profile.ToggleRightHandKey)) + if (KeyInputSystem.GetKeyDown(profile.ToggleRightHandKey)) { IsAlwaysVisibleRight = !IsAlwaysVisibleRight; } @@ -232,84 +241,63 @@ private void SimulateUserInput() } else { - if (UnityEngine.Input.GetKeyDown(profile.LeftHandManipulationKey)) + if (KeyInputSystem.GetKeyDown(profile.LeftHandManipulationKey)) { isSimulatingLeft = true; + if (lastSimulationLeft > 0.0f && time - lastSimulationLeft <= profile.DoublePressTime) + { + IsAlwaysVisibleLeft = !IsAlwaysVisibleLeft; + } + lastSimulationLeft = time; } - if (UnityEngine.Input.GetKeyUp(profile.LeftHandManipulationKey)) + if (KeyInputSystem.GetKeyUp(profile.LeftHandManipulationKey)) { isSimulatingLeft = false; } - if (UnityEngine.Input.GetKeyDown(profile.RightHandManipulationKey)) + if (KeyInputSystem.GetKeyDown(profile.RightHandManipulationKey)) { isSimulatingRight = true; + if (lastSimulationRight > 0.0f && time - lastSimulationRight <= profile.DoublePressTime) + { + IsAlwaysVisibleRight = !IsAlwaysVisibleRight; + } + lastSimulationRight = time; } - if (UnityEngine.Input.GetKeyUp(profile.RightHandManipulationKey)) + if (KeyInputSystem.GetKeyUp(profile.RightHandManipulationKey)) { isSimulatingRight = false; } } - Vector3 mouseDelta = (lastMousePosition.HasValue ? UnityEngine.Input.mousePosition - lastMousePosition.Value : Vector3.zero); - mouseDelta.z += UnityEngine.Input.GetAxis("Mouse ScrollWheel") * profile.HandDepthMultiplier; - float rotationDelta = profile.HandRotationSpeed * Time.deltaTime; - Vector3 rotationDeltaEulerAngles = Vector3.zero; - if (UnityEngine.Input.GetKey(profile.YawHandCCWKey)) - { - rotationDeltaEulerAngles.y = -rotationDelta; - } - if (UnityEngine.Input.GetKey(profile.YawHandCWKey)) - { - rotationDeltaEulerAngles.y = rotationDelta; - } - if (UnityEngine.Input.GetKey(profile.PitchHandCCWKey)) - { - rotationDeltaEulerAngles.x = rotationDelta; - } - if (UnityEngine.Input.GetKey(profile.PitchHandCWKey)) - { - rotationDeltaEulerAngles.x = -rotationDelta; - } - if (UnityEngine.Input.GetKey(profile.RollHandCCWKey)) - { - rotationDeltaEulerAngles.z = rotationDelta; - } - if (UnityEngine.Input.GetKey(profile.RollHandCWKey)) - { - rotationDeltaEulerAngles.z = -rotationDelta; - } + mouseRotation.Update(profile.HandRotateButton, cancelRotationKey, false); - SimulateHandInput(ref lastSimulatedTimestampLeft, HandStateLeft, isSimulatingLeft, IsAlwaysVisibleLeft, mouseDelta, rotationDeltaEulerAngles); - SimulateHandInput(ref lastSimulatedTimestampRight, HandStateRight, isSimulatingRight, IsAlwaysVisibleRight, mouseDelta, rotationDeltaEulerAngles); + SimulateHandInput(ref lastHandTrackedTimestampLeft, HandStateLeft, isSimulatingLeft, IsAlwaysVisibleLeft, mouseDelta, mouseRotation.IsRotating); + SimulateHandInput(ref lastHandTrackedTimestampRight, HandStateRight, isSimulatingRight, IsAlwaysVisibleRight, mouseDelta, mouseRotation.IsRotating); float gestureAnimDelta = profile.HandGestureAnimationSpeed * Time.deltaTime; HandStateLeft.GestureBlending += gestureAnimDelta; HandStateRight.GestureBlending += gestureAnimDelta; - - lastMousePosition = UnityEngine.Input.mousePosition; } /// Apply changes to one hand and update tracking private void SimulateHandInput( - ref long lastSimulatedTimestamp, + ref long lastHandTrackedTimestamp, SimulatedHandState state, bool isSimulating, bool isAlwaysVisible, - Vector3 mouseDelta, - Vector3 rotationDeltaEulerAngles) + MouseDelta mouseDelta, + bool useMouseRotation) { bool enableTracking = isAlwaysVisible || isSimulating; if (!state.IsTracked && enableTracking) { - // Start at current mouse position - Vector3 mousePos = UnityEngine.Input.mousePosition; - state.ScreenPosition = new Vector3(mousePos.x, mousePos.y, profile.DefaultHandDistance); + ResetHand(state, isSimulating); } if (isSimulating) { - state.SimulateInput(mouseDelta, profile.HandJitterAmount, rotationDeltaEulerAngles); + state.SimulateInput(mouseDelta, useMouseRotation, profile.MouseRotationSensitivity, profile.MouseHandRotationSpeed, profile.HandJitterAmount); if (isAlwaysVisible) { @@ -331,11 +319,11 @@ private void SimulateHandInput( if (enableTracking) { state.IsTracked = true; - lastSimulatedTimestamp = currentTime.Ticks; + lastHandTrackedTimestamp = currentTime.Ticks; } else { - float timeSinceTracking = (float)currentTime.Subtract(new DateTime(lastSimulatedTimestamp)).TotalSeconds; + float timeSinceTracking = (float)currentTime.Subtract(new DateTime(lastHandTrackedTimestamp)).TotalSeconds; if (timeSinceTracking > profile.HandHideTimeout) { state.IsTracked = false; @@ -343,6 +331,36 @@ private void SimulateHandInput( } } + public void ResetHand(Handedness handedness) + { + if (handedness == Handedness.Left) + { + ResetHand(HandStateLeft, isSimulatingLeft); + } + else + { + ResetHand(HandStateRight, isSimulatingRight); + } + } + + private void ResetHand(SimulatedHandState state, bool isSimulating) + { + if (isSimulating) + { + // Start at current mouse position + Vector3 mousePos = UnityEngine.Input.mousePosition; + state.ViewportPosition = CameraCache.Main.ScreenToViewportPoint(new Vector3(mousePos.x, mousePos.y, profile.DefaultHandDistance)); + } + else + { + state.ViewportPosition = new Vector3(0.5f, 0.5f, profile.DefaultHandDistance); + } + + state.Gesture = profile.DefaultHandGesture; + state.ResetGesture(); + state.ResetRotation(); + } + /// /// Gets the currenctly active gesture, according to the mouse configuration and mouse button that is down. /// diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandDataProvider.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/SimulatedHandDataProvider.cs.meta similarity index 83% rename from Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandDataProvider.cs.meta rename to Assets/MixedRealityToolkit.Services/InputSimulation/Editor/SimulatedHandDataProvider.cs.meta index eb69d34a5d3..6799da28cbb 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandDataProvider.cs.meta +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Editor/SimulatedHandDataProvider.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2af3436e8386bbb409ad39248823a8b9 +guid: 90525e5e70d2a2a4c9db661f79d8a519 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/IInputSimulationService.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/IInputSimulationService.cs index f6490ac3bf6..9ef090a76c2 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/IInputSimulationService.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/IInputSimulationService.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. +using UnityEngine; + namespace Microsoft.MixedReality.Toolkit.Input { public interface IInputSimulationService : IMixedRealityInputDeviceManager @@ -10,6 +12,11 @@ public interface IInputSimulationService : IMixedRealityInputDeviceManager /// MixedRealityInputSimulationProfile InputSimulationProfile { get; } + /// + /// Simulated hand behavior. + /// + HandSimulationMode HandSimulationMode { get; set; } + /// /// Pose data for the left hand. /// @@ -23,5 +30,50 @@ public interface IInputSimulationService : IMixedRealityInputDeviceManager /// If true then keyboard and mouse input are used to simulate hands. /// bool UserInputEnabled { get; set; } + + /// + /// The left hand is controlled by user input. + /// + bool IsSimulatingHandLeft { get; } + /// + /// The right hand is controlled by user input. + /// + bool IsSimulatingHandRight { get; } + + /// + /// The left hand is always tracking. + /// + bool IsAlwaysVisibleHandLeft { get; set; } + /// + /// The right hand is always tracking. + /// + bool IsAlwaysVisibleHandRight { get; set; } + + /// + /// Position of the left hand in view space. + /// + Vector3 HandPositionLeft { get; set; } + /// + /// Position of the right hand in view space. + /// + Vector3 HandPositionRight { get; set; } + + /// + /// Rotation euler angles of the left hand in view space. + /// + Vector3 HandRotationLeft { get; set; } + /// + /// Rotation euler angles of the right hand in view space. + /// + Vector3 HandRotationRight { get; set; } + + /// + /// Reset the left hand. + /// + void ResetHandLeft(); + /// + /// Reset the right hand. + /// + void ResetHandRight(); } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/IMixedRealityInputPlaybackService.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/IMixedRealityInputPlaybackService.cs similarity index 100% rename from Assets/MixedRealityToolkit.Services/InputAnimation/IMixedRealityInputPlaybackService.cs rename to Assets/MixedRealityToolkit.Services/InputSimulation/IMixedRealityInputPlaybackService.cs diff --git a/Assets/MixedRealityToolkit.Services/InputAnimation/IMixedRealityInputPlaybackService.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/IMixedRealityInputPlaybackService.cs.meta similarity index 83% rename from Assets/MixedRealityToolkit.Services/InputAnimation/IMixedRealityInputPlaybackService.cs.meta rename to Assets/MixedRealityToolkit.Services/InputSimulation/IMixedRealityInputPlaybackService.cs.meta index ee9bd82d1a5..96e8286a609 100644 --- a/Assets/MixedRealityToolkit.Services/InputAnimation/IMixedRealityInputPlaybackService.cs.meta +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/IMixedRealityInputPlaybackService.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 438d13a0ddfdb8f40839b0acbb136ecf +guid: 6095233c5a34bb744a88af5550b07b7c MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/InputSimulationEnum.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/InputSimulationEnum.cs index 12e587d21bf..58dfa55cc37 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/InputSimulationEnum.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/InputSimulationEnum.cs @@ -4,21 +4,6 @@ namespace Microsoft.MixedReality.Toolkit.Input { - /// - /// This enum is used to customize how/when users will look around in the Unity player - /// using the mouse. - /// - public enum InputSimulationMouseButton - { - Left, // Left mouse button - Right, // Right mouse button - Middle, // Middle or scroll wheel button - Control, // Control on keyboard - Shift, // Shift on keyboard - Focused, // When Unity player has focus - None // No mouse look functionality - } - public enum InputSimulationControlMode { // Move in the main camera forward direction diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/KeyBinding.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/KeyBinding.cs new file mode 100644 index 00000000000..45f3aa31c0f --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/KeyBinding.cs @@ -0,0 +1,258 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEngine; +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor")] +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// Identifier of a key combination or mouse button for generic input binding. + /// + /// + /// This encodes either a KeyCode with optional modifiers or a mouse button index. + /// + [System.Serializable] + public struct KeyBinding + { + /// + /// The type of value encoded in the property. + /// + public enum KeyType : int + { + None = 0, + Mouse = 1, + Key = 2, + } + + /// + /// Enum for interpreting the mouse button integer index. + /// + public enum MouseButton : int + { + Left = 0, + Right = 1, + Middle = 2, + Button3 = 3, + Button4 = 4, + Button5 = 5, + Button6 = 6, + Button7 = 7, + } + + // Array of names to use for a combined enum selection. + internal static readonly string[] AllCodeNames; + // Maps (KeyType, code) combination onto the contiguous index used for enums. + // Value can be used as index in AllCodeNames array. + internal static readonly Dictionary, int> KeyBindingToEnumMap; + // Maps enum index to a KeyBinding, for assignment after selecting an enum value. + internal static readonly Dictionary> EnumToKeyBindingMap; + + // Static constructor to initialize static fields + static KeyBinding() + { + KeyCode[] KeyCodeValues = (KeyCode[])Enum.GetValues(typeof(KeyCode)); + MouseButton[] MouseButtonValues = (MouseButton[])Enum.GetValues(typeof(MouseButton)); + + // Build maps for converting between int enum value and KeyBinding values + { + KeyBindingToEnumMap = new Dictionary, int>(); + EnumToKeyBindingMap = new Dictionary>(); + List names = new List(); + + int index = 0; + Action AddEnumValue = (bindingType, code) => + { + var kb = new KeyBinding() { bindingType=bindingType, code=code }; + names.Add(kb.ToString()); + EnumToKeyBindingMap[index] = Tuple.Create(bindingType, code); + KeyBindingToEnumMap[Tuple.Create(bindingType, code)] = index; + + ++index; + }; + + AddEnumValue(KeyType.None, 0); + + foreach (MouseButton mb in MouseButtonValues) + { + AddEnumValue(KeyType.Mouse, (int)mb); + } + + foreach (KeyCode kc in KeyCodeValues) + { + AddEnumValue(KeyType.Key, (int)kc); + } + + AllCodeNames = names.ToArray(); + } + } + + [SerializeField] + private KeyType bindingType; + /// + /// Type of input this binding maps to. + /// + public KeyType BindingType => bindingType; + + // Internal binding code. + // This can be a KeyCode or mouse button index, depending on the bindingType; + [SerializeField] + private int code; + + /// + public override string ToString() + { + string s = ""; + + s += bindingType.ToString(); + + switch (bindingType) + { + case KeyType.Key: + s += ": " + ((KeyCode)code).ToString(); + break; + case KeyType.Mouse: + s += ": " + ((MouseButton)code).ToString(); + break; + } + return s; + } + + /// + /// Try to convert the binding to a KeyCode. + /// + /// True if the binding is a keyboard key + public bool TryGetKeyCode(out KeyCode keyCode) + { + keyCode = (KeyCode)code; + return bindingType == KeyType.Key; + } + + /// + /// Try to convert the binding to a mouse button. + /// + /// True if the binding is a mouse button + public bool TryGetMouseButton(out int mouseButton) + { + mouseButton = code; + return bindingType == KeyType.Mouse; + } + + /// + /// Try to convert the binding to a mouse button. + /// + /// True if the binding is a mouse button + public bool TryGetMouseButton(out MouseButton mouseButton) + { + if (TryGetMouseButton(out int iMouseButton)) + { + mouseButton = (MouseButton)iMouseButton; + return true; + } + mouseButton = MouseButton.Left; + return false; + } + + + /// + /// Create a default empty binding. + /// + public static KeyBinding Unbound() + { + KeyBinding kb = new KeyBinding(); + kb.bindingType = KeyType.None; + kb.code = 0; + return kb; + } + + /// + /// Create a binding for a keyboard key. + /// + public static KeyBinding FromKey(KeyCode keyCode) + { + KeyBinding kb = new KeyBinding(); + kb.bindingType = KeyType.Key; + kb.code = (int)keyCode; + return kb; + } + + /// + /// Create a binding for a mouse button. + /// + public static KeyBinding FromMouseButton(int mouseButton) + { + KeyBinding kb = new KeyBinding(); + kb.bindingType = KeyType.Mouse; + kb.code = mouseButton; + return kb; + } + + /// + /// Create a binding for a mouse button. + /// + public static KeyBinding FromMouseButton(MouseButton mouseButton) + { + return FromMouseButton((int)mouseButton); + } + } + + /// + /// Utility class to poll input for key bindings. + /// + public static class KeyInputSystem + { + /// + /// Test if the key is currently pressed. + /// + /// True if the bound key is currently pressed + public static bool GetKey(KeyBinding kb) + { + if (kb.TryGetMouseButton(out int mouseButton)) + { + return UnityEngine.Input.GetMouseButton(mouseButton); + } + if (kb.TryGetKeyCode(out KeyCode keyCode)) + { + return UnityEngine.Input.GetKey(keyCode); + } + return false; + } + + /// + /// Test if the key has been pressed since the last frame. + /// + /// True if the bound key was pressed since the last frame + public static bool GetKeyDown(KeyBinding kb) + { + if (kb.TryGetMouseButton(out int mouseButton)) + { + return UnityEngine.Input.GetMouseButtonDown(mouseButton); + } + if (kb.TryGetKeyCode(out KeyCode keyCode)) + { + return UnityEngine.Input.GetKeyDown(keyCode); + } + return false; + } + + /// + /// Test if the key has been released since the last frame. + /// + /// True if the bound key was released since the last frame + public static bool GetKeyUp(KeyBinding kb) + { + if (kb.TryGetMouseButton(out int mouseButton)) + { + return UnityEngine.Input.GetMouseButtonUp(mouseButton); + } + if (kb.TryGetKeyCode(out KeyCode keyCode)) + { + return UnityEngine.Input.GetKeyUp(keyCode); + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/KeyBinding.cs.meta b/Assets/MixedRealityToolkit.Services/InputSimulation/KeyBinding.cs.meta new file mode 100644 index 00000000000..645c21a6891 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/KeyBinding.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 37e005b845bf1174fa8fe31b12eaf3d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/ManualCameraControl.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/ManualCameraControl.cs deleted file mode 100644 index 0ce6f22cee7..00000000000 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/ManualCameraControl.cs +++ /dev/null @@ -1,284 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.Input -{ - /// - /// Class for manually controlling the camera in the Unity editor. Attach to the MainCamera object. - /// - public class ManualCameraControl - { - private MixedRealityInputSimulationProfile profile; - - private bool isMouseJumping = false; - private bool isGamepadLookEnabled = true; - private bool isFlyKeypressEnabled = true; - private Vector3 lastMousePosition = Vector3.zero; - private Vector3 lastTrackerToUnityTranslation = Vector3.zero; - private Quaternion lastTrackerToUnityRotation = Quaternion.identity; - private bool wasLooking = false; - private bool wasCursorVisible = true; - - public ManualCameraControl(MixedRealityInputSimulationProfile _profile) - { - profile = _profile; - } - - private static float InputCurve(float x) - { - // smoothing input curve, converts from [-1,1] to [-2,2] - return Mathf.Sign(x) * (1.0f - Mathf.Cos(0.5f * Mathf.PI * Mathf.Clamp(x, -1.0f, 1.0f))); - } - - public void UpdateTransform(Transform transform) - { - // Undo the last tracker to Unity transforms applied - transform.Translate(-this.lastTrackerToUnityTranslation, Space.World); - transform.Rotate(-this.lastTrackerToUnityRotation.eulerAngles, Space.World); - - // Calculate and apply the camera control movement this frame - Vector3 rotate = GetCameraControlRotation(); - Vector3 translate = GetCameraControlTranslation(transform); - - transform.Rotate(rotate.x, 0.0f, 0.0f); - transform.Rotate(0.0f, rotate.y, 0.0f, Space.World); - transform.Translate(translate, Space.World); - - transform.Rotate(this.lastTrackerToUnityRotation.eulerAngles, Space.World); - transform.Translate(this.lastTrackerToUnityTranslation, Space.World); - } - - private static float GetKeyDir(string neg, string pos) - { - return UnityEngine.Input.GetKey(neg) ? -1.0f : UnityEngine.Input.GetKey(pos) ? 1.0f : 0.0f; - } - - private Vector3 GetCameraControlTranslation(Transform transform) - { - Vector3 deltaPosition = Vector3.zero; - - // Support fly up/down keypresses if the current project maps it. This isn't a standard - // Unity InputManager mapping, so it has to gracefully fail if unavailable. - if (this.isFlyKeypressEnabled) - { - try - { - deltaPosition += InputCurve(UnityEngine.Input.GetAxis("Fly")) * transform.up; - } - catch (System.Exception) - { - this.isFlyKeypressEnabled = false; - } - } - else - { - // use page up/down in this case - deltaPosition += GetKeyDir("page down", "page up") * Vector3.up; - } - - deltaPosition += InputCurve(UnityEngine.Input.GetAxis(profile.MoveHorizontal)) * transform.right; - - if (profile.CurrentControlMode == InputSimulationControlMode.Walk) - { - deltaPosition += InputCurve(UnityEngine.Input.GetAxis(profile.MoveVertical)) * new Vector3(transform.forward.x, 0, transform.forward.z).normalized; - } - else - { - deltaPosition += InputCurve(UnityEngine.Input.GetAxis(profile.MoveVertical)) * transform.forward; - } - - float accel = UnityEngine.Input.GetKey(profile.FastControlKey) ? profile.ControlFastSpeed : profile.ControlSlowSpeed; - return accel * deltaPosition; - } - - private Vector3 GetCameraControlRotation() - { - float inversionFactor = profile.IsControllerLookInverted ? -1.0f : 1.0f; - - Vector3 rot = Vector3.zero; - - if (this.isGamepadLookEnabled) - { - try - { - // Get the axes information from the right stick of X360 controller - rot.x += InputCurve(UnityEngine.Input.GetAxis(profile.LookVertical)) * inversionFactor; - rot.y += InputCurve(UnityEngine.Input.GetAxis(profile.LookHorizontal)); - } - catch (System.Exception) - { - this.isGamepadLookEnabled = false; - } - } - - if (this.ShouldMouseLook) - { - if (!this.wasLooking) - { - OnStartMouseLook(); - } - - ManualCameraControl_MouseLookTick(ref rot); - - this.wasLooking = true; - } - else - { - if (this.wasLooking) - { - OnEndMouseLook(); - } - - this.wasLooking = false; - } - - rot *= profile.ExtraMouseSensitivityScale; - - return rot; - } - - private void OnStartMouseLook() - { - if (profile.MouseLookButton <= InputSimulationMouseButton.Middle) - { - // if mousebutton is either left, right or middle - SetWantsMouseJumping(true); - } - else if (profile.MouseLookButton <= InputSimulationMouseButton.Focused) - { - // if mousebutton is either control, shift or focused - UnityEngine.Cursor.lockState = CursorLockMode.Locked; - // save current cursor visibility before hiding it - wasCursorVisible = UnityEngine.Cursor.visible; - UnityEngine.Cursor.visible = false; - } - - // do nothing if (this.MouseLookButton == MouseButton.None) - } - - private void OnEndMouseLook() - { - if (profile.MouseLookButton <= InputSimulationMouseButton.Middle) - { - // if mousebutton is either left, right or middle - SetWantsMouseJumping(false); - } - else if (profile.MouseLookButton <= InputSimulationMouseButton.Focused) - { - // if mousebutton is either control, shift or focused - UnityEngine.Cursor.lockState = CursorLockMode.None; - UnityEngine.Cursor.visible = wasCursorVisible; - } - - // do nothing if (this.MouseLookButton == MouseButton.None) - } - - private void ManualCameraControl_MouseLookTick(ref Vector3 rot) - { - // Use frame-to-frame mouse delta in pixels to determine mouse rotation. The traditional - // GetAxis("Mouse X") method doesn't work under Remote Desktop. - Vector3 mousePositionDelta = UnityEngine.Input.mousePosition - this.lastMousePosition; - this.lastMousePosition = UnityEngine.Input.mousePosition; - - if (UnityEngine.Cursor.lockState == CursorLockMode.Locked) - { - mousePositionDelta.x = UnityEngine.Input.GetAxis(profile.MouseX); - mousePositionDelta.y = UnityEngine.Input.GetAxis(profile.MouseY); - } - else - { - mousePositionDelta.x *= profile.DefaultMouseSensitivity; - mousePositionDelta.y *= profile.DefaultMouseSensitivity; - } - - rot.x += -InputCurve(mousePositionDelta.y); - rot.y += InputCurve(mousePositionDelta.x); - } - - private bool ShouldMouseLook - { - get - { - // Only allow the mouse to control rotation when Unity has focus. This enables - // the player to temporarily alt-tab away without having the player look around randomly - // back in the Unity Game window. - if (!Application.isFocused) - { - return false; - } - else if (profile.MouseLookButton == InputSimulationMouseButton.None) - { - return true; - } - else if (profile.MouseLookButton <= InputSimulationMouseButton.Middle) - { - return UnityEngine.Input.GetMouseButton((int)profile.MouseLookButton); - } - else if (profile.MouseLookButton == InputSimulationMouseButton.Control) - { - return UnityEngine.Input.GetKey(KeyCode.LeftControl) || UnityEngine.Input.GetKey(KeyCode.RightControl); - } - else if (profile.MouseLookButton == InputSimulationMouseButton.Shift) - { - return UnityEngine.Input.GetKey(KeyCode.LeftShift) || UnityEngine.Input.GetKey(KeyCode.RightShift); - } - else if (profile.MouseLookButton == InputSimulationMouseButton.Focused) - { - if (!this.wasLooking) - { - // any kind of click will capture focus - return UnityEngine.Input.GetMouseButtonDown((int)InputSimulationMouseButton.Left) || UnityEngine.Input.GetMouseButtonDown((int)InputSimulationMouseButton.Right) || UnityEngine.Input.GetMouseButtonDown((int)InputSimulationMouseButton.Middle); - } - else - { - // pressing escape will stop capture - return !UnityEngine.Input.GetKeyDown(KeyCode.Escape); - } - } - - return false; - } - } - - /// - /// Mouse jumping is where the mouse cursor appears outside the Unity game window, but - /// disappears when it enters the Unity game window. - /// - /// Show the cursor - private void SetWantsMouseJumping(bool wantsJumping) - { - if (wantsJumping != this.isMouseJumping) - { - this.isMouseJumping = wantsJumping; - - if (wantsJumping) - { - // unlock the cursor if it was locked - UnityEngine.Cursor.lockState = CursorLockMode.None; - - // save original state of cursor before hiding - wasCursorVisible = UnityEngine.Cursor.visible; - // hide the cursor - UnityEngine.Cursor.visible = false; - - this.lastMousePosition = UnityEngine.Input.mousePosition; - } - else - { - // recenter the cursor (setting lockCursor has side-effects under the hood) - UnityEngine.Cursor.lockState = CursorLockMode.Locked; - UnityEngine.Cursor.lockState = CursorLockMode.None; - - // restore the cursor - UnityEngine.Cursor.visible = wasCursorVisible; - } - - #if UNITY_EDITOR - UnityEditor.EditorGUIUtility.SetWantsMouseJumping(wantsJumping ? 1 : 0); - #endif - } - } - } -} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/Microsoft.MixedReality.Toolkit.Services.InputSimulation.asmdef b/Assets/MixedRealityToolkit.Services/InputSimulation/Microsoft.MixedReality.Toolkit.Services.InputSimulation.asmdef index 5480060fab8..6bbc7dac65b 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/Microsoft.MixedReality.Toolkit.Services.InputSimulation.asmdef +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/Microsoft.MixedReality.Toolkit.Services.InputSimulation.asmdef @@ -1,7 +1,8 @@ { "name": "Microsoft.MixedReality.Toolkit.Services.InputSimulation", "references": [ - "Microsoft.MixedReality.Toolkit" + "Microsoft.MixedReality.Toolkit", + "Microsoft.MixedReality.Toolkit.Services.InputAnimation" ], "optionalUnityReferences": [], "includePlatforms": [ diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/MixedRealityInputSimulationProfile.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/MixedRealityInputSimulationProfile.cs index c3ea7874c46..701159ebbff 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/MixedRealityInputSimulationProfile.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/MixedRealityInputSimulationProfile.cs @@ -3,6 +3,7 @@ using Microsoft.MixedReality.Toolkit.Utilities; using UnityEngine; +using UnityEngine.Serialization; namespace Microsoft.MixedReality.Toolkit.Input { @@ -11,37 +12,117 @@ namespace Microsoft.MixedReality.Toolkit.Input [HelpURL("https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/InputSimulation/InputSimulationService.html")] public class MixedRealityInputSimulationProfile : BaseMixedRealityProfile { - [Header("Camera Control")] [SerializeField] - [Tooltip("Enable manual camera control")] - private bool isCameraControlEnabled = true; - public bool IsCameraControlEnabled => isCameraControlEnabled; + [Tooltip("Indicator buttons to show input simulation state in the viewport")] + private GameObject indicatorsPrefab = null; + /// + /// Indicator buttons to show input simulation state in the viewport + /// + public GameObject IndicatorsPrefab => indicatorsPrefab; + [Header("Common Input")] + [SerializeField] + [Tooltip("Sensitivity when using the mouse for rotation")] + [FormerlySerializedAs("defaultMouseSensitivity")] + private float mouseRotationSensitivity = 0.1f; + /// + /// Sensitivity when using the mouse for rotation + /// + public float MouseRotationSensitivity => mouseRotationSensitivity; + [SerializeField] + [Tooltip("Mouse Movement X-axis")] + private string mouseX = "Mouse X"; + /// + /// Mouse Movement X-axis + /// + public string MouseX => mouseX; [SerializeField] - private float extraMouseSensitivityScale = 3.0f; - public float ExtraMouseSensitivityScale => extraMouseSensitivityScale; + [Tooltip("Mouse Movement Y-axis")] + private string mouseY = "Mouse Y"; + /// + /// Mouse Movement Y-axis + /// + public string MouseY => mouseY; [SerializeField] - private float defaultMouseSensitivity = 0.1f; - public float DefaultMouseSensitivity => defaultMouseSensitivity; + [Tooltip("Mouse Scroll Wheel")] + private string mouseScroll = "Mouse ScrollWheel"; + /// + /// Mouse Scroll Wheel + /// + public string MouseScroll => mouseScroll; + [SerializeField] + [Tooltip("Maximum time interval for double press")] + private float doublePressTime = 0.4f; + /// + /// Maximum time interval for double press + /// + public float DoublePressTime => doublePressTime; + + [Header("Camera Control")] [SerializeField] - [Tooltip("Controls how mouse look control is activated.")] - private InputSimulationMouseButton mouseLookButton = InputSimulationMouseButton.Right; - public InputSimulationMouseButton MouseLookButton => mouseLookButton; + [Tooltip("Enable manual camera control")] + private bool isCameraControlEnabled = true; + /// + /// Enable manual camera control + /// + public bool IsCameraControlEnabled => isCameraControlEnabled; [SerializeField] + [Tooltip("Additional rotation factor after input smoothing has been applied")] + [FormerlySerializedAs("extraMouseSensitivityScale")] + private float mouseLookSpeed = 3.0f; + /// + /// Additional rotation factor after input smoothing has been applied + /// + public float MouseLookSpeed => mouseLookSpeed; + [SerializeField] + [Tooltip("Controls how mouse look control is activated")] + private KeyBinding mouseLookButton = KeyBinding.FromMouseButton(KeyBinding.MouseButton.Right); + /// + /// Controls how mouse look control is activated + /// + public KeyBinding MouseLookButton => mouseLookButton; + [SerializeField] + [Tooltip("Toggle mouse look on with with the mouse look button, press escape to release")] + private bool mouseLookToggle = false; + /// + /// Toggle mouse look on with with the mouse look button, press escape to release + /// + public bool MouseLookToggle => mouseLookToggle; + [SerializeField] + [Tooltip("Invert the vertical rotation")] private bool isControllerLookInverted = true; + /// + /// Invert the vertical rotation + /// public bool IsControllerLookInverted => isControllerLookInverted; [SerializeField] + [Tooltip("Camera movement mode")] private InputSimulationControlMode currentControlMode = InputSimulationControlMode.Fly; + /// + /// Camera movement mode + /// public InputSimulationControlMode CurrentControlMode => currentControlMode; [SerializeField] - private KeyCode fastControlKey = KeyCode.RightControl; - public KeyCode FastControlKey => fastControlKey; + [Tooltip("Key to speed up camera movement")] + private KeyBinding fastControlKey = KeyBinding.FromKey(KeyCode.RightControl); + /// + /// Key to speed up camera movement + /// + public KeyBinding FastControlKey => fastControlKey; [SerializeField] + [Tooltip("Slow camera translation speed")] private float controlSlowSpeed = 0.1f; + /// + /// Slow camera translation speed + /// public float ControlSlowSpeed => controlSlowSpeed; [SerializeField] + [Tooltip("Fast camera translation speed")] private float controlFastSpeed = 1.0f; + /// + /// Fast camera translation speed + /// public float ControlFastSpeed => controlFastSpeed; // Input axes to coordinate with the Input Manager (Project Settings -> Input) @@ -50,138 +131,187 @@ public class MixedRealityInputSimulationProfile : BaseMixedRealityProfile [SerializeField] [Tooltip("Horizontal movement Axis ")] private string moveHorizontal = "Horizontal"; + /// + /// Horizontal movement Axis + /// public string MoveHorizontal => moveHorizontal; // Vertical movement string for keyboard and left stick of game controller [SerializeField] [Tooltip("Vertical movement Axis ")] private string moveVertical = "Vertical"; + /// + /// Vertical movement Axis + /// public string MoveVertical => moveVertical; - // Mouse movement string for the x-axis - [SerializeField] - [Tooltip("Mouse Movement X-axis")] - private string mouseX = "Mouse X"; - public string MouseX => mouseX; - // Mouse movement string for the y-axis [SerializeField] - [Tooltip("Mouse Movement Y-axis")] - private string mouseY = "Mouse Y"; - public string MouseY => mouseY; + [Tooltip("Up/Down movement Axis ")] + private string moveUpDown = "UpDown"; + /// + /// Up/Down movement Axis + /// + public string MoveUpDown => moveUpDown; // Look horizontal string for right stick of game controller // The right stick has no default settings in the Input Manager and will need to be setup for a game controller to look [SerializeField] [Tooltip("Look Horizontal Axis - Right Stick On Controller")] private string lookHorizontal = ControllerMappingLibrary.AXIS_4; + /// + /// Look Horizontal Axis - Right Stick On Controller + /// public string LookHorizontal => lookHorizontal; // Look vertical string for right stick of game controller [SerializeField] [Tooltip("Look Vertical Axis - Right Stick On Controller ")] private string lookVertical = ControllerMappingLibrary.AXIS_5; + /// + /// Look Vertical Axis - Right Stick On Controller + /// public string LookVertical => lookVertical; [Header("Eye Simulation")] [SerializeField] [Tooltip("Enable eye simulation")] private bool simulateEyePosition = false; + /// + /// Enable eye simulation + /// public bool SimulateEyePosition => simulateEyePosition; [Header("Hand Simulation")] [SerializeField] [Tooltip("Enable hand simulation")] - private HandSimulationMode handSimulationMode = HandSimulationMode.Articulated; - public HandSimulationMode HandSimulationMode { get => handSimulationMode; set => handSimulationMode = value; } + [FormerlySerializedAs("handSimulationMode")] + private HandSimulationMode defaultHandSimulationMode = HandSimulationMode.Articulated; + /// + /// Enable hand simulation + /// + public HandSimulationMode DefaultHandSimulationMode => defaultHandSimulationMode; [Header("Hand Control Settings")] [SerializeField] [Tooltip("Key to toggle persistent mode for the left hand")] - private KeyCode toggleLeftHandKey = KeyCode.T; - public KeyCode ToggleLeftHandKey => toggleLeftHandKey; + private KeyBinding toggleLeftHandKey = KeyBinding.FromKey(KeyCode.T); + /// + /// Key to toggle persistent mode for the left hand + /// + public KeyBinding ToggleLeftHandKey => toggleLeftHandKey; [SerializeField] [Tooltip("Key to toggle persistent mode for the right hand")] - private KeyCode toggleRightHandKey = KeyCode.Y; - public KeyCode ToggleRightHandKey => toggleRightHandKey; + private KeyBinding toggleRightHandKey = KeyBinding.FromKey(KeyCode.Y); + /// + /// Key to toggle persistent mode for the right hand + /// + public KeyBinding ToggleRightHandKey => toggleRightHandKey; [SerializeField] [Tooltip("Time after which uncontrolled hands are hidden")] private float handHideTimeout = 0.2f; + /// + /// Time after which uncontrolled hands are hidden + /// public float HandHideTimeout => handHideTimeout; [SerializeField] [Tooltip("Key to manipulate the left hand")] - private KeyCode leftHandManipulationKey = KeyCode.LeftShift; - public KeyCode LeftHandManipulationKey => leftHandManipulationKey; + private KeyBinding leftHandManipulationKey = KeyBinding.FromKey(KeyCode.LeftShift); + /// + /// Key to manipulate the left hand + /// + public KeyBinding LeftHandManipulationKey => leftHandManipulationKey; [SerializeField] [Tooltip("Key to manipulate the right hand")] - private KeyCode rightHandManipulationKey = KeyCode.Space; - public KeyCode RightHandManipulationKey => rightHandManipulationKey; + private KeyBinding rightHandManipulationKey = KeyBinding.FromKey(KeyCode.Space); + /// + /// Key to manipulate the right hand + /// + public KeyBinding RightHandManipulationKey => rightHandManipulationKey; + [SerializeField] + [Tooltip("Additional rotation factor after input smoothing has been applied")] + private float mouseHandRotationSpeed = 6.0f; + /// + /// Additional rotation factor after input smoothing has been applied + /// + public float MouseHandRotationSpeed => mouseHandRotationSpeed; + [SerializeField] + [Tooltip("Controls how hand rotation is activated")] + private KeyBinding handRotateButton = KeyBinding.FromKey(KeyCode.LeftControl); + /// + /// Controls how hand rotation is activated + /// + public KeyBinding HandRotateButton => handRotateButton; [Header("Hand Gesture Settings")] [SerializeField] + [Tooltip("Hand joint pose on first show or reset")] private ArticulatedHandPose.GestureId defaultHandGesture = ArticulatedHandPose.GestureId.Open; + /// + /// Hand joint pose on first show or reset + /// public ArticulatedHandPose.GestureId DefaultHandGesture => defaultHandGesture; [SerializeField] + [Tooltip("Hand joint pose when pressing the left mouse button")] private ArticulatedHandPose.GestureId leftMouseHandGesture = ArticulatedHandPose.GestureId.Pinch; + /// + /// Hand joint pose when pressing the left mouse button + /// public ArticulatedHandPose.GestureId LeftMouseHandGesture => leftMouseHandGesture; [SerializeField] + [Tooltip("Hand joint pose when pressing the middle mouse button")] private ArticulatedHandPose.GestureId middleMouseHandGesture = ArticulatedHandPose.GestureId.None; + /// + /// Hand joint pose when pressing the middle mouse button + /// public ArticulatedHandPose.GestureId MiddleMouseHandGesture => middleMouseHandGesture; [SerializeField] + [Tooltip("Hand joint pose when pressing the right mouse button")] private ArticulatedHandPose.GestureId rightMouseHandGesture = ArticulatedHandPose.GestureId.None; + /// + /// Hand joint pose when pressing the right mouse button + /// public ArticulatedHandPose.GestureId RightMouseHandGesture => rightMouseHandGesture; [SerializeField] [Tooltip("Gesture interpolation per second")] private float handGestureAnimationSpeed = 8.0f; + /// + /// Gesture interpolation per second + /// public float HandGestureAnimationSpeed => handGestureAnimationSpeed; [SerializeField] [Tooltip("Time until hold gesture starts")] private float holdStartDuration = 0.5f; + /// + /// Time until hold gesture starts + /// public float HoldStartDuration => holdStartDuration; [SerializeField] [Tooltip("The total amount of input source movement that needs to happen to start navigation")] [UnityEngine.Serialization.FormerlySerializedAs("manipulationStartThreshold")] private float navigationStartThreshold = 0.03f; + /// + /// The total amount of input source movement that needs to happen to start navigation + /// public float NavigationStartThreshold => navigationStartThreshold; [Header("Hand Placement Settings")] [SerializeField] [Tooltip("Default distance of the hand from the camera")] private float defaultHandDistance = 0.5f; + /// + /// Default distance of the hand from the camera + /// public float DefaultHandDistance => defaultHandDistance; [SerializeField] [Tooltip("Depth change when scrolling the mouse wheel")] - private float handDepthMultiplier = 0.1f; + private float handDepthMultiplier = 0.03f; + /// + /// Depth change when scrolling the mouse wheel + /// public float HandDepthMultiplier => handDepthMultiplier; [SerializeField] [Tooltip("Apply random offset to the hand position")] private float handJitterAmount = 0.0f; + /// + /// Apply random offset to the hand position + /// public float HandJitterAmount => handJitterAmount; - - [Header("Hand Rotation Settings")] - [SerializeField] - [Tooltip("Key to turn the hand clockwise")] - private KeyCode yawHandCWKey = KeyCode.E; - public KeyCode YawHandCWKey => yawHandCWKey; - [SerializeField] - [Tooltip("Key to turn the hand counter-clockwise")] - private KeyCode yawHandCCWKey = KeyCode.Q; - public KeyCode YawHandCCWKey => yawHandCCWKey; - [SerializeField] - [Tooltip("Key to pitch the hand upward")] - private KeyCode pitchHandCWKey = KeyCode.F; - public KeyCode PitchHandCWKey => pitchHandCWKey; - [SerializeField] - [Tooltip("Key to pitch the hand downward")] - private KeyCode pitchHandCCWKey = KeyCode.R; - public KeyCode PitchHandCCWKey => pitchHandCCWKey; - [SerializeField] - [Tooltip("Key to roll the hand right")] - private KeyCode rollHandCWKey = KeyCode.X; - public KeyCode RollHandCWKey => rollHandCWKey; - [SerializeField] - [Tooltip("Key to roll the hand left")] - private KeyCode rollHandCCWKey = KeyCode.Z; - public KeyCode RollHandCCWKey => rollHandCCWKey; - [SerializeField] - [Tooltip("Angle per second when rotating the hand")] - private float handRotationSpeed = 100.0f; - public float HandRotationSpeed => handRotationSpeed; } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedArticulatedHand.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedArticulatedHand.cs index 0cc56a6e645..824f34defff 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedArticulatedHand.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedArticulatedHand.cs @@ -24,10 +24,6 @@ public class SimulatedArticulatedHand : SimulatedHand /// /// Constructor. /// - /// - /// - /// - /// public SimulatedArticulatedHand(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) { @@ -46,11 +42,13 @@ public SimulatedArticulatedHand(TrackingState trackingState, Handedness controll new MixedRealityInteractionMapping(4, "Index Finger Pose", AxisType.SixDof, DeviceInputType.IndexFinger, MixedRealityInputAction.None), }; + /// public override void SetupDefaultInteractions(Handedness controllerHandedness) { AssignControllerMappings(DefaultInteractions); } + /// protected override void UpdateInteractions(SimulatedHandData handData) { lastPointerPose = currentPointerPose; diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedGestureHand.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedGestureHand.cs index 0bfedd6f18b..2030d08fadf 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedGestureHand.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedGestureHand.cs @@ -11,12 +11,14 @@ namespace Microsoft.MixedReality.Toolkit.Input new[] { Handedness.Left, Handedness.Right })] public class SimulatedGestureHand : SimulatedHand { + /// public override HandSimulationMode SimulationMode => HandSimulationMode.Gestures; private bool initializedFromProfile = false; private MixedRealityInputAction holdAction = MixedRealityInputAction.None; private MixedRealityInputAction navigationAction = MixedRealityInputAction.None; private MixedRealityInputAction manipulationAction = MixedRealityInputAction.None; + private MixedRealityInputAction selectAction = MixedRealityInputAction.None; private bool useRailsNavigation = false; float holdStartDuration = 0.0f; float navigationStartThreshold = 0.0f; @@ -38,10 +40,6 @@ public class SimulatedGestureHand : SimulatedHand /// /// Constructor. /// - /// - /// - /// - /// public SimulatedGestureHand( TrackingState trackingState, Handedness controllerHandedness, @@ -78,6 +76,9 @@ private void EnsureProfileSettings() case GestureInputType.Navigation: navigationAction = gesture.Action; break; + case GestureInputType.Select: + selectAction = gesture.Action; + break; } } @@ -107,11 +108,13 @@ private void EnsureProfileSettings() new MixedRealityInteractionMapping(1, "Grip Pose", AxisType.SixDof, DeviceInputType.SpatialGrip, MixedRealityInputAction.None), }; + /// public override void SetupDefaultInteractions(Handedness controllerHandedness) { AssignControllerMappings(DefaultInteractions); } + /// protected override void UpdateInteractions(SimulatedHandData handData) { EnsureProfileSettings(); @@ -149,14 +152,13 @@ protected override void UpdateInteractions(SimulatedHandData handData) SelectDownStartTime = Time.time; cumulativeDelta = Vector3.zero; - - TryStartManipulation(); } else { InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); // Stop active gestures + TryCompleteSelect(); TryCompleteHold(); TryCompleteManipulation(); TryCompleteNavigation(); @@ -177,6 +179,7 @@ protected override void UpdateInteractions(SimulatedHandData handData) { TryCancelHold(); TryStartNavigation(); + TryStartManipulation(); } else if (Time.time >= SelectDownStartTime + holdStartDuration) { @@ -262,6 +265,16 @@ private bool TryCancelManipulation() return false; } + private bool TryCompleteSelect() + { + if (!manipulationInProgress && !holdInProgress) + { + InputSystem?.RaiseGestureCompleted(this, selectAction); + return true; + } + return false; + } + private bool TryStartNavigation() { if (!navigationInProgress) diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHand.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHand.cs index ab37af13563..455c4813a98 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHand.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHand.cs @@ -16,10 +16,6 @@ public class SimulatedHandData { private static readonly int jointCount = Enum.GetNames(typeof(TrackedHandJoint)).Length; - // Timestamp of hand data, as FileTime, e.g. DateTime.UtcNow.ToFileTime() - private long timestamp = 0; - public long Timestamp => timestamp; - [SerializeField] private bool isTracked = false; public bool IsTracked => isTracked; @@ -51,7 +47,6 @@ private IMixedRealityInputSystem InputSystem public void Copy(SimulatedHandData other) { - timestamp = other.timestamp; isTracked = other.isTracked; isPinching = other.isPinching; for (int i = 0; i < jointCount; ++i) @@ -60,14 +55,15 @@ public void Copy(SimulatedHandData other) } } + /// + /// Replace the hand data with the given values. + /// + /// True if the hand data has been changed. + /// True if the hand is currently tracked. + /// True if the hand is in a pinching pose that causes a "Select" action. + /// Generator function that produces joint positions and rotations. The joint data generator is only used when the hand is tracked. + /// The timestamp of the hand data will be the current time, see [DateTime.UtcNow](https://docs.microsoft.com/en-us/dotnet/api/system.datetime.utcnow?view=netframework-4.8). public bool Update(bool isTrackedNew, bool isPinchingNew, HandJointDataGenerator generator) - { - // TODO: DateTime.UtcNow can be quite imprecise, better use Stopwatch.GetTimestamp - // https://stackoverflow.com/questions/2143140/c-sharp-datetime-now-precision - return UpdateWithTimestamp(DateTime.UtcNow.Ticks, isTrackedNew, isPinchingNew, generator); - } - - public bool UpdateWithTimestamp(long timestampNew, bool isTrackedNew, bool isPinchingNew, HandJointDataGenerator generator) { bool handDataChanged = false; @@ -78,14 +74,10 @@ public bool UpdateWithTimestamp(long timestampNew, bool isTrackedNew, bool isPin handDataChanged = true; } - if (timestamp != timestampNew) + if (isTracked) { - timestamp = timestampNew; - if (isTracked) - { - generator(Joints); - handDataChanged = true; - } + generator(Joints); + handDataChanged = true; } return handDataChanged; @@ -103,10 +95,6 @@ public abstract class SimulatedHand : BaseHand /// /// Constructor. /// - /// - /// - /// - /// protected SimulatedHand(TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null) : base(trackingState, controllerHandedness, inputSource, interactions) {} diff --git a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandUtils.cs b/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandUtils.cs index bffad2ec949..693bee27d13 100644 --- a/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandUtils.cs +++ b/Assets/MixedRealityToolkit.Services/InputSimulation/SimulatedHandUtils.cs @@ -66,7 +66,6 @@ public static void CalculateJointRotations(Handedness handedness, Vector3[] join /// /// Gets vector corresponding to +z. /// - /// public static Vector3 GetPalmForwardVector(Vector3[] jointPositions) { Vector3 indexBase = jointPositions[(int)TrackedHandJoint.IndexKnuckle]; @@ -79,7 +78,6 @@ public static Vector3 GetPalmForwardVector(Vector3[] jointPositions) /// /// Gets the vector corresponding to +y. /// - /// public static Vector3 GetPalmUpVector(Handedness handedness, Vector3[] jointPositions) { Vector3 indexBase = jointPositions[(int)TrackedHandJoint.IndexKnuckle]; diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/BaseNearInteractionTouchable.cs b/Assets/MixedRealityToolkit.Services/InputSystem/BaseNearInteractionTouchable.cs index e3c1245828b..4530557fbc1 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/BaseNearInteractionTouchable.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/BaseNearInteractionTouchable.cs @@ -26,19 +26,6 @@ public abstract class BaseNearInteractionTouchable : MonoBehaviour /// public TouchableEventType EventsToReceive { get => eventsToReceive; set => eventsToReceive = value; } - [Tooltip("Distance behind the surface at which you will receive a touch started event")] - [SerializeField] - [FormerlySerializedAs("distBack")] - protected float pokeThreshold = 0.25f; - /// - /// Distance behind the surface at which the touchable becomes active. - /// - /// - /// When the pointer distance to the touchable object becomes less than -PokeThreshold (i.e. behind the surface), - /// then the Touch Started event is raised and the touchable object becomes tracked by the pointer. - /// - public float PokeThreshold => pokeThreshold; - [Tooltip("Distance in front of the surface at which you will receive a touch completed event")] [SerializeField] protected float debounceThreshold = 0.01f; @@ -49,11 +36,10 @@ public abstract class BaseNearInteractionTouchable : MonoBehaviour /// When the touchable is active and the pointer distance becomes greater than +DebounceThreshold (i.e. in front of the surface), /// then the Touch Completed event is raised and the touchable object is released by the pointer. /// - public float DebounceThreshold => debounceThreshold; + public float DebounceThreshold { get => debounceThreshold; set => debounceThreshold = value; } - protected void OnValidate() + protected virtual void OnValidate() { - pokeThreshold = Math.Max(pokeThreshold, 0); debounceThreshold = Math.Max(debounceThreshold, 0); } @@ -61,9 +47,11 @@ protected void OnValidate() } /// - /// Base class for all touchables using colliders. + /// Obsolete base class for all touchables using colliders. + /// Use instead. /// [RequireComponent(typeof(Collider))] + [System.Obsolete("Use BaseNearIntearctionTouchable instead of ColliderNearInteractionTouchable", true)] public abstract class ColliderNearInteractionTouchable : BaseNearInteractionTouchable { public bool ColliderEnabled { get { return touchableCollider.enabled && touchableCollider.gameObject.activeInHierarchy; } } @@ -76,11 +64,12 @@ public abstract class ColliderNearInteractionTouchable : BaseNearInteractionTouc private Collider touchableCollider; public Collider TouchableCollider => touchableCollider; - protected new void OnValidate() + protected override void OnValidate() { base.OnValidate(); touchableCollider = GetComponent(); } } + } diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/DefaultRaycastProvider.cs b/Assets/MixedRealityToolkit.Services/InputSystem/DefaultRaycastProvider.cs index d8b19f654fb..2521989b3ed 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/DefaultRaycastProvider.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/DefaultRaycastProvider.cs @@ -17,6 +17,9 @@ public DefaultRaycastProvider( MixedRealityInputSystemProfile profile) : base(registrar, profile) { } + /// + public override string Name { get; protected set; } = "Default Raycast Provider"; + /// public bool Raycast(RayStep step, LayerMask[] prioritizedLayerMasks, bool focusIndividualCompoundCollider, out MixedRealityRaycastHit hitInfo) { diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/Editor/MixedRealityCanvasInspector.cs b/Assets/MixedRealityToolkit.Services/InputSystem/Editor/MixedRealityCanvasInspector.cs new file mode 100644 index 00000000000..a8ae5212e76 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSystem/Editor/MixedRealityCanvasInspector.cs @@ -0,0 +1,383 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Input.Utilities; +using Microsoft.MixedReality.Toolkit.Utilities; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEditor.AnimatedValues; +using UnityEngine; +using UnityEngine.UI; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// Editor class used to edit UI Canvases. + /// + + [CanEditMultipleObjects] + [CustomEditor(typeof(Canvas))] + public class MixedRealityCanvasInspector : Editor + { + private static readonly GUIContent makeMRTKCanvas = new GUIContent("Convert to MRTK Canvas", "Configures the GameObject for MRKT use:\n1. Switches Canvas to world space\n2. Removes world space Camera\n3. Ensures GraphicRaycaster component\n4. Ensures CanvasUtility component"); + private static readonly GUIContent removeMRTKCanvas = new GUIContent("Convert to Unity Canvas", "Configures the GameObject for regular use:\n1. Removes CanvasUtility component\n2. Removes NearInteractionTouchableUnityUI component"); + + private MethodInfo sortingLayerField; + private MethodInfo getDisplayNames; + private MethodInfo getDisplayIndices; + + SerializedProperty m_RenderMode; + SerializedProperty m_Camera; + SerializedProperty m_PixelPerfect; + SerializedProperty m_PixelPerfectOverride; + SerializedProperty m_PlaneDistance; + SerializedProperty m_SortingLayerID; + SerializedProperty m_SortingOrder; + SerializedProperty m_TargetDisplay; + SerializedProperty m_OverrideSorting; + SerializedProperty m_ShaderChannels; + + AnimBool m_OverlayMode; + AnimBool m_CameraMode; + AnimBool m_WorldMode; + + AnimBool m_SortingOverride; + + private static class Styles + { + public const string s_RootAndNestedMessage = "Cannot multi-edit root Canvas together with nested Canvas."; + public static readonly GUIContent eventCamera = EditorGUIUtility.TrTextContent("Event Camera", "The Camera which the events are triggered through. This is used to determine clicking and hover positions if the Canvas is in World Space render mode."); + public static readonly GUIContent renderCamera = EditorGUIUtility.TrTextContent("Render Camera", "The Camera which will render the canvas. This is also the camera used to send events."); + public static readonly GUIContent sortingOrder = EditorGUIUtility.TrTextContent("Sort Order", "The order in which Screen Space - Overlay canvas will render"); + public static readonly GUIContent m_SortingLayerStyle = EditorGUIUtility.TrTextContent("Sorting Layer", "Name of the Renderer's sorting layer"); + public static readonly GUIContent targetDisplay = EditorGUIUtility.TrTextContent("Target Display", "Display on which to render the canvas when in overlay mode"); + public static readonly GUIContent m_SortingOrderStyle = EditorGUIUtility.TrTextContent("Order in Layer", "Renderer's order within a sorting layer"); + public static readonly GUIContent m_ShaderChannel = EditorGUIUtility.TrTextContent("Additional Shader Channels"); + } + + private bool m_AllNested = false; + private bool m_AllRoot = false; + + private bool m_AllOverlay = false; + private bool m_NoneOverlay = false; + + private string[] shaderChannelOptions = { "TexCoord1", "TexCoord2", "TexCoord3", "Normal", "Tangent" }; + + + enum PixelPerfect + { + Inherit, + On, + Off + } + + private PixelPerfect pixelPerfect = PixelPerfect.Inherit; + + void OnEnable() + { + sortingLayerField = typeof(EditorGUILayout).GetMethod("SortingLayerField", BindingFlags.Static | BindingFlags.NonPublic, null, CallingConventions.Standard, new System.Type[] { typeof(GUIContent), typeof(SerializedProperty), typeof(GUIStyle) }, null); + System.Type canvasEditorType = typeof(TransformUtils).Assembly.GetType("UnityEditor.DisplayUtility"); + if (canvasEditorType != null) + { + getDisplayNames = canvasEditorType.GetMethod("GetDisplayNames", BindingFlags.Static | BindingFlags.Public); + getDisplayIndices = canvasEditorType.GetMethod("GetDisplayIndices", BindingFlags.Static | BindingFlags.Public); + } + + m_RenderMode = serializedObject.FindProperty("m_RenderMode"); + m_Camera = serializedObject.FindProperty("m_Camera"); + m_PixelPerfect = serializedObject.FindProperty("m_PixelPerfect"); + m_PlaneDistance = serializedObject.FindProperty("m_PlaneDistance"); + + m_SortingLayerID = serializedObject.FindProperty("m_SortingLayerID"); + m_SortingOrder = serializedObject.FindProperty("m_SortingOrder"); + m_TargetDisplay = serializedObject.FindProperty("m_TargetDisplay"); + m_OverrideSorting = serializedObject.FindProperty("m_OverrideSorting"); + m_PixelPerfectOverride = serializedObject.FindProperty("m_OverridePixelPerfect"); + m_ShaderChannels = serializedObject.FindProperty("m_AdditionalShaderChannelsFlag"); + + m_OverlayMode = new AnimBool(m_RenderMode.intValue == 0); + m_OverlayMode.valueChanged.AddListener(Repaint); + + m_CameraMode = new AnimBool(m_RenderMode.intValue == 1); + m_CameraMode.valueChanged.AddListener(Repaint); + + m_WorldMode = new AnimBool(m_RenderMode.intValue == 2); + m_WorldMode.valueChanged.AddListener(Repaint); + + m_SortingOverride = new AnimBool(m_OverrideSorting.boolValue); + m_SortingOverride.valueChanged.AddListener(Repaint); + + if (m_PixelPerfectOverride.boolValue) + pixelPerfect = m_PixelPerfect.boolValue ? PixelPerfect.On : PixelPerfect.Off; + else + pixelPerfect = PixelPerfect.Inherit; + + m_AllNested = true; + m_AllRoot = true; + m_AllOverlay = true; + m_NoneOverlay = true; + + for (int i = 0; i < targets.Length; i++) + { + Canvas canvas = targets[i] as Canvas; + + if (canvas.transform.parent == null || canvas.transform.parent.GetComponentInParent() == null) + m_AllNested = false; + else + m_AllRoot = false; + + if (canvas.renderMode == RenderMode.ScreenSpaceOverlay) + m_NoneOverlay = false; + else + m_AllOverlay = false; + } + } + + void OnDisable() + { + m_OverlayMode.valueChanged.RemoveListener(Repaint); + m_CameraMode.valueChanged.RemoveListener(Repaint); + m_WorldMode.valueChanged.RemoveListener(Repaint); + m_SortingOverride.valueChanged.RemoveListener(Repaint); + } + + private void AllRootCanvases() + { + bool isMrtkCanvas = ShowMRTKButton(); + + var graphics = GetGraphicsWhichRequireScaleMeshEffect(targets); + + if (graphics.Count() != 0) + { + EditorGUILayout.HelpBox($"Canvas contains {graphics.Count()} {typeof(Graphic).Name}(s) which require a {typeof(ScaleMeshEffect).Name} to work with the {StandardShaderUtility.MrtkStandardShaderName} shader.", UnityEditor.MessageType.Warning); + if (GUILayout.Button($"Add {typeof(ScaleMeshEffect).Name}(s)")) + { + foreach (var graphic in graphics) + { + Undo.AddComponent(graphic.gameObject); + } + } + } + + EditorGUILayout.Space(); + + if (PlayerSettings.virtualRealitySupported && (m_RenderMode.enumValueIndex == (int)RenderMode.ScreenSpaceOverlay)) + { + EditorGUILayout.HelpBox("Using a render mode of ScreenSpaceOverlay while VR is enabled will cause the Canvas to continue to incur a rendering cost, even though the Canvas will not be visible in VR.", MessageType.Warning); + } + + if (!isMrtkCanvas) + { + EditorGUILayout.PropertyField(m_RenderMode); + } + + m_OverlayMode.target = m_RenderMode.intValue == 0; + m_CameraMode.target = m_RenderMode.intValue == 1; + m_WorldMode.target = m_RenderMode.intValue == 2; + + EditorGUI.indentLevel++; + if (EditorGUILayout.BeginFadeGroup(m_OverlayMode.faded)) + { + EditorGUILayout.PropertyField(m_PixelPerfect); + EditorGUILayout.PropertyField(m_SortingOrder, Styles.sortingOrder); + GUIContent[] displayNames = (GUIContent[]) getDisplayNames.Invoke(null, new object[] { }); + EditorGUILayout.IntPopup(m_TargetDisplay, displayNames, (int[])getDisplayIndices.Invoke(null, new object[] { }), Styles.targetDisplay); + } + EditorGUILayout.EndFadeGroup(); + + if (EditorGUILayout.BeginFadeGroup(m_CameraMode.faded)) + { + EditorGUILayout.PropertyField(m_PixelPerfect); + EditorGUILayout.PropertyField(m_Camera, Styles.renderCamera); + + if (m_Camera.objectReferenceValue == null) + EditorGUILayout.HelpBox("A Screen Space Canvas with no specified camera acts like an Overlay Canvas.", + MessageType.Warning); + + if (m_Camera.objectReferenceValue != null) + EditorGUILayout.PropertyField(m_PlaneDistance); + + EditorGUILayout.Space(); + + if (m_Camera.objectReferenceValue != null) + sortingLayerField.Invoke(null, new object[] { Styles.m_SortingLayerStyle, m_SortingLayerID, EditorStyles.popup, EditorStyles.label }); + EditorGUILayout.PropertyField(m_SortingOrder, Styles.m_SortingOrderStyle); + } + EditorGUILayout.EndFadeGroup(); + + if (EditorGUILayout.BeginFadeGroup(m_WorldMode.faded)) + { + if (!isMrtkCanvas) + { + EditorGUILayout.PropertyField(m_Camera, Styles.eventCamera); + + if (m_Camera.objectReferenceValue == null) + EditorGUILayout.HelpBox("A World Space Canvas with no specified Event Camera may not register UI events correctly.", + MessageType.Warning); + + EditorGUILayout.Space(); + } + sortingLayerField.Invoke(null, new object[] { Styles.m_SortingLayerStyle, m_SortingLayerID, EditorStyles.popup }); + EditorGUILayout.PropertyField(m_SortingOrder, Styles.m_SortingOrderStyle); + } + EditorGUILayout.EndFadeGroup(); + EditorGUI.indentLevel--; + } + + private void AllNestedCanvases() + { + EditorGUI.BeginChangeCheck(); + pixelPerfect = (PixelPerfect)EditorGUILayout.EnumPopup("Pixel Perfect", pixelPerfect); + + if (EditorGUI.EndChangeCheck()) + { + if (pixelPerfect == PixelPerfect.Inherit) + { + m_PixelPerfectOverride.boolValue = false; + } + else if (pixelPerfect == PixelPerfect.Off) + { + m_PixelPerfectOverride.boolValue = true; + m_PixelPerfect.boolValue = false; + } + else + { + m_PixelPerfectOverride.boolValue = true; + m_PixelPerfect.boolValue = true; + } + } + + EditorGUILayout.PropertyField(m_OverrideSorting); + m_SortingOverride.target = m_OverrideSorting.boolValue; + + if (EditorGUILayout.BeginFadeGroup(m_SortingOverride.faded)) + { + GUIContent sortingOrderStyle = null; + if (m_AllOverlay) + { + sortingOrderStyle = Styles.sortingOrder; + } + else if (m_NoneOverlay) + { + sortingOrderStyle = Styles.m_SortingOrderStyle; + sortingLayerField.Invoke(null, new object[] { Styles.m_SortingLayerStyle, m_SortingLayerID, EditorStyles.popup }); + } + if (sortingOrderStyle != null) + { + EditorGUILayout.PropertyField(m_SortingOrder, sortingOrderStyle); + } + } + EditorGUILayout.EndFadeGroup(); + } + + private bool ShowMRTKButton() + { + Canvas canvas = (Canvas)target; + + if (!canvas.rootCanvas) + { + return false; + } + + bool isMRTKCanvas = canvas.GetComponent() != null; + + if (isMRTKCanvas) + { + if (GUILayout.Button(removeMRTKCanvas)) + { + EditorApplication.delayCall += () => + { + DestroyImmediate(canvas.GetComponent()); + DestroyImmediate(canvas.GetComponent()); + }; + + isMRTKCanvas = false; + } + + if (canvas.GetComponentInChildren() == null) + { + EditorGUILayout.HelpBox($"Canvas does not contain any {typeof(NearInteractionTouchableUnityUI).Name} components for supporting near interaction.", MessageType.Warning); + if (GUILayout.Button($"Add {typeof(NearInteractionTouchableUnityUI).Name}")) + { + Undo.AddComponent(canvas.gameObject); + } + } + } + else + { + if (GUILayout.Button(makeMRTKCanvas)) + { + if (canvas.GetComponent() == null) + Undo.AddComponent(canvas.gameObject); + if (canvas.GetComponent() == null) + Undo.AddComponent(canvas.gameObject); + canvas.renderMode = RenderMode.WorldSpace; + canvas.worldCamera = null; + isMRTKCanvas = true; + } + } + + return isMRTKCanvas; + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + if (m_AllRoot || m_AllNested) + { + if (m_AllRoot) + { + AllRootCanvases(); + } + else if (m_AllNested) + { + AllNestedCanvases(); + } + + int newShaderChannelValue = 0; + EditorGUI.BeginChangeCheck(); + newShaderChannelValue = EditorGUILayout.MaskField(Styles.m_ShaderChannel, m_ShaderChannels.intValue, shaderChannelOptions); + + + if (EditorGUI.EndChangeCheck()) + m_ShaderChannels.intValue = newShaderChannelValue; + + if (m_RenderMode.intValue == 0) // Overlay canvas + { + if (((newShaderChannelValue & (int)AdditionalCanvasShaderChannels.Normal) | (newShaderChannelValue & (int)AdditionalCanvasShaderChannels.Tangent)) != 0) + EditorGUILayout.HelpBox("Shader channels Normal and Tangent are most often used with lighting, which an Overlay canvas does not support. Its likely these channels are not needed.", MessageType.Warning); + } + } + else + { + GUILayout.Label(Styles.s_RootAndNestedMessage, EditorStyles.helpBox); + } + + serializedObject.ApplyModifiedProperties(); + } + + private static IEnumerable GetGraphicsWhichRequireScaleMeshEffect(Object[] targets) + { + var output = new List(); + + foreach (var target in targets) + { + Graphic[] graphics = (target as Canvas).GetComponentsInChildren(); + + foreach (var graphic in graphics) + { + if (StandardShaderUtility.IsUsingMrtkStandardShader(graphic.material) && + graphic.GetComponent() == null) + { + output.Add(graphic); + } + } + } + + return output; + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasEditorExtension.cs.meta b/Assets/MixedRealityToolkit.Services/InputSystem/Editor/MixedRealityCanvasInspector.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasEditorExtension.cs.meta rename to Assets/MixedRealityToolkit.Services/InputSystem/Editor/MixedRealityCanvasInspector.cs.meta diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/Editor/NearInteractionTouchableInspector.cs b/Assets/MixedRealityToolkit.Services/InputSystem/Editor/NearInteractionTouchableInspector.cs index 010a544c167..f84eaf8f04b 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/Editor/NearInteractionTouchableInspector.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/Editor/NearInteractionTouchableInspector.cs @@ -2,50 +2,19 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using System; -using System.Collections.Generic; -using System.Linq; +using UnityEditor; using UnityEngine; -using UnityEngine.Serialization; namespace Microsoft.MixedReality.Toolkit.Input { - [UnityEditor.CustomEditor(typeof(NearInteractionTouchable), true)] - public class NearInteractionTouchableInspector : UnityEditor.Editor + [CustomEditor(typeof(NearInteractionTouchable), true)] + public class NearInteractionTouchableInspector : NearInteractionTouchableInspectorBase { - private readonly Color handleColor = Color.white; - private readonly Color fillColor = new Color(0, 0, 0, 0); - - protected virtual void OnSceneGUI() - { - NearInteractionTouchable t = (NearInteractionTouchable)target; - - if (Event.current.type == EventType.Repaint) - { - UnityEditor.Handles.color = handleColor; - - Vector3 center = t.transform.TransformPoint(t.LocalCenter); - - float arrowSize = UnityEditor.HandleUtility.GetHandleSize(center) * 0.75f; - UnityEditor.Handles.ArrowHandleCap(0, center, Quaternion.LookRotation(t.transform.rotation * t.LocalForward), arrowSize, EventType.Repaint); - - Vector3 rightDelta = t.transform.localToWorldMatrix.MultiplyVector(t.LocalRight * t.Bounds.x / 2); - Vector3 upDelta = t.transform.localToWorldMatrix.MultiplyVector(t.LocalUp * t.Bounds.y / 2); - - Vector3[] points = new Vector3[4]; - points[0] = center + rightDelta + upDelta; - points[1] = center - rightDelta + upDelta; - points[2] = center - rightDelta - upDelta; - points[3] = center + rightDelta - upDelta; - - UnityEditor.Handles.DrawSolidRectangleWithOutline(points, fillColor, handleColor); - } - } - public override void OnInspectorGUI() { base.OnInspectorGUI(); - NearInteractionTouchable t = (NearInteractionTouchable)target; + var t = (NearInteractionTouchable)target; BoxCollider bc = t.GetComponent(); RectTransform rt = t.GetComponent(); if (bc != null) @@ -58,22 +27,22 @@ public override void OnInspectorGUI() // Resize helper if (adjustedSize != t.Bounds) { - UnityEditor.EditorGUILayout.HelpBox("Bounds do not match the BoxCollider size", UnityEditor.MessageType.Warning); + EditorGUILayout.HelpBox("Bounds do not match the BoxCollider size", MessageType.Warning); if (GUILayout.Button("Fix Bounds")) { - UnityEditor.Undo.RecordObject(t, "Fix Bounds"); - t.Bounds = adjustedSize; + Undo.RecordObject(t, "Fix Bounds"); + t.SetBounds(adjustedSize); } } // Recentre helper if (t.LocalCenter != bc.center + Vector3.Scale(bc.size / 2.0f, t.LocalForward)) { - UnityEditor.EditorGUILayout.HelpBox("Center does not match the BoxCollider center", UnityEditor.MessageType.Warning); + EditorGUILayout.HelpBox("Center does not match the BoxCollider center", MessageType.Warning); if (GUILayout.Button("Fix Center")) { - UnityEditor.Undo.RecordObject(t, "Fix Center"); - t.LocalCenter = bc.center + Vector3.Scale(bc.size / 2.0f, t.LocalForward); + Undo.RecordObject(t, "Fix Center"); + t.SetLocalCenter(bc.center + Vector3.Scale(bc.size / 2.0f, t.LocalForward)); } } } @@ -82,20 +51,20 @@ public override void OnInspectorGUI() // Resize Helper if (rt.sizeDelta != t.Bounds) { - UnityEditor.EditorGUILayout.HelpBox("Bounds do not match the RectTransform size", UnityEditor.MessageType.Warning); + EditorGUILayout.HelpBox("Bounds do not match the RectTransform size", MessageType.Warning); if (GUILayout.Button("Fix Bounds")) { - UnityEditor.Undo.RecordObject(t, "Fix Bounds"); - t.Bounds = rt.sizeDelta; + Undo.RecordObject(t, "Fix Bounds"); + t.SetBounds(rt.sizeDelta); } } if (t.GetComponentInParent() != null && t.LocalForward != new Vector3(0, 0, -1)) { - UnityEditor.EditorGUILayout.HelpBox("Unity UI generally has forward facing away from the front. The LocalForward direction specified does not match the expected forward direction.", UnityEditor.MessageType.Warning); + EditorGUILayout.HelpBox("Unity UI generally has forward facing away from the front. The LocalForward direction specified does not match the expected forward direction.", MessageType.Warning); if (GUILayout.Button("Fix Forward Direction")) { - UnityEditor.Undo.RecordObject(t, "Fix Forward Direction"); + Undo.RecordObject(t, "Fix Forward Direction"); t.SetLocalForward(new Vector3(0, 0, -1)); } } @@ -104,18 +73,60 @@ public override void OnInspectorGUI() // Perpendicular forward/up vectors helpers if (!t.AreLocalVectorsOrthogonal) { - UnityEditor.EditorGUILayout.HelpBox("Local Forward and Local Up are not perpendicular.", UnityEditor.MessageType.Warning); + EditorGUILayout.HelpBox("Local Forward and Local Up are not perpendicular.", MessageType.Warning); if (GUILayout.Button("Fix Local Up")) { - UnityEditor.Undo.RecordObject(t, "Fix Local Up"); + Undo.RecordObject(t, "Fix Local Up"); t.SetLocalForward(t.LocalForward); } if (GUILayout.Button("Fix Local Forward")) { - UnityEditor.Undo.RecordObject(t, "Fix Local Forward"); + Undo.RecordObject(t, "Fix Local Forward"); t.SetLocalUp(t.LocalUp); } } } } -} \ No newline at end of file + + [CustomEditor(typeof(BaseNearInteractionTouchable), true)] + public class NearInteractionTouchableInspectorBase : Editor + { + private readonly Color handleColor = Color.white; + private readonly Color fillColor = new Color(0, 0, 0, 0); + + protected virtual void OnSceneGUI() + { + var t = (NearInteractionTouchableSurface)target; + + if (Event.current.type == EventType.Repaint) + { + Handles.color = handleColor; + + Vector3 center = t.transform.TransformPoint(t.LocalCenter); + + float arrowSize = HandleUtility.GetHandleSize(center) * 0.75f; + Handles.ArrowHandleCap(0, center, Quaternion.LookRotation(t.transform.rotation * -t.LocalPressDirection), arrowSize, EventType.Repaint); + + var localRight = Vector3.right; + var localUp = Vector3.up; + + if (t is NearInteractionTouchable touchableConcrete) + { + localRight = touchableConcrete.LocalRight; + localUp = touchableConcrete.LocalUp; + } + + Vector3 rightDelta = t.transform.localToWorldMatrix.MultiplyVector(localRight * t.Bounds.x / 2); + Vector3 upDelta = t.transform.localToWorldMatrix.MultiplyVector(localUp * t.Bounds.y / 2); + + Vector3[] points = new Vector3[4]; + points[0] = center + rightDelta + upDelta; + points[1] = center - rightDelta + upDelta; + points[2] = center - rightDelta - upDelta; + points[3] = center + rightDelta - upDelta; + + Handles.DrawSolidRectangleWithOutline(points, fillColor, handleColor); + } + } + } +} diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/FocusProvider.cs b/Assets/MixedRealityToolkit.Services/InputSystem/FocusProvider.cs index 1da4729ed87..24ddf26856e 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/FocusProvider.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/FocusProvider.cs @@ -4,6 +4,7 @@ using Microsoft.MixedReality.Toolkit.Physics; using Microsoft.MixedReality.Toolkit.Utilities; using System; +using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; @@ -16,7 +17,9 @@ namespace Microsoft.MixedReality.Toolkit.Input /// /// There are convenience properties for getting only Gaze Pointer if needed. [HelpURL("https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Input/Overview.html")] - public class FocusProvider : BaseCoreSystem, IMixedRealityFocusProvider + public class FocusProvider : BaseCoreSystem, + IMixedRealityFocusProvider, + IPointerPreferences { public FocusProvider( IMixedRealityServiceRegistrar registrar, @@ -85,8 +88,8 @@ private set #region IFocusProvider Properties - /// - public override string Name => "Focus Provider"; + /// + public override string Name { get; protected set; } = "Focus Provider"; /// public override uint Priority => 2; @@ -141,7 +144,6 @@ public LayerMask[] FocusLayerMasks /// /// Checks if the is setup correctly to start this service. /// - /// private bool IsSetupValid { get @@ -276,7 +278,17 @@ private class PointerData : IPointerResult, IEquatable public Vector3 StartPoint { get; private set; } /// - public FocusDetails Details => focusDetails; + public FocusDetails Details + { + get + { + return focusDetails; + } + set + { + focusDetails = value; + } + } /// public GameObject CurrentPointerTarget => focusDetails.Object; @@ -306,6 +318,12 @@ public PointerEventData GraphicEventData } private PointerEventData graphicData; + /// + /// Returns true if the current pointer target has been disabled or destroyed + /// + public bool IsCurrentPointerTargetInvalid => ((CurrentPointerTarget != null && !CurrentPointerTarget.activeInHierarchy)) || + (CurrentPointerTarget == null && !ReferenceEquals(CurrentPointerTarget, null)); + private FocusDetails focusDetails = new FocusDetails(); public PointerData(IMixedRealityPointer pointer) @@ -498,6 +516,7 @@ public override void Initialize() } } + /// public override void Destroy() { if (primaryPointerSelector != null) @@ -582,6 +601,20 @@ public bool TryGetFocusDetails(IMixedRealityPointer pointer, out FocusDetails fo return false; } + /// + public bool TryOverrideFocusDetails(IMixedRealityPointer pointer, FocusDetails focusDetails) + { + if (TryGetPointerData(pointer, out PointerData pointerData)) + { + pointerData.Details = focusDetails; + return true; + } + else + { + return false; + } + } + #endregion Focus Details by IMixedRealityPointer #region Utilities @@ -696,9 +729,22 @@ private void RegisterPointers(IMixedRealityInputSource inputSource) IMixedRealityPointerMediator mediator = null; - if (InputSystem?.InputSystemProfile.PointerProfile.PointerMediator.Type != null) + var mediatorType = InputSystem?.InputSystemProfile.PointerProfile.PointerMediator.Type; + if (mediatorType != null) { - mediator = Activator.CreateInstance(InputSystem.InputSystemProfile.PointerProfile.PointerMediator.Type) as IMixedRealityPointerMediator; + try + { + // First, try to use constructor used by DefaultPointerMediator (it takes a IPointePreferences) + mediator = Activator.CreateInstance( + InputSystem.InputSystemProfile.PointerProfile.PointerMediator.Type, + this) as IMixedRealityPointerMediator; + } + catch (MissingMethodException) + { + // We are using custom mediator not provided by MRTK, instantiate with empty constructor + mediator = Activator.CreateInstance( + InputSystem.InputSystemProfile.PointerProfile.PointerMediator.Type) as IMixedRealityPointerMediator; + } } if (mediator != null) @@ -884,17 +930,30 @@ private void UpdatePointer(PointerData pointerData) } else { + LayerMask[] prioritizedLayerMasks = (pointerData.Pointer.PrioritizedLayerMasksOverride ?? FocusLayerMasks); + + if (pointerData.IsCurrentPointerTargetInvalid) + { + pointerData.Pointer.IsFocusLocked = false; + } + // If the pointer is locked, keep the focused object the same. // This will ensure that we execute events on those objects // even if the pointer isn't pointing at them. if (pointerData.Pointer.IsFocusLocked && pointerData.Pointer.IsTargetPositionLockedOnFocusLock) { pointerData.UpdateFocusLockedHit(); + + // If we have a unity event system, perform graphics raycasts as well to support Unity UI interactions + if (EventSystem.current != null) + { + // NOTE: We need to do this AFTER RaycastPhysics so we use the current hit point to perform the correct 2D UI Raycast. + hitResultUi.Clear(); + RaycastGraphics(pointerData.Pointer, pointerData.GraphicEventData, prioritizedLayerMasks, hitResultUi); + } } else { - LayerMask[] prioritizedLayerMasks = (pointerData.Pointer.PrioritizedLayerMasksOverride ?? FocusLayerMasks); - // Perform raycast to determine focused object var raycastProvider = InputSystem.RaycastProvider; hitResult3d.Clear(); @@ -905,8 +964,6 @@ private void UpdatePointer(PointerData pointerData) gazeHitResult = hitResult3d; } - PointerHitResult hit = hitResult3d; - int hitResult3dLayer = hitResult3d.hitObject?.layer ?? -1; if (hitResult3dLayer == 0) { @@ -916,6 +973,7 @@ private void UpdatePointer(PointerData pointerData) TruncatePointerRayToHit(pointerData.Pointer, hitResult3d); } + PointerHitResult hit = hitResult3d; // If we have a unity event system, perform graphics raycasts as well to support Unity UI interactions if (EventSystem.current != null) { @@ -1043,8 +1101,6 @@ private void ReconcilePointers() /// /// Perform a scene query to determine which scene objects with a collider is currently being gazed at, if any. /// - /// - /// private static void QueryScene(IMixedRealityPointer pointer, IMixedRealityRaycastProvider raycastProvider, LayerMask[] prioritizedLayerMasks, PointerHitResult hit, int maxQuerySceneResults, bool focusIndividualCompoundCollider) { float rayStartDistance = 0; @@ -1378,5 +1434,137 @@ public void OnSpeechKeywordRecognized(SpeechEventData eventData) gazePointerStateMachine.OnSpeechKeywordRecognized(eventData); } #endregion + + + #region IPointerPreferences Implementation + private List customPointerBehaviors = new List(); + + /// + public PointerBehavior GetPointerBehavior(IMixedRealityPointer pointer) + { + // Assumption: all pointers have controllers, input sources, except the gaze pointers + // if the controller, input source is null, return the gaze pointer behavior here. + if (pointer.Controller == null || pointer.InputSourceParent == null) + { + // gazepointer means input source is null + return GazePointerBehavior; + } + + return GetPointerBehavior( + pointer.GetType(), + pointer.Controller.ControllerHandedness, + pointer.InputSourceParent.SourceType); + } + + /// + /// Gets the behavior for the given pointer type. + /// + /// Pointer type to query + /// Handedness to query + /// for the given pointer type and handedness. If right hand is enabled, left + /// hand is not enabled, and Handedness.Any is passed, returns value for the right hand. + public PointerBehavior GetPointerBehavior( + Handedness handedness, + InputSourceType sourceType) where T : class, IMixedRealityPointer + { + return GetPointerBehavior(typeof(T), handedness, sourceType); + } + + private PointerBehavior GetPointerBehavior(Type type, Handedness handedness, InputSourceType sourceType) + { + for (int i = 0; i < customPointerBehaviors.Count; i++) + { + if (customPointerBehaviors[i].Matches(type, sourceType)) + { + return customPointerBehaviors[i].GetBehaviorForHandedness(handedness); + } + } + return PointerBehavior.Default; + } + + /// + public PointerBehavior GazePointerBehavior { get; set; } = PointerBehavior.Default; + + /// + public void SetPointerBehavior(Handedness handedness, InputSourceType inputType, PointerBehavior pointerBehavior) where T : class, IMixedRealityPointer + { + PointerPreferences preference = null; + for (int i = 0; i < customPointerBehaviors.Count; i++) + { + if (customPointerBehaviors[i].Matches(typeof(T), inputType)) + { + preference = customPointerBehaviors[i]; + } + } + if (preference == null) + { + preference = new PointerPreferences(typeof(T), inputType); + customPointerBehaviors.Add(preference); + } + preference.SetBehaviorForHandedness(handedness, pointerBehavior); + } + + private class PointerPreferences + { + public InputSourceType InputSourceType; + public Type PointerType; + + public bool Matches(Type queryType, InputSourceType queryInputType) + { + return Matches(queryType) && queryInputType == InputSourceType; + } + + public bool Matches(Type queryType) + { + return queryType.IsAssignableFrom(PointerType); + } + + public PointerBehavior Left; + public PointerBehavior Right; + public PointerBehavior Other; + public PointerBehavior GetBehaviorForHandedness(Handedness h) + { + if ((h & Handedness.Right) != 0) + { + return Right; + } + if ((h & Handedness.Left) != 0) + { + return Left; + } + if ((h & Handedness.Other) != 0) + { + return Other; + } + return PointerBehavior.Default; + } + public void SetBehaviorForHandedness( + Handedness h, + PointerBehavior b) + { + if ((h & Handedness.Right) != 0) + { + Right = b; + } + if ((h & Handedness.Left) != 0) + { + Left = b; + } + if ((h & Handedness.Other) != 0) + { + Other = b; + } + } + public PointerPreferences(Type pointerType, InputSourceType inputType) + { + Left = PointerBehavior.Default; + Right = PointerBehavior.Default; + Other = PointerBehavior.Default; + InputSourceType = inputType; + PointerType = pointerType; + } + } + #endregion + } } diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/GazeProvider.cs b/Assets/MixedRealityToolkit.Services/InputSystem/GazeProvider.cs index a84e51428c4..8c50e9e5474 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/GazeProvider.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/GazeProvider.cs @@ -213,7 +213,6 @@ public override float PointerExtent /// /// Only for use when initializing Gaze Pointer on startup. /// - /// internal void SetGazeInputSourceParent(IMixedRealityInputSource gazeInputSource) { InputSourceParent = gazeInputSource; @@ -260,6 +259,7 @@ public override void OnPostSceneQuery() } } + /// public override void OnPreCurrentPointerTargetChange() { } /// @@ -275,7 +275,6 @@ public override void OnPreCurrentPointerTargetChange() { } /// /// The input action that corresponds to the pressed button or axis. /// Optional handedness of the source that pressed the pointer. - /// public void RaisePointerDown(MixedRealityInputAction mixedRealityInputAction, Handedness handedness = Handedness.None, IMixedRealityInputSource inputSource = null) { isDown = true; @@ -289,7 +288,6 @@ public void RaisePointerDown(MixedRealityInputAction mixedRealityInputAction, Ha /// /// The input action that corresponds to the released button or axis. /// Optional handedness of the source that released the pointer. - /// public void RaisePointerUp(MixedRealityInputAction mixedRealityInputAction, Handedness handedness = Handedness.None, IMixedRealityInputSource inputSource = null) { isDown = false; @@ -313,6 +311,7 @@ private void OnValidate() } } + /// protected override void OnEnable() { base.OnEnable(); @@ -324,6 +323,7 @@ protected override void OnEnable() } } + /// protected override async void Start() { base.Start(); @@ -399,6 +399,7 @@ private void LateUpdate() } } + /// protected override void OnDisable() { base.OnDisable(); @@ -415,11 +416,13 @@ protected override void OnDisable() #region InputSystemGlobalHandlerListener Implementation + /// protected override void RegisterHandlers() { InputSystem?.RegisterHandler(this); } + /// protected override void UnregisterHandlers() { InputSystem?.UnregisterHandler(this); diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/InputSystemGlobalHandlerListener.cs b/Assets/MixedRealityToolkit.Services/InputSystem/InputSystemGlobalHandlerListener.cs index 5d51a62bc01..4173c178e69 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/InputSystemGlobalHandlerListener.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/InputSystemGlobalHandlerListener.cs @@ -23,10 +23,7 @@ protected IMixedRealityInputSystem InputSystem { get { - if (inputSystem == null) - { - MixedRealityServiceRegistry.TryGetService(out inputSystem); - } + MixedRealityServiceRegistry.TryGetService(out inputSystem); return inputSystem; } } diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/MixedRealityInputModule.cs b/Assets/MixedRealityToolkit.Services/InputSystem/MixedRealityInputModule.cs index 0cc0441aa4e..45483b26cc0 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/MixedRealityInputModule.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/MixedRealityInputModule.cs @@ -71,6 +71,7 @@ public IEnumerable ActiveMixedRealityPointers } } + /// public override void ActivateModule() { base.ActivateModule(); @@ -89,6 +90,7 @@ public override void ActivateModule() } } + /// public override void DeactivateModule() { if (InputSystem != null) @@ -163,11 +165,9 @@ private void ProcessMrtkPointerLost(PointerData pointerData) { IMixedRealityPointer pointer = pointerData.pointer; - pointer.Result = null; ProcessMouseEvent((int)pointer.PointerId); - // Invalidate last mouse point. - pointerData.lastMousePoint3d = null; + ResetMousePointerEventData(pointerData); } } @@ -181,13 +181,14 @@ protected override MouseState GetMousePointerEventData(int pointerId) PointerData pointerData; if (pointerDataToUpdate.TryGetValue(pointerId, out pointerData)) { - return GetMousePointerEventDataForMrtkPointer(pointerData); + UpdateMousePointerEventData(pointerData); + return pointerData.mouseState; } return base.GetMousePointerEventData(pointerId); } - protected MouseState GetMousePointerEventDataForMrtkPointer(PointerData pointerData) + protected void UpdateMousePointerEventData(PointerData pointerData) { IMixedRealityPointer pointer = pointerData.pointer; @@ -209,7 +210,6 @@ protected MouseState GetMousePointerEventDataForMrtkPointer(PointerData pointerD RaycastCamera.transform.rotation = Quaternion.LookRotation(pointer.Rays[0].Direction); } - // Populate eventDataLeft pointerData.eventDataLeft.Reset(); @@ -241,7 +241,7 @@ protected MouseState GetMousePointerEventDataForMrtkPointer(PointerData pointerD pointerData.eventDataLeft.pressPosition += pointerData.eventDataLeft.delta; // Populate raycast data - pointerData.eventDataLeft.pointerCurrentRaycast = (pointer.Result?.Details.Object != null) ? pointer.Result.Details.LastGraphicsRaycastResult : new RaycastResult(); + pointerData.eventDataLeft.pointerCurrentRaycast = pointer.Result != null ? pointer.Result.Details.LastGraphicsRaycastResult : new RaycastResult(); // TODO: Simulate raycast for 3D objects? // Populate the data for the buttons @@ -256,8 +256,28 @@ protected MouseState GetMousePointerEventDataForMrtkPointer(PointerData pointerD CopyFromTo(pointerData.eventDataLeft, pointerData.eventDataMiddle); pointerData.eventDataMiddle.button = PointerEventData.InputButton.Middle; pointerData.mouseState.SetButtonState(PointerEventData.InputButton.Middle, PointerEventData.FramePressState.NotChanged, pointerData.eventDataMiddle); + } + + protected void ResetMousePointerEventData(PointerData pointerData) + { + // Invalidate last mouse point. + pointerData.lastMousePoint3d = null; + pointerData.pointer.Result = null; + + pointerData.eventDataLeft.pointerCurrentRaycast = new RaycastResult(); + + // Populate the data for the buttons + pointerData.eventDataLeft.button = PointerEventData.InputButton.Left; + pointerData.mouseState.SetButtonState(PointerEventData.InputButton.Left, PointerEventData.FramePressState.NotChanged, pointerData.eventDataLeft); - return pointerData.mouseState; + // Need to provide data for middle and right button for MouseState, although not used by MRTK pointers. + CopyFromTo(pointerData.eventDataLeft, pointerData.eventDataRight); + pointerData.eventDataRight.button = PointerEventData.InputButton.Right; + pointerData.mouseState.SetButtonState(PointerEventData.InputButton.Right, PointerEventData.FramePressState.NotChanged, pointerData.eventDataRight); + + CopyFromTo(pointerData.eventDataLeft, pointerData.eventDataMiddle); + pointerData.eventDataMiddle.button = PointerEventData.InputButton.Middle; + pointerData.mouseState.SetButtonState(PointerEventData.InputButton.Middle, PointerEventData.FramePressState.NotChanged, pointerData.eventDataMiddle); } protected PointerEventData.FramePressState StateForPointer(PointerData pointerData) diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/MixedRealityInputSystem.cs b/Assets/MixedRealityToolkit.Services/InputSystem/MixedRealityInputSystem.cs index 47ed57048bf..f41713b6b6d 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/MixedRealityInputSystem.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/MixedRealityInputSystem.cs @@ -25,6 +25,9 @@ public MixedRealityInputSystem( } } + /// + public override string Name { get; protected set; } = "Mixed Reality Input System"; + /// public event Action InputEnabled; @@ -179,18 +182,7 @@ public override void Initialize() if (profile.PointerProfile != null) { - if (profile.PointerProfile.GazeProviderType?.Type != null) - { - GazeProvider = CameraCache.Main.gameObject.EnsureComponent(profile.PointerProfile.GazeProviderType.Type) as IMixedRealityGazeProvider; - GazeProvider.GazeCursorPrefab = profile.PointerProfile.GazeCursorPrefab; - // Current implementation implements both provider types in one concrete class. - EyeGazeProvider = GazeProvider as IMixedRealityEyeGazeProvider; - } - else - { - Debug.LogError("The Input system is missing the required GazeProviderType!"); - return; - } + InstantiateGazeProvider(profile.PointerProfile); } else { @@ -225,11 +217,34 @@ public override void Initialize() handTrackingInputEventData = new HandTrackingInputEventData(EventSystem.current); } + private void InstantiateGazeProvider(MixedRealityPointerProfile pointerProfile) + { + if (pointerProfile?.GazeProviderType?.Type != null) + { + GazeProvider = CameraCache.Main.gameObject.EnsureComponent(pointerProfile.GazeProviderType.Type) as IMixedRealityGazeProvider; + GazeProvider.GazeCursorPrefab = pointerProfile.GazeCursorPrefab; + // Current implementation implements both provider types in one concrete class. + EyeGazeProvider = GazeProvider as IMixedRealityEyeGazeProvider; + } + else + { + Debug.LogError("The Input system is missing the required GazeProviderType!"); + return; + } + } + /// public override void Enable() { MixedRealityInputSystemProfile profile = ConfigurationProfile as MixedRealityInputSystemProfile; + // If the system gets disabled, the gaze provider is destroyed. + // Ensure that it gets recreated on when reenabled. + if (GazeProvider == null) + { + InstantiateGazeProvider(profile?.PointerProfile); + } + if ((GetDataProviders().Count == 0) && (profile != null)) { // Register the input device managers. @@ -565,7 +580,6 @@ public override void Register(GameObject listener) /// /// Unregister a GameObject from listening to input events. /// - /// public override void Unregister(GameObject listener) { base.Unregister(listener); @@ -956,7 +970,22 @@ public void RaiseFocusExit(IMixedRealityPointer pointer, GameObject unfocusedObj /// public void RaisePointerDown(IMixedRealityPointer pointer, MixedRealityInputAction inputAction, Handedness handedness = Handedness.None, IMixedRealityInputSource inputSource = null) { - pointer.IsFocusLocked = (pointer.Result?.Details.Object != null); + // Only lock the object if there is a grabbable above in the hierarchy + Transform currentObject = pointer.Result?.Details.Object?.transform; + IMixedRealityPointerHandler ancestorPointerHandler = null; + while(currentObject != null && ancestorPointerHandler == null) + { + foreach(var component in currentObject.GetComponents()) + { + if (component is IMixedRealityPointerHandler) + { + ancestorPointerHandler = (IMixedRealityPointerHandler) component; + break; + } + } + currentObject = currentObject.transform.parent; + } + pointer.IsFocusLocked = ancestorPointerHandler != null; pointerEventData.Initialize(pointer, inputAction, handedness, inputSource); diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchable.cs b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchable.cs index 85324342395..ccd78b3e696 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchable.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchable.cs @@ -2,7 +2,6 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using System; -using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.Serialization; @@ -13,20 +12,22 @@ namespace Microsoft.MixedReality.Toolkit.Input /// Add a NearInteractionTouchable to your scene and configure a touchable surface /// in order to get PointerDown and PointerUp events whenever a PokePointer touches this surface. /// - public class NearInteractionTouchable : ColliderNearInteractionTouchable + public class NearInteractionTouchable : NearInteractionTouchableSurface { - /// - /// Local space forward direction - /// [SerializeField] protected Vector3 localForward = Vector3.forward; - public Vector3 LocalForward { get => localForward; } /// /// Local space forward direction /// + public Vector3 LocalForward { get => localForward; } + [SerializeField] protected Vector3 localUp = Vector3.up; + + /// + /// Local space up direction + /// public Vector3 LocalUp { get => localUp; } /// @@ -37,13 +38,17 @@ public class NearInteractionTouchable : ColliderNearInteractionTouchable /// public bool AreLocalVectorsOrthogonal => Vector3.Dot(localForward, localUp) == 0; + [SerializeField] + protected Vector3 localCenter = Vector3.zero; + /// /// Local space object center /// - [SerializeField] - protected Vector3 localCenter = Vector3.zero; - public Vector3 LocalCenter { get => localCenter; set { localCenter = value; } } + public override Vector3 LocalCenter { get => localCenter; } + /// + /// Local space and gameObject right + /// public Vector3 LocalRight { get @@ -61,28 +66,42 @@ public Vector3 LocalRight } } + /// + /// Forward direction of the gameObject + /// public Vector3 Forward => transform.TransformDirection(localForward); - public void SetLocalForward(Vector3 newLocalForward) - { - localForward = newLocalForward; - localUp = Vector3.Cross(localForward, LocalRight).normalized; - } + /// + /// Forward direction of the NearInteractionTouchable plane, the press direction needs to face the + /// camera. + /// + public override Vector3 LocalPressDirection => -localForward; - public void SetLocalUp(Vector3 newLocalUp) - { - localUp = newLocalUp; - localForward = Vector3.Cross(LocalRight, localUp).normalized; - } + [SerializeField] + protected Vector2 bounds = Vector2.zero; /// - /// Local space forward direction + /// Bounds or size of the 2D NearInteractionTouchablePlane /// + public override Vector2 Bounds { get => bounds; } + + /// + /// Check if the touchableCollider is enabled and in the gameObject hierarchy + /// + public bool ColliderEnabled { get { return touchableCollider.enabled && touchableCollider.gameObject.activeInHierarchy; } } + + [SerializeField] - protected Vector2 bounds = Vector2.zero; - public Vector2 Bounds { get => bounds; set { bounds = value; } } + [FormerlySerializedAs("collider")] + [Tooltip("BoxCollider used to calculate bounds and local center, if not set before runtime the gameObjects's BoxCollider will be used by default")] + private Collider touchableCollider; + + /// + /// BoxCollider used to calculate bounds and local center, if not set before runtime the gameObjects's BoxCollider will be used by default + /// + public Collider TouchableCollider => touchableCollider; - protected new void OnValidate() + protected override void OnValidate() { if (Application.isPlaying) { // Don't validate during play mode @@ -91,6 +110,8 @@ public void SetLocalUp(Vector3 newLocalUp) base.OnValidate(); + touchableCollider = GetComponent(); + Debug.Assert(localForward.magnitude > 0); Debug.Assert(localUp.magnitude > 0); string hierarchy = gameObject.transform.EnumerateAncestors(true).Aggregate("", (result, next) => next.gameObject.name + "=>" + result); @@ -106,6 +127,90 @@ public void SetLocalUp(Vector3 newLocalUp) bounds.y = Mathf.Max(bounds.y, 0); } + void OnEnable() + { + if (touchableCollider == null) + { + SetTouchableCollider(GetComponent()); + } + } + + /// + /// Set local forward direction and ensure that local up is perpendicular to the new local forward and + /// local right direction. The forward position should be facing the camera. The direction is indicated in scene view by a + /// white arrow in the center of the plane. + /// + public void SetLocalForward(Vector3 newLocalForward) + { + localForward = newLocalForward; + localUp = Vector3.Cross(localForward, LocalRight).normalized; + } + + /// + /// Set new local up direction and ensure that local forward is perpendicular to the new local up and + /// local right direction. + /// + public void SetLocalUp(Vector3 newLocalUp) + { + localUp = newLocalUp; + localForward = Vector3.Cross(LocalRight, localUp).normalized; + } + + /// + /// Set the position (center) of the NearInteractionTouchable plane relative to the gameObject. + /// The position of the plane should be in front of the gameObject. + /// + public void SetLocalCenter(Vector3 newLocalCenter) + { + localCenter = newLocalCenter; + } + + /// + /// Set the size (bounds) of the 2D NearInteractionTouchable plane. + /// + public void SetBounds(Vector2 newBounds) + { + bounds = newBounds; + } + + /// + /// Adjust the bounds, local center and local forward to match a given box collider. This method + /// also changes the size of the box collider attached to the gameObject. + /// Default Behavior: if touchableCollider is null at runtime, the object's box collider will be used + /// to size and place the NearInteractionTouchable plane in front of the gameObject + /// + public void SetTouchableCollider(BoxCollider newCollider) + { + if (newCollider != null) + { + // Set touchableCollider for possible reference in the future + touchableCollider = newCollider; + + SetLocalForward(-Vector3.forward); + + Vector2 adjustedSize = new Vector2( + Math.Abs(Vector3.Dot(newCollider.size, LocalRight)), + Math.Abs(Vector3.Dot(newCollider.size, LocalUp))); + + SetBounds(adjustedSize); + + // Set x and y center to match the newCollider but change the position of the + // z axis so the plane is always in front of the object + SetLocalCenter(newCollider.center + Vector3.Scale(newCollider.size / 2.0f, LocalForward)); + + // Set size and center of the gameObject's box collider to match the collider given, if there + // is no box collider behind the NearInteractionTouchable plane, an event will not be raised + BoxCollider attachedBoxCollider = GetComponent(); + attachedBoxCollider.size = newCollider.size; + attachedBoxCollider.center = newCollider.center; + } + else + { + Debug.LogWarning("BoxCollider is null, cannot set bounds of NearInteractionTouchable plane"); + } + } + + /// public override float DistanceToTouchable(Vector3 samplePoint, out Vector3 normal) { normal = Forward; diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableSurface.cs b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableSurface.cs new file mode 100644 index 00000000000..35d24b3798b --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableSurface.cs @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + /// + /// A near interaction object which is a flat surface and can be pressed in one direction. + /// + public abstract class NearInteractionTouchableSurface : BaseNearInteractionTouchable + { + /// + /// The local center point of interaction. This may be based on a collider position or Unity UI RectTransform. + /// + public abstract Vector3 LocalCenter { get; } + + /// + /// This is the direction that a user will press on this element. + /// + public abstract Vector3 LocalPressDirection { get; } + + /// + /// Bounds specify where touchable interactions can occur. They are local bounds on the plane specified by the LocalCenter and LocalPressDirection (as a normal). + /// + public abstract Vector2 Bounds { get; } + } +} diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableSurface.cs.meta b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableSurface.cs.meta new file mode 100644 index 00000000000..9c74d6ab969 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableSurface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a13a45837101374e8448f6ff8c3d20e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableUnityUI.cs b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableUnityUI.cs index 0de2ece091e..8eaf65956ee 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableUnityUI.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableUnityUI.cs @@ -11,28 +11,33 @@ namespace Microsoft.MixedReality.Toolkit.Input /// Use a Unity UI RectTransform as touchable surface. /// [RequireComponent(typeof(RectTransform))] - public class NearInteractionTouchableUnityUI : BaseNearInteractionTouchable + public class NearInteractionTouchableUnityUI : NearInteractionTouchableSurface { - private RectTransform rectTransform; + private Lazy rectTransform; public static IReadOnlyList Instances => instances; + + public override Vector3 LocalCenter => Vector3.zero; + public override Vector3 LocalPressDirection => Vector3.forward; + public override Vector2 Bounds => rectTransform.Value.rect.size; + private static readonly List instances = new List(); - /// - void Start() + public NearInteractionTouchableUnityUI() { - rectTransform = GetComponent(); + rectTransform = new Lazy(GetComponent); } + /// public override float DistanceToTouchable(Vector3 samplePoint, out Vector3 normal) { - normal = -transform.forward; + normal = transform.TransformDirection(-LocalPressDirection); Vector3 localPoint = transform.InverseTransformPoint(samplePoint); // touchables currently can only be touched within the bounds of the rectangle. // We return infinity to ensure that any point outside the bounds does not get touched. - if (!rectTransform.rect.Contains(localPoint)) + if (!rectTransform.Value.rect.Contains(localPoint)) { return float.PositiveInfinity; } diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableVolume.cs b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableVolume.cs index 15f9911cb45..3aedfbf63df 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableVolume.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/NearInteractionTouchableVolume.cs @@ -13,12 +13,13 @@ namespace Microsoft.MixedReality.Toolkit.Input /// Add a NearInteractionTouchableVolume to your scene and configure a touchable volume /// in order to get PointerDown and PointerUp events whenever a PokePointer collides with this volume. /// - public class NearInteractionTouchableVolume : ColliderNearInteractionTouchable + public class NearInteractionTouchableVolume : BaseNearInteractionTouchable { #if UNITY_EDITOR [UnityEditor.CustomEditor(typeof(NearInteractionTouchableVolume))] public class Editor : UnityEditor.Editor { + /// public override void OnInspectorGUI() { base.OnInspectorGUI(); @@ -33,6 +34,24 @@ public override void OnInspectorGUI() } #endif + public bool ColliderEnabled { get { return touchableCollider.enabled && touchableCollider.gameObject.activeInHierarchy; } } + + /// + /// The collider used by this touchable. + /// + [SerializeField] + [FormerlySerializedAs("collider")] + private Collider touchableCollider; + public Collider TouchableCollider => touchableCollider; + + protected override void OnValidate() + { + base.OnValidate(); + + touchableCollider = GetComponent(); + } + + /// public override float DistanceToTouchable(Vector3 samplePoint, out Vector3 normal) { Vector3 closest = TouchableCollider.ClosestPoint(samplePoint); @@ -41,9 +60,11 @@ public override float DistanceToTouchable(Vector3 samplePoint, out Vector3 norma if (normal == Vector3.zero) { // inside object, use vector to centre as normal - normal = samplePoint - transform.TransformVector(TouchableCollider.bounds.center); + normal = samplePoint - TouchableCollider.bounds.center; normal.Normalize(); - return 0; + // Return value less than zero so that when poke pointer is inside + // object, it will not raise a touch up event. + return -1; } else { diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasEditorExtension.cs b/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasEditorExtension.cs deleted file mode 100644 index d49d5442151..00000000000 --- a/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasEditorExtension.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -#if UNITY_EDITOR - -using UnityEditor; -using UnityEngine; - -namespace Microsoft.MixedReality.Toolkit.Input.Utilities -{ - /// - /// Helper class to get CanvasUtility onto Canvas objects. - /// - [CustomEditor(typeof(Canvas))] - public class CanvasEditorExtension : UnityEditor.Editor - { - public override void OnInspectorGUI() - { - Canvas canvas = (Canvas)target; - - CanvasUtility utility = canvas.GetComponent(); - - if (!utility) - { - EditorGUILayout.HelpBox("Canvases must have the CanvasUtility on them to support Mixed Reality Toolkit input.", MessageType.Error); - if (GUILayout.Button("Add CanvasUtility")) - { - Undo.AddComponent(canvas.gameObject); - } - } - - base.OnInspectorGUI(); - } - } -} - -#endif \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasUtility.cs b/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasUtility.cs index b490457896a..212bbf89460 100644 --- a/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasUtility.cs +++ b/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/CanvasUtility.cs @@ -3,6 +3,7 @@ using UnityEngine; using UnityEngine.EventSystems; +using UnityEngine.UI; namespace Microsoft.MixedReality.Toolkit.Input.Utilities { @@ -11,62 +12,25 @@ namespace Microsoft.MixedReality.Toolkit.Input.Utilities /// [DisallowMultipleComponent] [RequireComponent(typeof(Canvas))] - public class CanvasUtility : MonoBehaviour + public class CanvasUtility : MonoBehaviour, IMixedRealityPointerHandler { -#if UNITY_EDITOR - [UnityEditor.CustomEditor(typeof(CanvasUtility))] - public class Editor : UnityEditor.Editor + private bool oldIsTargetPositionLockedOnFocusLock = false; + public void OnPointerClicked(MixedRealityPointerEventData eventData) {} + + public void OnPointerDown(MixedRealityPointerEventData eventData) { - public override void OnInspectorGUI() + oldIsTargetPositionLockedOnFocusLock = eventData.Pointer.IsTargetPositionLockedOnFocusLock; + if (!(eventData.Pointer is IMixedRealityNearPointer) && eventData.Pointer.Controller.IsRotationAvailable) { - Canvas canvas = ((CanvasUtility)target).GetComponent(); - - if (canvas == null) - { - Debug.LogError("Requires Canvas"); - base.OnInspectorGUI(); - return; - } - - if (IsPartOfScene(canvas.gameObject) && CanSupportMrtkInput(canvas) && (canvas.worldCamera != null) && !Application.isPlaying) - { - UnityEditor.EditorGUILayout.HelpBox("World Space Canvas should have no camera set to work properly with Mixed Reality Toolkit. At runtime, they'll get their camera set automatically.", UnityEditor.MessageType.Error); - if (GUILayout.Button("Clear World Camera")) - { - UnityEditor.Undo.RecordObject(canvas, "Clear World Camera"); - canvas.worldCamera = null; - } - } - - if (CanSupportMrtkInput(canvas) && (canvas.GetComponentInChildren() == null)) - { - UnityEditor.EditorGUILayout.HelpBox($"Canvas does not contain any {typeof(NearInteractionTouchableUnityUI).Name} components for supporting near interaction.", UnityEditor.MessageType.Warning); - if (GUILayout.Button("Add NearInteractionTouchable")) - { - UnityEditor.Undo.AddComponent(canvas.gameObject); - } - } - - base.OnInspectorGUI(); + eventData.Pointer.IsTargetPositionLockedOnFocusLock = false; } } -#endif - private IMixedRealityInputSystem inputSystem = null; + public void OnPointerDragged(MixedRealityPointerEventData eventData) { } - /// - /// The active instance of the input system. - /// - private IMixedRealityInputSystem InputSystem + public void OnPointerUp(MixedRealityPointerEventData eventData) { - get - { - if (inputSystem == null) - { - MixedRealityServiceRegistry.TryGetService(out inputSystem); - } - return inputSystem; - } + eventData.Pointer.IsTargetPositionLockedOnFocusLock = oldIsTargetPositionLockedOnFocusLock; } private void Start() @@ -74,33 +38,20 @@ private void Start() Canvas canvas = GetComponent(); Debug.Assert(canvas != null); - if (CanSupportMrtkInput(canvas)) + if (canvas.worldCamera == null) { - if (canvas.worldCamera == null) - { - Debug.Assert(InputSystem?.FocusProvider?.UIRaycastCamera != null, this); - canvas.worldCamera = InputSystem?.FocusProvider?.UIRaycastCamera; + Debug.Assert(CoreServices.InputSystem?.FocusProvider?.UIRaycastCamera != null, this); + canvas.worldCamera = CoreServices.InputSystem?.FocusProvider?.UIRaycastCamera; - if (EventSystem.current == null) - { - Debug.LogError("No EventSystem detected. UI events will not be propagated to Unity UI."); - } - } - else + if (EventSystem.current == null) { - Debug.LogError("World Space Canvas should have no camera set to work properly with Mixed Reality Toolkit. At runtime, they'll get their camera set automatically."); + Debug.LogError("No EventSystem detected. UI events will not be propagated to Unity UI."); } } - } - - private static bool IsPartOfScene(GameObject gameObject) - { - return (gameObject.scene.name != null); - } - - private static bool CanSupportMrtkInput(Canvas canvas) - { - return (canvas.isRootCanvas && (canvas.renderMode == RenderMode.WorldSpace)); + else + { + Debug.LogError("World Space Canvas should have no camera set to work properly with Mixed Reality Toolkit. At runtime, they'll get their camera set automatically."); + } } } } diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/ScaleMeshEffect.cs b/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/ScaleMeshEffect.cs new file mode 100644 index 00000000000..390b12c42e3 --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/ScaleMeshEffect.cs @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using UnityEngine; +using UnityEngine.UI; + +namespace Microsoft.MixedReality.Toolkit.Input.Utilities +{ + /// + /// On Unity UI components the unity_ObjectToWorld matrix is not the transformation matrix of the local + /// transform the Graphic component lives on, but that of it's parent Canvas. Many MRTK/Standard shader + /// effects require object scale to be known. To solve this issue the ScaleMeshEffect will store scaling + /// information into UV channel attributes during UI mesh construction. Ideally we would store the scale + /// in one attribute but UGUI only supports two scalers per attribute (even in the tangent attribute). + /// + [RequireComponent(typeof(RectTransform), typeof(Graphic))] + [HelpURL("https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_MRTKStandardShader.html#ugui-support")] + public class ScaleMeshEffect : BaseMeshEffect + { + /// + /// Enforces the parent canvas uses UV channel attributes. + /// + protected override void Awake() + { + base.Awake(); + + // Make sure the parent canvas is configured to use UV channel attributes for scaling data. + var canvas = GetComponentInParent(); + + if (canvas != null) + { + canvas.additionalShaderChannels |= AdditionalCanvasShaderChannels.TexCoord2; + canvas.additionalShaderChannels |= AdditionalCanvasShaderChannels.TexCoord3; + } + } + + /// + /// Stores scaling information into UV channel attributes during UI mesh construction. + /// + /// The vertex helper to populate with new vertex data. + public override void ModifyMesh(VertexHelper vh) + { + var rectTransform = transform as RectTransform; + + // Pack the 2D xy scale into UV channel 2. + var scale = new Vector2(rectTransform.rect.width * rectTransform.localScale.x, + rectTransform.rect.height * rectTransform.localScale.y); + + var canvas = GetComponentInParent(); + + // Pack the z scale into x and a flag indicating this value comes from a ScaleMeshEffect into y into UV channel 3. + var depth = new Vector2((canvas ? (1.0f / canvas.transform.lossyScale.z) : 1.0f) * rectTransform.localScale.z, + -1.0f); + + var vertex = new UIVertex(); + + for (var i = 0; i < vh.currentVertCount; ++i) + { + vh.PopulateUIVertex(ref vertex, i); + vertex.uv2 = scale; + vertex.uv3 = depth; + vh.SetUIVertex(vertex, i); + } + } + } +} diff --git a/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/ScaleMeshEffect.cs.meta b/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/ScaleMeshEffect.cs.meta new file mode 100644 index 00000000000..f5e68ad865b --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/InputSystem/Utilities/ScaleMeshEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3d5970893ef64ed4aa155d71e6c515ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/MRTK.Services.sentinel b/Assets/MixedRealityToolkit.Services/MRTK.Services.sentinel new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Assets/MixedRealityToolkit.Services/MRTK.Services.sentinel.meta b/Assets/MixedRealityToolkit.Services/MRTK.Services.sentinel.meta new file mode 100644 index 00000000000..5ba978edffe --- /dev/null +++ b/Assets/MixedRealityToolkit.Services/MRTK.Services.sentinel.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e4a2c4cac1889464cb3f300e513d9df8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Services/SceneSystem/MixedRealitySceneSystem.cs b/Assets/MixedRealityToolkit.Services/SceneSystem/MixedRealitySceneSystem.cs index f5d743f2535..e5b807d0378 100644 --- a/Assets/MixedRealityToolkit.Services/SceneSystem/MixedRealitySceneSystem.cs +++ b/Assets/MixedRealityToolkit.Services/SceneSystem/MixedRealitySceneSystem.cs @@ -55,6 +55,9 @@ public MixedRealitySceneSystem( // Lighting executor instance private SceneLightingExecutor lightingExecutor; + /// + public override string Name { get; protected set; } = "Mixed Reality Scene System"; + #region Actions /// @@ -352,7 +355,6 @@ public async void SetLightingScene(string newLightingSceneName, LightingSceneTra /// /// Loads the manager scene. /// - /// private async void SetManagerScene(string managerSceneName) { Scene scene = SceneManager.GetSceneByName(managerSceneName); @@ -367,13 +369,6 @@ private async void SetManagerScene(string managerSceneName) /// /// Internal method to handle scene loads /// - /// - /// - /// - /// - /// - /// - /// private async Task LoadScenesInternal( IEnumerable scenesToLoad, SceneType sceneType, @@ -511,12 +506,6 @@ private async Task LoadScenesInternal( /// /// Internal method to handles scene unloads /// - /// - /// - /// - /// - /// - /// private async Task UnloadScenesInternal( IEnumerable scenesToUnload, SceneType sceneType, @@ -795,8 +784,6 @@ public Scene GetScene(string sceneName) /// Checks whether any content scenes are loaded /// If they are, adds them to loadedContentScenes and returns true /// - /// - /// private bool GetLoadedContentScenes(out IEnumerable loadedContentScenes) { List loadedContentScenesList = new List(); diff --git a/Assets/MixedRealityToolkit.Services/SceneSystem/MixedRealitySceneSystemEditorOperations.cs b/Assets/MixedRealityToolkit.Services/SceneSystem/MixedRealitySceneSystemEditorOperations.cs index f158117fe21..ef542d4628f 100644 --- a/Assets/MixedRealityToolkit.Services/SceneSystem/MixedRealitySceneSystemEditorOperations.cs +++ b/Assets/MixedRealityToolkit.Services/SceneSystem/MixedRealitySceneSystemEditorOperations.cs @@ -87,7 +87,6 @@ public static string[] OnWillSaveAssets(string[] paths) /// Singly loads next content scene (if available) and unloads all other content scenes. /// Useful for inspectors. /// - /// public void EditorLoadNextContent(bool wrap = false) { string contentSceneName; @@ -113,7 +112,6 @@ public void EditorLoadNextContent(bool wrap = false) /// Singly loads previous content scene (if available) and unloads all other content scenes. /// Useful for inspectors. /// - /// public void EditorLoadPrevContent(bool wrap = false) { string contentSceneName; @@ -344,7 +342,6 @@ private void EditorCheckIfCachedLightingOutOfDate() /// /// Loads all lighting scenes, extracts their lighting data, then caches that data in the profile. /// - /// private async Task EditorUpdateCachedLighting() { // Clear out our lighting cache @@ -411,7 +408,6 @@ private async Task EditorUpdateCachedLighting() /// /// Ensures that if a content scene is loaded, that scene is set active, rather than a lighting or manager scene. /// - /// private void EditorUpdateContentScenes(bool activeSceneDirty) { if (!profile.UseLightingScene || !profile.EditorManageLoadedScenes) @@ -556,7 +552,6 @@ private void EditorUpdateManagerScene() /// /// If a lighting scene is being used, this ensures that at least one lighting scene is loaded in editor. /// - /// private void EditorUpdateLightingScene(bool heirarchyDirty) { if (!profile.UseLightingScene || !profile.EditorManageLoadedScenes) @@ -602,7 +597,6 @@ private void EditorUpdateLightingScene(bool heirarchyDirty) /// /// Ensures that only approved component types are present in lighting scenes. /// - /// private void EditorEnforceLightingSceneTypes(Scene scene) { if (EditorSceneManager.sceneCount == 1) diff --git a/Assets/MixedRealityToolkit.Services/SpatialAwarenessSystem/MixedRealitySpatialAwarenessSystem.cs b/Assets/MixedRealityToolkit.Services/SpatialAwarenessSystem/MixedRealitySpatialAwarenessSystem.cs index 000c1821e9f..99796012634 100644 --- a/Assets/MixedRealityToolkit.Services/SpatialAwarenessSystem/MixedRealitySpatialAwarenessSystem.cs +++ b/Assets/MixedRealityToolkit.Services/SpatialAwarenessSystem/MixedRealitySpatialAwarenessSystem.cs @@ -26,6 +26,9 @@ public MixedRealitySpatialAwarenessSystem( } } + /// + public override string Name { get; protected set; } = "Mixed Reality Spatial Awareness System"; + #region IMixedRealityCapabilityCheck Implementation /// diff --git a/Assets/MixedRealityToolkit.Services/TeleportSystem/MixedRealityTeleportSystem.cs b/Assets/MixedRealityToolkit.Services/TeleportSystem/MixedRealityTeleportSystem.cs index e2996708bfe..848ca390b76 100644 --- a/Assets/MixedRealityToolkit.Services/TeleportSystem/MixedRealityTeleportSystem.cs +++ b/Assets/MixedRealityToolkit.Services/TeleportSystem/MixedRealityTeleportSystem.cs @@ -38,6 +38,9 @@ public MixedRealityTeleportSystem( #region IMixedRealityService Implementation + /// + public override string Name { get; protected set; } = "Mixed Reality Teleport System"; + /// public override void Initialize() { @@ -111,7 +114,6 @@ public override void HandleEvent(BaseEventData eventData, ExecuteEvents.Event /// /// Unregister a GameObject from listening to Teleport events. /// - /// public override void Register(GameObject listener) { base.Register(listener); @@ -120,7 +122,6 @@ public override void Register(GameObject listener) /// /// Unregister a GameObject from listening to Teleport events. /// - /// public override void Unregister(GameObject listener) { base.Unregister(listener); diff --git a/Assets/MixedRealityToolkit.Services/Version.txt b/Assets/MixedRealityToolkit.Services/Version.txt index e670c2aeaab..4df313d1cc0 100644 --- a/Assets/MixedRealityToolkit.Services/Version.txt +++ b/Assets/MixedRealityToolkit.Services/Version.txt @@ -1 +1 @@ -Microsoft Mixed Reality Toolkit 2.0.0 \ No newline at end of file +Microsoft Mixed Reality Toolkit 2.1.0 \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions.meta new file mode 100644 index 00000000000..902e3a8e108 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f478c8031854a1046b54bcf3b8ba89d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices.meta new file mode 100644 index 00000000000..36061a15396 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6aeaca9f05c4dac4ca0c07abf5f20146 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices/MixedRealityHandTrackingProfileTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices/MixedRealityHandTrackingProfileTests.cs new file mode 100644 index 00000000000..c7666321f51 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices/MixedRealityHandTrackingProfileTests.cs @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Utilities; +using NUnit.Framework; + +namespace Microsoft.MixedReality.Toolkit.Input +{ + class MixedRealityHandTrackingProfileTests + { + /// + /// Verifies that calling MixedRealityHandTrackingProfile.EnableHandJointVisualization and + /// MixedRealityHandTrackingProfile.EnableHandMeshVisualization will only affect the visualization + /// mode of the currently active application mode (i.e. editor or player). + /// + [Test] + public void TestEditorOnlyChanges() + { + MixedRealityHandTrackingProfile profile = new MixedRealityHandTrackingProfile(); + profile.HandJointVisualizationModes = SupportedApplicationModes.Editor | SupportedApplicationModes.Player; + profile.HandMeshVisualizationModes = SupportedApplicationModes.Editor | SupportedApplicationModes.Player; + + // Since these tests run in the Unity editor, setting these to false should only clear the + // SupportedApplicationModes.Editor from each of the Hand*VisualizationModes properties. + profile.EnableHandJointVisualization = false; + profile.EnableHandMeshVisualization = false; + + Assert.AreEqual(SupportedApplicationModes.Player, profile.HandJointVisualizationModes); + Assert.AreEqual(SupportedApplicationModes.Player, profile.HandMeshVisualizationModes); + } + } +} diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices/MixedRealityHandTrackingProfileTests.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices/MixedRealityHandTrackingProfileTests.cs.meta new file mode 100644 index 00000000000..33a317ea2a6 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Definitions/Devices/MixedRealityHandTrackingProfileTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3e9ef3ecab1fa946930c886e7aa5978 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions.meta new file mode 100644 index 00000000000..00b1959ca4e --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d06d0855ece0832449f8955cc322d1be +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions/CameraExtensionTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions/CameraExtensionTests.cs new file mode 100644 index 00000000000..9d787cfd42f --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions/CameraExtensionTests.cs @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using NUnit.Framework; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Tests.Extensions +{ + public class CameraExtensionTests + { + private static Camera testCamera = null; + private const float MarginTolerance = 0.005f; + + [SetUp] + public void SetUp() + { + var obj = new GameObject("TestCamera"); + testCamera = obj.AddComponent(); + testCamera.nearClipPlane = 0.3f; + testCamera.farClipPlane = 1000.0f; + testCamera.fieldOfView = 60.0f; + testCamera.orthographic = false; + testCamera.transform.SetPositionAndRotation(Vector3.zero, Quaternion.identity); + } + + [TearDown] + public void TearDown() + { + GameObjectExtensions.DestroyGameObject(testCamera.gameObject); + } + + /// + /// Test that the Camera extension method IsInFov returns valid points that would be renderable on the camera + /// + [Test] + public void TestIsInFOV() + { + Assert.IsFalse(testCamera.IsInFOV(-Vector3.forward)); + Assert.IsFalse(testCamera.IsInFOV(-Vector3.forward - Vector3.right)); + Assert.IsTrue(testCamera.IsInFOV(Vector3.forward)); + Assert.IsFalse(testCamera.IsInFOV(Vector3.zero)); + + Assert.IsTrue(testCamera.IsInFOV(new Vector3(0.0f, 0.0f, testCamera.nearClipPlane))); + Assert.IsFalse(testCamera.IsInFOV(new Vector3(0.0f, 0.0f, testCamera.nearClipPlane - MarginTolerance))); + + float far = testCamera.farClipPlane; + Assert.IsTrue(testCamera.IsInFOV(new Vector3(0.0f, 0.0f, far))); + Assert.IsFalse(testCamera.IsInFOV(new Vector3(0.0f, 0.0f, far + MarginTolerance))); + + var frustrumSize = testCamera.GetFrustumSizeForDistance(far/2.0f); + Assert.IsTrue(testCamera.IsInFOV(new Vector3(frustrumSize.x / 2.0f, frustrumSize.y / 2.0f, far/2.0f))); + + Assert.IsFalse(testCamera.IsInFOV(2.0f * Vector3.right)); + Assert.IsFalse(testCamera.IsInFOV(2.0f * Vector3.up)); + } + } +} diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions/CameraExtensionTests.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions/CameraExtensionTests.cs.meta new file mode 100644 index 00000000000..eb2595b6cbc --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Extensions/CameraExtensionTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a2dc1088d6dd654d8c953cbdb3c82b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitFilesTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitFilesTests.cs index 4ce6337a528..3ce38a0c2b4 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitFilesTests.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitFilesTests.cs @@ -6,124 +6,44 @@ using UnityEngine; using System; using System.IO; +using System.Linq; namespace Microsoft.MixedReality.Toolkit.Tests.Core { // Tests for the MixedRealityToolkitFiles utility class public class MixedRealityToolkitFilesTests { - string[] basePaths = new string[] { "", "C:\\", "C:\\xyz\\", "C:/xyz/" }; - [Test] - public void FindMatchingModule() + public void TestGetDirectories() { - TestInvalidPath(""); - - // Test invalid base name - TestInvalidPath("aaa"); - TestInvalidPath(".SDK"); - TestInvalidPath("aaa.SDK"); - - // Test missing chars - TestInvalidPath("MixedRealityToolki.SDK"); - TestInvalidPath("MixedRealityToolkit.SD"); - TestInvalidPath("ixedRealityToolkit.SDK"); - TestInvalidPath("MixedRealityToolkit.DK"); - - // Test missing dots - TestInvalidPath("SDK"); - TestInvalidPath("MixedRealityToolkitSDK"); - - // Test valid paths - TestValidPath("MixedRealityToolkit", MixedRealityToolkitModuleType.Core); - TestValidPath("MixedRealityToolkit.SDK", MixedRealityToolkitModuleType.SDK); - - // Test that all modules can be found and internal module map is complete. - // Check that MixedRealityToolkitFiles.moduleNameMap has all entries if this fails! - var modules = Enum.GetValues(typeof(MixedRealityToolkitModuleType)); - var moduleNames = Enum.GetNames(typeof(MixedRealityToolkitModuleType)); - for (int i = 0; i < modules.Length; ++i) + MixedRealityToolkitModuleType[] moduleTypes = new MixedRealityToolkitModuleType[] { - var module = (MixedRealityToolkitModuleType)modules.GetValue(i); - if (module != MixedRealityToolkitModuleType.Core) - { - TestValidPath($"MixedRealityToolkit.{moduleNames[i]}", module); - } - } - } - - [Test] - public void FindMatchingModuleNuget() - { - // Test invalid base name - TestInvalidPath("aaa.1.23-45/MRTK"); - TestInvalidPath(".1.23-45.SDK/MRTK"); - TestInvalidPath("aaa.1.23-45.SDK/MRTK"); - - // Test missing chars - TestInvalidPath("Microsoft.MixedReality.Toolki.SDK.1.23-45/MRTK"); - TestInvalidPath("Microsoft.MixedReality.Toolkit.SD.1.23-45/MRTK"); - TestInvalidPath("Microsoft.MixedReality.Toolkit.SDK.1.23-45/MRT"); - - TestInvalidPath("icrosoft.MixedReality.Toolkit.SDK.1.23-45/MRTK"); - TestInvalidPath("Microsoft.MixedReality.Toolkit.DK.1.23-45/MRTK"); - TestInvalidPath("Microsoft.MixedReality.Toolkit.SDK.1.23-45/RTK"); - - // Test missing dots - TestInvalidPath("Microsoft.MixedReality.Toolkit.SDK1.23-45/MRTK"); - TestInvalidPath("Microsoft.MixedReality.ToolkitSDK.1.23-45/MRTK"); - TestInvalidPath("Microsoft.MixedReality.ToolkitSDK1.23-45/MRTK"); - - // Test missing version - TestInvalidPath("Microsoft.MixedReality.Toolkit.SDK/MRTK"); - // Test missing MRTK suffix - TestInvalidPath("Microsoft.MixedReality.Toolkit.SDK.1.23-45"); - - // Test valid paths - TestValidPath("Microsoft.MixedReality.Toolkit.1.23-45/MRTK", MixedRealityToolkitModuleType.Core); - TestValidPath("Microsoft.MixedReality.Toolkit.SDK.1.23-45/MRTK", MixedRealityToolkitModuleType.SDK); - - // Test that all modules can be found and internal module map is complete. - // Check that MixedRealityToolkitFiles.moduleNameMap has all entries if this fails! - var modules = Enum.GetValues(typeof(MixedRealityToolkitModuleType)); - var moduleNames = Enum.GetNames(typeof(MixedRealityToolkitModuleType)); - for (int i = 0; i < modules.Length; ++i) + MixedRealityToolkitModuleType.Core, + MixedRealityToolkitModuleType.Providers, + MixedRealityToolkitModuleType.Services, + MixedRealityToolkitModuleType.SDK, + MixedRealityToolkitModuleType.Examples, + MixedRealityToolkitModuleType.Tests, + MixedRealityToolkitModuleType.Extensions, + MixedRealityToolkitModuleType.Tools, + }; + + MixedRealityToolkitFiles.RefreshFolders(); + foreach (var moduleType in moduleTypes) { - var module = (MixedRealityToolkitModuleType)modules.GetValue(i); - if (module != MixedRealityToolkitModuleType.Core) - { - TestValidPath($"Microsoft.MixedReality.Toolkit.{moduleNames[i]}.1.23-45/MRTK", (MixedRealityToolkitModuleType)modules.GetValue(i)); - } + // Validate that each module has a corresponding found folder + Assert.IsTrue(MixedRealityToolkitFiles.GetDirectories(moduleType).Any()); } } /// /// Validates that MixedRealityToolkitFiles is able to reason over MRTK folders when placed in the root Asset directory. /// + [Test] public void TestRootAssetFolderResolution() { - string resolvedPath = MixedRealityToolkitFiles.MapRelativeFilePathToAbsolutePath("Inspectors/Data/EditorWindowOptions.json"); - string expectedPath = Path.Combine(Application.dataPath, "MixedRealityToolkit/Inspectors/Data/EditorWindowOptions.json"); - Assert.AreEqual(expectedPath, resolvedPath); - } - - public void TestInvalidPath(string path) - { - foreach (string basePath in basePaths) - { - string fullPath = Path.Combine(basePath, path); - Assert.False(MixedRealityToolkitFiles.FindMatchingModule(fullPath, out MixedRealityToolkitModuleType module)); - } - } - - public void TestValidPath(string path, MixedRealityToolkitModuleType expectedModule) - { - foreach (string basePath in basePaths) - { - string fullPath = Path.Combine(basePath, path); - Assert.True(MixedRealityToolkitFiles.FindMatchingModule(fullPath, out MixedRealityToolkitModuleType module)); - Assert.AreEqual(module, expectedModule); - } + string resolvedPath = MixedRealityToolkitFiles.MapRelativeFilePathToAbsolutePath("Inspectors\\Data\\EditorWindowOptions.json"); + Assert.IsNotNull(resolvedPath); } [TearDown] diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/TestFixture_01_MixedRealityToolkitTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitTests.cs similarity index 80% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/Core/TestFixture_01_MixedRealityToolkitTests.cs rename to Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitTests.cs index e6588b597a0..2db3ce67632 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/TestFixture_01_MixedRealityToolkitTests.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitTests.cs @@ -3,14 +3,14 @@ using Microsoft.MixedReality.Toolkit.Tests.Services; using NUnit.Framework; -using System.Collections; +using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.TestTools; namespace Microsoft.MixedReality.Toolkit.Tests.Core { - public class TestFixture_01_MixedRealityToolkitTests + public class MixedRealityToolkitTests { [TearDown] public void TearDown() @@ -21,7 +21,7 @@ public void TearDown() #region Service Locator Tests [Test] - public void Test_01_InitializeMixedRealityToolkit() + public void TestInitializeMixedRealityToolkit() { TestUtilities.EditorCreateScenes(); MixedRealityToolkit mixedRealityToolkit = new GameObject("MixedRealityToolkit").AddComponent(); @@ -34,7 +34,7 @@ public void Test_01_InitializeMixedRealityToolkit() } [Test] - public void Test_02_TestNoMixedRealityConfigurationFound() + public void TestNoMixedRealityConfigurationFound() { TestUtilities.EditorCreateScenes(); MixedRealityToolkit mixedRealityToolkit = new GameObject("MixedRealityToolkit").AddComponent(); @@ -50,7 +50,7 @@ public void Test_02_TestNoMixedRealityConfigurationFound() } [Test] - public void Test_03_CreateMixedRealityToolkit() + public void TestCreateMixedRealityToolkit() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -63,7 +63,7 @@ public void Test_03_CreateMixedRealityToolkit() #region IMixedRealityExtensionService Tests [Test] - public void Test_05_01_RegisterMixedRealityExtensionService() + public void TestRegisterMixedRealityExtensionService() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -79,7 +79,7 @@ public void Test_05_01_RegisterMixedRealityExtensionService() } [Test] - public void Test_05_02_01_UnregisterMixedRealityExtensionServiceByType() + public void TestUnregisterMixedRealityExtensionServiceByType() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -105,7 +105,7 @@ public void Test_05_02_01_UnregisterMixedRealityExtensionServiceByType() } [Test] - public void Test_05_02_02_UnregisterMixedRealityExtensionServiceByTypeAndName() + public void TestUnregisterMixedRealityExtensionServiceByTypeAndName() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -131,7 +131,7 @@ public void Test_05_02_02_UnregisterMixedRealityExtensionServiceByTypeAndName() } [Test] - public void Test_05_03_RegisterMixedRealityExtensionServices() + public void TestRegisterMixedRealityExtensionServices() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -150,7 +150,7 @@ public void Test_05_03_RegisterMixedRealityExtensionServices() } [Test] - public void Test_05_04_UnregisterMixedRealityExtensionServicesByType() + public void TestUnregisterMixedRealityExtensionServicesByType() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -191,7 +191,7 @@ public void Test_05_04_UnregisterMixedRealityExtensionServicesByType() } [Test] - public void Test_05_05_MixedRealityExtensionService2DoesNotExist() + public void TestMixedRealityExtensionService2DoesNotExist() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -206,7 +206,7 @@ public void Test_05_05_MixedRealityExtensionService2DoesNotExist() } [Test] - public void Test_05_06_MixedRealityExtensionServiceDoesNotReturnByName() + public void TestMixedRealityExtensionServiceDoesNotReturnByName() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -223,7 +223,7 @@ public void Test_05_06_MixedRealityExtensionServiceDoesNotReturnByName() } [Test] - public void Test_05_07_ValidateExtensionServiceName() + public void TestValidateExtensionServiceName() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -246,7 +246,7 @@ public void Test_05_07_ValidateExtensionServiceName() } [Test] - public void Test_05_08_GetMixedRealityExtensionServiceCollectionByInterface() + public void TestGetMixedRealityExtensionServiceCollectionByInterface() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -265,7 +265,7 @@ public void Test_05_08_GetMixedRealityExtensionServiceCollectionByInterface() } [Test] - public void Test_05_09_GetAllMixedRealityExtensionServices() + public void TestGetAllMixedRealityExtensionServices() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -287,7 +287,7 @@ public void Test_05_09_GetAllMixedRealityExtensionServices() #endregion IMixedRealityExtensionService Tests [Test] - public void Test_07_01_EnableServicesByType() + public void TestEnableServicesByType() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -296,7 +296,7 @@ public void Test_07_01_EnableServicesByType() MixedRealityToolkit.Instance.RegisterService(new TestExtensionService1(null, "Test07-01-1.2",10, null)); // Add test 2 services - MixedRealityToolkit.Instance.RegisterService(new TestDataProvider2(null, null, "Test07-01-2.1", 10)); + MixedRealityToolkit.Instance.RegisterService(new TestInputDataProvider(null, null, "Test07-01-2.1", 10, null)); MixedRealityToolkit.Instance.RegisterService(new TestExtensionService2(null, "Test07-01-2.2",10, null)); // Enable all test services @@ -313,7 +313,7 @@ public void Test_07_01_EnableServicesByType() } [Test] - public void Test_07_02_DisableServicesByType() + public void TestDisableServicesByType() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -322,7 +322,7 @@ public void Test_07_02_DisableServicesByType() MixedRealityToolkit.Instance.RegisterService(new TestExtensionService1(null, "Test07-01-1.2",10, null)); // Add test 2 services - MixedRealityToolkit.Instance.RegisterService(new TestDataProvider2(null, null, "Test07-01-2.1", 10)); + MixedRealityToolkit.Instance.RegisterService(new TestInputDataProvider(null, null, "Test07-01-2.1", 10, null)); MixedRealityToolkit.Instance.RegisterService(new TestExtensionService2(null, "Test07-01-2.2",10, null)); // Enable all test services @@ -347,10 +347,66 @@ public void Test_07_02_DisableServicesByType() } } + /// + /// This test validates that even when services are inserted in non-priority order + /// (i.e. 20 -> 30 -> 10), the services are returned in ascending priority order + /// when GetAllServices is called (i.e. 10, 20, 30). + /// + [Test] + public void TestGetAllServicesAscendingOrder() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); + + ITestExtensionService1 service1 = new TestExtensionService1(null, "Service1", 20, null); + MixedRealityToolkit.Instance.RegisterService(service1); + + ITestExtensionService2 service2 = new TestExtensionService2(null, "Service2", 30, null); + MixedRealityToolkit.Instance.RegisterService(service2); + + ITestExtensionService3 service3 = new TestExtensionService3(null, "Service3", 10, null); + MixedRealityToolkit.Instance.RegisterService(service3); + + // The order should be service3, service1, service2 because: + // service3 priority = 10 + // service1 priority = 20 + // service2 priority = 30 + CollectionAssert.AreEqual( + new List(){ service3, service1, service2 }, + MixedRealityServiceRegistry.GetAllServices()); + } + + /// + /// Similar to TestGetAllServicesAscendingOrder, except one of the services is then + /// removed, and this validates that the remaining services are still sorted correctly. + /// + [Test] + public void TestGetAllServicesAscendingOrderAfterRemoval() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); + + ITestExtensionService3 service3 = new TestExtensionService3(null, "Service3", 10, null); + MixedRealityToolkit.Instance.RegisterService(service3); + + ITestExtensionService1 service1 = new TestExtensionService1(null, "Service1", 20, null); + MixedRealityToolkit.Instance.RegisterService(service1); + + ITestExtensionService2 service2 = new TestExtensionService2(null, "Service2", 30, null); + MixedRealityToolkit.Instance.RegisterService(service2); + + MixedRealityToolkit.Instance.UnregisterService(); + + // The order should be service3, service1 because: + // service3 priority = 10 + // service1 priority = 20 + CollectionAssert.AreEqual( + new List() { service3, service1 }, + MixedRealityServiceRegistry.GetAllServices()); + } + #region Multiple Instances Tests [Test] - public void Test_08_01_CreateMultipleInstances() + public void TestCreateMultipleInstances() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -364,7 +420,7 @@ public void Test_08_01_CreateMultipleInstances() } [Test] - public void Test_08_02_SwitchBetweenActiveInstances() + public void TestSwitchBetweenActiveInstances() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -388,7 +444,7 @@ public void Test_08_02_SwitchBetweenActiveInstances() } [Test] - public void Test_08_03_DestroyActiveInstance() + public void TestDestroyActiveInstance() { TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); @@ -404,7 +460,7 @@ public void Test_08_03_DestroyActiveInstance() } [Test] - public void Test_08_04_CreateMultipleInstancesInMultipleScenes() + public void TestCreateMultipleInstancesInMultipleScenes() { TestUtilities.EditorCreateScenes(3); diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/TestFixture_01_MixedRealityToolkitTests.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitTests.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/Core/TestFixture_01_MixedRealityToolkitTests.cs.meta rename to Assets/MixedRealityToolkit.Tests/EditModeTests/Core/MixedRealityToolkitTests.cs.meta diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Utilities/BuildAndDeploy/UwpAppxBuildToolsTest.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Utilities/BuildAndDeploy/UwpAppxBuildToolsTest.cs index 6a65a508688..4e59941b4e6 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Utilities/BuildAndDeploy/UwpAppxBuildToolsTest.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Core/Utilities/BuildAndDeploy/UwpAppxBuildToolsTest.cs @@ -10,6 +10,7 @@ namespace Microsoft.MixedReality.Toolkit.Tests.Build.Editor { class UwpAppxBuildToolsTest { + #region AppX Manifest Tests // A string version of a sample manifest that gets generated by the Unity build. // Used in lieu of an actual file manifest to avoid having to do I/O during tests. // Note that the xml declaration must be on the first line, otherwise parsing @@ -24,7 +25,7 @@ class UwpAppxBuildToolsTest xmlns:mobile='http://schemas.microsoft.com/appx/manifest/mobile/windows10' IgnorableNamespaces='uap uap2 uap3 uap4 mp mobile iot' xmlns='http://schemas.microsoft.com/appx/manifest/foundation/windows10'> - + MixedRealityToolkit @@ -74,7 +75,7 @@ public void TestAddGazeInputCapability_CapabilitiesNodeExists() } /// - /// Validates that the AddGazeInputCapability will also add the + /// Validates that AddGazeInputCapability will also add the /// container tag if it's missing. /// [Test] @@ -119,5 +120,174 @@ private static void AssertSingleGazeInputCapability(XElement rootElement) Assert.AreEqual(1, gazeInputCapabilities.Count, "There be a single gazeInput capability"); } + + /// + /// Validates that AddResearchModeCapability will add a perceptionSensorsExperimental + /// capability and its namespace to an existing well-formed manifest. + /// + [Test] + public void TestAddResearchModeCapability_CapabilitiesNodeExists() + { + XElement rootElement = XElement.Parse(TestManifest); + UwpAppxBuildTools.AddResearchModeCapability(rootElement); + AssertSingleResearchModeCapability(rootElement); + } + + + + /// + /// Validates that AddResearchModeCapability will also add the + /// container tag if it's missing. + /// + [Test] + public void TestAddResearchModeCapability_CapabilitiesNodeMissing() + { + XElement rootElement = XElement.Parse(TestManifest); + XElement capabilitiesElement = rootElement.Element(rootElement.GetDefaultNamespace() + "Capabilities"); + capabilitiesElement.Remove(); + + // Not technically necessary, but sanity checks that we aren't + // spuriously testing the same thing as + // TestAddGazeInputCapability_CapabilitiesNodeExists + Assert.IsNull(rootElement.Element(rootElement.GetDefaultNamespace() + "Capabilities")); + + UwpAppxBuildTools.AddResearchModeCapability(rootElement); + + AssertSingleResearchModeCapability(rootElement); + } + + /// + /// Validates that AddResearchModeCapability will only add the research + /// mode capability if it doesn't already exist. + /// + [Test] + public void TestAddResearchModeCapability_AddsOnce() + { + XElement rootElement = XElement.Parse(TestManifest); + UwpAppxBuildTools.AddResearchModeCapability(rootElement); + AssertSingleResearchModeCapability(rootElement); + + UwpAppxBuildTools.AddResearchModeCapability(rootElement); + AssertSingleResearchModeCapability(rootElement); + } + + private static void AssertSingleResearchModeCapability(XElement rootElement) + { + var researchModeCapabilities = rootElement + .Element(rootElement.GetDefaultNamespace() + "Capabilities") + .Descendants() + .Where(element => element.Attribute("Name")?.Value == "perceptionSensorsExperimental") + .ToList(); + + Assert.AreEqual(1, researchModeCapabilities.Count, + "There must only be one perceptionSensorsExperimental capability"); + } + + /// + /// Validates that AddCapability adds a capability. + /// + [Test] + public void TestAddCapability_Adds() + { + XElement rootElement = XElement.Parse(TestManifest); + UwpAppxBuildTools.AddCapability(rootElement, rootElement.GetDefaultNamespace() + "DeviceCapability", "gazeInput"); + AssertSingleGazeInputCapability(rootElement); + } + + /// + /// Validates that AddCapability will only add a capability if + /// it doesn't already exist. + /// + [Test] + public void TestAddCapability_AddsOnce() + { + XElement rootElement = XElement.Parse(TestManifest); + UwpAppxBuildTools.AddCapability(rootElement, rootElement.GetDefaultNamespace() + "DeviceCapability", "gazeInput"); + AssertSingleGazeInputCapability(rootElement); + + UwpAppxBuildTools.AddCapability(rootElement, rootElement.GetDefaultNamespace() + "DeviceCapability", "gazeInput"); + AssertSingleGazeInputCapability(rootElement); + } + #endregion + + #region AssemblyCSharp Tests + // A string version of a sample manifest that gets generated by the Unity build. + // Used in lieu of an actual file manifest to avoid having to do I/O during tests. + // Note that the xml declaration must be on the first line, otherwise parsing + // will fail. + private const string TestCSProject = @" + + + + + Debug + AnyCPU + {18d19403-3ebe-4604-b525-6be23a8a7d51} + Library + Properties + AssemblyCSharpWSA + Assembly-CSharp + en-US + UAP + 10.0.18362.0 + 10.0.10240.0 + 14 + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + true + full + false + bin\x86\Debug\ + obj\x86\Debug\ + DEBUG; + x86 + false + prompt + true + + + "; // end of TestCSProject + + /// + /// Validates that AllowUnsafeCode will add an AllowUnsafeBlocks + /// node to a PropertyGroup which has a Condition-attribute. + /// + [Test] + public void TestAllowUnsafeCode_Adds() + { + XElement rootElement = XElement.Parse(TestCSProject); + UwpAppxBuildTools.AllowUnsafeCode(rootElement); + AssertSingleAllowUnsafeCode(rootElement); + } + + /// + /// Validates that AllowUnsafeCode will only add an AllowUnsafeBlocks + /// node if it doesn't already exist. + /// + [Test] + public void TestAllowUnsafeCode_AddsOnce() + { + XElement rootElement = XElement.Parse(TestCSProject); + UwpAppxBuildTools.AllowUnsafeCode(rootElement); + AssertSingleAllowUnsafeCode(rootElement); + + UwpAppxBuildTools.AllowUnsafeCode(rootElement); + AssertSingleAllowUnsafeCode(rootElement); + } + + private static void AssertSingleAllowUnsafeCode(XElement rootElement) + { + var allowUnsafeCode = rootElement + .Elements(rootElement.GetDefaultNamespace() + "PropertyGroup") + .Descendants() + .Where(element => element.Name == element.Parent.GetDefaultNamespace() + "AllowUnsafeBlocks") + .ToList(); + + Assert.AreEqual(1, allowUnsafeCode.Count, + "There must only be one AllowUnsafeBlocks element"); + } + #endregion } } diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/ControllerMappingTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/ControllerMappingTests.cs new file mode 100644 index 00000000000..531f4c27e14 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/ControllerMappingTests.cs @@ -0,0 +1,124 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Input.UnityInput; +using Microsoft.MixedReality.Toolkit.OpenVR.Input; +using NUnit.Framework; + +namespace Microsoft.MixedReality.Toolkit.Tests.InputSystem +{ + public class ControllerMappingTests + { + [OneTimeSetUp] + public void SetUp() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); + } + + [OneTimeTearDown] + public void TearDown() + { + TestUtilities.ShutdownMixedRealityToolkit(); + TestUtilities.EditorTearDownScenes(); + } + + [Test] + public void MouseControllerUpdateTest() + { + MouseController controller = new MouseController(TrackingState.NotApplicable, Utilities.Handedness.Any); + controller.SetupDefaultInteractions(Utilities.Handedness.Any); + + // Tests + Assert.That(() => controller.Update(), Throws.Nothing); + } + + [Test] + public void XboxControllerUpdateTest() + { + XboxController controller = new XboxController(TrackingState.NotApplicable, Utilities.Handedness.None); + controller.SetupDefaultInteractions(Utilities.Handedness.None); + + TestGenericJoystickControllerUpdate(controller); + } + + [Test] + public void GenericOpenVRControllerUpdateTest() + { + GenericOpenVRController leftController = new GenericOpenVRController(TrackingState.NotTracked, Utilities.Handedness.Left); + leftController.SetupDefaultInteractions(Utilities.Handedness.Left); + + GenericOpenVRController rightController = new GenericOpenVRController(TrackingState.NotTracked, Utilities.Handedness.Right); + rightController.SetupDefaultInteractions(Utilities.Handedness.Right); + + TestGenericJoystickControllerUpdate(leftController); + TestGenericJoystickControllerUpdate(rightController); + } + + [Test] + public void OculusRemoteControllerUpdateTest() + { + OculusRemoteController controller = new OculusRemoteController(TrackingState.NotTracked, Utilities.Handedness.None); + controller.SetupDefaultInteractions(Utilities.Handedness.None); + + TestGenericJoystickControllerUpdate(controller); + } + + [Test] + public void OculusTouchControllerUpdateTest() + { + OculusTouchController leftController = new OculusTouchController(TrackingState.NotTracked, Utilities.Handedness.Left); + leftController.SetupDefaultInteractions(Utilities.Handedness.Left); + + OculusTouchController rightController = new OculusTouchController(TrackingState.NotTracked, Utilities.Handedness.Right); + rightController.SetupDefaultInteractions(Utilities.Handedness.Right); + + TestGenericJoystickControllerUpdate(leftController); + TestGenericJoystickControllerUpdate(rightController); + } + + [Test] + public void ViveKnucklesControllerUpdateTest() + { + ViveKnucklesController leftController = new ViveKnucklesController(TrackingState.NotTracked, Utilities.Handedness.Left); + leftController.SetupDefaultInteractions(Utilities.Handedness.Left); + + ViveKnucklesController rightController = new ViveKnucklesController(TrackingState.NotTracked, Utilities.Handedness.Right); + rightController.SetupDefaultInteractions(Utilities.Handedness.Right); + + TestGenericJoystickControllerUpdate(leftController); + TestGenericJoystickControllerUpdate(rightController); + } + + [Test] + public void ViveWandControllerUpdateTest() + { + ViveWandController leftController = new ViveWandController(TrackingState.NotTracked, Utilities.Handedness.Left); + leftController.SetupDefaultInteractions(Utilities.Handedness.Left); + + ViveWandController rightController = new ViveWandController(TrackingState.NotTracked, Utilities.Handedness.Right); + rightController.SetupDefaultInteractions(Utilities.Handedness.Right); + + TestGenericJoystickControllerUpdate(leftController); + TestGenericJoystickControllerUpdate(rightController); + } + + [Test] + public void WindowsMixedRealityOpenVRMotionControllerUpdateTest() + { + WindowsMixedRealityOpenVRMotionController leftController = new WindowsMixedRealityOpenVRMotionController(TrackingState.NotTracked, Utilities.Handedness.Left); + leftController.SetupDefaultInteractions(Utilities.Handedness.Left); + + WindowsMixedRealityOpenVRMotionController rightController = new WindowsMixedRealityOpenVRMotionController(TrackingState.NotTracked, Utilities.Handedness.Right); + rightController.SetupDefaultInteractions(Utilities.Handedness.Right); + + TestGenericJoystickControllerUpdate(leftController); + TestGenericJoystickControllerUpdate(rightController); + } + + private void TestGenericJoystickControllerUpdate(GenericJoystickController controller) + { + // Test + Assert.That(() => controller.UpdateController(), Throws.Nothing); + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/ControllerMappingTests.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/ControllerMappingTests.cs.meta new file mode 100644 index 00000000000..52665408108 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/ControllerMappingTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a55f9966257414943b81f479265c6df9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InputSystemTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InputSystemTests.cs new file mode 100644 index 00000000000..0a9330fa3e8 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InputSystemTests.cs @@ -0,0 +1,156 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Input; +using Microsoft.MixedReality.Toolkit.Tests.Services; +using NUnit.Framework; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; + +namespace Microsoft.MixedReality.Toolkit.Tests.InputSystem +{ + public class InputSystemTests + { + private const string TestInputSystemProfilePath = "Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealityInputSystemProfile.asset"; + + [TearDown] + public void TearDown() + { + TestUtilities.ShutdownMixedRealityToolkit(); + } + + [Test] + public void CreateInputSystem() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile = CreateDefaultInputSystemProfile(); + + // Add Input System + bool didRegister = MixedRealityToolkit.Instance.RegisterService(new MixedRealityInputSystem(MixedRealityToolkit.Instance, MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile)); + + // Tests + Assert.IsTrue(didRegister); + Assert.AreEqual(1, MixedRealityServiceRegistry.GetAllServices().Count); + Assert.IsNotNull(MixedRealityToolkit.Instance.GetService()); + } + + [Test] + public void TestGetInputSystem() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); + + // Retrieve Input System + MixedRealityServiceRegistry.TryGetService(out IMixedRealityInputSystem inputSystem); + + // Tests + Assert.IsNotNull(inputSystem); + } + + [Test] + public void TestInputSystemDoesNotExist() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); + + // Tests for Input System + Assert.IsFalse(MixedRealityToolkit.Instance.IsServiceRegistered()); + } + + [Test] + public void TestInputSystemExists() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); + + // Tests for Input System + Assert.IsTrue(MixedRealityToolkit.Instance.IsServiceRegistered()); + } + + + [Test] + public void TestEmptyDataProvider() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); + + // Check for Input System + var inputSystem = MixedRealityToolkit.Instance.GetService(); + + var dataProviderAccess = (inputSystem as IMixedRealityDataProviderAccess); + + // Tests + Assert.IsNotNull(dataProviderAccess); + Assert.IsEmpty(dataProviderAccess.GetDataProviders()); + } + + [Test] + public void TestDataProviderRegistration() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile = AssetDatabase.LoadAssetAtPath(TestInputSystemProfilePath); + + var inputSystem = new MixedRealityInputSystem(MixedRealityToolkit.Instance, MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile); + Assert.IsTrue(MixedRealityToolkit.Instance.RegisterService(inputSystem)); + + // Since EditMode, we have to auto-enable MRTK input system ourselves + MixedRealityToolkit.Instance.EnableAllServicesByType(typeof(IMixedRealityInputSystem)); + + Assert.AreEqual(1, MixedRealityServiceRegistry.GetAllServices().Count); + Assert.IsNotNull(MixedRealityToolkit.Instance.GetService()); + + var dataProviderAccess = (inputSystem as IMixedRealityDataProviderAccess); + Assert.IsNotNull(dataProviderAccess); + + var dataProvider = dataProviderAccess.GetDataProvider(); + Assert.IsNotNull(dataProvider); + Assert.IsTrue(dataProvider.IsInitialized); + Assert.IsTrue(dataProvider.IsEnabled); + + inputSystem.Disable(); + Assert.IsFalse(dataProvider.IsEnabled); + + inputSystem.Enable(); + // We still have reference to old dataProvider, check still disabled + Assert.IsFalse(dataProvider.IsEnabled); + + // dataProvider has been unregistered in Disable and new one created by Enable. + dataProvider = dataProviderAccess.GetDataProvider(); + Assert.IsNotNull(dataProvider); + Assert.IsTrue(dataProvider.IsEnabled); + + inputSystem.Reset(); + LogAssert.Expect(LogType.Log, "TestDataProvider Reset"); + Assert.IsFalse(dataProvider.IsEnabled); + + // dataProvider has been unregistered and newly created in Reset + dataProvider = dataProviderAccess.GetDataProvider(); + Assert.IsNotNull(dataProvider); + Assert.IsTrue(dataProvider.IsInitialized); + Assert.IsTrue(dataProvider.IsEnabled); + } + + [TearDown] + public void CleanupMixedRealityToolkitTests() + { + TestUtilities.EditorCreateScenes(); + } + + /// + /// Create default Input System Profile + /// + /// MixedRealityInputSystemProfile ScriptableObject with default settings + private static MixedRealityInputSystemProfile CreateDefaultInputSystemProfile() + { + var inputSystemProfile = ScriptableObject.CreateInstance(); + inputSystemProfile.FocusProviderType = typeof(FocusProvider); + inputSystemProfile.RaycastProviderType = typeof(DefaultRaycastProvider); + inputSystemProfile.InputActionsProfile = ScriptableObject.CreateInstance(); + inputSystemProfile.InputActionRulesProfile = ScriptableObject.CreateInstance(); + inputSystemProfile.PointerProfile = ScriptableObject.CreateInstance(); + inputSystemProfile.PointerProfile.GazeProviderType = typeof(GazeProvider); + inputSystemProfile.GesturesProfile = ScriptableObject.CreateInstance(); + inputSystemProfile.SpeechCommandsProfile = ScriptableObject.CreateInstance(); + inputSystemProfile.ControllerVisualizationProfile = ScriptableObject.CreateInstance(); + inputSystemProfile.ControllerMappingProfile = ScriptableObject.CreateInstance(); + return inputSystemProfile; + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_03_InputSystemTests.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InputSystemTests.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_03_InputSystemTests.cs.meta rename to Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InputSystemTests.cs.meta diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_02_InteractionDefinitionTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InteractionDefinitionTests.cs similarity index 94% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_02_InteractionDefinitionTests.cs rename to Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InteractionDefinitionTests.cs index 683cc18c0f0..d53f5239caa 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_02_InteractionDefinitionTests.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InteractionDefinitionTests.cs @@ -8,12 +8,12 @@ namespace Microsoft.MixedReality.Toolkit.Tests.InputSystem { - public class TestFixture_02_InteractionDefinitionTests + public class InteractionDefinitionTests { #region objects [Test] - public void Test01_TestObjectChanged() + public void TestObjectChanged() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.Raw, DeviceInputType.None, MixedRealityInputAction.None); var testValue1 = (object)1f; @@ -46,7 +46,7 @@ public void Test01_TestObjectChanged() } [Test] - public void Test02_TestObjectNoChange() + public void TestObjectNoChange() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.Raw, DeviceInputType.None, MixedRealityInputAction.None); var testValue = new object(); @@ -86,7 +86,7 @@ public void Test02_TestObjectNoChange() #region bools [Test] - public void Test03_TestBoolChanged() + public void TestBoolChanged() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.Digital, DeviceInputType.None, MixedRealityInputAction.None); var testValue1 = true; @@ -119,7 +119,7 @@ public void Test03_TestBoolChanged() } [Test] - public void Test04_TestBoolNoChange() + public void TestBoolNoChange() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.Digital, DeviceInputType.None, MixedRealityInputAction.None); var testValue = true; @@ -147,7 +147,7 @@ public void Test04_TestBoolNoChange() #region float [Test] - public void Test05_TestFloatChanged() + public void TestFloatChanged() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.SingleAxis, DeviceInputType.None, MixedRealityInputAction.None); var testValue1 = 1f; @@ -178,7 +178,7 @@ public void Test05_TestFloatChanged() } [Test] - public void Test06_TestFloatNoChange() + public void TestFloatNoChange() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.SingleAxis, DeviceInputType.None, MixedRealityInputAction.None); var testValue = 1f; @@ -206,7 +206,7 @@ public void Test06_TestFloatNoChange() #region Vector2 [Test] - public void Test07_TestVector2() + public void TestVector2() { bool[] invertAxisValues = { true, false }; Vector2[] vectorValues = { new Vector2(1, 1), new Vector2(1, -1) }; @@ -217,13 +217,13 @@ public void Test07_TestVector2() { foreach (var value in vectorValues) { - Test07_TestVector2_internal(invertXAxis, invertYAxis, value); + TestVector2Internal(invertXAxis, invertYAxis, value); } } } } - private static void Test07_TestVector2_internal(bool invertXAxis, bool invertYAxis, Vector2 vectorValue) + private static void TestVector2Internal(bool invertXAxis, bool invertYAxis, Vector2 vectorValue) { string msg = string.Format("invertXAxis: {0}, invertYAxis: {1}, vectorValue: {2}", invertXAxis, invertYAxis, vectorValue); @@ -254,7 +254,7 @@ private static void Test07_TestVector2_internal(bool invertXAxis, bool invertYAx #region Vector3 [Test] - public void Test09_TestVector3Changed() + public void TestVector3Changed() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.ThreeDofPosition, DeviceInputType.None, MixedRealityInputAction.None); var testValue1 = Vector3.one; @@ -285,7 +285,7 @@ public void Test09_TestVector3Changed() } [Test] - public void Test10_TestVector3NoChange() + public void TestVector3NoChange() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.ThreeDofPosition, DeviceInputType.None, MixedRealityInputAction.None); var testValue = Vector3.one; @@ -313,7 +313,7 @@ public void Test10_TestVector3NoChange() #region Quaternion [Test] - public void Test11_TestQuaternionChanged() + public void TestQuaternionChanged() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.ThreeDofRotation, DeviceInputType.None, MixedRealityInputAction.None); var testValue1 = Quaternion.Euler(45f, 45f, 45f); @@ -344,7 +344,7 @@ public void Test11_TestQuaternionChanged() } [Test] - public void Test12_TestQuaternionNoChange() + public void TestQuaternionNoChange() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.ThreeDofRotation, DeviceInputType.None, MixedRealityInputAction.None); var testValue = Quaternion.Euler(45f, 45f, 45f); @@ -372,7 +372,7 @@ public void Test12_TestQuaternionNoChange() #region MixedRealityPose [Test] - public void Test13_TestMixedRealityPoseChanged() + public void TestMixedRealityPoseChanged() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.SixDof, DeviceInputType.None, MixedRealityInputAction.None); var testValue1 = new MixedRealityPose(Vector3.up, Quaternion.identity); @@ -403,7 +403,7 @@ public void Test13_TestMixedRealityPoseChanged() } [Test] - public void Test14_TesMixedRealityPoseNoChange() + public void TesMixedRealityPoseNoChange() { var interaction = new MixedRealityInteractionMapping(1, string.Empty, AxisType.SixDof, DeviceInputType.None, MixedRealityInputAction.None); var testValue = new MixedRealityPose(Vector3.up, Quaternion.identity); @@ -431,7 +431,7 @@ public void Test14_TesMixedRealityPoseNoChange() #region Interaction Array Tests [Test] - public void Test15_InteractionArrayObject() + public void InteractionArrayObject() { var interactions = new[] { @@ -471,7 +471,7 @@ public void Test15_InteractionArrayObject() } [Test] - public void Test16_InteractionArrayBool() + public void InteractionArrayBool() { var interactions = new[] { @@ -511,7 +511,7 @@ public void Test16_InteractionArrayBool() } [Test] - public void Test17_InteractionArrayFloat() + public void InteractionArrayFloat() { var interactions = new[] { @@ -549,7 +549,7 @@ public void Test17_InteractionArrayFloat() } [Test] - public void Test18_InteractionArrayVector2() + public void InteractionArrayVector2() { var interactions = new[] { @@ -587,7 +587,7 @@ public void Test18_InteractionArrayVector2() } [Test] - public void Test19_InteractionArrayVector3() + public void InteractionArrayVector3() { var interactions = new[] { @@ -625,7 +625,7 @@ public void Test19_InteractionArrayVector3() } [Test] - public void Test20_InteractionArrayQuaternion() + public void InteractionArrayQuaternion() { var interactions = new[] { @@ -663,7 +663,7 @@ public void Test20_InteractionArrayQuaternion() } [Test] - public void Test21_InteractionArrayMixedRealityPose() + public void InteractionArrayMixedRealityPose() { var interactions = new[] { diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_02_InteractionDefinitionTests.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InteractionDefinitionTests.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_02_InteractionDefinitionTests.cs.meta rename to Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/InteractionDefinitionTests.cs.meta diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_03_InputSystemTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_03_InputSystemTests.cs deleted file mode 100644 index e5510a12292..00000000000 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_03_InputSystemTests.cs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using Microsoft.MixedReality.Toolkit.Input; -using NUnit.Framework; -using UnityEngine; -using UnityEngine.TestTools; - -namespace Microsoft.MixedReality.Toolkit.Tests.InputSystem -{ - public class TestFixture_03_InputSystemTests - { - [TearDown] - public void TearDown() - { - TestUtilities.ShutdownMixedRealityToolkit(); - } - - [Test] - public void Test01_CreateMixedRealityInputSystem() - { - TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); - - // Create a Input System Profiles - var inputSystemProfile = ScriptableObject.CreateInstance(); - inputSystemProfile.FocusProviderType = typeof(FocusProvider); - inputSystemProfile.RaycastProviderType = typeof(DefaultRaycastProvider); - inputSystemProfile.InputActionsProfile = ScriptableObject.CreateInstance(); - inputSystemProfile.InputActionRulesProfile = ScriptableObject.CreateInstance(); - inputSystemProfile.PointerProfile = ScriptableObject.CreateInstance(); - inputSystemProfile.PointerProfile.GazeProviderType = typeof(GazeProvider); - inputSystemProfile.GesturesProfile = ScriptableObject.CreateInstance(); - inputSystemProfile.SpeechCommandsProfile = ScriptableObject.CreateInstance(); - inputSystemProfile.ControllerVisualizationProfile = ScriptableObject.CreateInstance(); - inputSystemProfile.ControllerMappingProfile = ScriptableObject.CreateInstance(); - - MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile = inputSystemProfile; - - // Add Input System - bool didRegister = MixedRealityToolkit.Instance.RegisterService(new MixedRealityInputSystem(MixedRealityToolkit.Instance, MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile)); - - // Tests - Assert.IsTrue(didRegister); - Assert.AreEqual(1, MixedRealityServiceRegistry.GetAllServices().Count); - Assert.IsNotNull(MixedRealityToolkit.Instance.GetService()); - } - - [Test] - public void Test02_TestGetMixedRealityInputSystem() - { - TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); - - // Retrieve Input System - IMixedRealityInputSystem inputSystem = null; - MixedRealityServiceRegistry.TryGetService(out inputSystem); - - // Tests - Assert.IsNotNull(inputSystem); - } - - [Test] - public void Test03_TestMixedRealityInputSystemDoesNotExist() - { - TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); - - // Check for Input System - var inputSystemExists = MixedRealityToolkit.Instance.IsServiceRegistered(); - - // Tests - Assert.IsFalse(inputSystemExists); - } - - [Test] - public void Test04_TestMixedRealityInputSystemExists() - { - TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); - - // Check for Input System - var inputSystemExists = MixedRealityToolkit.Instance.IsServiceRegistered(); - - // Tests - Assert.IsTrue(inputSystemExists); - } - - [Test] - public void Test05_TestMixedRealityInputSystemDataProviders() - { - TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); - - // Check for Input System - var inputSystem = MixedRealityToolkit.Instance.GetService(); - Assert.IsNotNull(inputSystem); - - var dataProviderAccess = (inputSystem as IMixedRealityDataProviderAccess); - Assert.IsNotNull(dataProviderAccess); - - // Tests - Assert.IsEmpty(dataProviderAccess.GetDataProviders()); - } - - [TearDown] - public void CleanupMixedRealityToolkitTests() - { - TestUtilities.EditorCreateScenes(); - } - } -} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_01_UnityInputManagerHelperTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/UnityInputManagerHelperTests.cs similarity index 97% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_01_UnityInputManagerHelperTests.cs rename to Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/UnityInputManagerHelperTests.cs index c04b1979f33..145d581bda9 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_01_UnityInputManagerHelperTests.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/UnityInputManagerHelperTests.cs @@ -7,10 +7,10 @@ namespace Microsoft.MixedReality.Toolkit.Tests.InputSystem { - public class TestFixture_01_UnityInputManagerHelperTests + public class UnityInputManagerHelperTests { [Test] - public void Test01_TestAddCustomMappings() + public void TestAddCustomMappings() { InputMappingAxisUtility.CheckUnityInputManagerMappings(ControllerMappingLibrary.UnityInputManagerAxes); @@ -40,7 +40,7 @@ public void Test01_TestAddCustomMappings() } [Test] - public void Test02_TestRemoveCustomMappings() + public void TestRemoveCustomMappings() { InputMappingAxisUtility.RemoveMappings(ControllerMappingLibrary.UnityInputManagerAxes); diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_01_UnityInputManagerHelperTests.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/UnityInputManagerHelperTests.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/TestFixture_01_UnityInputManagerHelperTests.cs.meta rename to Assets/MixedRealityToolkit.Tests/EditModeTests/InputSystem/UnityInputManagerHelperTests.cs.meta diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Microsoft.MixedReality.Toolkit.Tests.EditModeTests.asmdef b/Assets/MixedRealityToolkit.Tests/EditModeTests/Microsoft.MixedReality.Toolkit.Tests.EditModeTests.asmdef index 79a2b86d568..50e8b7c210e 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Microsoft.MixedReality.Toolkit.Tests.EditModeTests.asmdef +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Microsoft.MixedReality.Toolkit.Tests.EditModeTests.asmdef @@ -8,9 +8,11 @@ "Microsoft.MixedReality.Toolkit.SDK", "Microsoft.MixedReality.Toolkit.Services.InputSystem", "Microsoft.MixedReality.Toolkit.Services.InputSimulation", + "Microsoft.MixedReality.Toolkit.Services.SpatialAwarenessSystem", "Microsoft.MixedReality.Toolkit.Tests", "Microsoft.MixedReality.Toolkit.Examples", - "Microsoft.MixedReality.Toolkit.Tools" + "Microsoft.MixedReality.Toolkit.Tools", + "Microsoft.MixedReality.Toolkit.Providers.OpenVR" ], "optionalUnityReferences": [ "TestAssemblies" diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider2.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/BaseTestExtensionService.cs similarity index 59% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider2.cs rename to Assets/MixedRealityToolkit.Tests/EditModeTests/Services/BaseTestExtensionService.cs index 740940dca3d..080d1921670 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider2.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/BaseTestExtensionService.cs @@ -4,15 +4,18 @@ namespace Microsoft.MixedReality.Toolkit.Tests.Services { - internal class TestDataProvider2 : BaseDataProvider, ITestDataProvider2 + /// + /// A base class for test extension services. + /// + internal abstract class BaseTestExtensionService : BaseExtensionService { - public TestDataProvider2( + public BaseTestExtensionService( IMixedRealityServiceRegistrar registrar, - IMixedRealityService service, string name, - uint priority) : base(registrar, service, name, priority) { } + uint priority, + BaseMixedRealityProfile profile) : base(registrar, name, priority, profile) { } - public bool IsEnabled { get; private set; } + public bool IsEnabled { get; private set; } public override void Enable() { diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/BaseTestExtensionService.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/BaseTestExtensionService.cs.meta new file mode 100644 index 00000000000..c476a24d583 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/BaseTestExtensionService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7600bde8a525f664fbcda11fe0d23104 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService1.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService1.cs index 62450921c33..055483b23eb 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService1.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService1.cs @@ -4,5 +4,8 @@ namespace Microsoft.MixedReality.Toolkit.Tests.Services { + /// + /// An empty extension service used for testing. + /// internal interface ITestExtensionService1 : IMixedRealityExtensionService, ITestService { } } diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService2.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService2.cs index b654288c8ac..7bcdb5e96ce 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService2.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService2.cs @@ -4,5 +4,8 @@ namespace Microsoft.MixedReality.Toolkit.Tests.Services { + /// + /// An empty extension service used for testing. + /// internal interface ITestExtensionService2 : IMixedRealityExtensionService, ITestService { } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService3.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService3.cs new file mode 100644 index 00000000000..ad936982964 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService3.cs @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + + +namespace Microsoft.MixedReality.Toolkit.Tests.Services +{ + /// + /// An empty extension service used for testing. + /// + internal interface ITestExtensionService3 : IMixedRealityExtensionService, ITestService { } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService3.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService3.cs.meta new file mode 100644 index 00000000000..195988dd9bc --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestExtensionService3.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b6d95e2f35b94af458f51b7244ecc584 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestDataProvider2.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestInputDataProvider.cs similarity index 57% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestDataProvider2.cs rename to Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestInputDataProvider.cs index 8da9bb8b4f0..c059da6e3fb 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestDataProvider2.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestInputDataProvider.cs @@ -2,9 +2,11 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. +using Microsoft.MixedReality.Toolkit.Input; + namespace Microsoft.MixedReality.Toolkit.Tests.Services { - internal interface ITestDataProvider2 : IMixedRealityDataProvider, ITestService + internal interface ITestInputDataProvider : IMixedRealityDataProvider, ITestService, IMixedRealityInputDeviceManager { } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestDataProvider2.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestInputDataProvider.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestDataProvider2.cs.meta rename to Assets/MixedRealityToolkit.Tests/EditModeTests/Services/ITestInputDataProvider.cs.meta diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestBaseDataProvider.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestBaseDataProvider.cs new file mode 100644 index 00000000000..bd70ea75f95 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestBaseDataProvider.cs @@ -0,0 +1,56 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Tests.Services +{ + /// + /// Base class for test data providers + /// + public class TestBaseDataProvider : BaseDataProvider + { + public TestBaseDataProvider( + IMixedRealityServiceRegistrar registrar, + IMixedRealityService service, + string name = null, + uint priority = DefaultPriority, + BaseMixedRealityProfile profile = null) + : base(registrar, service, name, priority, profile) { } + + public bool IsEnabled { get; private set; } + public bool IsInitialized { get; private set; } + + public override void Initialize() + { + base.Initialize(); + + IsInitialized = true; + } + + public override void Reset() + { + base.Reset(); + Debug.Log("TestDataProvider Reset"); + IsInitialized = false; + } + + public override void Enable() + { + base.Enable(); + + IsEnabled = true; + } + + public override void Disable() + { + base.Disable(); + + IsEnabled = false; + } + + public override void Destroy() + { + base.Destroy(); + } + } +} diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestBaseDataProvider.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestBaseDataProvider.cs.meta new file mode 100644 index 00000000000..5a0e279f4bd --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestBaseDataProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 766c0e481ab03de4ea250a06699c25d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider1.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider1.cs index 6a3e40ad5b4..3e1ba725b7b 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider1.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider1.cs @@ -1,31 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. - namespace Microsoft.MixedReality.Toolkit.Tests.Services { - internal class TestDataProvider1 : BaseDataProvider, ITestDataProvider1 + internal class TestDataProvider1 : TestBaseDataProvider, ITestDataProvider1 { public TestDataProvider1( IMixedRealityServiceRegistrar registrar, IMixedRealityService service, string name, uint priority) : base(registrar, service, name, priority) { } - - public bool IsEnabled { get; private set; } - - public override void Enable() - { - IsEnabled = true; - } - - public override void Disable() - { - IsEnabled = false; - } - - public override void Destroy() - { - } } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService1.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService1.cs index ccf582c8c4b..06ed1753c06 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService1.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService1.cs @@ -4,28 +4,12 @@ namespace Microsoft.MixedReality.Toolkit.Tests.Services { - internal class TestExtensionService1 : BaseExtensionService, ITestExtensionService1 + internal class TestExtensionService1 : BaseTestExtensionService, ITestExtensionService1 { public TestExtensionService1( IMixedRealityServiceRegistrar registrar, string name, uint priority, BaseMixedRealityProfile profile) : base(registrar, name, priority, profile) { } - - public bool IsEnabled { get; private set; } - - public override void Enable() - { - IsEnabled = true; - } - - public override void Disable() - { - IsEnabled = false; - } - - public override void Destroy() - { - } } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService2.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService2.cs index 7db2ec3633b..07d4d721bc6 100644 --- a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService2.cs +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService2.cs @@ -4,28 +4,12 @@ namespace Microsoft.MixedReality.Toolkit.Tests.Services { - internal class TestExtensionService2 : BaseExtensionService, ITestExtensionService2 + internal class TestExtensionService2 : BaseTestExtensionService, ITestExtensionService2 { public TestExtensionService2( IMixedRealityServiceRegistrar registrar, string name, uint priority, BaseMixedRealityProfile profile) : base(registrar, name, priority, profile) { } - - public bool IsEnabled { get; private set; } - - public override void Enable() - { - IsEnabled = true; - } - - public override void Disable() - { - IsEnabled = false; - } - - public override void Destroy() - { - } } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService3.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService3.cs new file mode 100644 index 00000000000..80e10c80aef --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService3.cs @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + + +namespace Microsoft.MixedReality.Toolkit.Tests.Services +{ + internal class TestExtensionService3 : BaseTestExtensionService, ITestExtensionService3 + { + public TestExtensionService3( + IMixedRealityServiceRegistrar registrar, + string name, + uint priority, + BaseMixedRealityProfile profile) : base(registrar, name, priority, profile) { } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService3.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService3.cs.meta new file mode 100644 index 00000000000..a63bc7fffd7 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestExtensionService3.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9538552f6f452364e91f213efa5b8f36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestInputDataProvider.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestInputDataProvider.cs new file mode 100644 index 00000000000..bf028f9e781 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestInputDataProvider.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.Input; +using Microsoft.MixedReality.Toolkit.Utilities; + +namespace Microsoft.MixedReality.Toolkit.Tests.Services +{ + /// + /// Dummy test IMixedRealityInputDeviceManager implementation only used for testing + /// + [MixedRealityDataProvider( + typeof(IMixedRealityInputSystem), + (SupportedPlatforms)(-1), // All platforms supported by Unity + "Test Input Data Provider")] + public class TestInputDataProvider : TestBaseDataProvider, ITestInputDataProvider + { + public TestInputDataProvider( + IMixedRealityServiceRegistrar registrar, + IMixedRealityInputSystem inputSystem, + string name, + uint priority, + BaseMixedRealityProfile profile) : base(registrar, inputSystem, name, priority, profile) { } + + public IMixedRealityController[] GetActiveControllers() + { + return null; + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider2.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestInputDataProvider.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestDataProvider2.cs.meta rename to Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestInputDataProvider.cs.meta diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles.meta new file mode 100644 index 00000000000..b1b6b589e19 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9dd81e0e214f44c46bb2754413687bfc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealityInputSystemProfile.asset b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealityInputSystemProfile.asset new file mode 100644 index 00000000000..9dd40c4e285 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealityInputSystemProfile.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b71cb900fa9dec5488df2deb180db58f, type: 3} + m_Name: TestMixedRealityInputSystemProfile + m_EditorClassIdentifier: + isCustomProfile: 0 + dataProviderConfigurations: + - componentType: + reference: Microsoft.MixedReality.Toolkit.Tests.Services.TestInputDataProvider, + Microsoft.MixedReality.Toolkit.Tests.EditModeTests + componentName: Test Input Data Provider + priority: 0 + runtimePlatform: -1 + deviceManagerProfile: {fileID: 0} + focusProviderType: + reference: Microsoft.MixedReality.Toolkit.Input.FocusProvider, Microsoft.MixedReality.Toolkit.Services.InputSystem + raycastProviderType: + reference: Microsoft.MixedReality.Toolkit.Input.DefaultRaycastProvider, Microsoft.MixedReality.Toolkit.Services.InputSystem + focusQueryBufferSize: 128 + inputActionsProfile: {fileID: 11400000, guid: 723eb97b02944311b92861f473eee53e, + type: 2} + inputActionRulesProfile: {fileID: 11400000, guid: 03945385d89102f41855bc8f5116b199, + type: 2} + pointerProfile: {fileID: 11400000, guid: 48aa63a9725047b28d4137fd0834bc31, type: 2} + gesturesProfile: {fileID: 11400000, guid: bd7829a9b29409045a745b5a18299291, type: 2} + speechCommandsProfile: {fileID: 11400000, guid: e8d0393e66374dae9646851a57dc6bc1, + type: 2} + enableControllerMapping: 0 + controllerMappingProfile: {fileID: 11400000, guid: 39ded1fd0711a0c448413d0e1ec4f7f3, + type: 2} + controllerVisualizationProfile: {fileID: 11400000, guid: 345c06fdf3732db46b96299bd3cba653, + type: 2} + handTrackingProfile: {fileID: 11400000, guid: 7f1e3cd673742f94ca860ac7ae733024, + type: 2} diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealityInputSystemProfile.asset.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealityInputSystemProfile.asset.meta new file mode 100644 index 00000000000..56ccc9f6f4e --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealityInputSystemProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9c5be3fea81382342b84623b5b225012 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealitySpatialAwarenessSystemProfile.asset b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealitySpatialAwarenessSystemProfile.asset new file mode 100644 index 00000000000..77d4a38204a --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealitySpatialAwarenessSystemProfile.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 19f279aded72cb741b4de89a54359dd4, type: 3} + m_Name: TestMixedRealitySpatialAwarenessSystemProfile + m_EditorClassIdentifier: + isCustomProfile: 0 + observerConfigurations: + - componentType: + reference: Microsoft.MixedReality.Toolkit.Tests.Services.TestSpatialAwarenessDataProvider, + Microsoft.MixedReality.Toolkit.Tests.EditModeTests + componentName: Test Spatial Awareness Data Provider + priority: 0 + runtimePlatform: -1 + observerProfile: {fileID: 11400000, guid: 8be0bcd2117dd214da41ed98f0def2e3, type: 2} diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealitySpatialAwarenessSystemProfile.asset.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealitySpatialAwarenessSystemProfile.asset.meta new file mode 100644 index 00000000000..64d22c97ea3 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealitySpatialAwarenessSystemProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 757d72d70f9c56144b05346288682e00 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestSpatialAwarenessDataProvider.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestSpatialAwarenessDataProvider.cs new file mode 100644 index 00000000000..f146ca85ddc --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestSpatialAwarenessDataProvider.cs @@ -0,0 +1,61 @@ + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System.Collections.Generic; +using Microsoft.MixedReality.Toolkit.SpatialAwareness; +using Microsoft.MixedReality.Toolkit.Utilities; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Tests.Services +{ + internal interface ITestSpatialAwarenessDataProvider : IMixedRealityDataProvider, ITestService, IMixedRealitySpatialAwarenessObserver, IMixedRealitySpatialAwarenessMeshObserver + { + } + + /// + /// Dummy test IMixedRealitySpatialAwarenessObserver implementation only used for testing + /// + [MixedRealityDataProvider( + typeof(IMixedRealitySpatialAwarenessSystem), + (SupportedPlatforms)(-1), // All platforms supported by Unity + "Test Spatial Awareness Data Provider", + "Profiles/DefaultMixedRealitySpatialAwarenessMeshObserverProfile.asset", + "MixedRealityToolkit.SDK")] + public class TestSpatialAwarenessDataProvider : TestBaseDataProvider, ITestSpatialAwarenessDataProvider + { + public TestSpatialAwarenessDataProvider( + IMixedRealityServiceRegistrar registrar, + IMixedRealitySpatialAwarenessSystem spatialAwarenessSystem, + string name, + uint priority, + BaseMixedRealityProfile profile) : base(registrar, spatialAwarenessSystem, name, priority, profile) { } + + public AutoStartBehavior StartupBehavior { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public int DefaultPhysicsLayer => throw new System.NotImplementedException(); + public bool IsRunning => throw new System.NotImplementedException(); + public bool IsStationaryObserver { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public VolumeType ObserverVolumeType { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public Vector3 ObservationExtents { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public Quaternion ObserverRotation { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public Vector3 ObserverOrigin { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public float UpdateInterval { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public uint SourceId => throw new System.NotImplementedException(); + public string SourceName => throw new System.NotImplementedException(); + public SpatialAwarenessMeshDisplayOptions DisplayOption { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public SpatialAwarenessMeshLevelOfDetail LevelOfDetail { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public IReadOnlyDictionary Meshes => throw new System.NotImplementedException(); + public int MeshPhysicsLayer { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public int MeshPhysicsLayerMask => throw new System.NotImplementedException(); + public bool RecalculateNormals { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public int TrianglesPerCubicMeter { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public Material OcclusionMaterial { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + public Material VisibleMaterial { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + + public void Resume() { throw new System.NotImplementedException(); } + public void Suspend() { throw new System.NotImplementedException(); } + public void ClearObservations() { throw new System.NotImplementedException(); } + public new bool Equals(object x, object y) { throw new System.NotImplementedException(); } + public int GetHashCode(object obj) { throw new System.NotImplementedException(); } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestSpatialAwarenessDataProvider.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestSpatialAwarenessDataProvider.cs.meta new file mode 100644 index 00000000000..39143cbd95e --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestSpatialAwarenessDataProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f80633ca2e1cbd84ba0420a5a4420b29 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness.meta new file mode 100644 index 00000000000..083bf5c61e4 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86f73f89baf8f2e4ca7c930160b89e03 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness/SpatialAwarenessSystemTests.cs b/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness/SpatialAwarenessSystemTests.cs new file mode 100644 index 00000000000..df6d5554eca --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness/SpatialAwarenessSystemTests.cs @@ -0,0 +1,120 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Microsoft.MixedReality.Toolkit.SpatialAwareness; +using Microsoft.MixedReality.Toolkit.Tests.Services; +using NUnit.Framework; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; + +namespace Microsoft.MixedReality.Toolkit.Tests.SpatialAwarenessSystem +{ + public class SpatialAwarenessSystemTests + { + private const string TestSpatialAwarenessSysteProfilePath = "Assets/MixedRealityToolkit.Tests/EditModeTests/Services/TestProfiles/TestMixedRealitySpatialAwarenessSystemProfile.asset"; + + [TearDown] + public void TearDown() + { + TestUtilities.ShutdownMixedRealityToolkit(); + } + + [Test] + public void TestGetSpatialAwarenessSystem() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); + + // Retrieve Spatial Awareness System + IMixedRealitySpatialAwarenessSystem spatialAwarenessSystem = null; + MixedRealityServiceRegistry.TryGetService(out spatialAwarenessSystem); + + // Tests + Assert.IsNotNull(spatialAwarenessSystem); + } + + [Test] + public void TestSpatialAwarenessSystemDoesNotExist() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); + + // Check for Spatial Awareness System + Assert.IsFalse(MixedRealityToolkit.Instance.IsServiceRegistered()); + } + + [Test] + public void TestSpatialAwarenessSystemExists() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); + + // Check for Spatial Awareness System + Assert.IsTrue(MixedRealityToolkit.Instance.IsServiceRegistered()); + } + + [Test] + public void TestEmptyDataProvider() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(true); + + // Check for Spatial Awareness System + var spatialAwarenessSystem = MixedRealityToolkit.Instance.GetService(); + var dataProviderAccess = spatialAwarenessSystem as IMixedRealityDataProviderAccess; + + Assert.IsNotNull(dataProviderAccess); + Assert.IsEmpty(dataProviderAccess.GetDataProviders()); + } + + [Test] + public void TestDataProviderRegisteration() + { + TestUtilities.InitializeMixedRealityToolkitAndCreateScenes(); + MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessSystemProfile = AssetDatabase.LoadAssetAtPath(TestSpatialAwarenessSysteProfilePath); + + var spatialAwarenessSystem = new MixedRealitySpatialAwarenessSystem(MixedRealityToolkit.Instance, MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessSystemProfile); + + Assert.IsTrue(MixedRealityToolkit.Instance.RegisterService(spatialAwarenessSystem)); + + // Since EditMode, we have to auto-enable MRTK spatial awareness system ourselves + MixedRealityToolkit.Instance.EnableAllServicesByType(typeof(IMixedRealitySpatialAwarenessSystem)); + + Assert.AreEqual(1, MixedRealityServiceRegistry.GetAllServices().Count); + Assert.IsNotNull(MixedRealityToolkit.Instance.GetService()); + + var dataProviderAccess = (spatialAwarenessSystem as IMixedRealityDataProviderAccess); + Assert.IsNotNull(dataProviderAccess); + + var dataProvider = dataProviderAccess.GetDataProvider(); + Assert.IsNotNull(dataProvider); + Assert.IsTrue(dataProvider.IsInitialized); + Assert.IsTrue(dataProvider.IsEnabled); + + spatialAwarenessSystem.Disable(); + Assert.IsFalse(dataProvider.IsEnabled); + + spatialAwarenessSystem.Enable(); + // We still have reference to old dataprovider, check still disabled + Assert.IsFalse(dataProvider.IsEnabled); + + // dataProvider has been unregistered in Disable and new one created by Enable. + dataProvider = dataProviderAccess.GetDataProvider(); + Assert.IsNotNull(dataProvider); + Assert.IsTrue(dataProvider.IsEnabled); + + spatialAwarenessSystem.Reset(); + LogAssert.Expect(LogType.Log, "TestDataProvider Reset"); + Assert.IsFalse(dataProvider.IsEnabled); + + // dataProvider has been unregistered and newly created in Reset + dataProvider = dataProviderAccess.GetDataProvider(); + Assert.IsNotNull(dataProvider); + Assert.IsTrue(dataProvider.IsInitialized); + } + + [TearDown] + public void CleanupMixedRealityToolkitTests() + { + TestUtilities.EditorCreateScenes(); + } + + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness/SpatialAwarenessSystemTests.cs.meta b/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness/SpatialAwarenessSystemTests.cs.meta new file mode 100644 index 00000000000..07d36e25bc1 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/EditModeTests/SpatialAwareness/SpatialAwarenessSystemTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d815509f20a6e8c459bd2e305752a784 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/MRTK.Tests.sentinel b/Assets/MixedRealityToolkit.Tests/MRTK.Tests.sentinel new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Assets/MixedRealityToolkit.Tests/MRTK.Tests.sentinel.meta b/Assets/MixedRealityToolkit.Tests/MRTK.Tests.sentinel.meta new file mode 100644 index 00000000000..9c5d29ff9dd --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/MRTK.Tests.sentinel.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 602691336a9ce9749a76d54221dcc85b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/Microsoft.MixedReality.Toolkit.Tests.asmdef b/Assets/MixedRealityToolkit.Tests/Microsoft.MixedReality.Toolkit.Tests.asmdef index bb6ed349070..1dabea6c0a8 100644 --- a/Assets/MixedRealityToolkit.Tests/Microsoft.MixedReality.Toolkit.Tests.asmdef +++ b/Assets/MixedRealityToolkit.Tests/Microsoft.MixedReality.Toolkit.Tests.asmdef @@ -1,19 +1,20 @@ -{ - "name": "Microsoft.MixedReality.Toolkit.Tests", - "references": [ - "Microsoft.MixedReality.Toolkit", - "Microsoft.MixedReality.Toolkit.Editor.ClassExtensions", - "Microsoft.MixedReality.Toolkit.SDK", - "Microsoft.MixedReality.Toolkit.Services.InputSimulation" - ], - "optionalUnityReferences": [ - "TestAssemblies" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [] +{ + "name": "Microsoft.MixedReality.Toolkit.Tests", + "references": [ + "Microsoft.MixedReality.Toolkit", + "Microsoft.MixedReality.Toolkit.Editor.ClassExtensions", + "Microsoft.MixedReality.Toolkit.SDK", + "Microsoft.MixedReality.Toolkit.Services.InputSimulation", + "Microsoft.MixedReality.Toolkit.Editor.Utilities" + ], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/MixedReality.Toolkit.Tests.nuspec b/Assets/MixedRealityToolkit.Tests/MixedReality.Toolkit.Tests.nuspec index b1ffa45bcec..f2a7d3efbef 100644 --- a/Assets/MixedRealityToolkit.Tests/MixedReality.Toolkit.Tests.nuspec +++ b/Assets/MixedRealityToolkit.Tests/MixedReality.Toolkit.Tests.nuspec @@ -15,6 +15,9 @@ + + + @@ -23,5 +26,7 @@ + + \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/BaseCursorTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/BaseCursorTests.cs index 595309b22ca..b2ee4e918ec 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/BaseCursorTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/BaseCursorTests.cs @@ -42,6 +42,11 @@ public void SetUp() // will roughly wait for frame to also pass. Application.targetFrameRate = 50; + // Add a second cube in the background, sometimes physics checks fail with just one collider + // in scene + GameObject backgroundCube = GameObject.CreatePrimitive(PrimitiveType.Cube); + backgroundCube.transform.position = Vector3.forward * 30; + cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.transform.localPosition = new Vector3(0, 0, 2); cube.transform.localScale = new Vector3(.2f, .2f, .2f); @@ -128,10 +133,8 @@ public IEnumerator GestureCursorState() var inputSystem = PlayModeTestUtilities.GetInputSystem(); var iss = PlayModeTestUtilities.GetInputSimulationService(); - var oldIsp = iss.InputSimulationProfile; - var isp = ScriptableObject.CreateInstance(); - isp.HandSimulationMode = HandSimulationMode.Gestures; - iss.InputSimulationProfile = isp; + var oldHandSimMode = iss.HandSimulationMode; + iss.HandSimulationMode = HandSimulationMode.Gestures; Vector3 underPointerPos = new Vector3(0, 0, 2); Vector3 abovePointerPos = new Vector3(0, -2, 2); @@ -204,7 +207,7 @@ public IEnumerator GestureCursorState() VerifyCursorState(inputSystem.GazeProvider.GazeCursor, CursorStateEnum.Select); // Restore the input simulation profile - iss.InputSimulationProfile = oldIsp; + iss.HandSimulationMode = oldHandSimMode; yield return null; } @@ -228,7 +231,7 @@ public IEnumerator CursorContextMove() yield return new WaitForFixedUpdate(); yield return null; - // Move cube back to original postion (described above) + // Move cube back to original position (described above) cube.transform.localPosition = new Vector3(0, 0, 2); yield return new WaitForFixedUpdate(); yield return null; diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/BoundingBoxTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/BoundingBoxTests.cs index 6cf7a9b1181..2de06d8fee1 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/BoundingBoxTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/BoundingBoxTests.cs @@ -41,7 +41,6 @@ public void ShutdownMrtk() /// Instantiates a bounding box at 0, 0, -1.5f /// box is at scale .5, .5, .5 /// - /// private BoundingBox InstantiateSceneAndDefaultBbox() { var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); @@ -65,7 +64,6 @@ private BoundingBox InstantiateSceneAndDefaultBbox() /// /// Verify that we can instantiate bounding box at runtime /// - /// [UnityTest] public IEnumerator BBoxInstantiate() { @@ -81,7 +79,6 @@ public IEnumerator BBoxInstantiate() /// /// Test that if we update the bounds of a box collider, that the corners will move correctly /// - /// [UnityTest] public IEnumerator BBoxOverride() { @@ -112,27 +109,28 @@ public IEnumerator BBoxOverride() /// /// Uses near interaction to scale the bounding box by directly grabbing corner /// - /// [UnityTest] public IEnumerator ScaleViaNearInteration() { + const int numSteps = 2; var bbox = InstantiateSceneAndDefaultBbox(); + bbox.ScaleHandleSize = 0.1f; yield return null; var bounds = bbox.GetComponent().bounds; - Debug.Assert(bounds.center == new Vector3(0, 0, 1.5f)); - Debug.Assert(bounds.size == new Vector3(.5f, .5f, .5f)); + Assert.AreEqual(new Vector3(0, 0, 1.5f), bounds.center); + Assert.AreEqual(new Vector3(.5f, .5f, .5f), bounds.size); var inputSimulationService = PlayModeTestUtilities.GetInputSimulationService(); // front right corner is corner 3 var frontRightCornerPos = bbox.ScaleCorners[3].transform.position; - Vector3 initialHandPosition = new Vector3(0, 0, 0.5f); - int numSteps = 30; + TestHand rightHand = new TestHand(Handedness.Right); + yield return rightHand.Show(new Vector3(0, 0, 0.5f)); var delta = new Vector3(0.1f, 0.1f, 0f); - yield return PlayModeTestUtilities.ShowHand(Handedness.Right, inputSimulationService, ArticulatedHandPose.GestureId.OpenSteadyGrabPoint, initialHandPosition); - yield return PlayModeTestUtilities.MoveHandFromTo(initialHandPosition, frontRightCornerPos, numSteps, ArticulatedHandPose.GestureId.OpenSteadyGrabPoint, Handedness.Right, inputSimulationService); - yield return PlayModeTestUtilities.MoveHandFromTo(frontRightCornerPos, frontRightCornerPos + delta, numSteps, ArticulatedHandPose.GestureId.Pinch, Handedness.Right, inputSimulationService); + yield return rightHand.MoveTo(frontRightCornerPos, numSteps); + yield return rightHand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return rightHand.Move(delta, numSteps); var endBounds = bbox.GetComponent().bounds; TestUtilities.AssertAboutEqual(endBounds.center, new Vector3(0.033f, 0.033f, 1.467f), "endBounds incorrect center"); @@ -197,7 +195,6 @@ public IEnumerator ScaleMinMax() /// /// Uses far interaction (HoloLens 1 style) to scale the bounding box /// - /// [UnityTest] public IEnumerator ScaleViaHoloLens1Interaction() { @@ -244,7 +241,6 @@ public IEnumerator ScaleViaHoloLens1Interaction() /// Test that changing the transform of the bounding box target (rotation, scale, translation) /// updates the rig bounds /// - /// [UnityTest] public IEnumerator UpdateTransformUpdatesBounds() { @@ -286,12 +282,53 @@ public IEnumerator UpdateTransformUpdatesBounds() GameObject.Destroy(bbox.gameObject); } + /// + /// Ensure that while using BoundingBox, if that object gets + /// deactivated, that BoundingBox no longer transforms that object. + /// + [UnityTest] + public IEnumerator DisableObject() + { + float minScale = 0.5f; + float maxScale = 2f; + + var bbox = InstantiateSceneAndDefaultBbox(); + var scaleHandler = bbox.EnsureComponent(); + scaleHandler.ScaleMinimum = minScale; + scaleHandler.ScaleMaximum = maxScale; + yield return null; + + Vector3 initialScale = bbox.transform.localScale; + + const int numHandSteps = 1; + + Vector3 initialHandPosition = new Vector3(0, 0, 0.5f); + var frontRightCornerPos = bbox.ScaleCorners[3].transform.position; // front right corner is corner 3 + TestHand hand = new TestHand(Handedness.Right); + + // Hands grab object at initial position + yield return hand.Show(initialHandPosition); + yield return hand.SetGesture(ArticulatedHandPose.GestureId.OpenSteadyGrabPoint); + yield return hand.MoveTo(frontRightCornerPos, numHandSteps); + yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + + // Verify that scale works before deactivating + yield return hand.Move(Vector3.right * 0.2f, numHandSteps); + Vector3 afterTransformScale = bbox.transform.localScale; + Assert.AreNotEqual(initialScale, afterTransformScale); + + // Deactivate object and ensure that we don't scale + bbox.gameObject.SetActive(false); + yield return null; + bbox.gameObject.SetActive(true); + yield return hand.Move(Vector3.right * 0.2f, numHandSteps); + Assert.AreEqual(afterTransformScale, bbox.transform.localScale); + } + /// /// Returns the AABB of the bounding box rig (corners, edges) /// that make up the bounding box by using the positions of the corners /// - /// - /// private Bounds GetBoundingBoxRigBounds(BoundingBox bbox) { var corners = bbox.ScaleCorners; diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Components/TestPointer.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Components/TestPointer.cs index 3516c498c1b..3484bc26d6a 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Components/TestPointer.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Components/TestPointer.cs @@ -39,7 +39,6 @@ public override void OnPostSceneQuery() /// Initialize all applicable settings on this pointer from and then set this pointer active, /// so that it will update its in the next . /// - /// public void SetFromTestProxy(FocusRaycastTestProxy testProxy) { if (Rays == null || Rays.Length != testProxy.LineCastResolution) @@ -59,7 +58,7 @@ public void SetFromTestProxy(FocusRaycastTestProxy testProxy) } PrioritizedLayerMasksOverride = testProxy.PrioritizedLayerMasks; - + IsActive = true; } } diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core.meta new file mode 100644 index 00000000000..385fc0ae758 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8aa19e1a38ace94484a13c1fe6c6707 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers.meta new file mode 100644 index 00000000000..0b2ac09e117 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9dce9d382d9d7e4c98aa4927e2480cf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands.meta new file mode 100644 index 00000000000..ca5e0ec4ead --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3bbd26f8d7408741b7ffb55a1fc7397 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands/BaseHandVisualizerTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands/BaseHandVisualizerTests.cs new file mode 100644 index 00000000000..1c3f44ec078 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands/BaseHandVisualizerTests.cs @@ -0,0 +1,168 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if !WINDOWS_UWP +// When the .NET scripting backend is enabled and C# projects are built +// The assembly that this file is part of is still built for the player, +// even though the assembly itself is marked as a test assembly (this is not +// expected because test assemblies should not be included in player builds). +// Because the .NET backend is deprecated in 2018 and removed in 2019 and this +// issue will likely persist for 2018, this issue is worked around by wrapping all +// play mode tests in this check. + +using System.Collections; +using UnityEngine.TestTools; +using NUnit.Framework; +using UnityEngine; +using Microsoft.MixedReality.Toolkit.Input; +using UnityEngine.EventSystems; +using Microsoft.MixedReality.Toolkit.Utilities; + +namespace Microsoft.MixedReality.Toolkit.Tests +{ + public class BaseHandVisualizerTests + { + /// + /// A mock IMixedRealityInputSource, used to test BaseHandVisualizer::OnHandMeshUpdated. + /// + private class MockInputSource : IMixedRealityInputSource + { + public IMixedRealityPointer[] Pointers => throw new System.NotImplementedException(); + public InputSourceType SourceType => throw new System.NotImplementedException(); + public uint SourceId => 0; + + public string SourceName => throw new System.NotImplementedException(); + + public new bool Equals(object x, object y) + { + throw new System.NotImplementedException(); + } + + public int GetHashCode(object obj) + { + throw new System.NotImplementedException(); + } + } + + private class MockController : IMixedRealityController + { + public bool Enabled { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } + + public TrackingState TrackingState => throw new System.NotImplementedException(); + + public Handedness ControllerHandedness => Handedness.None; + + public IMixedRealityInputSource InputSource => throw new System.NotImplementedException(); + + public IMixedRealityControllerVisualizer Visualizer => throw new System.NotImplementedException(); + + public bool IsPositionAvailable => throw new System.NotImplementedException(); + + public bool IsPositionApproximate => throw new System.NotImplementedException(); + + public bool IsRotationAvailable => throw new System.NotImplementedException(); + + public MixedRealityInteractionMapping[] Interactions => throw new System.NotImplementedException(); + + public Vector3 AngularVelocity => throw new System.NotImplementedException(); + + public Vector3 Velocity => throw new System.NotImplementedException(); + + public bool IsInPointingPose => throw new System.NotImplementedException(); + } + + [SetUp] + public void Init() + { + TestUtilities.InitializeMixedRealityToolkit(true); + } + + [TearDown] + public void Shutdown() + { + TestUtilities.ShutdownMixedRealityToolkit(); + } + + /// + /// Validates that OnHandMeshUpdated can be called with hand mesh vertices of different + /// lengths and not crash. + /// + [UnityTest] + public IEnumerator TestOnHandMeshUpdated() + { + // First invoke OnHandMeshUpdated with a hand mesh corresponding + // to a quad, and then invoke it again with a hand mesh + // corresponding to a triangle. The intent to is to verify that + // the hand visualizer can be called with different sized + // input meshes and not crash (which is required on some platforms) + + GameObject baseHandVisualizerGameObject = GameObject.CreatePrimitive(PrimitiveType.Cube); + var baseHandVisualizer = baseHandVisualizerGameObject.AddComponent(); + baseHandVisualizer.Controller = new MockController(); + + baseHandVisualizer.OnHandMeshUpdated(CreateQuadInputEventData()); + baseHandVisualizer.OnHandMeshUpdated(CreateTriangleInputEventData()); + yield return null; + + Object.Destroy(baseHandVisualizer); + Object.Destroy(baseHandVisualizerGameObject); + } + + private static InputEventData CreateTriangleInputEventData() + { + HandMeshInfo handMeshInfo = new HandMeshInfo + { + vertices = new Vector3[] + { + new Vector3(0, 0, 0), + new Vector3(1, 0, 0), + new Vector3(0, 1, 0), + }, + normals = new Vector3[] + { + -Vector3.forward, + -Vector3.forward, + -Vector3.forward, + }, + triangles = new int[] + { + 0, 2, 1 + } + }; + var inputEventData = new InputEventData(EventSystem.current); + inputEventData.Initialize(new MockInputSource(), Handedness.None, MixedRealityInputAction.None, handMeshInfo); + return inputEventData; + } + + private static InputEventData CreateQuadInputEventData() + { + HandMeshInfo handMeshInfo = new HandMeshInfo + { + vertices = new Vector3[] + { + new Vector3(0, 0, 0), + new Vector3(1, 0, 0), + new Vector3(0, 1, 0), + new Vector3(1, 1, 0), + }, + normals = new Vector3[] + { + -Vector3.forward, + -Vector3.forward, + -Vector3.forward, + -Vector3.forward, + }, + triangles = new int[] + { + 0, 2, 1, + 2, 3, 1 + } + }; + var inputEventData = new InputEventData(EventSystem.current); + inputEventData.Initialize(new MockInputSource(), Handedness.None, MixedRealityInputAction.None, handMeshInfo); + return inputEventData; + } + } +} + +#endif \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands/BaseHandVisualizerTests.cs.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands/BaseHandVisualizerTests.cs.meta new file mode 100644 index 00000000000..9c5fa6905dd --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Providers/Hands/BaseHandVisualizerTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33a4486286f14fb4fa999050a2f47e8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities.meta new file mode 100644 index 00000000000..48f420301d1 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f12985a06ee17c46a0ff0cb18e47b37 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async.meta new file mode 100644 index 00000000000..4206253eff4 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 548c18b15f8491a47806092d23993541 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async/AsyncCoroutineRunnerTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async/AsyncCoroutineRunnerTests.cs new file mode 100644 index 00000000000..d538c003fa0 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async/AsyncCoroutineRunnerTests.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if !WINDOWS_UWP +// When the .NET scripting backend is enabled and C# projects are built +// The assembly that this file is part of is still built for the player, +// even though the assembly itself is marked as a test assembly (this is not +// expected because test assemblies should not be included in player builds). +// Because the .NET backend is deprecated in 2018 and removed in 2019 and this +// issue will likely persist for 2018, this issue is worked around by wrapping all +// play mode tests in this check. + +using UnityEngine.TestTools; +using UnityEngine; +using Microsoft.MixedReality.Toolkit.Utilities; +using NUnit.Framework; +using System.Collections; + +namespace Microsoft.MixedReality.Toolkit.Tests +{ + public class AsyncCoroutineRunnerTests : BasePlayModeTests + { + /// + /// Validates that the AsyncCoroutineRunner is automatically + /// moved to the root to ensure that it has proper multi-scene lifetime behavior. + /// + [UnityTest] + public IEnumerator TestNonRootParenting() + { + // Set up the AsyncCoroutineRunner to be parented under the MixedRealityWorkspace, + // to validate that the runner will correctly unparent it. + GameObject asyncCoroutineRunner = new GameObject("AsyncCoroutineRunner"); + asyncCoroutineRunner.AddComponent(); + GameObject mixedRealityPlayspace = GameObject.Find("MixedRealityPlayspace"); + asyncCoroutineRunner.transform.parent = mixedRealityPlayspace.transform; + + // Calling AsyncCoroutineRunner.Instance will cause the runner to move + // the to root. + Assert.IsNotNull(AsyncCoroutineRunner.Instance); + Assert.IsNull(asyncCoroutineRunner.transform.parent); + yield return null; + } + } +} + +#endif \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async/AsyncCoroutineRunnerTests.cs.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async/AsyncCoroutineRunnerTests.cs.meta new file mode 100644 index 00000000000..f9974177993 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Core/Utilities/Async/AsyncCoroutineRunnerTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ffa47d2b979deea45b48eea9e09e4f35 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/CoreServicesTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/CoreServicesTests.cs index 09d7d4593b1..e51b685b064 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/CoreServicesTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/CoreServicesTests.cs @@ -29,7 +29,7 @@ public class CoreServicesTests [UnityTest] public IEnumerator TestDynamicServices() { - UnityEngine.Object cameraSystemPrefab = AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit.SDK/Experimental/Features/Camera/Prefabs/CameraSystem.prefab", typeof(UnityEngine.Object)); + UnityEngine.Object cameraSystemPrefab = AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit.SDK/Experimental/ServiceManagers/Camera/Prefabs/CameraSystem.prefab", typeof(UnityEngine.Object)); Assert.IsNull(CoreServices.CameraSystem); GameObject cameraSystem1 = UnityEngine.Object.Instantiate(cameraSystemPrefab) as GameObject; diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/FocusProviderRaycastTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/FocusProviderRaycastTests.cs index 53b2f564600..3575a54e00e 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/FocusProviderRaycastTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/FocusProviderRaycastTests.cs @@ -30,7 +30,6 @@ public class FocusProviderRaycastTests /// then wait for the and Assert that the matches /// the 's . /// - /// [UnityTest] public IEnumerator TestRaycastProxies() { diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/FocusProviderTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/FocusProviderTests.cs index 2cb62372934..8972b46042e 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/FocusProviderTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/FocusProviderTests.cs @@ -17,6 +17,7 @@ using Microsoft.MixedReality.Toolkit.Input; using Microsoft.MixedReality.Toolkit.Utilities; using System.Linq; +using Microsoft.MixedReality.Toolkit.UI; namespace Microsoft.MixedReality.Toolkit.Tests { @@ -36,7 +37,6 @@ public void TearDown() /// /// - /// [UnityTest] public IEnumerator TestGazeCursorArticulated() { @@ -73,7 +73,6 @@ public IEnumerator TestGazeCursorArticulated() /// Ensure that the gaze provider hit result is not null when looking at an object, /// even when the hand is up /// - /// [UnityTest] public IEnumerator TestGazeProviderTargetNotNull() { @@ -91,6 +90,213 @@ public IEnumerator TestGazeProviderTargetNotNull() Assert.NotNull(CoreServices.InputSystem.GazeProvider.GazeTarget, "GazeProvider target is null when looking at an object with hand raised"); } + + /// + /// Ensure FocusProvider's FocusDetails can be overridden. + /// + [UnityTest] + public IEnumerator TestOverrideFocusDetails() + { + PlayModeTestUtilities.Setup(); + + var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + yield return null; + + var focusProvider = PlayModeTestUtilities.GetInputSystem().FocusProvider; + + var pointer = new TestPointer(); + Assert.IsFalse(focusProvider.TryGetFocusDetails(pointer, out var focusDetails)); + Assert.IsFalse(focusProvider.TryOverrideFocusDetails(pointer, new Physics.FocusDetails())); + + focusProvider.RegisterPointer(pointer); + yield return null; + + Assert.IsTrue(focusProvider.TryGetFocusDetails(pointer, out focusDetails)); + Assert.IsNull(focusDetails.Object); + + var newFocusDetails = new Physics.FocusDetails(); + newFocusDetails.Object = cube; + newFocusDetails.RayDistance = 10; + newFocusDetails.Point = new Vector3(1, 2, 3); + Assert.IsTrue(focusProvider.TryOverrideFocusDetails(pointer, newFocusDetails)); + + Assert.IsTrue(focusProvider.TryGetFocusDetails(pointer, out focusDetails)); + Assert.AreEqual(newFocusDetails.Object, focusDetails.Object); + Assert.AreEqual(newFocusDetails.RayDistance, focusDetails.RayDistance); + Assert.AreEqual(newFocusDetails.Point, focusDetails.Point); + Assert.AreEqual(newFocusDetails.Object, focusProvider.GetFocusedObject(pointer)); + } + + /// + /// Ensure that focused object is set to null when we disable the currently focused object + /// + [UnityTest] + public IEnumerator TestDisableFocusObject() + { + TestUtilities.PlayspaceToOriginLookingForward(); + var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.transform.position = Vector3.right; + cube.transform.localScale = Vector3.one * 0.2f; + + const int numHandSteps = 1; + + // No initial focus + cube.transform.position = Vector3.forward; + TestHand hand = new TestHand(Handedness.Right); + yield return hand.Show(Vector3.forward * 0.5f); + yield return null; + + var handRayPointer = hand.GetPointer(); + + Assert.IsNull(handRayPointer.Result.CurrentPointerTarget); + + // Focus on cube + yield return hand.MoveTo(new Vector3(0.06f, -0.1f, 0.5f), numHandSteps); + yield return null; + + Assert.AreEqual(cube, handRayPointer.Result.CurrentPointerTarget); + + // Deactivate the cube + cube.SetActive(false); + yield return null; + + Assert.IsNull(handRayPointer.Result.CurrentPointerTarget); + + // Reactivate the cube + cube.SetActive(true); + yield return null; + + Assert.AreEqual(cube, handRayPointer.Result.CurrentPointerTarget); + } + + /// + /// Ensure that focused object is set to null, and that focus lock is reset when we disable + /// the currently focus-locked (aka grabbed) object + /// + [UnityTest] + public IEnumerator TestDisableFocusLockedObject() + { + TestUtilities.PlayspaceToOriginLookingForward(); + var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.AddComponent(); // Add focus handler so focus can lock + cube.transform.position = Vector3.right; + cube.transform.localScale = Vector3.one * 0.2f; + + const int numHandSteps = 1; + + // No initial focus + cube.transform.position = Vector3.forward; + TestHand hand = new TestHand(Handedness.Right); + yield return hand.Show(Vector3.forward * 0.5f); + yield return null; + + var handRayPointer = hand.GetPointer(); + + Assert.IsNull(handRayPointer.Result.CurrentPointerTarget); + + // Focus lock cube + yield return hand.MoveTo(new Vector3(0.06f, -0.1f, 0.5f), numHandSteps); + yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return null; + + Assert.IsTrue(handRayPointer.IsFocusLocked); + Assert.AreEqual(cube, handRayPointer.Result.CurrentPointerTarget); + + // Deactivate the cube + cube.SetActive(false); + yield return null; + + Assert.IsFalse(handRayPointer.IsFocusLocked); + Assert.IsNull(handRayPointer.Result.CurrentPointerTarget); + + // Reactivate the cube + cube.SetActive(true); + yield return null; + + Assert.IsFalse(handRayPointer.IsFocusLocked); + Assert.AreEqual(cube, handRayPointer.Result.CurrentPointerTarget); + } + + /// + /// Ensure that focused object is set to null when we destroy the currently focused object + /// + [UnityTest] + public IEnumerator TestDestroyFocusObject() + { + TestUtilities.PlayspaceToOriginLookingForward(); + var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.transform.position = Vector3.right; + cube.transform.localScale = Vector3.one * 0.2f; + + const int numHandSteps = 1; + + // No initial focus + cube.transform.position = Vector3.forward; + TestHand hand = new TestHand(Handedness.Right); + yield return hand.Show(Vector3.forward * 0.5f); + yield return null; + + var handRayPointer = hand.GetPointer(); + + Assert.IsNull(handRayPointer.Result.CurrentPointerTarget); + + // Focus on cube + yield return hand.MoveTo(new Vector3(0.06f, -0.1f, 0.5f), numHandSteps); + yield return null; + + Assert.AreEqual(cube, handRayPointer.Result.CurrentPointerTarget); + + // Destroy the cube + Object.DestroyImmediate(cube); + yield return null; + + Assert.IsNull(handRayPointer.Result.CurrentPointerTarget); + // Verify that CurrentPointer is not still referencing the destroyed GameObject + Assert.IsTrue(ReferenceEquals(handRayPointer.Result.CurrentPointerTarget, null)); + } + + /// + /// Ensure that focused object is set to null, and that focus lock is reset when we destroy + /// the currently focus-locked (aka grabbed) object + /// + [UnityTest] + public IEnumerator TestDestroyFocusLockedObject() + { + TestUtilities.PlayspaceToOriginLookingForward(); + var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.AddComponent(); // Add focus handler so focus can lock + cube.transform.position = Vector3.right; + cube.transform.localScale = Vector3.one * 0.2f; + + const int numHandSteps = 1; + + // No initial focus + cube.transform.position = Vector3.forward; + TestHand hand = new TestHand(Handedness.Right); + yield return hand.Show(Vector3.forward * 0.5f); + yield return null; + + var handRayPointer = hand.GetPointer(); + + Assert.IsNull(handRayPointer.Result.CurrentPointerTarget); + + // Focus lock cube + yield return hand.MoveTo(new Vector3(0.06f, -0.1f, 0.5f), numHandSteps); + yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return null; + + Assert.IsTrue(handRayPointer.IsFocusLocked); + Assert.AreEqual(cube, handRayPointer.Result.CurrentPointerTarget); + + // Destroy the cube + Object.DestroyImmediate(cube); + yield return null; + + Assert.IsFalse(handRayPointer.IsFocusLocked); + Assert.IsNull(handRayPointer.Result.CurrentPointerTarget); + // Verify that CurrentPointer is not still referencing the destroyed GameObject + Assert.IsTrue(ReferenceEquals(handRayPointer.Result.CurrentPointerTarget, null)); + } } } #endif diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputRayUtilsTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputRayUtilsTests.cs new file mode 100644 index 00000000000..7aaff726070 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputRayUtilsTests.cs @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if !WINDOWS_UWP +// When the .NET scripting backend is enabled and C# projects are built +// The assembly that this file is part of is still built for the player, +// even though the assembly itself is marked as a test assembly (this is not +// expected because test assemblies should not be included in player builds). +// Because the .NET backend is deprecated in 2018 and removed in 2019 and this +// issue will likely persist for 2018, this issue is worked around by wrapping all +// play mode tests in this check. + +using NUnit.Framework; +using UnityEngine; +using UnityEngine.TestTools; +using System.Collections; +using UnityEditor; +using Microsoft.MixedReality.Toolkit.Utilities; +using Microsoft.MixedReality.Toolkit.Input; + +namespace Microsoft.MixedReality.Toolkit.Tests +{ + // Tests to verify that the ray utilities methods are functioning correctly + public class InputRayUtilsTests + { + [SetUp] + public void SetUp() + { + PlayModeTestUtilities.Setup(); + TestUtilities.PlayspaceToOriginLookingForward(); + } + + [TearDown] + public void TearDown() + { + PlayModeTestUtilities.TearDown(); + } + + [UnityTest] + public IEnumerator HeadGazeRayTest() + { + yield return null; + + TestContext.Out.WriteLine("Get the head gaze ray"); + Ray ray = InputRayUtils.GetHeadGazeRay(); + Assert.True(ray.origin == Vector3.zero); + Assert.True(ray.direction == new Vector3(0.0f, 0.0f, 1.0f)); + + yield return null; + + // Rotate the head (camera) 180 degrees + TestContext.Out.WriteLine("Rotate the camera"); + CameraCache.Main.transform.Rotate(0, 180, 0); + + yield return null; + + TestContext.Out.WriteLine("Get the head gaze ray"); + ray = InputRayUtils.GetHeadGazeRay(); + TestContext.Out.WriteLine($"origin: {ray.origin}"); + Assert.True(ray.origin == Vector3.zero); + TestContext.Out.WriteLine($"direction: {ray.direction}"); + Assert.True(ray.direction == new Vector3(0.0f, 0.0f, -1.0f)); + } + + [UnityTest] + public IEnumerator HandRayTest() + { + yield return null; + + Vector3 rightHandOrigin = new Vector3(-0.3f, -0.1f, 0.5f); + + // Create a hand (we will use the right hand) + TestHand rightHand = new TestHand(Handedness.Right); + yield return rightHand.Show(rightHandOrigin); + + Ray ray; + bool success; + + TestContext.Out.WriteLine("Get the right hand ray"); + success = InputRayUtils.TryGetHandRay(Handedness.Right, out ray); + Assert.True(success, "TryGetHandRay did not succeed"); + TestUtilities.AssertAboutEqual(ray.origin, rightHandOrigin, "hand ray origin is not correct", 0.1f); + TestUtilities.AssertAboutEqual(ray.direction, new Vector3(-0.7f, 0.2f, 0.7f), "hand ray direction is not correct", 0.1f); + } + } +} + +#endif diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputRayUtilsTests.cs.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputRayUtilsTests.cs.meta new file mode 100644 index 00000000000..b746da8dc14 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputRayUtilsTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a37cf998de615d4090e3896f0378776 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputSystem/DisableEnableInputSystemTest.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputSystem/DisableEnableInputSystemTest.cs new file mode 100644 index 00000000000..abcb46a65d9 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputSystem/DisableEnableInputSystemTest.cs @@ -0,0 +1,54 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if !WINDOWS_UWP +// When the .NET scripting backend is enabled and C# projects are built +// The assembly that this file is part of is still built for the player, +// even though the assembly itself is marked as a test assembly (this is not +// expected because test assemblies should not be included in player builds). +// Because the .NET backend is deprecated in 2018 and removed in 2019 and this +// issue will likely persist for 2018, this issue is worked around by wrapping all +// play mode tests in this check. + +using Microsoft.MixedReality.Toolkit.Utilities; +using NUnit.Framework; +using System.Collections; +using UnityEngine; +using UnityEngine.TestTools; + +namespace Microsoft.MixedReality.Toolkit.Tests.Input +{ + class DisableEnableInputSystemTest + { + [SetUp] + public void SetUp() + { + PlayModeTestUtilities.Setup(); + } + + [TearDown] + public void TearDown() + { + PlayModeTestUtilities.TearDown(); + } + + [UnityTest] + public IEnumerator DisableEnableInputSystem() + { + yield return null; + + TestContext.Out.WriteLine("Disable the input system"); + CoreServices.InputSystem.Disable(); + + yield return new WaitForSeconds(2); + + TestContext.Out.WriteLine("Enable the input system"); + CoreServices.InputSystem.Enable(); + + TestContext.Out.WriteLine("Display a test hand"); + TestHand rightHand = new TestHand(Handedness.Right); + yield return rightHand.Show(new Vector3(-0.3f, -0.1f, 0.5f)); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputSystem/DisableEnableInputSystemTest.cs.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputSystem/DisableEnableInputSystemTest.cs.meta new file mode 100644 index 00000000000..64b26ec4d82 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InputSystem/DisableEnableInputSystemTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b28fc5f0ce7af84a9904343cfff063b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableEventTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableEventTests.cs new file mode 100644 index 00000000000..b7aed13eb1e --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableEventTests.cs @@ -0,0 +1,209 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if !WINDOWS_UWP +// When the .NET scripting backend is enabled and C# projects are built +// The assembly that this file is part of is still built for the player, +// even though the assembly itself is marked as a test assembly (this is not +// expected because test assemblies should not be included in player builds). +// Because the .NET backend is deprecated in 2018 and removed in 2019 and this +// issue will likely persist for 2018, this issue is worked around by wrapping all +// play mode tests in this check. + +using Microsoft.MixedReality.Toolkit.Editor; +using Microsoft.MixedReality.Toolkit.Input; +using Microsoft.MixedReality.Toolkit.UI; +using Microsoft.MixedReality.Toolkit.Utilities; +using NUnit.Framework; +using NUnit.Framework.Internal; +using System.Collections; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; + +namespace Microsoft.MixedReality.Toolkit.Tests +{ + class InteractableEventTests + { + GameObject cube; + Interactable interactable; + + [SetUp] + public void Setup() + { + PlayModeTestUtilities.Setup(); + TestUtilities.PlayspaceToOriginLookingForward(); + + cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.transform.position = new Vector3(1, 0, 1); + + interactable = cube.AddComponent(); + Assert.NotNull(interactable, "Failed to add interactable to cube"); + } + + [TearDown] + public void TearDown() + { + GameObject.Destroy(cube); + PlayModeTestUtilities.TearDown(); + } + + /// + /// Tests that an Interactable component can be added to a GameObject + /// at runtime, and an OnClick event handler can be added + /// + [UnityTest] + public IEnumerator TestClickEvents() + { + PlayModeTestUtilities.PushHandSimulationProfile(); + PlayModeTestUtilities.SetHandSimulationMode(HandSimulationMode.Gestures); + + // Subscribe to interactable's on click so we know the click went through + bool wasClicked = false; + interactable.OnClick.AddListener(() => { wasClicked = true; }); + + var testHand = new TestHand(Handedness.Right); + yield return testHand.Show(Vector3.zero); + + CameraCache.Main.transform.LookAt(interactable.transform); + yield return testHand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return testHand.SetGesture(ArticulatedHandPose.GestureId.Open); + yield return testHand.Hide(); + + Assert.True(wasClicked); + + PlayModeTestUtilities.PopHandSimulationProfile(); + } + + [UnityTest] + public IEnumerator TestGrabEvents() + { + var grabReceiver = interactable.AddReceiver(); + interactable.gameObject.AddComponent(); + bool didGrab = false; + grabReceiver.OnGrab.AddListener(() => didGrab = true); + bool didRelease = false; + grabReceiver.OnRelease.AddListener(() => didRelease = true); + + var testHand = new TestHand(Handedness.Right); + yield return testHand.Show(interactable.transform.position); + yield return testHand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return testHand.SetGesture(ArticulatedHandPose.GestureId.Open); + yield return testHand.Hide(); + Assert.True(didGrab, "Did not receive grab event"); + Assert.True(didRelease, "Did not receive release event"); + GameObject.Destroy(cube); + yield return null; + } + + public IEnumerator TestHoldEvents() + { + // Hold + var holdReceiver = interactable.AddReceiver(); + bool didHold = false; + holdReceiver.OnHold.AddListener(() => didHold = true); + + var testHand = new TestHand(Handedness.Right); + yield return testHand.Show(interactable.transform.position); + yield return testHand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return new WaitForSeconds(holdReceiver.HoldTime); + yield return testHand.Hide(); + Assert.True(didHold, "Did not receive hold event"); + GameObject.Destroy(cube); + yield return null; + } + + [UnityTest] + public IEnumerator TestPressEvents() + { + var testHand = new TestHand(Handedness.Right); + interactable.gameObject.AddComponent(); + var pressReceiver = interactable.AddReceiver(); + bool didPress = false; + pressReceiver.OnPress.AddListener(() => didPress = true); + yield return testHand.Show(interactable.transform.position); + yield return testHand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return testHand.Hide(); + Assert.True(didPress, "did not receive press event"); + } + + [UnityTest] + public IEnumerator TestToggleEvents() + { + PlayModeTestUtilities.PushHandSimulationProfile(); + PlayModeTestUtilities.SetHandSimulationMode(HandSimulationMode.Gestures); + + var toggleReceiver = interactable.AddReceiver(); + interactable.transform.position = Vector3.forward * 2f; + interactable.NumOfDimensions = 2; + interactable.CanSelect = true; + interactable.CanDeselect = true; + bool didSelect = false; + bool didUnselect = false; + toggleReceiver.OnSelect.AddListener(() => didSelect = true); + toggleReceiver.OnDeselect.AddListener(() => didUnselect = true); + + var testHand = new TestHand(Handedness.Right); + yield return testHand.Show(Vector3.forward); + + CameraCache.Main.transform.LookAt(interactable.transform.position); + + yield return testHand.SetGesture(ArticulatedHandPose.GestureId.Open); + yield return testHand.Click(); + yield return testHand.Click(); + yield return testHand.Hide(); + Assert.True(didSelect, "Toggle select did not fire"); + Assert.True(didUnselect, "Toggle unselect did not fire"); + + PlayModeTestUtilities.PopHandSimulationProfile(); + } + + + [UnityTest] + public IEnumerator TestTouchEvents() + { + interactable.gameObject.AddComponent(); + var touchReceiver = interactable.AddReceiver(); + bool didTouch = false; + bool didUntouch = false; + touchReceiver.OnTouchStart.AddListener(() => didTouch = true); + touchReceiver.OnTouchEnd.AddListener(() => didUntouch = true); + + var testHand = new TestHand(Handedness.Right); + yield return testHand.Show(Vector3.forward); + yield return testHand.SetGesture(ArticulatedHandPose.GestureId.Open); + yield return testHand.MoveTo(interactable.transform.position); + yield return testHand.MoveTo(Vector3.forward); + yield return testHand.Hide(); + Assert.True(didTouch, "Did not receive touch event"); + Assert.True(didUntouch, "Did not receive touch end event"); + } + + /// + /// Tests that an interactable component can be added to a GameObject + /// at runtime, and all receivers that extend ReceiverBase + /// and have event handlers can easily be added, and work + /// + [UnityTest] + public IEnumerator TestFocusEvents() + { + var onFocusReceiver = interactable.AddReceiver(); + + bool didHover = false; + bool didUnHover = false; + onFocusReceiver.OnFocusOn.AddListener(() => didHover = true); + onFocusReceiver.OnFocusOff.AddListener(() => didUnHover = true); + CameraCache.Main.transform.LookAt(interactable.transform); + yield return null; + Assert.True(didHover, "Interactable did not receive hover event"); + Assert.False(didUnHover, "Interactable shouldn't have received un-hover event, but it did."); + CameraCache.Main.transform.LookAt(Vector3.forward); + yield return null; + Assert.True(didUnHover, "Interactable did not receive un-hover event"); + + yield return null; + } + } +} +#endif diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableEventTests.cs.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableEventTests.cs.meta new file mode 100644 index 00000000000..c7b5330ae25 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableEventTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57441d2da47d715418921a6e7138c6b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableTests.cs index 597f5b247ea..48bcbc88a08 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/InteractableTests.cs @@ -17,6 +17,7 @@ using NUnit.Framework; using NUnit.Framework.Internal; using System.Collections; +using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEngine; @@ -24,59 +25,42 @@ namespace Microsoft.MixedReality.Toolkit.Tests { - class InteractableTests + public class InteractableTests : BasePlayModeTests { - const float buttonPressAnimationDelay = 0.25f; - const float buttonReleaseAnimationDelay = 0.25f; - const string defaultInteractablePrefabAssetPath = "Assets/MixedRealityToolkit.Examples/Demos/UX/Interactables/Prefabs/Model_PushButton.prefab"; - const string radialSetPrefabAssetPath = "Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/RadialSet.prefab"; + private const float ButtonPressAnimationDelay = 0.25f; + private const float ButtonReleaseAnimationDelay = 0.25f; + private const float EaseDelay = 0.25f; + private const string DefaultInteractablePrefabAssetPath = "Assets/MixedRealityToolkit.Examples/Demos/UX/Interactables/Prefabs/Model_PushButton.prefab"; + private const string RadialSetPrefabAssetPath = "Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/RadialSet.prefab"; + private const string PressableHoloLens2TogglePrefabPath = "Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Toggle.prefab"; - [SetUp] - public void Setup() - { - PlayModeTestUtilities.Setup(); - TestUtilities.PlayspaceToOriginLookingForward(); - } + private readonly Color DefaultColor = Color.blue; + private readonly Color FocusColor = Color.yellow; + private readonly Color DisabledColor = Color.gray; - [TearDown] - public void TearDown() - { - PlayModeTestUtilities.TearDown(); - } + private static readonly Quaternion DefaultRotation = Quaternion.LookRotation(Vector3.up); + private static readonly Quaternion DefaultRotationToggle = Quaternion.LookRotation(Vector3.forward); - /// - /// Tests that an interactable component can be added to a GameObject - /// at runtime. - /// - /// - [UnityTest] - public IEnumerator TestAddInteractableAtRuntime() + [SetUp] + public override void Setup() { - var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); - // This should not throw an exception - var interactable = cube.AddComponent(); - - // clean up - GameObject.Destroy(cube); - yield return null; + base.Setup(); + TestUtilities.PlayspaceToOriginLookingForward(); } /// /// Instantiates a push button prefab and uses simulated hand input to press it. /// - /// [UnityTest] - public IEnumerator TestSimulatedHandInputOnPrefab() + public IEnumerator TestHandInputOnPrefab() { // Load interactable prefab - GameObject interactableObject; Interactable interactable; Transform translateTargetObject; - InstantiateDefaultInteractablePrefab( + InstantiatePressButtonPrefab( new Vector3(0.025f, 0.05f, 0.5f), - new Vector3(-90f, 0f, 0f), - out interactableObject, + DefaultRotation, out interactable, out translateTargetObject); @@ -89,55 +73,40 @@ public IEnumerator TestSimulatedHandInputOnPrefab() // Move the hand forward to intersect the interactable var inputSimulationService = PlayModeTestUtilities.GetInputSimulationService(); int numSteps = 32; - Vector3 p1 = new Vector3(0.0f, 0f, 0f); + Vector3 p1 = Vector3.zero; Vector3 p2 = new Vector3(0.05f, 0f, 0.51f); - Vector3 p3 = new Vector3(0.0f, 0f, 0.0f); + Vector3 p3 = Vector3.zero; yield return PlayModeTestUtilities.ShowHand(Handedness.Right, inputSimulationService); yield return PlayModeTestUtilities.MoveHandFromTo(p1, p2, numSteps, ArticulatedHandPose.GestureId.Poke, Handedness.Right, inputSimulationService); - float pressStartTime = Time.time; - bool wasTranslated = false; - while (Time.time < pressStartTime + buttonPressAnimationDelay) - { // If the transform is moved at any point during this interval, we were successful - yield return new WaitForFixedUpdate(); - wasTranslated |= targetStartPosition != translateTargetObject.localPosition; - } + yield return CheckButtonTranslation(targetStartPosition, translateTargetObject); // Move the hand back yield return PlayModeTestUtilities.MoveHandFromTo(p2, p3, numSteps, ArticulatedHandPose.GestureId.Poke, Handedness.Right, inputSimulationService); yield return PlayModeTestUtilities.HideHand(Handedness.Right, inputSimulationService); - yield return new WaitForSeconds(buttonReleaseAnimationDelay); + yield return new WaitForSeconds(ButtonReleaseAnimationDelay); Assert.True(wasClicked, "Interactable was not clicked."); - Assert.True(wasTranslated, "Transform target object was not translated by action."); + + //Cleanup + GameObject.Destroy(interactable.gameObject); } /// /// Instantiates a push button prefab and uses simulated global input events to press it. /// - /// [UnityTest] - public IEnumerator TestSimulatedGlobalSelectInputOnPrefab() + public IEnumerator TestSelectGlobalInput() { - // Face the camera in the opposite direction so we don't focus on button - MixedRealityPlayspace.PerformTransformation( - p => - { - p.position = Vector3.zero; - p.LookAt(Vector3.back); - }); - // Load interactable prefab - GameObject interactableObject; Interactable interactable; Transform translateTargetObject; // Place out of the way of any pointers - InstantiateDefaultInteractablePrefab( + InstantiatePressButtonPrefab( new Vector3(10f, 0.0f, 0.5f), - new Vector3(-90f, 0f, 0f), - out interactableObject, + DefaultRotation, out interactable, out translateTargetObject); @@ -156,56 +125,75 @@ public IEnumerator TestSimulatedGlobalSelectInputOnPrefab() IMixedRealityInputSource defaultInputSource = CoreServices.InputSystem.DetectedInputSources.FirstOrDefault(); Assert.NotNull(defaultInputSource, "At least one input source must be present for this test to work."); - // Add interactable as a global listener - // This is only necessary if IsGlobal is being set manually. If it's set in the inspector, interactable will register itself in OnEnable automatically. - CoreServices.InputSystem.PushModalInputHandler(interactableObject); + yield return RunGlobalClick(defaultInputSource, interactable.InputAction, targetStartPosition, translateTargetObject); - // Raise a select down input event, then wait for transition to take place - CoreServices.InputSystem.RaiseOnInputDown(defaultInputSource, Handedness.None, interactable.InputAction); - // Wait for at least one frame explicitly to ensure the input goes through - yield return new WaitForFixedUpdate(); + Assert.True(wasClicked, "Interactable was not clicked."); + Assert.False(interactable.HasFocus, "Interactable had focus"); + Assert.True(interactable.IsVisited, "Interactable was not visited"); - float pressStartTime = Time.time; - bool wasTranslated = false; - while (Time.time < pressStartTime + buttonPressAnimationDelay) - { // If the transform is moved at any point during this interval, we were successful - yield return new WaitForFixedUpdate(); - wasTranslated |= targetStartPosition != translateTargetObject.localPosition; - } + // Remove as global listener and cleanup + GameObject.Destroy(interactable.gameObject); + } - // Raise a select up input event, then wait for transition to take place - CoreServices.InputSystem.RaiseOnInputUp(defaultInputSource, Handedness.Right, interactable.InputAction); - // Wait for at least one frame explicitly to ensure the input goes through - yield return new WaitForFixedUpdate(); - yield return new WaitForSeconds(buttonReleaseAnimationDelay); + /// + /// Instantiates a push button prefab and disable it but also enable global input. Ensure cannot interact because disabled + /// + [UnityTest] + public IEnumerator TestSelectGlobalInputOnDisabled() + { + // Load interactable prefab + Interactable interactable; + Transform translateTargetObject; - Assert.True(wasClicked, "Interactable was not clicked."); - Assert.True(wasTranslated, "Transform target object was not translated by action."); + // Place out of the way of any pointers + InstantiatePressButtonPrefab( + new Vector3(10f, 0.0f, 0.5f), + DefaultRotation, + out interactable, + out translateTargetObject); + + // Subscribe to interactable's on click so we know the click went through + bool wasClicked = false; + interactable.OnClick.AddListener(() => { wasClicked = true; }); + + // Set interactable disabled and receive global input + interactable.IsEnabled = false; + interactable.IsGlobal = true; + + Vector3 targetStartPosition = translateTargetObject.localPosition; + + yield return null; + + // Find an input source to associate with the input event (doesn't matter which one) + IMixedRealityInputSource defaultInputSource = CoreServices.InputSystem.DetectedInputSources.FirstOrDefault(); + Assert.NotNull(defaultInputSource, "At least one input source must be present for this test to work."); + + yield return RunGlobalClick(defaultInputSource, interactable.InputAction, targetStartPosition, translateTargetObject, false); + + Assert.False(wasClicked, "Interactable was clicked but is disabled."); Assert.False(interactable.HasFocus, "Interactable had focus"); + Assert.False(interactable.IsVisited, "Interactable was visited but is disabled"); - // Remove as global listener - CoreServices.InputSystem.PopModalInputHandler(); + // Remove as global listener and cleanup + GameObject.Destroy(interactable.gameObject); } /// /// Assembles a push button from primitives and uses simulated hand input to press it. /// - /// [UnityTest] - public IEnumerator TestSimulatedHandInputOnRuntimeAssembled() + public IEnumerator TestHandInputOnRuntimeAssembled() { - // Load interactable prefab - GameObject interactableObject; + // Load interactable Interactable interactable; Transform translateTargetObject; AssembleInteractableButton( - out interactableObject, out interactable, out translateTargetObject); - interactableObject.transform.position = new Vector3(0.025f, 0.05f, 0.65f); - interactableObject.transform.eulerAngles = new Vector3(-90f, 0f, 0f); + interactable.transform.position = new Vector3(0.025f, 0.05f, 0.65f); + interactable.transform.eulerAngles = new Vector3(-90f, 0f, 0f); // Subscribe to interactable's on click so we know the click went through bool wasClicked = false; @@ -216,64 +204,57 @@ public IEnumerator TestSimulatedHandInputOnRuntimeAssembled() yield return null; // Add a touchable and configure for touch events - NearInteractionTouchable touchable = interactableObject.AddComponent(); + NearInteractionTouchable touchable = interactable.gameObject.AddComponent(); touchable.EventsToReceive = TouchableEventType.Touch; - touchable.Bounds = Vector2.one; + touchable.SetBounds(Vector2.one); touchable.SetLocalForward(Vector3.up); touchable.SetLocalUp(Vector3.forward); - touchable.LocalCenter = Vector3.up * 2.75f; + touchable.SetLocalCenter(Vector3.up * 2.75f); // Add a touch handler and link touch started / touch completed events - TouchHandler touchHandler = interactableObject.AddComponent(); + TouchHandler touchHandler = interactable.gameObject.AddComponent(); touchHandler.OnTouchStarted.AddListener((HandTrackingInputEventData e) => interactable.SetInputDown()); touchHandler.OnTouchCompleted.AddListener((HandTrackingInputEventData e) => interactable.SetInputUp()); // Move the hand forward to intersect the interactable var inputSimulationService = PlayModeTestUtilities.GetInputSimulationService(); int numSteps = 32; - Vector3 p1 = new Vector3(0.0f, 0f, 0f); + Vector3 p1 = Vector3.zero; Vector3 p2 = new Vector3(0.05f, 0f, 0.51f); - Vector3 p3 = new Vector3(0.0f, 0f, 0.0f); + Vector3 p3 = Vector3.zero; yield return PlayModeTestUtilities.ShowHand(Handedness.Right, inputSimulationService); yield return PlayModeTestUtilities.MoveHandFromTo(p1, p2, numSteps, ArticulatedHandPose.GestureId.Poke, Handedness.Right, inputSimulationService); - float pressStartTime = Time.time; - bool wasTranslated = false; - while (Time.time < pressStartTime + buttonPressAnimationDelay) - { // If the transform is moved at any point during this interval, we were successful - yield return new WaitForFixedUpdate(); - wasTranslated |= targetStartPosition != translateTargetObject.localPosition; - } + yield return CheckButtonTranslation(targetStartPosition, translateTargetObject); // Move the hand back yield return PlayModeTestUtilities.MoveHandFromTo(p2, p3, numSteps, ArticulatedHandPose.GestureId.Poke, Handedness.Right, inputSimulationService); yield return PlayModeTestUtilities.HideHand(Handedness.Right, inputSimulationService); - yield return new WaitForSeconds(buttonReleaseAnimationDelay); + yield return new WaitForSeconds(ButtonReleaseAnimationDelay); Assert.True(wasClicked, "Interactable was not clicked."); - Assert.True(wasTranslated, "Transform target object was not translated by action."); + + //Cleanup + GameObject.Destroy(interactable.gameObject); } /// /// Assembles a push button from primitives and uses simulated input events to press it. /// - /// [UnityTest] - public IEnumerator TestSimulatedSelectInputOnRuntimeAssembled() + public IEnumerator TestInputActionSelectInput() { - // Load interactable prefab - GameObject interactableObject; + // Load interactable Interactable interactable; Transform translateTargetObject; AssembleInteractableButton( - out interactableObject, out interactable, out translateTargetObject); - interactableObject.transform.position = new Vector3(0.0f, 0.0f, 0.5f); - interactableObject.transform.eulerAngles = new Vector3(-90f, 0f, 0f); + interactable.transform.position = new Vector3(0.0f, 0.0f, 0.5f); + interactable.transform.eulerAngles = new Vector3(-90f, 0f, 0f); // Subscribe to interactable's on click so we know the click went through bool wasClicked = false; @@ -287,44 +268,29 @@ public IEnumerator TestSimulatedSelectInputOnRuntimeAssembled() IMixedRealityInputSource defaultInputSource = CoreServices.InputSystem.DetectedInputSources.FirstOrDefault(); Assert.NotNull(defaultInputSource, "At least one input source must be present for this test to work."); - // Raise an input down event, then wait for transition to take place - CoreServices.InputSystem.RaiseOnInputDown(defaultInputSource, Handedness.None, interactable.InputAction); - // Wait for at least one frame explicitly to ensure the input goes through - yield return new WaitForFixedUpdate(); - - float pressStartTime = Time.time; - bool wasTranslated = false; - while (Time.time < pressStartTime + buttonPressAnimationDelay) - { // If the transform is moved at any point during this interval, we were successful - yield return new WaitForFixedUpdate(); - wasTranslated |= targetStartPosition != translateTargetObject.localPosition; - } - - // Raise an input up event, then wait for transition to take place - CoreServices.InputSystem.RaiseOnInputUp(defaultInputSource, Handedness.None, interactable.InputAction); - // Wait for at least one frame explicitly to ensure the input goes through - yield return new WaitForFixedUpdate(); - yield return new WaitForSeconds(buttonReleaseAnimationDelay); + yield return RunGlobalClick(defaultInputSource, interactable.InputAction, targetStartPosition, translateTargetObject); Assert.True(wasClicked, "Interactable was not clicked."); - Assert.True(wasTranslated, "Transform target object was not translated by action."); Assert.AreEqual(targetStartPosition, translateTargetObject.localPosition, "Transform target object was not translated back by action."); + + //Cleanup + GameObject.Destroy(interactable.gameObject); } /// /// Tests that radial buttons can be selected and deselected, and that a radial button /// set allows just one button to be selected at a time /// - /// [UnityTest] - public IEnumerator TestRadialButtons() + public IEnumerator TestRadialSetPrefab() { - var radialSet = InstantiateInteractableFromPath(Vector3.forward, Vector3.zero, radialSetPrefabAssetPath); + var radialSet = InstantiateInteractableFromPath(Vector3.forward, Quaternion.identity, RadialSetPrefabAssetPath); var firstRadialButton = radialSet.transform.Find("Radial (1)"); var secondRadialButton = radialSet.transform.Find("Radial (2)"); var thirdRadialButton = radialSet.transform.Find("Radial (3)"); var testHand = new TestHand(Handedness.Right); yield return testHand.Show(Vector3.zero); + Assert.IsTrue(firstRadialButton.GetComponent().IsToggled); Assert.IsFalse(secondRadialButton.GetComponent().IsToggled); Assert.IsFalse(thirdRadialButton.GetComponent().IsToggled); @@ -341,25 +307,75 @@ public IEnumerator TestRadialButtons() Assert.IsFalse(firstRadialButton.GetComponent().IsToggled); Assert.IsTrue(secondRadialButton.GetComponent().IsToggled); Assert.IsFalse(thirdRadialButton.GetComponent().IsToggled); + + //Cleanup + GameObject.Destroy(radialSet); + } + + /// + /// Assemble an Interactable GameObject and test various SelectionModes + /// + [UnityTest] + public IEnumerator TestDimensions() + { + // Load interactable + Interactable interactable; + Transform translateTargetObject; + + AssembleInteractableButton( + out interactable, + out translateTargetObject); + + // Test Button type + interactable.NumOfDimensions = 1; + Assert.AreEqual(SelectionModes.Button, interactable.ButtonMode, "Interactable should be in button selection mode"); + + interactable.IsToggled = true; + Assert.IsFalse(interactable.IsToggled, "Interactable should not be in toggle state because not in Toggle selection mode"); + + // Test Multi-Dimension type + interactable.NumOfDimensions = 4; + interactable.CurrentDimension = 1; + Assert.AreEqual(SelectionModes.MultiDimension, interactable.ButtonMode, "Interactable should be in MultiDimension selection mode"); + + interactable.IsToggled = true; + Assert.IsFalse(interactable.IsToggled, "Interactable should not be in toggle state because not in Toggle selection mode"); + + // Test Toggle type + interactable.NumOfDimensions = 2; + interactable.CurrentDimension = 0; + Assert.AreEqual(SelectionModes.Toggle, interactable.ButtonMode, "Interactable should not be in button selection mode"); + Assert.IsFalse(interactable.IsToggled, "Switching dimensions and setting CurrentDimension to 0 should make IsToggled off"); + + interactable.IsToggled = true; + Assert.IsTrue(interactable.IsToggled, "Interactable should be in toggle state because in Toggle selection mode"); + + // Test Invalid type + interactable.NumOfDimensions = -1; + Assert.AreEqual(2, interactable.NumOfDimensions, "Interactable should be in Toggle selection mode"); + Assert.AreEqual(1, interactable.CurrentDimension, "Interactable should be Toggled"); + Assert.AreEqual(SelectionModes.Toggle, interactable.ButtonMode, "Interactable should be in Toggle selection mode"); + Assert.IsTrue(interactable.IsToggled, "Invalid Dimension should not change state"); + + //Clean up + GameObject.Destroy(interactable.gameObject); + + yield return null; } /// /// Instantiates a push button prefab and uses simulated input events to press it. /// - /// - /// https://github.com/microsoft/MixedRealityToolkit-Unity/issues/5153 - // [UnityTest] - public IEnumerator TestSimulatedMenuInputOnPrefab() + [UnityTest] + public IEnumerator TestInputActionMenuInput() { // Load interactable prefab - GameObject interactableObject; Interactable interactable; Transform translateTargetObject; - InstantiateDefaultInteractablePrefab( + InstantiatePressButtonPrefab( new Vector3(0.0f, 0.0f, 0.5f), - new Vector3(-90f, 0f, 0f), - out interactableObject, + DefaultRotation, out interactable, out translateTargetObject); @@ -367,9 +383,15 @@ public IEnumerator TestSimulatedMenuInputOnPrefab() bool wasClicked = false; interactable.OnClick.AddListener(() => { wasClicked = true; }); + var pressReceiver = interactable.AddReceiver(); + bool wasPressed = false; + pressReceiver.OnPress.AddListener(() => { wasPressed = true; Debug.Log("pressReciever wasPressed true"); }); + bool wasReleased = false; + pressReceiver.OnRelease.AddListener(() => { wasReleased = true; Debug.Log("pressReciever wasReleased true"); }); + Vector3 targetStartPosition = translateTargetObject.localPosition; - yield return null; + yield return PlayModeTestUtilities.WaitForInputSystemUpdate(); // Find the menu action from the input system profile MixedRealityInputAction menuAction = CoreServices.InputSystem.InputSystemProfile.InputActionsProfile.InputActions.Where(m => m.Description == "Menu").FirstOrDefault(); @@ -382,97 +404,239 @@ public IEnumerator TestSimulatedMenuInputOnPrefab() IMixedRealityInputSource defaultInputSource = CoreServices.InputSystem.DetectedInputSources.FirstOrDefault(); Assert.NotNull(defaultInputSource, "At least one input source must be present for this test to work."); - // Raise a menu down input event, then wait for transition to take place - CoreServices.InputSystem.RaiseOnInputDown(defaultInputSource, Handedness.Right, menuAction); - // Wait for at least one frame explicitly to ensure the input goes through - yield return new WaitForFixedUpdate(); - - float pressStartTime = Time.time; - bool wasTranslated = false; - while (Time.time < pressStartTime + buttonPressAnimationDelay) - { // If the transform is moved at any point during this interval, we were successful - yield return new WaitForFixedUpdate(); - wasTranslated |= targetStartPosition != translateTargetObject.localPosition; - } - - // Raise a menu up input event, then wait for transition to take place - CoreServices.InputSystem.RaiseOnInputUp(defaultInputSource, Handedness.Right, menuAction); - // Wait for at least one frame explicitly to ensure the input goes through - yield return new WaitForFixedUpdate(); - yield return new WaitForSeconds(buttonReleaseAnimationDelay); + yield return RunGlobalClick(defaultInputSource, menuAction, targetStartPosition, translateTargetObject); + Assert.True(wasPressed, "interactable not pressed"); + Assert.True(wasReleased, "interactable not released"); Assert.True(wasClicked, "Interactable was not clicked."); - Assert.True(wasTranslated, "Transform target object was not translated by action."); + + GameObject.Destroy(interactable.gameObject); } /// /// Instantiates a push button prefab and uses simulated voice input events to press it. /// - /// - /// https://github.com/microsoft/MixedRealityToolkit-Unity/issues/5153 - // [UnityTest] - public IEnumerator TestSimulatedVoiceInputOnPrefab() + [UnityTest] + public IEnumerator TestVoiceInputOnPrefab() { // Load interactable prefab - GameObject interactableObject; Interactable interactable; Transform translateTargetObject; - InstantiateDefaultInteractablePrefab( + InstantiatePressButtonPrefab( new Vector3(0.0f, 0.0f, 0.5f), - new Vector3(-90f, 0f, 0f), - out interactableObject, + DefaultRotation, out interactable, out translateTargetObject); // Subscribe to interactable's on click so we know the click went through bool wasClicked = false; interactable.OnClick.AddListener(() => { wasClicked = true; }); + + Vector3 targetStartPosition = translateTargetObject.localPosition; // Set up its voice command interactable.VoiceCommand = "Select"; - Vector3 targetStartPosition = translateTargetObject.localPosition; - - yield return null; + yield return PlayModeTestUtilities.WaitForInputSystemUpdate(); // Find an input source to associate with the input event (doesn't matter which one) IMixedRealityInputSource defaultInputSource = CoreServices.InputSystem.DetectedInputSources.FirstOrDefault(); Assert.NotNull(defaultInputSource, "At least one input source must be present for this test to work."); // Raise a voice select input event, then wait for transition to take place - SpeechCommands commands = new SpeechCommands("Select", KeyCode.None, interactable.InputAction); - CoreServices.InputSystem.RaiseSpeechCommandRecognized(defaultInputSource, RecognitionConfidenceLevel.High, new System.TimeSpan(100), System.DateTime.Now, commands); // Wait for at least one frame explicitly to ensure the input goes through - yield return new WaitForFixedUpdate(); - - float pressStartTime = Time.time; - bool wasTranslated = false; - while (Time.time < pressStartTime + buttonPressAnimationDelay) - { // If the transform is moved at any point during this interval, we were successful - yield return new WaitForFixedUpdate(); - wasTranslated |= targetStartPosition != translateTargetObject.localPosition; - } + SpeechCommands commands = new SpeechCommands(interactable.VoiceCommand, KeyCode.None, interactable.InputAction); + CoreServices.InputSystem.RaiseSpeechCommandRecognized(defaultInputSource, RecognitionConfidenceLevel.High, new System.TimeSpan(100), System.DateTime.Now, commands); + yield return PlayModeTestUtilities.WaitForInputSystemUpdate(); - // Wait for button press to expire - yield return new WaitForSeconds(buttonReleaseAnimationDelay); + yield return CheckButtonTranslation(targetStartPosition, translateTargetObject); Assert.True(wasClicked, "Interactable was not clicked."); - Assert.True(wasTranslated, "Transform target object was not translated by action."); + + //Cleanup + GameObject.Destroy(interactable.gameObject); + } + + /// + /// Instantiates a runtime assembled Interactable and set Interactable state to disabled (not disabling the GameObject/component) + /// + [UnityTest] + public IEnumerator TestDisableState() + { + // Load interactable + Interactable interactable; + Transform translateTargetObject; + + AssembleInteractableButton( + out interactable, + out translateTargetObject); + + CameraCache.Main.transform.LookAt(interactable.transform.position); + + yield return new WaitForSeconds(EaseDelay); + var propBlock = InteractableThemeShaderUtils.GetPropertyBlock(translateTargetObject.gameObject); + Assert.AreEqual(propBlock.GetColor("_Color"), FocusColor); + + interactable.IsEnabled = false; + + yield return new WaitForSeconds(EaseDelay); + propBlock = InteractableThemeShaderUtils.GetPropertyBlock(translateTargetObject.gameObject); + Assert.AreEqual(propBlock.GetColor("_Color"), DisabledColor); + Assert.AreEqual(interactable.IsEnabled, false); + + //Cleanup + GameObject.Destroy(interactable.gameObject); + } + + /// + /// Instantiates a runtime assembled Interactable and destroy the Interactable component + /// + [UnityTest] + public IEnumerator TestDestroy() + { + // Load interactable + Interactable interactable; + Transform translateTargetObject; + + AssembleInteractableButton( + out interactable, + out translateTargetObject); + + // Put GGV focus on the Interactable button + CameraCache.Main.transform.LookAt(interactable.transform.position); + + yield return new WaitForSeconds(EaseDelay); + var propBlock = InteractableThemeShaderUtils.GetPropertyBlock(translateTargetObject.gameObject); + Assert.AreEqual(propBlock.GetColor("_Color"), FocusColor); + + // Destroy the interactable component + GameObject.Destroy(interactable); + + // Remove focus + CameraCache.Main.transform.LookAt(Vector3.zero); + + yield return null; + propBlock = InteractableThemeShaderUtils.GetPropertyBlock(translateTargetObject.gameObject); + Assert.AreEqual(propBlock.GetColor("_Color"), FocusColor); } + [UnityTest] + /// + /// Tests button depth and focus state after enabling, disabling and re-enabling Interactable + /// internally via IsEnabled. The focus state after re-enabling should be false and button + /// depth should be in its default position. This test is specifically addressing behavior described + /// in issue 4967. + /// + public IEnumerator TestInteractableDisableOnClick() + { + var rightHand = new TestHand(Handedness.Right); + Vector3 p1 = Vector3.zero; + Vector3 p2 = new Vector3(0.05f, 0f, 0.51f); + + // Load the Model_PushButton interactable prefab + Interactable interactable; + Transform innerCylinderTransform; + + InstantiatePressButtonPrefab( + new Vector3(0.0f, 0.0f, 0.5f), + DefaultRotation, + out interactable, + out innerCylinderTransform); + + Assert.True(interactable.IsEnabled); + + // OnClick, disable Interactable + interactable.OnClick.AddListener(() => { interactable.IsEnabled = false; }); + + // Get start position of the inner cylinder before button is pressed + Vector3 innerCylinderStartPosition = innerCylinderTransform.localPosition; + + // Move the hand forward to press button + yield return rightHand.Show(p1); + yield return rightHand.MoveTo(p2); + + // Ensure that the inner cylinder in the button has moved on press + yield return CheckButtonTranslation(innerCylinderStartPosition, innerCylinderTransform); + + // Move the hand back + yield return rightHand.MoveTo(p1); + yield return new WaitForSeconds(ButtonReleaseAnimationDelay); + + Assert.False(interactable.IsEnabled); + + // Re-enable Interactable + interactable.IsEnabled = true; + yield return null; + + // Make sure the button depth is back at the starting position when re-enable the gameObject + Assert.True(innerCylinderTransform.localPosition == innerCylinderStartPosition); + + // Make sure the focus state is false after we re-enable Interactable + Assert.False(interactable.HasFocus); + + GameObject.Destroy(interactable.gameObject); + } + + [UnityTest] + /// + /// Tests that the toggle button states consistently return to original state + /// after subsequent clicks (front plate does not move back after every click). + /// + public IEnumerator TestPressableToggleHoloLens2() + { + var rightHand = new TestHand(Handedness.Right); + Vector3 p2 = new Vector3(0.015f, 0f, 0.3f); + + Interactable interactable; + Transform frontPlateTransform; + + InstantiatePressableButtonHoloLens2Toggle( + new Vector3(0.0f, 0.1f, 0.4f), + DefaultRotationToggle, + out interactable, + out frontPlateTransform); + + Assert.True(interactable.IsEnabled); + + bool wasClicked = false; + interactable.OnClick.AddListener(() => { wasClicked = true; }); + + // Get start position of the front plate before button is pressed + Vector3 frontPlateStartPosition = frontPlateTransform.localPosition; + + yield return rightHand.Show(p2); + yield return PlayModeTestUtilities.WaitForInputSystemUpdate(); + Assert.IsTrue(interactable.HasFocus, "Interactable does not have focus when hand is pointing at it."); + + int numClicks = 3; + for (int i = 0; i < numClicks; i++) + { + wasClicked = false; + yield return rightHand.Click(); + // Wait for button animation to complete + yield return new WaitForSeconds(0.33f); + + Assert.True(wasClicked, "Toggle button was not clicked"); + Assert.AreEqual((i + 1) % 2, interactable.CurrentDimension, $"Toggle button is in incorrect toggle state on click {i}"); + + // Make sure the button depth is back at the starting position + Assert.True(frontPlateTransform.localPosition == frontPlateStartPosition, "Toggle button front plate did not return to starting position."); + } + + GameObject.Destroy(interactable.gameObject); + } + + #region Test Helpers + /// /// Generates an interactable from primitives and assigns a select action. /// - /// - /// - /// - /// - private void AssembleInteractableButton(out GameObject interactableObject, out Interactable interactable, out Transform translateTargetObject, string selectActionDescription = "Select") + private void AssembleInteractableButton(out Interactable interactable, out Transform translateTargetObject, string selectActionDescription = "Select") { // Assemble an interactable out of a set of primitives // This will be the button housing - interactableObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder); + var interactableObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder); interactableObject.name = "RuntimeInteractable"; interactableObject.transform.position = new Vector3(0.05f, 0.05f, 0.625f); interactableObject.transform.localScale = new Vector3(0.15f, 0.025f, 0.15f); @@ -480,7 +644,10 @@ private void AssembleInteractableButton(out GameObject interactableObject, out I // This will be the part that gets scaled GameObject childObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder); - childObject.GetComponent().material.color = Color.blue; + var renderer = childObject.GetComponent(); + renderer.material.color = DefaultColor; + renderer.material.shader = StandardShaderUtility.MrtkStandardShader; + childObject.transform.parent = interactableObject.transform; childObject.transform.localScale = new Vector3(0.9f, 1f, 0.9f); childObject.transform.localPosition = new Vector3(0f, 1.5f, 0f); @@ -493,20 +660,37 @@ private void AssembleInteractableButton(out GameObject interactableObject, out I // Add an interactable interactable = interactableObject.AddComponent(); -#if UNITY_EDITOR - // Find our states and themes via the asset database - Theme cylinderTheme = ScriptableObjectExtensions.GetAllInstances().FirstOrDefault(profile => profile.name.Equals($"CylinderTheme")); - States defaultStates = ScriptableObjectExtensions.GetAllInstances().FirstOrDefault(profile => profile.name.Equals($"DefaultInteractableStates")); + var themeDefinition = ThemeDefinition.GetDefaultThemeDefinition().Value; + // themeDefinition.Easing.Enabled = false; + // Set the offset state property (index = 1) to move on the Pressed state (index = 2) + themeDefinition.StateProperties[1].Values = new List() + { + new ThemePropertyValue() { Vector3 = Vector3.zero}, + new ThemePropertyValue() { Vector3 = Vector3.zero}, + new ThemePropertyValue() { Vector3 = new Vector3(0.0f, -0.32f, 0.0f)}, + new ThemePropertyValue() { Vector3 = Vector3.zero}, + }; + // Set the color state property (index = 2) values + themeDefinition.StateProperties[2].Values = new List() + { + new ThemePropertyValue() { Color = DefaultColor}, + new ThemePropertyValue() { Color = FocusColor}, + new ThemePropertyValue() { Color = Color.green}, + new ThemePropertyValue() { Color = DisabledColor}, + }; - interactable.States = defaultStates; - InteractableProfileItem profileItem = new InteractableProfileItem(); - profileItem.Themes = new System.Collections.Generic.List() { cylinderTheme }; - profileItem.HadDefaultTheme = true; - profileItem.Target = translateTargetObject.gameObject; + Theme testTheme = ScriptableObject.CreateInstance(); + testTheme.States = interactable.States; + testTheme.Definitions = new List() { themeDefinition }; - interactable.Profiles = new System.Collections.Generic.List() { profileItem }; - interactable.ForceUpdateThemes(); -#endif + interactable.Profiles = new List() + { + new InteractableProfileItem() + { + Themes = new List() { testTheme }, + Target = translateTargetObject.gameObject, + }, + }; // Set the interactable to respond to the requested input action MixedRealityInputAction selectAction = CoreServices.InputSystem.InputSystemProfile.InputActionsProfile.InputActions.Where(m => m.Description == selectActionDescription).FirstOrDefault(); @@ -514,7 +698,7 @@ private void AssembleInteractableButton(out GameObject interactableObject, out I interactable.InputAction = selectAction; } - private GameObject InstantiateInteractableFromPath(Vector3 position, Vector3 eulerAngles, string path) + private GameObject InstantiateInteractableFromPath(Vector3 position, Quaternion rotation, string path) { // Load interactable prefab Object interactablePrefab = AssetDatabase.LoadAssetAtPath(path, typeof(Object)); @@ -523,33 +707,75 @@ private GameObject InstantiateInteractableFromPath(Vector3 position, Vector3 eul // Move the object into position result.transform.position = position; - result.transform.eulerAngles = eulerAngles; + result.transform.rotation = rotation; return result; } + /// + /// Instantiates HoloLens2PressableToggle + /// + private void InstantiatePressableButtonHoloLens2Toggle(Vector3 position, Quaternion rotation, out Interactable interactable, out Transform frontPlateTransform) + { + // Load interactable prefab + var interactableObject = InstantiateInteractableFromPath(position, rotation, PressableHoloLens2TogglePrefabPath); + interactable = interactableObject.GetComponent(); + Assert.IsNotNull(interactable); + + // Find the target object for the interactable transformation + frontPlateTransform = interactableObject.transform.Find("CompressableButtonVisuals/FrontPlate"); + + Assert.IsNotNull(frontPlateTransform, "Object 'FrontPlate' could not be found under PressableButtonHoloLens2Toggle."); + } + /// /// Instantiates the default interactable button. /// - /// - /// - /// - /// - /// - private void InstantiateDefaultInteractablePrefab(Vector3 position, Vector3 rotation, out GameObject interactableObject, out Interactable interactable, out Transform translateTargetObject) + private void InstantiatePressButtonPrefab(Vector3 position, Quaternion rotation, out Interactable interactable, out Transform pressButtonCylinder) { // Load interactable prefab - interactableObject = InstantiateInteractableFromPath(position, rotation, defaultInteractablePrefabAssetPath); + var interactableObject = InstantiateInteractableFromPath(position, rotation, DefaultInteractablePrefabAssetPath); interactable = interactableObject.GetComponent(); Assert.IsNotNull(interactable); // Find the target object for the interactable transformation - translateTargetObject = interactableObject.transform.Find("Cylinder"); - Assert.IsNotNull(translateTargetObject, "Object 'Cylinder' could not be found under example object Model_PushButton."); + pressButtonCylinder = interactableObject.transform.Find("Cylinder"); + Assert.IsNotNull(pressButtonCylinder, "Object 'Cylinder' could not be found under example object Model_PushButton."); + } - // Move the object into position - interactableObject.transform.position = position; - interactableObject.transform.eulerAngles = rotation; + private IEnumerator CheckButtonTranslation(Vector3 targetStartPosition, Transform translateTarget, bool shouldTranslate = true) + { + bool wasTranslated = false; + float pressEndTime = Time.time + ButtonPressAnimationDelay; + while (Time.time < pressEndTime) + { // If the transform is moved at any point during this interval, we were successful + yield return new WaitForFixedUpdate(); + wasTranslated |= targetStartPosition != translateTarget.localPosition; + } + + Assert.AreEqual(shouldTranslate, wasTranslated, "Transform target object did or did not translate properly by action."); + } + + private IEnumerator RunGlobalClick(IMixedRealityInputSource defaultInputSource, + MixedRealityInputAction inputAction, + Vector3 targetStartPosition, + Transform translateTargetObject, + bool shouldTranslate = true) + { + // Raise a select down input event, then wait for transition to take place + // Wait for at least one frame explicitly to ensure the input goes through + CoreServices.InputSystem.RaiseOnInputDown(defaultInputSource, Handedness.Right, inputAction); + yield return PlayModeTestUtilities.WaitForInputSystemUpdate(); + + yield return CheckButtonTranslation(targetStartPosition, translateTargetObject, shouldTranslate); + + // Raise a select up input event, then wait for transition to take place + CoreServices.InputSystem.RaiseOnInputUp(defaultInputSource, Handedness.Right, inputAction); + yield return PlayModeTestUtilities.WaitForInputSystemUpdate(); + // Wait for at button release animation to finish + yield return new WaitForSeconds(ButtonReleaseAnimationDelay); } + + #endregion } } #endif diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/LoadingIndicatorTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/LoadingIndicatorTests.cs index 0dc09f3f365..d122993605e 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/LoadingIndicatorTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/LoadingIndicatorTests.cs @@ -27,7 +27,6 @@ class ProgressIndicatorTests /// /// Tests that prefab can be opened and closed at runtime. /// - /// [UnityTest] public IEnumerator TestOpenCloseLoadingBarPrefab() { @@ -48,7 +47,6 @@ public IEnumerator TestOpenCloseLoadingBarPrefab() /// /// Tests that prefab can be opened and closed at runtime. /// - /// [UnityTest] public IEnumerator TestOpenCloseRotatingObjectPrefab() { @@ -69,7 +67,6 @@ public IEnumerator TestOpenCloseRotatingObjectPrefab() /// /// Tests that prefab can be opened and closed at runtime. /// - /// [UnityTest] public IEnumerator TestOpenCloseRotatingOrbsPrefab() { diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/ManipulationHandlerTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/ManipulationHandlerTests.cs index c0cbc816f23..aaa563d214f 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/ManipulationHandlerTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/ManipulationHandlerTests.cs @@ -40,7 +40,6 @@ public void TearDown() /// Test creating adding a ManipulationHandler to GameObject programmatically. /// Should be able to run scene without getting any exceptions. /// - /// [UnityTest] public IEnumerator ManipulationHandlerInstantiate() { @@ -61,7 +60,6 @@ public IEnumerator ManipulationHandlerInstantiate() /// Test creating ManipulationHandler and receiving hover enter/exit events /// from gaze provider. /// - /// [UnityTest] public IEnumerator ManipulationHandlerGazeHover() { @@ -108,7 +106,6 @@ public IEnumerator ManipulationHandlerGazeHover() /// as well as forcefully ending of the manipulation /// from gaze provider. /// - /// [UnityTest] public IEnumerator ManipulationHandlerForceRelease() { @@ -174,7 +171,6 @@ public IEnumerator ManipulationHandlerForceRelease() /// Tests MaintainRotationToUser mode of ManipulationHandler (OneHandedOnly) /// MaintainRotationToUser should only align with user / camera on x / y and not apply rotations in z /// - /// [UnityTest] public IEnumerator ManipulationHandlerRotateWithUser() { @@ -240,7 +236,6 @@ public IEnumerator ManipulationHandlerRotateWithUser() /// Test validates throw behavior on manipulation handler. Box with disabled gravity should travel a /// certain distance when being released from grab during hand movement /// - /// [UnityTest] public IEnumerator ManipulationHandlerThrow() { @@ -274,12 +269,14 @@ public IEnumerator ManipulationHandlerThrow() yield return hand.Show(initialHandPosition); yield return hand.MoveTo(initialObjectPosition); - yield return hand.GrabAndThrowAt(rightPosition); + // Note: don't wait for a physics update after releasing, because it would recompute + // the velocity of the hand and make it deviate from the rigid body velocity! + yield return hand.GrabAndThrowAt(rightPosition, false); // With simulated hand angular velocity would not be equal to 0, because of how simulation // moves hand when releasing the Pitch. Even though it doesn't directly follow from hand movement, there will always be some rotation. Assert.NotZero(rigidBody.angularVelocity.magnitude, "Manipulationhandler should apply angular velocity to rigidBody upon release."); - Assert.AreEqual(rigidBody.velocity, hand.GetVelocity(), "Manipulationhandler should apply hand velocity to rigidBody upon release."); + Assert.AreEqual(hand.GetVelocity(), rigidBody.velocity, "Manipulationhandler should apply hand velocity to rigidBody upon release."); // This is just for debugging purposes, so object's movement after release can be seen. yield return hand.MoveTo(initialHandPosition); @@ -295,7 +292,6 @@ public IEnumerator ManipulationHandlerThrow() /// The test will check the offset between object pivot and grab point and make sure we're not drifting /// out of the object on pointer rotation - this test should be the same in all rotation setups /// - /// [UnityTest] public IEnumerator ManipulationHandlerOneHandMoveNear() { @@ -389,7 +385,6 @@ public IEnumerator ManipulationHandlerOneHandMoveNear() /// out of the object on pointer rotation - this test is the same for all objects that won't change /// their orientation to camera while camera / pointer rotates as this will modify the far interaction grab point /// - /// [UnityTest] public IEnumerator ManipulationHandlerOneHandMoveFar() { @@ -412,36 +407,30 @@ public IEnumerator ManipulationHandlerOneHandMoveFar() const int numCircleSteps = 10; const int numHandSteps = 3; - Vector3 initialHandPosition = new Vector3(0.04f, -0.18f, 0.3f); // grab point on the lower center part of the cube - + // Hand pointing at middle of cube + Vector3 initialHandPosition = new Vector3(0.044f, -0.1f, 0.45f); TestHand hand = new TestHand(Handedness.Right); // do this test for every one hand rotation mode foreach (ManipulationHandler.RotateInOneHandType type in Enum.GetValues(typeof(ManipulationHandler.RotateInOneHandType))) { - // TODO: grab point is moving in this test and has to be covered by a different test - if (type == ManipulationHandler.RotateInOneHandType.MaintainOriginalRotation) + // Some rotation modes move the object on grab, don't test those + if (type == ManipulationHandler.RotateInOneHandType.MaintainOriginalRotation || + type == ManipulationHandler.RotateInOneHandType.FaceAwayFromUser || + type == ManipulationHandler.RotateInOneHandType.FaceUser) { continue; - } + } manipHandler.OneHandRotationModeFar = type; TestUtilities.PlayspaceToOriginLookingForward(); yield return hand.Show(initialHandPosition); - yield return null; + yield return PlayModeTestUtilities.WaitForInputSystemUpdate(); - // pinch and let go of the object again to make sure that any rotation adjustment we're doing is applied - // at the beginning of our test and doesn't interfere with our grab position on the cubes surface while we're moving around - yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); - yield return new WaitForFixedUpdate(); - yield return null; - - yield return hand.SetGesture(ArticulatedHandPose.GestureId.Open); yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); - // save relative pos grab point to object - for far interaction we need to check the grab point where the pointer ray hits the manipulated object InputSimulationService simulationService = PlayModeTestUtilities.GetInputSimulationService(); IMixedRealityController[] inputControllers = simulationService.GetActiveControllers(); @@ -493,7 +482,6 @@ public IEnumerator ManipulationHandlerOneHandMoveFar() /// /// This tests the one hand near rotation and applying different rotation constraints to the object. /// - /// [UnityTest] public IEnumerator ManipulationHandlerOneHandRotateWithConstraint() { @@ -576,7 +564,7 @@ public IEnumerator ManipulationHandlerOneHandRotateWithConstraint() private class OriginOffsetTest { - const int numSteps = 1; + const int numSteps = 10; public struct TestData { @@ -678,10 +666,20 @@ private void RecordTransform(Transform transform, string description) public IEnumerator ManipulationHandlerOriginOffset() { TestUtilities.PlayspaceToOriginLookingForward(); + // Without this background object that contains a collider, Unity will rarely + // return no colliders hit for raycasts and sphere casts, even if a ray / sphere is + // intersecting the collider. Causes tests to be unreliable. + // It seems to only happen when one collider is in the scene. + var backgroundObject = GameObject.CreatePrimitive(PrimitiveType.Cube); + backgroundObject.transform.position = Vector3.forward * 10; + backgroundObject.transform.localScale = new Vector3(100, 100, 1); + var backgroundmaterial = new Material(StandardShaderUtility.MrtkStandardShader); + backgroundmaterial.color = Color.green; + backgroundObject.GetComponent().material = backgroundmaterial; + // set up cube with manipulation handler var testObject = GameObject.CreatePrimitive(PrimitiveType.Cube); - var manipHandler = testObject.AddComponent(); manipHandler.HostTransform = testObject.transform; manipHandler.SmoothingActive = false; @@ -689,7 +687,6 @@ public IEnumerator ManipulationHandlerOriginOffset() // add near interaction grabbable to be able to grab the cube with the simulated articulated hand testObject.AddComponent(); - testObject.transform.localScale = Vector3.one * 0.2f; testObject.transform.position = Vector3.forward; @@ -711,11 +708,12 @@ public IEnumerator ManipulationHandlerOriginOffset() } mesh.vertices = vertices; mesh.RecalculateNormals(); + mesh.RecalculateBounds(); testObject.GetComponent().center = offset; - testObject.transform.position = Vector3.forward - testObject.transform.TransformVector(offset); // Collect data for modified cube + OriginOffsetTest actualTest = new OriginOffsetTest(); yield return actualTest.RecordTransformValues(testObject); yield return null; @@ -729,7 +727,7 @@ public IEnumerator ManipulationHandlerOriginOffset() { Vector3 transformedOffset = actualData[i].pose.Rotation * Vector3.Scale(offset, actualData[i].scale); TestUtilities.AssertAboutEqual(expectedData[i].pose.Position, actualData[i].pose.Position + transformedOffset, $"Failed for position of object for {actualData[i].manipDescription}"); - TestUtilities.AssertAboutEqual(expectedData[i].pose.Rotation, actualData[i].pose.Rotation, $"Failed for rotation of object for {actualData[i].manipDescription}"); + TestUtilities.AssertAboutEqual(expectedData[i].pose.Rotation, actualData[i].pose.Rotation, $"Failed for rotation of object for {actualData[i].manipDescription}", 1.0f); TestUtilities.AssertAboutEqual(expectedData[i].scale, actualData[i].scale, $"Failed for scale of object for {actualData[i].manipDescription}"); } } @@ -739,7 +737,6 @@ public IEnumerator ManipulationHandlerOriginOffset() /// This test will scale a cube with two hand manipulation and ensure that /// maximum and minimum scales are not exceeded. /// - /// [UnityTest] public IEnumerator ManipulationHandlerMinMaxScale() { @@ -814,10 +811,8 @@ public IEnumerator ManipulationHandlerRotateHeadGGV() // Switch to Gestures var iss = PlayModeTestUtilities.GetInputSimulationService(); - var oldIsp = iss.InputSimulationProfile; - var isp = ScriptableObject.CreateInstance(); - isp.HandSimulationMode = HandSimulationMode.Gestures; - iss.InputSimulationProfile = isp; + var oldHandSimMode = iss.HandSimulationMode; + iss.HandSimulationMode = HandSimulationMode.Gestures; // set up cube with manipulation handler var testObject = GameObject.CreatePrimitive(PrimitiveType.Cube); @@ -833,29 +828,200 @@ public IEnumerator ManipulationHandlerRotateHeadGGV() Vector3 originalHandPosition = new Vector3(0, 0, 0.5f); TestHand hand = new TestHand(Handedness.Right); const int numHandSteps = 1; - + // Grab cube yield return hand.Show(originalHandPosition); - yield return null; + + // Hand position is not exactly the pointer position, this correction applies the delta + // from the hand to the pointer. + Vector3 correction = originalHandPosition - hand.GetPointer().Position; + yield return hand.Move(correction, numHandSteps); + yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return null; // Rotate Head and readjust hand int numRotations = 10; for (int i = 0; i < numRotations; i++) { MixedRealityPlayspace.Transform.Rotate(Vector3.up, 180 / numRotations); - yield return hand.MoveTo(originalHandPosition, numHandSteps); + correction = originalHandPosition - hand.GetPointer().Position; + yield return hand.Move(correction, numHandSteps); yield return null; // Test Object hasn't moved - TestUtilities.AssertAboutEqual(initialObjectPosition, testObject.transform.position, "Object moved while rotating head"); + TestUtilities.AssertAboutEqual(initialObjectPosition, testObject.transform.position, "Object moved while rotating head", 0.01f); TestUtilities.AssertAboutEqual(initialObjectRotation, testObject.transform.rotation, "Object rotated while rotating head", 0.25f); } // Restore the input simulation profile - iss.InputSimulationProfile = oldIsp; + iss.HandSimulationMode = oldHandSimMode; + yield return null; + } + + /// + /// For positionless input sources that use gaze, such as xbox controller, pointer position will + /// be coincident with the head position. This was causing issues with manipulation handler, as + /// the distance between the pointer and the head is taken as part of the move logic. + /// This test simulates a positionless input source by using GGV hands and setting the hand position + /// to be the head position. It then ensures that there is no weird behaviour as a result of this. + /// + [UnityTest] + public IEnumerator ManipulationHandlerPositionlessController() + { + TestUtilities.PlayspaceToOriginLookingForward(); + + // Switch to Gestures + var iss = PlayModeTestUtilities.GetInputSimulationService(); + var oldHandSimMode = iss.HandSimulationMode; + iss.HandSimulationMode = HandSimulationMode.Gestures; + + // set up cube with manipulation handler + var testObject = GameObject.CreatePrimitive(PrimitiveType.Cube); + testObject.transform.localScale = Vector3.one * 0.2f; + testObject.transform.position = new Vector3(0f, 0f, 1f); + + var manipHandler = testObject.AddComponent(); + manipHandler.HostTransform = testObject.transform; + manipHandler.SmoothingActive = false; + + TestHand hand = new TestHand(Handedness.Right); + const int numHandSteps = 1; + + float expectedDist = Vector3.Distance(testObject.transform.position, CameraCache.Main.transform.position); + + yield return hand.Show(CameraCache.Main.transform.position); + yield return null; + + // Hand position is not exactly the pointer position, this correction applies the delta + // from the hand to the pointer. + Vector3 correction = CameraCache.Main.transform.position - hand.GetPointer().Position; + yield return hand.Move(correction, numHandSteps); + yield return null; + + Assert.AreEqual(expectedDist, Vector3.Distance(testObject.transform.position, CameraCache.Main.transform.position), 0.02f); + + yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return null; + + Assert.AreEqual(expectedDist, Vector3.Distance(testObject.transform.position, CameraCache.Main.transform.position), 0.02f); + + Vector3 delta = new Vector3(0.2f, 0, 0); + MixedRealityPlayspace.Transform.Translate(delta); + yield return hand.Move(delta, numHandSteps); + yield return null; + + Assert.AreEqual(expectedDist, Vector3.Distance(testObject.transform.position, CameraCache.Main.transform.position), 2.5f); + + yield return hand.SetGesture(ArticulatedHandPose.GestureId.Open); + yield return null; + + Assert.AreEqual(expectedDist, Vector3.Distance(testObject.transform.position, CameraCache.Main.transform.position), 0.02f); + + // Restore the input simulation profile + iss.HandSimulationMode = oldHandSimMode; + yield return null; + } + + /// + /// This test first moves the hand a set amount along the x-axis, records its x position, then moves + /// it the same amount along the y-axis and records its y position. Given no constraints on manipulation, + /// we expect these values to be the same. + /// This test was added as a change to pointer behaviour made GGV manipulation along the y-axis sluggish. + /// + [UnityTest] + public IEnumerator ManipulationHandlerMoveYAxisGGV() + { + TestUtilities.PlayspaceToOriginLookingForward(); + + // Switch to Gestures + var iss = PlayModeTestUtilities.GetInputSimulationService(); + var oldHandSimMode = iss.HandSimulationMode; + iss.HandSimulationMode = HandSimulationMode.Gestures; + + // set up cube with manipulation handler + var testObject = GameObject.CreatePrimitive(PrimitiveType.Cube); + testObject.transform.localScale = Vector3.one * 0.2f; + testObject.transform.position = new Vector3(0f, 0f, 1f); + + var manipHandler = testObject.AddComponent(); + manipHandler.HostTransform = testObject.transform; + manipHandler.SmoothingActive = false; + + TestHand hand = new TestHand(Handedness.Right); + const int numHandSteps = 1; + + float moveBy = 0.5f; + float xPos, yPos; + + // Grab the object + yield return hand.Show(new Vector3(0, 0, 0.5f)); + yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return null; + + yield return hand.Move(Vector3.right * moveBy, numHandSteps); + yield return null; + + xPos = testObject.transform.position.x; + + yield return hand.Move((Vector3.left + Vector3.up) * moveBy, numHandSteps); + yield return null; + + yPos = testObject.transform.position.y; + + Assert.AreEqual(xPos, yPos, 0.02f); + + // Restore the input simulation profile + iss.HandSimulationMode = oldHandSimMode; yield return null; } + + /// + /// Ensure that while manipulating an object, if that object gets + /// deactivated, that manipulation no longer moves that object. + /// + [UnityTest] + public IEnumerator ManipulationHandlerDisableObject() + { + TestUtilities.PlayspaceToOriginLookingForward(); + + // set up cube with manipulation handler + var testObject = GameObject.CreatePrimitive(PrimitiveType.Cube); + testObject.transform.localScale = Vector3.one * 0.2f; + Vector3 originalObjectPos = Vector3.forward; + testObject.transform.position = originalObjectPos; + + var manipHandler = testObject.AddComponent(); + manipHandler.HostTransform = testObject.transform; + manipHandler.SmoothingActive = false; + + TestHand hand = new TestHand(Handedness.Right); + const int numHandSteps = 1; + + // Move the object without disabling and assure it moves + Vector3 originalHandPos = new Vector3(0.06f, -0.1f, 0.5f); + yield return hand.Show(originalHandPos); + yield return hand.SetGesture(ArticulatedHandPose.GestureId.Pinch); + yield return null; + + yield return hand.Move(new Vector3(0.2f, 0, 0), numHandSteps); + yield return null; + + Assert.AreNotEqual(originalObjectPos, testObject.transform.position); + + // Disable the object and move the hand and assure the object does not move + yield return hand.MoveTo(originalHandPos, numHandSteps); + yield return null; + + testObject.SetActive(false); + yield return null; + testObject.SetActive(true); + + yield return hand.Move(new Vector3(0.2f, 0, 0), numHandSteps); + yield return null; + + TestUtilities.AssertAboutEqual(originalObjectPos, testObject.transform.position, "Object moved after it was disabled"); + } } } #endif \ No newline at end of file diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Microsoft.MixedReality.Toolkit.Tests.PlayModeTests.asmdef b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Microsoft.MixedReality.Toolkit.Tests.PlayModeTests.asmdef index 7ba423e000f..bc0cdb2bb92 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Microsoft.MixedReality.Toolkit.Tests.PlayModeTests.asmdef +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Microsoft.MixedReality.Toolkit.Tests.PlayModeTests.asmdef @@ -10,7 +10,8 @@ "Microsoft.MixedReality.Toolkit.Services.InputSimulation", "Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor", "Microsoft.MixedReality.Toolkit.Tests", - "Unity.TextMeshPro" + "Unity.TextMeshPro", + "Microsoft.MixedReality.Toolkit.Async" ], "optionalUnityReferences": [ "TestAssemblies" diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/NearInteractionTouchableTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/NearInteractionTouchableTests.cs index e567c95952b..07c0294a013 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/NearInteractionTouchableTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/NearInteractionTouchableTests.cs @@ -40,7 +40,7 @@ public void Setup() Light light = lightObj.AddComponent(); light.type = LightType.Directional; - var shader = Shader.Find("Mixed Reality Toolkit/Standard"); + var shader = StandardShaderUtility.MrtkStandardShader; idleMaterial = new Material(shader); idleMaterial.color = Color.yellow; @@ -59,7 +59,6 @@ public void TearDown() /// Test creating adding a NearInteractionTouchable to GameObject programmatically. /// Should be able to run scene without getting any exceptions. /// - /// [UnityTest] public IEnumerator NearInteractionTouchableInstantiate() { @@ -76,7 +75,7 @@ public IEnumerator NearInteractionTouchableInstantiate() yield return null; } - private const int numSteps = 30; + private const int numSteps = 10; // Scale larger than bounds vector to test bounds checks private float objectScale = 0.4f; private Vector3 initialHandPosition = new Vector3(0, 0, 0.5f); @@ -106,17 +105,22 @@ public IEnumerator NearInteractionTouchableInstantiate() private static Vector3 GetRandomPoint(int i) { int idx = i % numRandomPoints; - return new Vector3(randomPoints[3*idx + 0], randomPoints[3*idx + 1], randomPoints[3*idx + 2]); + return new Vector3(randomPoints[3 * idx + 0], randomPoints[3 * idx + 1], randomPoints[3 * idx + 2]); } private InputSimulationService inputSim; - IMixedRealityInputSystem inputSystem; + private IMixedRealityInputSystem inputSystem; - private T CreateTouchable(float scale) where T : BaseNearInteractionTouchable + private T CreateTouchable(float cubeScale) where T : BaseNearInteractionTouchable + { + return CreateTouchable(new Vector3(1.0f, 1.0f, 0.1f) * cubeScale); + } + + private T CreateTouchable(Vector3 cubeDimensions) where T : BaseNearInteractionTouchable { // Set up cube with touchable var testObject = GameObject.CreatePrimitive(PrimitiveType.Cube); - testObject.transform.localScale = new Vector3(1.0f, 1.0f, 0.1f) * scale; + testObject.transform.localScale = cubeDimensions; testObject.transform.position = objectPosition; testObject.GetComponent().material = idleMaterial; @@ -126,6 +130,7 @@ private T CreateTouchable(float scale) where T : BaseNearInteractionTouchable return touchable; } + private TouchEventCatcher CreateEventCatcher(BaseNearInteractionTouchable touchable) { var catcher = TouchEventCatcher.Create(touchable.gameObject); @@ -145,13 +150,12 @@ private TouchEventCatcher CreateEventCatcher(BaseNearInteractionTouchable toucha /// /// Test creates an object with NearInteractionTouchable /// - /// [UnityTest] public IEnumerator NearInteractionTouchableVariant() { var touchable = CreateTouchable(objectScale); touchable.SetLocalForward(touchNormal); - touchable.Bounds = new Vector2(0.5f, 0.5f); + touchable.SetBounds(new Vector2(0.5f, 0.5f)); yield return new WaitForFixedUpdate(); yield return null; @@ -196,11 +200,10 @@ public IEnumerator NearInteractionTouchableVariant() /// /// Test creates an object with NearInteractionTouchableVolume /// - /// [UnityTest] public IEnumerator NearInteractionTouchableVolumeVariant() { - var touchable = CreateTouchable(objectScale); + var touchable = CreateTouchable(Vector3.one); yield return new WaitForFixedUpdate(); yield return null; @@ -209,11 +212,25 @@ public IEnumerator NearInteractionTouchableVolumeVariant() using (var catcher = CreateEventCatcher(touchable)) { - // Touch started and completed when entering and exiting the collider + // Touch started when entering collider yield return PlayModeTestUtilities.MoveHandFromTo(initialHandPosition, objectPosition, numSteps, ArticulatedHandPose.GestureId.Open, Handedness.Right, inputSim); Assert.AreEqual(1, catcher.EventsStarted); Assert.AreEqual(0, catcher.EventsCompleted); - yield return PlayModeTestUtilities.MoveHandFromTo(objectPosition, rightPosition, numSteps, ArticulatedHandPose.GestureId.Pinch, Handedness.Right, inputSim); + + // Ensure no touch up event fires while moving hand/pokepointer through collider to each corner of volume + Vector3[] cornerPositions = new Vector3[8]; + touchable.GetComponent().bounds.GetCornerPositions(ref cornerPositions); + var currentPos = objectPosition; + for (int i = 0; i < cornerPositions.Length; i++) + { + yield return PlayModeTestUtilities.MoveHandFromTo(currentPos, cornerPositions[i], numSteps, ArticulatedHandPose.GestureId.Open, Handedness.Right, inputSim); + currentPos = cornerPositions[i]; + Assert.AreEqual(1, catcher.EventsStarted, "Received extra touch down when moving through volume to position " + currentPos); + Assert.AreEqual(0, catcher.EventsCompleted, "Received extra touch up when moving through volume to position " + currentPos); + } + + // Touch up when exit collider + yield return PlayModeTestUtilities.MoveHandFromTo(currentPos, rightPosition, numSteps, ArticulatedHandPose.GestureId.Pinch, Handedness.Right, inputSim); Assert.AreEqual(1, catcher.EventsStarted); Assert.AreEqual(1, catcher.EventsCompleted); @@ -287,7 +304,6 @@ private static void TestEvents(TouchEventCatcher[] catchers, int[] eventsStarted /// /// Test scene query with stacked touchables. /// - /// [UnityTest] public IEnumerator NearInteractionTouchableStack() { @@ -313,13 +329,13 @@ public IEnumerator NearInteractionTouchableStack() yield return PlayModeTestUtilities.MoveHandFromTo(initialHandPosition, objectPosition, numSteps, ArticulatedHandPose.GestureId.Open, Handedness.Right, inputSim); // No. 0 is touched initially - TestEvents(catchers, new int [] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, new int [] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); + TestEvents(catchers, new int[] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, new int[] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); yield return PlayModeTestUtilities.MoveHandFromTo(objectPosition, rightPosition, numSteps, ArticulatedHandPose.GestureId.Pinch, Handedness.Right, inputSim); // Only No. 3 gets touched when moving through the row, because No. 0 is still active while inside the poke threshold - TestEvents(catchers, new int [] { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, new int [] { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }); + TestEvents(catchers, new int[] { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, new int[] { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }); yield return PlayModeTestUtilities.MoveHandFromTo(rightPosition, objectPosition, numSteps, ArticulatedHandPose.GestureId.Pinch, Handedness.Right, inputSim); // No. 3 touched a second time - TestEvents(catchers, new int [] { 1, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, new int [] { 1, 0, 0, 2, 0, 0, 0, 0, 0, 0 }); + TestEvents(catchers, new int[] { 1, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, new int[] { 1, 0, 0, 2, 0, 0, 0, 0, 0, 0 }); yield return PlayModeTestUtilities.HideHand(Handedness.Right, inputSim); @@ -333,7 +349,6 @@ public IEnumerator NearInteractionTouchableStack() /// /// Test buffer saturation for the overlap query /// - /// [UnityTest] public IEnumerator NearInteractionTouchableOverlapQuerySaturation() { @@ -352,7 +367,7 @@ public IEnumerator NearInteractionTouchableOverlapQuerySaturation() touchables[i] = CreateTouchable(0.15f); touchables[i].SetLocalForward(touchNormal); - touchables[i].Bounds = new Vector2(0.5f, 0.5f); + touchables[i].SetBounds(new Vector2(0.5f, 0.5f)); touchables[i].transform.position = objectPosition + r * radiusStart; catchers[i] = CreateEventCatcher(touchables[i]); @@ -386,7 +401,6 @@ public IEnumerator NearInteractionTouchableOverlapQuerySaturation() /// /// Test Unity UI button /// - /// [UnityTest] public IEnumerator NearInteractionTouchableUnityUiButton() { @@ -396,7 +410,7 @@ public IEnumerator NearInteractionTouchableUnityUiButton() var button = UnityUiUtilities.CreateButton(Color.gray, Color.blue, Color.green); button.transform.SetParent(canvas.transform, false); var text = UnityUiUtilities.CreateText("test"); - text.transform.SetParent(button.transform); + text.transform.SetParent(button.transform, false); canvas.transform.position = objectPosition; @@ -420,7 +434,6 @@ public IEnumerator NearInteractionTouchableUnityUiButton() /// /// Test Unity UI toggle button /// - /// [UnityTest] public IEnumerator NearInteractionTouchableUnityUiToggle() { @@ -430,7 +443,7 @@ public IEnumerator NearInteractionTouchableUnityUiToggle() var toggle = UnityUiUtilities.CreateToggle(Color.gray, Color.blue, Color.green); toggle.transform.SetParent(canvas.transform, false); var text = UnityUiUtilities.CreateText("test"); - text.transform.SetParent(toggle.transform); + text.transform.SetParent(toggle.transform, false); canvas.transform.position = objectPosition; @@ -461,6 +474,199 @@ public IEnumerator NearInteractionTouchableUnityUiToggle() UnityEngine.Object.Destroy(canvas.gameObject); } + /// + /// Test minimum touch distance. + /// + /// + /// Near interaction uses two separate distance calculations: + /// 1. The PokePointer uses the DistanceToTouchable to determine the closest touchable. This distance value is also used compared to PokePointer.TouchableDistance to determine the set of eligible touchables in the first place. + /// There is no explicit spec which space this distance is computed in, although it should be in world space. Due to the way touchables convert pointer position into local space first and then do a scale-only inverse transform there may be errors. + /// 1. After the PokePointer has selected the closest touchable, it then performs a raycast against either the collider or the UnityUI canvas, depending on type. The (world space) length of that ray is then used as the actual distance for triggering touch events. + /// When the ray length is negative the TouchDown event is raised and the touchable is "down". + /// When the touchable is "down" and the ray length is _greater_ than DebounceThreshold the TouchUp event is raised and the touchable is released. + /// + /// The normal vector for performing the ray cast, however, is still the one returned by the first distance calculation. + /// + /// NearInteractionTouchable also calculates distance from the object center, but the raycast ignores this and uses distance from the collider. + /// UnityUI OTOH does a raycast against a flat canvas, so the two distance values _should_ match (but it's not guaranteed). + /// + [UnityTest] + public IEnumerator NearInteractionTouchableDistance() + { + var touchableRect = CreateTouchable(0.15f); + touchableRect.SetLocalForward(touchNormal); + touchableRect.SetBounds(new Vector2(0.5f, 0.5f)); + var catcherRect = CreateEventCatcher(touchableRect); + + var touchableVolume = CreateTouchable(0.15f); + var catcherVolume = CreateEventCatcher(touchableVolume); + + var canvas = UnityUiUtilities.CreateCanvas(0.002f); + var touchableUI = canvas.GetComponent(); + var button = UnityUiUtilities.CreateButton(Color.gray, Color.blue, Color.green); + button.transform.SetParent(touchableUI.transform, false); + var catcherUI = new UnityButtonEventCatcher(button); + + yield return new WaitForFixedUpdate(); + yield return null; + + touchableRect.gameObject.name = "Rect Touchable"; + touchableVolume.gameObject.name = "Volume Touchable"; + touchableUI.gameObject.name = "UnityUI Touchable"; + + float distSurface = 0.3f; + touchableRect.transform.position = new Vector3(-1, 0, distSurface); + touchableVolume.transform.position = new Vector3(0, 0, distSurface); + touchableUI.transform.position = new Vector3(1, 0, distSurface); + + yield return TestTouchableDistances(touchableRect, 0.0075f, touchableRect.gameObject); + yield return TestTouchableDistances(touchableVolume, 0.0075f, touchableVolume.gameObject); + yield return TestTouchableDistances(touchableUI, 0.0f, button.gameObject); + + UnityEngine.Object.Destroy(touchableRect.gameObject); + UnityEngine.Object.Destroy(touchableVolume.gameObject); + UnityEngine.Object.Destroy(touchableUI.gameObject); + } + + private IEnumerator TestTouchableDistances(BaseNearInteractionTouchable touchable, float colliderThickness, GameObject objectDownExpected) + { + Handedness handedness = Handedness.Right; + ArticulatedHandPose.GestureId gesture = ArticulatedHandPose.GestureId.Open; + + yield return PlayModeTestUtilities.ShowHand(handedness, inputSim); + + PokePointer pokePointer = null; + var hand = HandJointUtils.FindHand(handedness); + Assert.IsNotNull(hand); + foreach (var pointer in hand.InputSource.Pointers) + { + pokePointer = pointer as PokePointer; + if (pokePointer) + { + break; + } + } + Assert.IsNotNull(pokePointer); + float touchableDistance = pokePointer.TouchableDistance; + + float debounceThreshold = 0.01f; + touchable.DebounceThreshold = debounceThreshold; + + Vector3 center = touchable.transform.position; + + float margin = 0.001f; + Vector3 pStart = center + new Vector3(0, 0, -touchableDistance - 0.5f); + Vector3 pTouch = center + new Vector3(0, 0, -touchableDistance + margin); + Vector3 pPoke = center + new Vector3(0, 0, -colliderThickness + margin); + Vector3 pDebounce = center + new Vector3(0, 0, -colliderThickness - touchable.DebounceThreshold - margin); + Vector3 pEnd = center + new Vector3(0, 0, touchableDistance + 0.5f); + + // Test return beyond DebounceThreshold + yield return PlayModeTestUtilities.MoveHandFromTo(pStart, pStart, 1, gesture, handedness, inputSim); + Assert.IsNull(pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pStart, pTouch, numSteps, gesture, handedness, inputSim); + Assert.AreEqual(touchable, pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pTouch, pPoke, numSteps, gesture, handedness, inputSim); + Assert.AreEqual(touchable, pokePointer.ClosestProximityTouchable); + Assert.AreEqual(objectDownExpected, pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pPoke, pDebounce, numSteps, gesture, handedness, inputSim); + Assert.AreEqual(touchable, pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pDebounce, pStart, numSteps, gesture, handedness, inputSim); + Assert.IsNull(pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + // Test touchable distance behind the surface + yield return PlayModeTestUtilities.MoveHandFromTo(pStart, pStart, 1, gesture, handedness, inputSim); + Assert.IsNull(pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pStart, pTouch, numSteps, gesture, handedness, inputSim); + Assert.AreEqual(touchable, pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pTouch, pPoke, numSteps, gesture, handedness, inputSim); + Assert.AreEqual(touchable, pokePointer.ClosestProximityTouchable); + Assert.AreEqual(objectDownExpected, pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pPoke, pEnd, numSteps, gesture, handedness, inputSim); + Assert.IsNull(pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pEnd, pDebounce, numSteps, gesture, handedness, inputSim); + Assert.AreEqual(touchable, pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.MoveHandFromTo(pDebounce, pStart, numSteps, gesture, handedness, inputSim); + Assert.IsNull(pokePointer.ClosestProximityTouchable); + Assert.IsNull(pokePointer.CurrentTouchableObjectDown); + + yield return PlayModeTestUtilities.HideHand(handedness, inputSim); + } + + + /// + /// Test the SetTouchableCollider(BoxCollider collider) method by checking if the touch + /// event is raised when NearInteractionTouchable is added to a gameObject and if the + /// bounds and box collider size is changed. + /// + [UnityTest] + public IEnumerator NearInteractionTouchableSetTouchableCollider() + { + GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.transform.position = new Vector3(0, 0, 2f); + cube.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f); + BoxCollider boxCollider = cube.GetComponent(); + + var rightHand = new TestHand(Handedness.Right); + yield return rightHand.Show(new Vector3(0, 0, 1.5f)); + + // Add NearInteractionTouchable + var nearIT = cube.AddComponent(); + + // Create new gameObject for testing a new BoxCollider + GameObject cube2 = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube2.transform.position = new Vector3(-1f, 0, 2f); + cube2.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f); + + // Change touchableCollider to a new BoxCollider with a different size from another object + BoxCollider newBoxCollider = cube2.GetComponent(); + newBoxCollider.size = new Vector3(4, 2, 1.2f); + + using (var catcher = CreateEventCatcher(nearIT)) + { + // Touch started and completed when entering and exiting the collider + yield return rightHand.Move(new Vector3(0, 0, 0.4f)); + Assert.AreEqual(1, catcher.EventsStarted); + Assert.AreEqual(0, catcher.EventsCompleted); + + yield return rightHand.Move(new Vector3(0, 0, -0.4f)); + Assert.AreEqual(1, catcher.EventsStarted); + Assert.AreEqual(1, catcher.EventsCompleted); + + // Set new touchableCollider bounds + nearIT.SetTouchableCollider(newBoxCollider); + + // Move hand to the side + yield return rightHand.Move(new Vector3(0.5f, 0, 0)); + Assert.AreEqual(1, catcher.EventsStarted); + Assert.AreEqual(1, catcher.EventsCompleted); + + // Move hand forward, on touch + yield return rightHand.Move(new Vector3(0, 0, 0.5f)); + Assert.AreEqual(2, catcher.EventsStarted); + + // Move the hand back, on touch exit + yield return rightHand.Move(new Vector3(0, 0, -0.5f)); + Assert.AreEqual(2, catcher.EventsCompleted); + } + } } } #endif diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PinchSliderTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PinchSliderTests.cs index 7e2c7b8257a..9c848ac36b8 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PinchSliderTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PinchSliderTests.cs @@ -44,7 +44,6 @@ public void TearDown() /// Tests that a slider component can be added at runtime. /// at runtime. /// - /// [UnityTest] public IEnumerator TestAddInteractableAtRuntime() { @@ -62,7 +61,6 @@ public IEnumerator TestAddInteractableAtRuntime() /// /// Tests that an interactable assembled at runtime can be manipulated /// - /// [UnityTest] public IEnumerator TestAssembleInteractableAndNearManip() { @@ -102,7 +100,6 @@ public IEnumerator TestLoadPrefabAndNearManip() /// /// Tests that slider can be assembled from code and manipulated using GGV /// - /// [UnityTest] public IEnumerator TestAssembleInteractableAndFarManip() { @@ -137,7 +134,6 @@ public IEnumerator TestAssembleInteractableAndFarManip() /// /// Tests that interactable raises proper events /// - /// [UnityTest] public IEnumerator TestAssembeInteractableAndEventsRaised() { @@ -202,10 +198,6 @@ private IEnumerator DirectPinchAndMoveSlider(PinchSlider slider, float toSliderV /// /// Generates an interactable from primitives and assigns a select action. /// - /// - /// - /// - /// private void AssembleSlider(Vector3 position, Vector3 rotation, out GameObject pinchSliderObject, out PinchSlider slider, bool isNearInteractionGrabbable = true) { // Assemble an interactable out of a set of primitives diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PlayModeTestUtilities.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PlayModeTestUtilities.cs index da88250dd19..6108cb2d646 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PlayModeTestUtilities.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PlayModeTestUtilities.cs @@ -69,7 +69,6 @@ public static void Setup() /// /// Destroys all objects in the play mode test scene, if it has been loaded, and shuts down MRTK instance. /// - /// public static void TearDown() { TestUtilities.ShutdownMixedRealityToolkit(); @@ -99,7 +98,8 @@ public static SimulatedHandData.HandJointDataGenerator GenerateHandPose(Articula return (jointsOut) => { ArticulatedHandPose gesturePose = ArticulatedHandPose.GetGesturePose(gesture); - gesturePose.ComputeJointPoses(handedness, rotation, worldPosition, jointsOut); + Quaternion worldRotation = rotation * CameraCache.Main.transform.rotation; + gesturePose.ComputeJointPoses(handedness, worldRotation, worldPosition, jointsOut); }; } @@ -234,9 +234,7 @@ public static void PopHandSimulationProfile() internal static void SetHandSimulationMode(HandSimulationMode mode) { var iss = GetInputSimulationService(); - var isp = ScriptableObject.CreateInstance(); - isp.HandSimulationMode = mode; - iss.InputSimulationProfile = isp; + iss.HandSimulationMode = mode; } internal static IEnumerator SetHandState(Vector3 handPos, ArticulatedHandPose.GestureId gestureId, Handedness handedness, InputSimulationService inputSimulationService) @@ -244,6 +242,20 @@ internal static IEnumerator SetHandState(Vector3 handPos, ArticulatedHandPose.Ge yield return MoveHandFromTo(handPos, handPos, 2, ArticulatedHandPose.GestureId.Pinch, handedness, inputSimulationService); } + public static T GetPointer(Handedness handedness) where T : class, IMixedRealityPointer + { + InputSimulationService simulationService = GetInputSimulationService(); + var hand = simulationService.GetHandDevice(handedness); + foreach (var pointer in hand.InputSource.Pointers) + { + if (pointer is T) + { + return pointer as T; + } + } + return null; + } + internal static IEnumerator MoveHandFromTo( Vector3 startPos, Vector3 endPos, int numSteps, ArticulatedHandPose.GestureId gestureId, Handedness handedness, InputSimulationService inputSimulationService) @@ -301,9 +313,6 @@ internal static IEnumerator HideHand(Handedness handedness, InputSimulationServi /// /// Shows the hand in the open state, at the origin /// - /// - /// - /// internal static IEnumerator ShowHand(Handedness handedness, InputSimulationService inputSimulationService) { yield return ShowHand(handedness, inputSimulationService, ArticulatedHandPose.GestureId.Open, Vector3.zero); @@ -320,17 +329,18 @@ internal static IEnumerator ShowHand(Handedness handedness, InputSimulationServi yield return null; } - internal static void EnsureTextMeshProEssentials() + internal static void InstallTextMeshProEssentials() { #if UNITY_EDITOR - // Special handling for TMP Settings and importing Essential Resources - if (TMP_Settings.instance == null) + // Import the TMP Essential Resources package + string packageFullPath = Path.GetFullPath("Packages/com.unity.textmeshpro"); + if (Directory.Exists(packageFullPath)) { - string packageFullPath = Path.GetFullPath("Packages/com.unity.textmeshpro"); - if (Directory.Exists(packageFullPath)) - { - AssetDatabase.ImportPackage(packageFullPath + "/Package Resources/TMP Essential Resources.unitypackage", false); - } + AssetDatabase.ImportPackage(packageFullPath + "/Package Resources/TMP Essential Resources.unitypackage", false); + } + else + { + Debug.LogError("Unable to locate the Text Mesh Pro package."); } #endif } @@ -349,6 +359,22 @@ internal static IEnumerator WaitForEnterKey() } } + /// + /// Sometimes it take a few frames for inputs raised via InputSystem.OnInput* + /// to actually get sent to input handlers. This method waits for enough frames + /// to pass so that any events raised actually have time to send to handlers. + /// We set it fairly conservatively to ensure that after waiting + /// all input events have been sent. + /// + internal static IEnumerator WaitForInputSystemUpdate() + { + const int inputSystemUpdateFrames = 10; + for (int i = 0; i < inputSystemUpdateFrames; i++) + { + yield return null; + } + } + } } #endif diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerBehaviorTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerBehaviorTests.cs new file mode 100644 index 00000000000..60d6ff5f0a5 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerBehaviorTests.cs @@ -0,0 +1,285 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#if !WINDOWS_UWP +// When the .NET scripting backend is enabled and C# projects are built +// The assembly that this file is part of is still built for the player, +// even though the assembly itself is marked as a test assembly (this is not +// expected because test assemblies should not be included in player builds). +// Because the .NET backend is deprecated in 2018 and removed in 2019 and this +// issue will likely persist for 2018, this issue is worked around by wrapping all +// play mode tests in this check. + +using NUnit.Framework; +using UnityEngine; +using UnityEngine.TestTools; +using System.Collections; +using Microsoft.MixedReality.Toolkit.Utilities; +using Microsoft.MixedReality.Toolkit.Input; +using System; +using System.Collections.Generic; +using UnityEditor; + +namespace Microsoft.MixedReality.Toolkit.Tests +{ + /// + /// Verify that pointers can be turned on and off via FocusProvider.SetPointerBehavior + /// + public class PointerBehaviorTests : BasePlayModeTests + { + /// + /// Simple container for comparing expected pointer states to actual. + /// if a bool? is null, this means pointer is null (doesn't exist) + /// if a bool? is false, this means the pointer exists, but is not enabled (IsInteractionEnabled == false) + /// if a bool? is true, this means the pointer exists, and is enabled + /// + private class PointerStateContainer + { + public bool? LinePointerEnabled { get; set; } + public bool? SpherePointerEnabled { get; set; } + public bool? PokePointerEnabled { get; set; } + public bool? GazePointerEnabled { get; set; } + public bool? GGVPointerEnabled { get; set; } + } + + private void EnsurePointerStates(Handedness h, PointerStateContainer c) + { + Action helper = (ptr, name, expected) => + { + if (!expected.HasValue) + { + Assert.Null(ptr, $"Expected {h} {name} to be null but it was not null"); + } + else + { + Assert.NotNull(ptr, $"Expected {name} to not be null, but it was null"); + Assert.AreEqual(expected.Value, ptr.IsInteractionEnabled, + $"Incorrect state for {h} {name}.IsInteractionEnabled"); + } + + }; + helper(PointerUtils.GetPointer(h), "Line Pointer", c.LinePointerEnabled); + helper(PointerUtils.GetPointer(h), "Sphere Pointer", c.SpherePointerEnabled); + helper(PointerUtils.GetPointer(h), "Poke Pointer", c.PokePointerEnabled); + helper(PointerUtils.GetPointer(h), "GGV Pointer", c.GGVPointerEnabled); + helper(CoreServices.InputSystem.GazeProvider.GazePointer, "Gaze Pointer", c.GazePointerEnabled); + } + + /// + /// Tests that the gaze pointer can be turned on and off + /// + [UnityTest] + public IEnumerator TestGaze() + { + PointerStateContainer gazeOn = new PointerStateContainer() + { + GazePointerEnabled = true, + GGVPointerEnabled = true, + PokePointerEnabled = null, + SpherePointerEnabled = null, + LinePointerEnabled = null + }; + + // set input simulation mode to GGV + PlayModeTestUtilities.SetHandSimulationMode(HandSimulationMode.Gestures); + + TestHand rightHand = new TestHand(Handedness.Right); + TestHand leftHand = new TestHand(Handedness.Left); + + TestContext.Out.WriteLine("Show both hands"); + yield return rightHand.Show(Vector3.zero); + yield return leftHand.Show(Vector3.zero); + + EnsurePointerStates(Handedness.Right, gazeOn); + EnsurePointerStates(Handedness.Left, gazeOn); + + TestContext.Out.WriteLine("Turn off gaze cursor"); + PointerUtils.SetGazePointerBehavior(PointerBehavior.AlwaysOff); + + yield return null; + + PointerStateContainer gazeOff = new PointerStateContainer() + { + GazePointerEnabled = false, + GGVPointerEnabled = false, + PokePointerEnabled = null, + SpherePointerEnabled = null, + LinePointerEnabled = null + }; + EnsurePointerStates(Handedness.Right, gazeOff); + EnsurePointerStates(Handedness.Left, gazeOff); + } + + /// + /// Tests that poke pointer can be turned on/off + /// + [UnityTest] + public IEnumerator TestPoke() + { + var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.AddComponent(); + cube.transform.position = Vector3.forward * 0.5f; + + TestHand rightHand = new TestHand(Handedness.Right); + TestHand leftHand = new TestHand(Handedness.Left); + + TestContext.Out.WriteLine("Show both hands near touchable cube"); + yield return rightHand.Show(Vector3.zero); + yield return leftHand.Show(Vector3.zero); + yield return new WaitForFixedUpdate(); + + PointerStateContainer touchOn = new PointerStateContainer() + { + GazePointerEnabled = false, + GGVPointerEnabled = null, + PokePointerEnabled = true, + SpherePointerEnabled = false, + LinePointerEnabled = false + }; + + EnsurePointerStates(Handedness.Right, touchOn); + EnsurePointerStates(Handedness.Left, touchOn); + + TestContext.Out.WriteLine("Turn off poke pointer right hand"); + PointerUtils.SetHandPokePointerBehavior(PointerBehavior.AlwaysOff, Handedness.Right); + yield return null; + + PointerStateContainer touchOff = new PointerStateContainer() + { + GazePointerEnabled = false, + GGVPointerEnabled = null, + PokePointerEnabled = false, + SpherePointerEnabled = false, + LinePointerEnabled = true + }; + + EnsurePointerStates(Handedness.Right, touchOff); + EnsurePointerStates(Handedness.Left, touchOn); + + TestContext.Out.WriteLine("Turn off poke pointer both hands"); + PointerUtils.SetHandPokePointerBehavior(PointerBehavior.AlwaysOff); + yield return null; + + EnsurePointerStates(Handedness.Right, touchOff); + EnsurePointerStates(Handedness.Left, touchOff); + } + + /// + /// Tests the grab pointer can be turned on/off + /// + [UnityTest] + public IEnumerator TestGrab() + { + var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + cube.AddComponent(); + cube.transform.position = Vector3.zero; + + TestHand rightHand = new TestHand(Handedness.Right); + TestHand leftHand = new TestHand(Handedness.Left); + + TestContext.Out.WriteLine("Show both hands near grabbable cube"); + yield return rightHand.Show(Vector3.zero); + yield return leftHand.Show(Vector3.zero); + yield return new WaitForFixedUpdate(); + + PointerStateContainer grabOn = new PointerStateContainer() + { + GazePointerEnabled = false, + GGVPointerEnabled = null, + PokePointerEnabled = false, + SpherePointerEnabled = true, + LinePointerEnabled = false + }; + + EnsurePointerStates(Handedness.Right, grabOn); + EnsurePointerStates(Handedness.Left, grabOn); + + TestContext.Out.WriteLine("Turn off grab pointer right hand"); + PointerUtils.SetHandGrabPointerBehavior(PointerBehavior.AlwaysOff, Handedness.Right); + yield return null; + + PointerStateContainer grabOff = new PointerStateContainer() + { + GazePointerEnabled = false, + GGVPointerEnabled = null, + PokePointerEnabled = false, + SpherePointerEnabled = false, + LinePointerEnabled = true + }; + + EnsurePointerStates(Handedness.Right, grabOff); + EnsurePointerStates(Handedness.Left, grabOn); + + TestContext.Out.WriteLine("Turn off grab pointer both hands"); + PointerUtils.SetHandGrabPointerBehavior(PointerBehavior.AlwaysOff); + yield return null; + + EnsurePointerStates(Handedness.Right, grabOff); + EnsurePointerStates(Handedness.Left, grabOff); + } + + /// + /// Tests that rays can be turned on and off + /// + [UnityTest] + public IEnumerator TestRays() + { + PointerStateContainer lineOn = new PointerStateContainer() + { + GazePointerEnabled = false, + GGVPointerEnabled = null, + PokePointerEnabled = false, + SpherePointerEnabled = false, + LinePointerEnabled = true + }; + + TestHand rightHand = new TestHand(Handedness.Right); + TestHand leftHand = new TestHand(Handedness.Left); + + yield return rightHand.Show(Vector3.zero); + yield return leftHand.Show(Vector3.zero); + + TestContext.Out.WriteLine("Show both hands"); + EnsurePointerStates(Handedness.Right, lineOn); + EnsurePointerStates(Handedness.Left, lineOn); + + TestContext.Out.WriteLine("Turn off ray pointer both hands"); + PointerUtils.SetHandRayPointerBehavior(PointerBehavior.AlwaysOff); + yield return null; + + PointerStateContainer lineOff = new PointerStateContainer() + { + GazePointerEnabled = false, + GGVPointerEnabled = null, + PokePointerEnabled = false, + SpherePointerEnabled = false, + LinePointerEnabled = false + }; + + EnsurePointerStates(Handedness.Right, lineOff); + EnsurePointerStates(Handedness.Left, lineOff); + + TestContext.Out.WriteLine("Turn on ray right hand."); + PointerUtils.SetHandRayPointerBehavior(PointerBehavior.AlwaysOn, Handedness.Right); + yield return null; + + EnsurePointerStates(Handedness.Right, lineOn); + EnsurePointerStates(Handedness.Left, lineOff); + + TestContext.Out.WriteLine("Turn on ray (default behavior) right hand."); + PointerUtils.SetHandRayPointerBehavior(PointerBehavior.Default, Handedness.Right); + yield return null; + EnsurePointerStates(Handedness.Right, lineOn); + EnsurePointerStates(Handedness.Left, lineOff); + + TestContext.Out.WriteLine("Turn on ray (default behavior) left hand."); + PointerUtils.SetHandRayPointerBehavior(PointerBehavior.Default, Handedness.Left); + yield return null; + EnsurePointerStates(Handedness.Right, lineOn); + EnsurePointerStates(Handedness.Left, lineOn); + } + + } +} + +#endif diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerBehaviorTests.cs.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerBehaviorTests.cs.meta new file mode 100644 index 00000000000..37daf8e1f0d --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerBehaviorTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9acd0c7c2eb9e4549867352204aefb03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerTests.cs new file mode 100644 index 00000000000..8e20daf8a35 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerTests.cs @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +#if !WINDOWS_UWP +// When the .NET scripting backend is enabled and C# projects are built +// The assembly that this file is part of is still built for the player, +// even though the assembly itself is marked as a test assembly (this is not +// expected because test assemblies should not be included in player builds). +// Because the .NET backend is deprecated in 2018 and removed in 2019 and this +// issue will likely persist for 2018, this issue is worked around by wrapping all +// play mode tests in this check. + +using Microsoft.MixedReality.Toolkit.Input; +using Microsoft.MixedReality.Toolkit.Utilities; +using NUnit.Framework; +using System.Collections; +using System.Linq; +using UnityEngine; +using UnityEngine.TestTools; + +namespace Microsoft.MixedReality.Toolkit.Tests +{ + // Tests to verify pointer state and pointer direction + class PointerTests + { + [SetUp] + public void Setup() + { + PlayModeTestUtilities.Setup(); + TestUtilities.PlayspaceToOriginLookingForward(); + } + + [TearDown] + public void TearDown() + { + PlayModeTestUtilities.TearDown(); + } + + #region Tests + + /// + /// Tests that right after being instantiated, the pointer's direction + /// is in the same general direction as the forward direction of the camera + /// + [UnityTest] + public IEnumerator TestPointerDirectionToCameraDirection() + { + var inputSystem = PlayModeTestUtilities.GetInputSystem(); + + // Raise the hand + var rightHand = new TestHand(Handedness.Right); + + // Set initial position and show hand + Vector3 initialPos = new Vector3(0.01f, 0.1f, 0.5f); + yield return rightHand.Show(initialPos); + + // Return first hand controller that is right and source type hand + var handController = inputSystem.DetectedControllers.First(x => x.ControllerHandedness == Utilities.Handedness.Right && x.InputSource.SourceType == InputSourceType.Hand); + Assert.IsNotNull(handController); + + // Get the line pointer from the hand controller + var linePointer = handController.InputSource.Pointers.First(x => x is LinePointer); + Assert.IsNotNull(linePointer); + + Vector3 linePointerOrigin = linePointer.Position; + + // Check that the line pointer origin is within half a centimeter of the initial position of the hand + var distance = Vector3.Distance(initialPos, linePointerOrigin); + Assert.LessOrEqual(distance, 0.005f); + + // Check that the angle between the line pointer ray and camera forward does not exceed 40 degrees + float angle = Vector3.Angle(linePointer.Rays[0].Direction, Camera.main.transform.forward); + Assert.LessOrEqual(angle, 40.0f); + } + #endregion + } +} +#endif diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerTests.cs.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerTests.cs.meta new file mode 100644 index 00000000000..d4acd3ca628 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a91412168127ff943b9578939f970ce5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 731058d908be67544b92b0341f29d906, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Prefabs/UnitTestCanvas.prefab b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Prefabs/UnitTestCanvas.prefab new file mode 100644 index 00000000000..0f466a93077 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Prefabs/UnitTestCanvas.prefab @@ -0,0 +1,113 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2038278561596412468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2568315460827600514} + - component: {fileID: 1047046454832813794} + - component: {fileID: 282053109179267831} + - component: {fileID: 4936650207890824193} + - component: {fileID: 3920147100612793917} + m_Layer: 5 + m_Name: UnitTestCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2568315460827600514 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038278561596412468} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.0076} + m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &1047046454832813794 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038278561596412468} + 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: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &282053109179267831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038278561596412468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + 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 &4936650207890824193 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038278561596412468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &3920147100612793917 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038278561596412468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff4e3b9019304b5aaec5664de0778d21, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/Prefabs/UnitTestCanvas.prefab.meta b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Prefabs/UnitTestCanvas.prefab.meta new file mode 100644 index 00000000000..b04711b0ee5 --- /dev/null +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/Prefabs/UnitTestCanvas.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 489163bd64fdf84418a1536cefbb4c80 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PressableButtonTests.cs b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PressableButtonTests.cs index c3c23044333..655380ed643 100644 --- a/Assets/MixedRealityToolkit.Tests/PlayModeTests/PressableButtonTests.cs +++ b/Assets/MixedRealityToolkit.Tests/PlayModeTests/PressableButtonTests.cs @@ -11,41 +11,85 @@ // play mode tests in this check. using Microsoft.MixedReality.Toolkit.UI; +using Microsoft.MixedReality.Toolkit.Utilities; using NUnit.Framework; -using UnityEngine; -using UnityEngine.TestTools; using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Reflection; using UnityEditor; -using Microsoft.MixedReality.Toolkit.Utilities; +using UnityEngine; +using UnityEngine.TestTools; +using UnityEngine.UI; namespace Microsoft.MixedReality.Toolkit.Tests { - public class PressableButtonTests : IPrebuildSetup + public class PressableButtonTests : BasePlayModeTests, IPrebuildSetup { - public void Setup() + void IPrebuildSetup.Setup() { - PlayModeTestUtilities.EnsureTextMeshProEssentials(); + PlayModeTestUtilities.InstallTextMeshProEssentials(); } #region Utilities - private GameObject InstantiateDefaultPressableButton() + + private static string PrefabDirectoryPath = "Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs"; + + private static Dictionary PressableButtonTestPrefabs = new Dictionary { - Object pressableButtonPrefab = AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit.SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2.prefab", typeof(Object)); + // Key is file name. Value is whether or not it needs to be placed in a Canvas. + { "PressableButtonHoloLens2.prefab", false }, + { "PressableButtonHoloLens2UnityUI.prefab", true }, + }; + + public static IEnumerable PressableButtonsTestPrefabFilenames + { + get + { + foreach (var prefabFilename in PressableButtonTestPrefabs.Keys) + { + yield return prefabFilename; + } + } + } + + private GameObject InstantiateDefaultPressableButton(string prefabFilename) + { + var path = Path.Combine(PrefabDirectoryPath, prefabFilename); + Object pressableButtonPrefab = AssetDatabase.LoadAssetAtPath(path, typeof(Object)); GameObject testButton = Object.Instantiate(pressableButtonPrefab) as GameObject; + if (PressableButtonTestPrefabs[prefabFilename]) + { + // Need to place this test button in a Canvas. Instantiate the test canvas and place the button into it. + var canvasPrefab = AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit.Tests/PlayModeTests/Prefabs/UnitTestCanvas.prefab", typeof(Object)); + var canvasObject = (GameObject)Object.Instantiate(canvasPrefab); + testButton.transform.SetParent(canvasObject.transform, worldPositionStays: false); + } + return testButton; } - [SetUp] - public void TestSetup() + private static bool AreApproximatelyEqual(float f0, float f1, float tolerance) { - PlayModeTestUtilities.Setup(); + return Mathf.Abs(f0 - f1) < tolerance; } - [TearDown] - public void TearDown() + /// + /// Move the hand forward to press button, then off to the right + /// + private IEnumerator PressButtonWithHand() { - PlayModeTestUtilities.TearDown(); + var inputSimulationService = PlayModeTestUtilities.GetInputSimulationService(); + int numSteps = 42; + Vector3 p1 = new Vector3(0, 0, 0.5f); + Vector3 p2 = new Vector3(0, 0, 1.08f); + Vector3 p3 = new Vector3(0.1f, 0, 1.08f); + + yield return PlayModeTestUtilities.ShowHand(Handedness.Right, inputSimulationService, ArticulatedHandPose.GestureId.Open, p1); + yield return PlayModeTestUtilities.MoveHandFromTo(p1, p2, numSteps, ArticulatedHandPose.GestureId.Open, Handedness.Right, inputSimulationService); + yield return PlayModeTestUtilities.MoveHandFromTo(p2, p3, numSteps, ArticulatedHandPose.GestureId.Open, Handedness.Right, inputSimulationService); + yield return PlayModeTestUtilities.HideHand(Handedness.Right, inputSimulationService); } #endregion @@ -53,9 +97,9 @@ public void TearDown() #region Tests [UnityTest] - public IEnumerator ButtonInstantiate() + public IEnumerator ButtonInstantiate([ValueSource(nameof(PressableButtonsTestPrefabFilenames))] string prefabFilename) { - GameObject testButton = InstantiateDefaultPressableButton(); + GameObject testButton = InstantiateDefaultPressableButton(prefabFilename); yield return null; PressableButton buttonComponent = testButton.GetComponent(); Assert.IsNotNull(buttonComponent); @@ -65,14 +109,82 @@ public IEnumerator ButtonInstantiate() yield return null; } + /// + /// Some apps will instantiate a button, disable it while they do other setup, then enable it. This caused a bug where the button front plate would be flattened against the button. + /// This tests to confirm that this has not regressed. + /// https://github.com/microsoft/MixedRealityToolkit-Unity/issues/6024 + /// + [UnityTest] + public IEnumerator ButtonInstantiateDisableThenEnableBeforeStart([ValueSource(nameof(PressableButtonsTestPrefabFilenames))] string prefabFilename) + { + GameObject testButton = InstantiateDefaultPressableButton(prefabFilename); + + // Disable then re-enable the button in the same frame as it was instantiated, so that Start() does not execute. + testButton.SetActive(false); + testButton.SetActive(true); + + yield return null; + + PressableButton buttonComponent = testButton.GetComponent(); + + var deltaPosition = GetBackPlateToFrontPlateVector(buttonComponent); + + Assert.IsTrue(deltaPosition.magnitude > 0.007f, "The button prefabs should all have their front plates at least 8mm away from the back plates."); + + Object.Destroy(testButton); + // Wait for a frame to give Unity a change to actually destroy the object + yield return null; + } + + /// + /// There was an issue where rotating a button after Start() had executed resulted in the front plate going in the wrong direction. + /// This tests that it has not regressed. + /// https://github.com/microsoft/MixedRealityToolkit-Unity/issues/6025 + /// + [UnityTest] + public IEnumerator RotateButton([ValueSource(nameof(PressableButtonsTestPrefabFilenames))] string prefabFilename) + { + GameObject testButton = InstantiateDefaultPressableButton(prefabFilename); + + yield return null; + + PressableButton buttonComponent = testButton.GetComponent(); + var initialOffset = GetBackPlateToFrontPlateVector(buttonComponent); + + // Rotate the button 90 degrees about the Y axis. + testButton.transform.Rotate(new Vector3(0.0f, 90.0f, 0.0f)); + + yield return null; + + ForceInvoke_UpdateMovingVisualsPosition(buttonComponent); + + yield return null; + + var rotatedOffset = GetBackPlateToFrontPlateVector(buttonComponent); + + // Before rotating, the offset should be in the negative Z direction. After rotating, it should be in the negative X direction. + + Assert.IsTrue(initialOffset.z < -0.007f); + Assert.IsTrue(rotatedOffset.x < -0.007f); + + // Test that most of the magnitude of the offset is in the specified direction. Give a large-ish tolerance. + float tolerance = 0.00001f; + Assert.IsTrue(AreApproximatelyEqual(initialOffset.magnitude, Mathf.Abs(initialOffset.z), tolerance)); + Assert.IsTrue(AreApproximatelyEqual(rotatedOffset.magnitude, Mathf.Abs(rotatedOffset.x), tolerance)); + + Object.Destroy(testButton); + // Wait for a frame to give Unity a change to actually destroy the object + yield return null; + } + /// /// This test reproduces P0 issue 4263 which caused null pointers when pressing buttons /// See https://github.com/microsoft/MixedRealityToolkit-Unity/issues/4683 /// [UnityTest] - public IEnumerator PressButtonWithHand() + public IEnumerator PressButtonWithHand([ValueSource(nameof(PressableButtonsTestPrefabFilenames))] string prefabFilename) { - GameObject testButton = InstantiateDefaultPressableButton(); + GameObject testButton = InstantiateDefaultPressableButton(prefabFilename); // Move the camera to origin looking at +z to more easily see the button. TestUtilities.PlayspaceToOriginLookingForward(); @@ -93,17 +205,51 @@ public IEnumerator PressButtonWithHand() }); // Move the hand forward to press button, then off to the right - var inputSimulationService = PlayModeTestUtilities.GetInputSimulationService(); - int numSteps = 30; - Vector3 p1 = new Vector3(0, 0, 0.5f); - Vector3 p2 = new Vector3(0, 0, 1.08f); - Vector3 p3 = new Vector3(0.1f, 0, 1.08f); + yield return PressButtonWithHand(); - yield return PlayModeTestUtilities.ShowHand(Handedness.Right, inputSimulationService); - yield return PlayModeTestUtilities.MoveHandFromTo(p1, p2, numSteps, ArticulatedHandPose.GestureId.Open, Handedness.Right, inputSimulationService); - yield return PlayModeTestUtilities.MoveHandFromTo(p2, p3, numSteps, ArticulatedHandPose.GestureId.Open, Handedness.Right, inputSimulationService); - yield return PlayModeTestUtilities.HideHand(Handedness.Right, inputSimulationService); + Assert.IsTrue(buttonPressed, "Button did not get pressed when hand moved to press it."); + + Object.Destroy(testButton); + + yield return null; + } + /// + /// Test disabling the PressableButton gameobject and re-enabling + /// + [UnityTest] + public IEnumerator DisablePressableButton([ValueSource(nameof(PressableButtonsTestPrefabFilenames))] string prefabFilename) + { + GameObject testButton = InstantiateDefaultPressableButton(prefabFilename); + + // Move the camera to origin looking at +z to more easily see the button. + TestUtilities.PlayspaceToOriginLookingForward(); + + // For some reason, we would only get null pointers when the hand tries to click a button + // at specific positions, hence the unusal z value. + testButton.transform.position = new Vector3(0, 0, 1.067121f); + // The scale of the button was also unusual in the repro case + testButton.transform.localScale = Vector3.one * 1.5f; + + PressableButton buttonComponent = testButton.GetComponent(); + Assert.IsNotNull(buttonComponent); + + bool buttonPressed = false; + buttonComponent.ButtonPressed.AddListener(() => + { + buttonPressed = true; + }); + + yield return null; + + // Test pressing button with hand when disabled + testButton.SetActive(false); + yield return PressButtonWithHand(); + Assert.IsFalse(buttonPressed, "Button got pressed when component was disabled."); + + // Test pressing button with hand when enabled + testButton.SetActive(true); + yield return PressButtonWithHand(); Assert.IsTrue(buttonPressed, "Button did not get pressed when hand moved to press it."); Object.Destroy(testButton); @@ -111,14 +257,15 @@ public IEnumerator PressButtonWithHand() yield return null; } + /// /// This test reproduces P0 issue 4566 which didn't trigger a button with enabled backpressprotection /// if hands were moving too fast in low framerate /// [UnityTest] - public IEnumerator PressButtonFast() + public IEnumerator PressButtonFast([ValueSource(nameof(PressableButtonsTestPrefabFilenames))] string prefabFilename) { - GameObject testButton = InstantiateDefaultPressableButton(); + GameObject testButton = InstantiateDefaultPressableButton(prefabFilename); // Move the camera to origin looking at +z to more easily see the button. TestUtilities.PlayspaceToOriginLookingForward(); @@ -155,27 +302,49 @@ public IEnumerator PressButtonFast() /// This test verifies that buttons will trigger with far interaction /// [UnityTest] - public IEnumerator TriggerButtonFarInteraction() + public IEnumerator TriggerButtonFarInteraction([ValueSource(nameof(PressableButtonsTestPrefabFilenames))] string prefabFilename) { - GameObject testButton = InstantiateDefaultPressableButton(); + GameObject testButton = InstantiateDefaultPressableButton(prefabFilename); TestUtilities.PlayspaceToOriginLookingForward(); - testButton.transform.position = new Vector3(0f, 0.3f, 0.8f); - testButton.transform.localScale = Vector3.one * 15f; // scale button up so it's easier to hit it with the far interaction pointer + Interactable interactableComponent = testButton.GetComponent(); + Button buttonComponent = testButton.GetComponent