From 25285e7477642ad795a0db2d3ebcd08ae5a67f17 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 12 Sep 2018 11:17:10 -0700 Subject: [PATCH 01/98] First pass Input Action Rules --- .../Input/MixedRealityInputManager.cs | 10 +-- ...efaultMixedRealityInputSystemProfile.asset | 2 + .../MixedRealityInputActionRulesProfile.asset | 13 ++++ ...dRealityInputActionRulesProfile.asset.meta | 8 +++ .../InputSystem/InputActionRuleDigital.cs | 50 ++++++++++++++ .../InputActionRuleDigital.cs.meta | 11 ++++ .../InputSystem/InputActionRuleDualAxis.cs | 50 ++++++++++++++ .../InputActionRuleDualAxis.cs.meta | 11 ++++ .../InputSystem/InputActionRulePoseAxis.cs | 51 ++++++++++++++ .../InputActionRulePoseAxis.cs.meta | 11 ++++ .../InputActionRuleQuaternionAxis.cs | 50 ++++++++++++++ .../InputActionRuleQuaternionAxis.cs.meta | 11 ++++ .../InputSystem/InputActionRuleSingleAxis.cs | 50 ++++++++++++++ .../InputActionRuleSingleAxis.cs.meta | 11 ++++ .../InputSystem/InputActionRuleVectorAxis.cs | 50 ++++++++++++++ .../InputActionRuleVectorAxis.cs.meta | 11 ++++ .../MixedRealityInputActionRulesProfile.cs | 60 +++++++++++++++++ ...ixedRealityInputActionRulesProfile.cs.meta | 11 ++++ .../MixedRealityInputSystemProfile.cs | 13 ++++ .../Utilities/ProfileMenuItemIndices.cs | 1 + .../MixedRealityInputActionRulesInspector.cs | 66 +++++++++++++++++++ ...edRealityInputActionRulesInspector.cs.meta | 11 ++++ ...MixedRealityInputSystemProfileInspector.cs | 3 + .../InputSystem/IInputActionRule.cs | 29 ++++++++ .../InputSystem/IInputActionRule.cs.meta | 11 ++++ .../IMixedRealityMousePointer.cs.meta | 2 +- 26 files changed, 598 insertions(+), 9 deletions(-) create mode 100644 Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset create mode 100644 Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDigital.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDigital.cs.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDualAxis.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDualAxis.cs.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRulePoseAxis.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRulePoseAxis.cs.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleQuaternionAxis.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleQuaternionAxis.cs.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleSingleAxis.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleSingleAxis.cs.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleVectorAxis.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleVectorAxis.cs.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs.meta create mode 100644 Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IInputActionRule.cs create mode 100644 Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IInputActionRule.cs.meta diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index 3210ca80ddc..ae8d5e82ae8 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -72,14 +72,8 @@ public class MixedRealityInputManager : MixedRealityEventManager, IMixedRealityI #region IMixedRealityManager Implementation - /// - /// Constructor - /// - public MixedRealityInputManager() - { - // Input system is critical, so should be processed before all other managers - Priority = 1; - } + // Input system is critical, so should be processed before all other managers + public override uint Priority { get; set; } = 1; /// public override void Initialize() diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputSystemProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputSystemProfile.asset index 51f6a05a6f2..0226d49a9be 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputSystemProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputSystemProfile.asset @@ -14,6 +14,8 @@ MonoBehaviour: inputActionsProfile: {fileID: 11400000, guid: 723eb97b02944311b92861f473eee53e, type: 2} gesturesProfile: {fileID: 11400000, guid: bd7829a9b29409045a745b5a18299291, type: 2} + inputActionRulesProfile: {fileID: 11400000, guid: 03945385d89102f41855bc8f5116b199, + type: 2} pointerProfile: {fileID: 11400000, guid: 48aa63a9725047b28d4137fd0834bc31, type: 2} speechCommandsProfile: {fileID: 11400000, guid: e8d0393e66374dae9646851a57dc6bc1, type: 2} diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset new file mode 100644 index 00000000000..d2b6174b0cb --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset @@ -0,0 +1,13 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ee54661ca8af487c9db40e57d479fa48, type: 3} + m_Name: MixedRealityInputActionRulesProfile + m_EditorClassIdentifier: diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset.meta b/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset.meta new file mode 100644 index 00000000000..7b9bef6888d --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 03945385d89102f41855bc8f5116b199 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDigital.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDigital.cs new file mode 100644 index 00000000000..a50aca160e5 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDigital.cs @@ -0,0 +1,50 @@ +// 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.Core.Interfaces.InputSystem; +using System; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem +{ + /// + /// Generic Input Action Rule for raising actions based on specific criteria. + /// + [Serializable] + public struct InputActionRuleDigital : IInputActionRule + { + /// + /// Constructor. + /// + /// The Base Action that the rule will listen to. + /// The Action to raise if the criteria is met. + /// The criteria to check against for determining if the action should be raised. + public InputActionRuleDigital(MixedRealityInputAction baseAction, MixedRealityInputAction ruleAction, bool criteria) + { + this.baseAction = baseAction; + this.ruleAction = ruleAction; + this.criteria = criteria; + } + + [SerializeField] + [Tooltip("The Base Action that the rule will listen to.")] + private MixedRealityInputAction baseAction; + + /// + public MixedRealityInputAction BaseAction => baseAction; + + [SerializeField] + [Tooltip("The Action to raise if the criteria is met.")] + private MixedRealityInputAction ruleAction; + + /// + public MixedRealityInputAction RuleAction => ruleAction; + + [SerializeField] + [Tooltip("The criteria to check against for determining if the action should be raised.")] + private bool criteria; + + /// + public bool Criteria => criteria; + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDigital.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDigital.cs.meta new file mode 100644 index 00000000000..6ccb7448cbb --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDigital.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 314f71e5252e4aabbf166d5840a5728b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDualAxis.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDualAxis.cs new file mode 100644 index 00000000000..6d8c8fadc68 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDualAxis.cs @@ -0,0 +1,50 @@ +// 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.Core.Interfaces.InputSystem; +using System; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem +{ + /// + /// Generic Input Action Rule for raising actions based on specific criteria. + /// + [Serializable] + public struct InputActionRuleDualAxis : IInputActionRule + { + /// + /// Constructor. + /// + /// The Base Action that the rule will listen to. + /// The Action to raise if the criteria is met. + /// The criteria to check against for determining if the action should be raised. + public InputActionRuleDualAxis(MixedRealityInputAction baseAction, MixedRealityInputAction ruleAction, Vector2 criteria) + { + this.baseAction = baseAction; + this.ruleAction = ruleAction; + this.criteria = criteria; + } + + [SerializeField] + [Tooltip("The Base Action that the rule will listen to.")] + private MixedRealityInputAction baseAction; + + /// + public MixedRealityInputAction BaseAction => baseAction; + + [SerializeField] + [Tooltip("The Action to raise if the criteria is met.")] + private MixedRealityInputAction ruleAction; + + /// + public MixedRealityInputAction RuleAction => ruleAction; + + [SerializeField] + [Tooltip("The criteria to check against for determining if the action should be raised.")] + private Vector2 criteria; + + /// + public Vector2 Criteria => criteria; + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDualAxis.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDualAxis.cs.meta new file mode 100644 index 00000000000..28c4299df3e --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleDualAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 257fe64c9bf54235b76d1505266122b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRulePoseAxis.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRulePoseAxis.cs new file mode 100644 index 00000000000..2a493e4b75c --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRulePoseAxis.cs @@ -0,0 +1,51 @@ +// 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.Core.Definitions.Utilities; +using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; +using System; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem +{ + /// + /// Generic Input Action Rule for raising actions based on specific criteria. + /// + [Serializable] + public struct InputActionRulePoseAxis : IInputActionRule + { + /// + /// Constructor. + /// + /// The Base Action that the rule will listen to. + /// The Action to raise if the criteria is met. + /// The criteria to check against for determining if the action should be raised. + public InputActionRulePoseAxis(MixedRealityInputAction baseAction, MixedRealityInputAction ruleAction, MixedRealityPose criteria) + { + this.baseAction = baseAction; + this.ruleAction = ruleAction; + this.criteria = criteria; + } + + [SerializeField] + [Tooltip("The Base Action that the rule will listen to.")] + private MixedRealityInputAction baseAction; + + /// + public MixedRealityInputAction BaseAction => baseAction; + + [SerializeField] + [Tooltip("The Action to raise if the criteria is met.")] + private MixedRealityInputAction ruleAction; + + /// + public MixedRealityInputAction RuleAction => ruleAction; + + [SerializeField] + [Tooltip("The criteria to check against for determining if the action should be raised.")] + private MixedRealityPose criteria; + + /// + public MixedRealityPose Criteria => criteria; + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRulePoseAxis.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRulePoseAxis.cs.meta new file mode 100644 index 00000000000..adedeaa3a80 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRulePoseAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c13b12f17d249ceb2757ea5837f9ed7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleQuaternionAxis.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleQuaternionAxis.cs new file mode 100644 index 00000000000..a67198120ca --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleQuaternionAxis.cs @@ -0,0 +1,50 @@ +// 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.Core.Interfaces.InputSystem; +using System; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem +{ + /// + /// Generic Input Action Rule for raising actions based on specific criteria. + /// + [Serializable] + public struct InputActionRuleQuaternionAxis : IInputActionRule + { + /// + /// Constructor. + /// + /// The Base Action that the rule will listen to. + /// The Action to raise if the criteria is met. + /// The criteria to check against for determining if the action should be raised. + public InputActionRuleQuaternionAxis(MixedRealityInputAction baseAction, MixedRealityInputAction ruleAction, Quaternion criteria) + { + this.baseAction = baseAction; + this.ruleAction = ruleAction; + this.criteria = criteria; + } + + [SerializeField] + [Tooltip("The Base Action that the rule will listen to.")] + private MixedRealityInputAction baseAction; + + /// + public MixedRealityInputAction BaseAction => baseAction; + + [SerializeField] + [Tooltip("The Action to raise if the criteria is met.")] + private MixedRealityInputAction ruleAction; + + /// + public MixedRealityInputAction RuleAction => ruleAction; + + [SerializeField] + [Tooltip("The criteria to check against for determining if the action should be raised.")] + private Quaternion criteria; + + /// + public Quaternion Criteria => criteria; + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleQuaternionAxis.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleQuaternionAxis.cs.meta new file mode 100644 index 00000000000..f30ae36bdf2 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleQuaternionAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3a544a8ca494fa797c3a7334f98298c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleSingleAxis.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleSingleAxis.cs new file mode 100644 index 00000000000..af8c32708a4 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleSingleAxis.cs @@ -0,0 +1,50 @@ +// 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.Core.Interfaces.InputSystem; +using System; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem +{ + /// + /// Generic Input Action Rule for raising actions based on specific criteria. + /// + [Serializable] + public struct InputActionRuleSingleAxis : IInputActionRule + { + /// + /// Constructor. + /// + /// The Base Action that the rule will listen to. + /// The Action to raise if the criteria is met. + /// The criteria to check against for determining if the action should be raised. + public InputActionRuleSingleAxis(MixedRealityInputAction baseAction, MixedRealityInputAction ruleAction, float criteria) + { + this.baseAction = baseAction; + this.ruleAction = ruleAction; + this.criteria = criteria; + } + + [SerializeField] + [Tooltip("The Base Action that the rule will listen to.")] + private MixedRealityInputAction baseAction; + + /// + public MixedRealityInputAction BaseAction => baseAction; + + [SerializeField] + [Tooltip("The Action to raise if the criteria is met.")] + private MixedRealityInputAction ruleAction; + + /// + public MixedRealityInputAction RuleAction => ruleAction; + + [SerializeField] + [Tooltip("The criteria to check against for determining if the action should be raised.")] + private float criteria; + + /// + public float Criteria => criteria; + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleSingleAxis.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleSingleAxis.cs.meta new file mode 100644 index 00000000000..def78c5c362 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleSingleAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b95f48a8b6244cc79828e1e956ffdc67 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleVectorAxis.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleVectorAxis.cs new file mode 100644 index 00000000000..057afd38efc --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleVectorAxis.cs @@ -0,0 +1,50 @@ +// 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.Core.Interfaces.InputSystem; +using System; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem +{ + /// + /// Generic Input Action Rule for raising actions based on specific criteria. + /// + [Serializable] + public struct InputActionRuleVectorAxis : IInputActionRule + { + /// + /// Constructor. + /// + /// The Base Action that the rule will listen to. + /// The Action to raise if the criteria is met. + /// The criteria to check against for determining if the action should be raised. + public InputActionRuleVectorAxis(MixedRealityInputAction baseAction, MixedRealityInputAction ruleAction, Vector3 criteria) + { + this.baseAction = baseAction; + this.ruleAction = ruleAction; + this.criteria = criteria; + } + + [SerializeField] + [Tooltip("The Base Action that the rule will listen to.")] + private MixedRealityInputAction baseAction; + + /// + public MixedRealityInputAction BaseAction => baseAction; + + [SerializeField] + [Tooltip("The Action to raise if the criteria is met.")] + private MixedRealityInputAction ruleAction; + + /// + public MixedRealityInputAction RuleAction => ruleAction; + + [SerializeField] + [Tooltip("The criteria to check against for determining if the action should be raised.")] + private Vector3 criteria; + + /// + public Vector3 Criteria => criteria; + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleVectorAxis.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleVectorAxis.cs.meta new file mode 100644 index 00000000000..f2379e9d3c3 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/InputActionRuleVectorAxis.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fbc1b935f564f83aac269fb6c600920 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs new file mode 100644 index 00000000000..1e325fc59c3 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs @@ -0,0 +1,60 @@ +// 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.Core.Definitions.Utilities; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem +{ + [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Mixed Reality Input Action Rules Profile", fileName = "MixedRealityInputActionRulesProfile", order = (int)CreateProfileMenuItemIndices.InputActionRules)] + public class MixedRealityInputActionRulesProfile : ScriptableObject + { + [SerializeField] + private InputActionRuleDigital[] genericInputActionRulesDigital; + + /// + /// All the Input Action Rules for based s + /// + public InputActionRuleDigital[] GenericInputActionRulesDigital => genericInputActionRulesDigital; + + [SerializeField] + private InputActionRuleSingleAxis[] inputActionRulesSingleAxis; + + /// + /// All the Input Action Rules for based s + /// + public InputActionRuleSingleAxis[] InputActionRulesSingleAxis => inputActionRulesSingleAxis; + + [SerializeField] + private InputActionRuleDualAxis[] inputActionRulesDualAxis; + + /// + /// All the Input Action Rules for based s + /// + public InputActionRuleDualAxis[] InputActionRulesDualAxis => inputActionRulesDualAxis; + + [SerializeField] + private InputActionRuleVectorAxis[] inputActionRulesVectorAxis; + + /// + /// All the Input Action Rules for based s + /// + public InputActionRuleVectorAxis[] InputActionRulesVectorAxis => inputActionRulesVectorAxis; + + [SerializeField] + private InputActionRuleQuaternionAxis[] inputActionRulesQuaternionAxis; + + /// + /// All the Input Action Rules for based s + /// + public InputActionRuleQuaternionAxis[] InputActionRulesQuaternionAxis => inputActionRulesQuaternionAxis; + + [SerializeField] + private InputActionRulePoseAxis[] inputActionRulesPoseAxis; + + /// + /// All the Input Action Rules for based s + /// + public InputActionRulePoseAxis[] InputActionRulesPoseAxis => inputActionRulesPoseAxis; + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs.meta new file mode 100644 index 00000000000..7dddf908583 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee54661ca8af487c9db40e57d479fa48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 4f9f54f9478441228dea18a2c828cfc6, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs index d8e15905838..41cb73f1d20 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs @@ -41,6 +41,19 @@ public MixedRealityGesturesProfile GesturesProfile private set { gesturesProfile = value; } } + [SerializeField] + [Tooltip("Input Action Rules Profile for raising actions based on specific criteria.")] + private MixedRealityInputActionRulesProfile inputActionRulesProfile; + + /// + /// Input Action Rules Profile for raising actions based on specific criteria. + /// + public MixedRealityInputActionRulesProfile InputActionRulesProfile + { + get { return inputActionRulesProfile; } + private set { inputActionRulesProfile = value; } + } + [SerializeField] [Tooltip("Pointer Configuration options")] private MixedRealityPointerProfile pointerProfile; diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/ProfileMenuItemIndices.cs b/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/ProfileMenuItemIndices.cs index 136545da4ca..a813c06966e 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/ProfileMenuItemIndices.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/ProfileMenuItemIndices.cs @@ -14,6 +14,7 @@ public enum CreateProfileMenuItemIndices Pointer, Controller, InputActions, + InputActionRules, Speech, BoundaryVisualization, SpatialAwareness, diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs new file mode 100644 index 00000000000..7017763866c --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.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 Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; +using Microsoft.MixedReality.Toolkit.Core.Managers; +using UnityEditor; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Inspectors.Profiles +{ + [CustomEditor(typeof(MixedRealityInputActionRulesProfile))] + public class MixedRealityInputActionRulesInspector : MixedRealityBaseConfigurationProfileInspector + { + private SerializedProperty inputActionRulesDigital; + private SerializedProperty inputActionRulesSingleAxis; + private SerializedProperty inputActionRulesDualAxis; + private SerializedProperty inputActionRulesVectorAxis; + private SerializedProperty inputActionRulesQuaternionAxis; + private SerializedProperty inputActionRulesPoseAxis; + + private void OnEnable() + { + if (!MixedRealityManager.ConfirmInitialized()) + { + return; + } + + if (!MixedRealityManager.HasActiveProfile) + { + return; + } + + inputActionRulesDigital = serializedObject.FindProperty("genericInputActionRulesDigital"); + inputActionRulesSingleAxis = serializedObject.FindProperty("inputActionRulesSingleAxis"); + inputActionRulesDualAxis = serializedObject.FindProperty("inputActionRulesDualAxis"); + inputActionRulesVectorAxis = serializedObject.FindProperty("inputActionRulesVectorAxis"); + inputActionRulesQuaternionAxis = serializedObject.FindProperty("inputActionRulesQuaternionAxis"); + inputActionRulesPoseAxis = serializedObject.FindProperty("inputActionRulesPoseAxis"); + } + + public override void OnInspectorGUI() + { + RenderMixedRealityToolkitLogo(); + if (!CheckMixedRealityManager()) + { + return; + } + + if (GUILayout.Button("Back to Input Profile")) + { + Selection.activeObject = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile; + } + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Input Action Rules Profile", EditorStyles.boldLabel); + EditorGUILayout.HelpBox("The Input Action Rules...", MessageType.Info); + + EditorGUILayout.PropertyField(inputActionRulesDigital, true); + EditorGUILayout.PropertyField(inputActionRulesSingleAxis, true); + EditorGUILayout.PropertyField(inputActionRulesDualAxis, true); + EditorGUILayout.PropertyField(inputActionRulesVectorAxis, true); + EditorGUILayout.PropertyField(inputActionRulesQuaternionAxis, true); + EditorGUILayout.PropertyField(inputActionRulesPoseAxis, true); + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs.meta b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs.meta new file mode 100644 index 00000000000..38f8dc826a3 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 088654758d8f4856ba3ca7c6b2515958 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs index 23f21a48dbe..b4b8173c028 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs @@ -13,6 +13,7 @@ public class MixedRealityInputSystemProfileInspector : MixedRealityBaseConfigura { private SerializedProperty inputActionsProfile; private SerializedProperty gesturesProfile; + private SerializedProperty inputActionRulesProfile; private SerializedProperty pointerProfile; private SerializedProperty speechCommandsProfile; private SerializedProperty enableControllerMapping; @@ -32,6 +33,7 @@ private void OnEnable() inputActionsProfile = serializedObject.FindProperty("inputActionsProfile"); gesturesProfile = serializedObject.FindProperty("gesturesProfile"); + inputActionRulesProfile = serializedObject.FindProperty("inputActionRulesProfile"); pointerProfile = serializedObject.FindProperty("pointerProfile"); speechCommandsProfile = serializedObject.FindProperty("speechCommandsProfile"); enableControllerMapping = serializedObject.FindProperty("enableControllerMapping"); @@ -64,6 +66,7 @@ public override void OnInspectorGUI() changed |= RenderProfile(inputActionsProfile); changed |= RenderProfile(gesturesProfile); + changed |= RenderProfile(inputActionRulesProfile); changed |= RenderProfile(pointerProfile); changed |= RenderProfile(speechCommandsProfile); diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IInputActionRule.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IInputActionRule.cs new file mode 100644 index 00000000000..2ebe23f61c5 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IInputActionRule.cs @@ -0,0 +1,29 @@ +// 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.Core.Definitions.InputSystem; + +namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem +{ + /// + /// Interface for defining Input Action Rules + /// + /// + public interface IInputActionRule + { + /// + /// The Base Action that the rule will listen to. + /// + MixedRealityInputAction BaseAction { get; } + + /// + /// The Action to raise if the criteria is met. + /// + MixedRealityInputAction RuleAction { get; } + + /// + /// The criteria to check against for determining if the action should be raised. + /// + T Criteria { get; } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IInputActionRule.cs.meta b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IInputActionRule.cs.meta new file mode 100644 index 00000000000..dbe1516f529 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IInputActionRule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a98a2bbb20b04ca98028558d8055fb17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityMousePointer.cs.meta b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityMousePointer.cs.meta index ec262e4d8ef..db1f2549f76 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityMousePointer.cs.meta +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityMousePointer.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} userData: assetBundleName: assetBundleVariant: From ff0d732fb94125f4469a14b72030e6af7779bced Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 12 Sep 2018 13:03:10 -0700 Subject: [PATCH 02/98] Wired up input action rules --- .../Input/MixedRealityInputManager.cs | 198 ++++++++++++++++++ .../MixedRealityInputActionRulesProfile.cs | 4 +- .../MixedRealityInputActionRulesInspector.cs | 4 +- 3 files changed, 203 insertions(+), 3 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index ae8d5e82ae8..ef29e3d9aae 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -70,6 +70,8 @@ public class MixedRealityInputManager : MixedRealityEventManager, IMixedRealityI private SpeechEventData speechEventData; private DictationEventData dictationEventData; + public MixedRealityInputActionRulesProfile CurrentInputActionRulesProfile { get; set; } + #region IMixedRealityManager Implementation // Input system is critical, so should be processed before all other managers @@ -79,6 +81,7 @@ public class MixedRealityInputManager : MixedRealityEventManager, IMixedRealityI public override void Initialize() { base.Initialize(); + CurrentInputActionRulesProfile = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionRulesProfile; InitializeInternal(); InputEnabled?.Invoke(); } @@ -898,6 +901,8 @@ private GraphicInputEventData HandlePointerUp(IMixedRealityPointer pointer) /// public void RaiseOnInputDown(IMixedRealityInputSource source, MixedRealityInputAction inputAction) { + inputAction = ProcessRules(inputAction, true); + // Create input event inputEventData.Initialize(source, inputAction); @@ -908,6 +913,8 @@ public void RaiseOnInputDown(IMixedRealityInputSource source, MixedRealityInputA /// public void RaiseOnInputDown(IMixedRealityInputSource source, Handedness handedness, MixedRealityInputAction inputAction) { + inputAction = ProcessRules(inputAction, true); + // Create input event inputEventData.Initialize(source, handedness, inputAction); @@ -929,6 +936,8 @@ public void RaiseOnInputDown(IMixedRealityInputSource source, Handedness handedn /// public void RaiseOnInputPressed(IMixedRealityInputSource source, MixedRealityInputAction inputAction) { + inputAction = ProcessRules(inputAction, true); + // Create input event floatInputEventData.Initialize(source, inputAction); @@ -939,6 +948,8 @@ public void RaiseOnInputPressed(IMixedRealityInputSource source, MixedRealityInp /// public void RaiseOnInputPressed(IMixedRealityInputSource source, Handedness handedness, MixedRealityInputAction inputAction) { + inputAction = ProcessRules(inputAction, true); + // Create input event floatInputEventData.Initialize(source, handedness, inputAction); @@ -949,6 +960,8 @@ public void RaiseOnInputPressed(IMixedRealityInputSource source, Handedness hand /// public void RaiseOnInputPressed(IMixedRealityInputSource source, MixedRealityInputAction inputAction, float pressAmount) { + inputAction = ProcessRules(inputAction, pressAmount); + // Create input event floatInputEventData.Initialize(source, inputAction, pressAmount); @@ -959,6 +972,8 @@ public void RaiseOnInputPressed(IMixedRealityInputSource source, MixedRealityInp /// public void RaiseOnInputPressed(IMixedRealityInputSource source, Handedness handedness, MixedRealityInputAction inputAction, float pressAmount) { + inputAction = ProcessRules(inputAction, pressAmount); + // Create input event floatInputEventData.Initialize(source, handedness, inputAction, pressAmount); @@ -980,6 +995,8 @@ public void RaiseOnInputPressed(IMixedRealityInputSource source, Handedness hand /// public void RaiseOnInputUp(IMixedRealityInputSource source, MixedRealityInputAction inputAction) { + inputAction = ProcessRules(inputAction, false); + // Create input event inputEventData.Initialize(source, inputAction); @@ -990,6 +1007,8 @@ public void RaiseOnInputUp(IMixedRealityInputSource source, MixedRealityInputAct /// public void RaiseOnInputUp(IMixedRealityInputSource source, Handedness handedness, MixedRealityInputAction inputAction) { + inputAction = ProcessRules(inputAction, false); + // Create input event inputEventData.Initialize(source, handedness, inputAction); @@ -1011,6 +1030,8 @@ public void RaiseOnInputUp(IMixedRealityInputSource source, Handedness handednes /// public void RaisePositionInputChanged(IMixedRealityInputSource source, MixedRealityInputAction inputAction, Vector2 inputPosition) { + inputAction = ProcessRules(inputAction, inputPosition); + // Create input event vector2InputEventData.Initialize(source, inputAction, inputPosition); @@ -1021,6 +1042,8 @@ public void RaisePositionInputChanged(IMixedRealityInputSource source, MixedReal /// public void RaisePositionInputChanged(IMixedRealityInputSource source, Handedness handedness, MixedRealityInputAction inputAction, Vector2 inputPosition) { + inputAction = ProcessRules(inputAction, inputPosition); + // Create input event vector2InputEventData.Initialize(source, handedness, inputAction, inputPosition); @@ -1038,6 +1061,8 @@ public void RaisePositionInputChanged(IMixedRealityInputSource source, Handednes /// public void RaisePositionInputChanged(IMixedRealityInputSource source, MixedRealityInputAction inputAction, Vector3 position) { + inputAction = ProcessRules(inputAction, position); + // Create input event positionInputEventData.Initialize(source, inputAction, position); @@ -1048,6 +1073,8 @@ public void RaisePositionInputChanged(IMixedRealityInputSource source, MixedReal /// public void RaisePositionInputChanged(IMixedRealityInputSource source, Handedness handedness, MixedRealityInputAction inputAction, Vector3 position) { + inputAction = ProcessRules(inputAction, position); + // Create input event positionInputEventData.Initialize(source, handedness, inputAction, position); @@ -1069,6 +1096,8 @@ public void RaisePositionInputChanged(IMixedRealityInputSource source, Handednes /// public void RaiseRotationInputChanged(IMixedRealityInputSource source, MixedRealityInputAction inputAction, Quaternion rotation) { + inputAction = ProcessRules(inputAction, rotation); + // Create input event rotationInputEventData.Initialize(source, inputAction, rotation); @@ -1079,6 +1108,8 @@ public void RaiseRotationInputChanged(IMixedRealityInputSource source, MixedReal /// public void RaiseRotationInputChanged(IMixedRealityInputSource source, Handedness handedness, MixedRealityInputAction inputAction, Quaternion rotation) { + inputAction = ProcessRules(inputAction, rotation); + // Create input event rotationInputEventData.Initialize(source, handedness, inputAction, rotation); @@ -1100,6 +1131,8 @@ public void RaiseRotationInputChanged(IMixedRealityInputSource source, Handednes /// public void RaisePoseInputChanged(IMixedRealityInputSource source, MixedRealityInputAction inputAction, MixedRealityPose inputData) { + inputAction = ProcessRules(inputAction, inputData); + // Create input event poseInputEventData.Initialize(source, inputAction, inputData); @@ -1110,6 +1143,8 @@ public void RaisePoseInputChanged(IMixedRealityInputSource source, MixedRealityI /// public void RaisePoseInputChanged(IMixedRealityInputSource source, Handedness handedness, MixedRealityInputAction inputAction, MixedRealityPose inputData) { + inputAction = ProcessRules(inputAction, inputData); + // Create input event poseInputEventData.Initialize(source, handedness, inputAction, inputData); @@ -1133,6 +1168,7 @@ public void RaisePoseInputChanged(IMixedRealityInputSource source, Handedness ha /// public void RaiseGestureStarted(IMixedRealityController controller, MixedRealityInputAction action) { + action = ProcessRules(action, true); inputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action); HandleEvent(inputEventData, OnGestureStarted); } @@ -1147,6 +1183,7 @@ public void RaiseGestureStarted(IMixedRealityController controller, MixedReality /// public void RaiseGestureUpdated(IMixedRealityController controller, MixedRealityInputAction action) { + action = ProcessRules(action, true); inputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action); HandleEvent(inputEventData, OnGestureUpdated); } @@ -1161,6 +1198,7 @@ public void RaiseGestureUpdated(IMixedRealityController controller, MixedReality /// public void RaiseGestureUpdated(IMixedRealityController controller, MixedRealityInputAction action, Vector2 inputData) { + action = ProcessRules(action, inputData); vector2InputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action, inputData); HandleEvent(vector2InputEventData, OnGestureVector2PositionUpdated); } @@ -1175,6 +1213,7 @@ public void RaiseGestureUpdated(IMixedRealityController controller, MixedReality /// public void RaiseGestureUpdated(IMixedRealityController controller, MixedRealityInputAction action, Vector3 inputData) { + action = ProcessRules(action, inputData); positionInputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action, inputData); HandleEvent(inputEventData, OnGesturePositionUpdated); } @@ -1189,6 +1228,7 @@ public void RaiseGestureUpdated(IMixedRealityController controller, MixedReality /// public void RaiseGestureUpdated(IMixedRealityController controller, MixedRealityInputAction action, Quaternion inputData) { + action = ProcessRules(action, inputData); rotationInputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action, inputData); HandleEvent(inputEventData, OnGestureRotationUpdated); } @@ -1203,6 +1243,7 @@ public void RaiseGestureUpdated(IMixedRealityController controller, MixedReality /// public void RaiseGestureUpdated(IMixedRealityController controller, MixedRealityInputAction action, MixedRealityPose inputData) { + action = ProcessRules(action, inputData); poseInputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action, inputData); HandleEvent(inputEventData, OnGesturePoseUpdated); } @@ -1217,6 +1258,7 @@ public void RaiseGestureUpdated(IMixedRealityController controller, MixedReality /// public void RaiseGestureCompleted(IMixedRealityController controller, MixedRealityInputAction action) { + action = ProcessRules(action, false); inputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action); HandleEvent(inputEventData, OnGestureCompleted); } @@ -1231,6 +1273,7 @@ public void RaiseGestureCompleted(IMixedRealityController controller, MixedReali /// public void RaiseGestureCompleted(IMixedRealityController controller, MixedRealityInputAction action, Vector2 inputData) { + action = ProcessRules(action, inputData); vector2InputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action, inputData); HandleEvent(vector2InputEventData, OnGestureVector2PositionCompleted); } @@ -1245,6 +1288,7 @@ public void RaiseGestureCompleted(IMixedRealityController controller, MixedReali /// public void RaiseGestureCompleted(IMixedRealityController controller, MixedRealityInputAction action, Vector3 inputData) { + action = ProcessRules(action, inputData); positionInputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action, inputData); HandleEvent(inputEventData, OnGesturePositionCompleted); } @@ -1259,6 +1303,7 @@ public void RaiseGestureCompleted(IMixedRealityController controller, MixedReali /// public void RaiseGestureCompleted(IMixedRealityController controller, MixedRealityInputAction action, Quaternion inputData) { + action = ProcessRules(action, inputData); rotationInputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action, inputData); HandleEvent(inputEventData, OnGestureRotationCompleted); } @@ -1273,6 +1318,7 @@ public void RaiseGestureCompleted(IMixedRealityController controller, MixedReali /// public void RaiseGestureCompleted(IMixedRealityController controller, MixedRealityInputAction action, MixedRealityPose inputData) { + action = ProcessRules(action, inputData); poseInputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action, inputData); HandleEvent(inputEventData, OnGesturePoseCompleted); } @@ -1287,6 +1333,7 @@ public void RaiseGestureCompleted(IMixedRealityController controller, MixedReali /// public void RaiseGestureCanceled(IMixedRealityController controller, MixedRealityInputAction action) { + action = ProcessRules(action, false); inputEventData.Initialize(controller.InputSource, controller.ControllerHandedness, action); HandleEvent(inputEventData, OnGestureCanceled); } @@ -1696,5 +1743,156 @@ public void RaiseDictationError(IMixedRealityInputSource source, string dictatio #endregion Dictation Events #endregion Input Events + + #region Rules + + private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, bool criteria) + { + if (CurrentInputActionRulesProfile != null) + { + var digitalRules = CurrentInputActionRulesProfile.InputActionRulesDigital; + + for (int i = 0; i < digitalRules.Length; i++) + { + if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria == criteria) + { + if (digitalRules[i].RuleAction == inputAction) + { + Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); + return inputAction; + } + + return digitalRules[i].RuleAction; + } + } + } + + return inputAction; + } + + private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, float criteria) + { + if (CurrentInputActionRulesProfile != null) + { + var digitalRules = CurrentInputActionRulesProfile.InputActionRulesSingleAxis; + + for (int i = 0; i < digitalRules.Length; i++) + { + if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria.Equals(criteria)) + { + if (digitalRules[i].RuleAction == inputAction) + { + Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); + return inputAction; + } + + return digitalRules[i].RuleAction; + } + } + } + + return inputAction; + } + + private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, Vector2 criteria) + { + if (CurrentInputActionRulesProfile != null) + { + var digitalRules = CurrentInputActionRulesProfile.InputActionRulesDualAxis; + + for (int i = 0; i < digitalRules.Length; i++) + { + if (digitalRules[i].BaseAction == inputAction) + { + if (digitalRules[i].Criteria == criteria) + { + if (digitalRules[i].RuleAction == inputAction) + { + Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); + return inputAction; + } + + return digitalRules[i].RuleAction; + } + } + } + } + + return inputAction; + } + + private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, Vector3 criteria) + { + if (CurrentInputActionRulesProfile != null) + { + var digitalRules = CurrentInputActionRulesProfile.InputActionRulesVectorAxis; + + for (int i = 0; i < digitalRules.Length; i++) + { + if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria == criteria) + { + if (digitalRules[i].RuleAction == inputAction) + { + Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); + return inputAction; + } + + return digitalRules[i].RuleAction; + } + } + } + + return inputAction; + } + + private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, Quaternion criteria) + { + if (CurrentInputActionRulesProfile != null) + { + var digitalRules = CurrentInputActionRulesProfile.InputActionRulesQuaternionAxis; + + for (int i = 0; i < digitalRules.Length; i++) + { + if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria == criteria) + { + if (digitalRules[i].RuleAction == inputAction) + { + Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); + return inputAction; + } + + return digitalRules[i].RuleAction; + } + } + } + + return inputAction; + } + + private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, MixedRealityPose criteria) + { + if (CurrentInputActionRulesProfile != null) + { + var digitalRules = CurrentInputActionRulesProfile.InputActionRulesPoseAxis; + + for (int i = 0; i < digitalRules.Length; i++) + { + if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria == criteria) + { + if (digitalRules[i].RuleAction == inputAction) + { + Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); + return inputAction; + } + + return digitalRules[i].RuleAction; + } + } + } + + return inputAction; + } + + #endregion Rules } } diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs index 1e325fc59c3..7a04bda6a61 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs @@ -10,12 +10,12 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem public class MixedRealityInputActionRulesProfile : ScriptableObject { [SerializeField] - private InputActionRuleDigital[] genericInputActionRulesDigital; + private InputActionRuleDigital[] inputActionRulesDigital; /// /// All the Input Action Rules for based s /// - public InputActionRuleDigital[] GenericInputActionRulesDigital => genericInputActionRulesDigital; + public InputActionRuleDigital[] InputActionRulesDigital => inputActionRulesDigital; [SerializeField] private InputActionRuleSingleAxis[] inputActionRulesSingleAxis; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs index 7017763866c..7761236fc2b 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs @@ -30,7 +30,7 @@ private void OnEnable() return; } - inputActionRulesDigital = serializedObject.FindProperty("genericInputActionRulesDigital"); + inputActionRulesDigital = serializedObject.FindProperty("inputActionRulesDigital"); inputActionRulesSingleAxis = serializedObject.FindProperty("inputActionRulesSingleAxis"); inputActionRulesDualAxis = serializedObject.FindProperty("inputActionRulesDualAxis"); inputActionRulesVectorAxis = serializedObject.FindProperty("inputActionRulesVectorAxis"); @@ -55,12 +55,14 @@ public override void OnInspectorGUI() EditorGUILayout.LabelField("Input Action Rules Profile", EditorStyles.boldLabel); EditorGUILayout.HelpBox("The Input Action Rules...", MessageType.Info); + serializedObject.Update(); EditorGUILayout.PropertyField(inputActionRulesDigital, true); EditorGUILayout.PropertyField(inputActionRulesSingleAxis, true); EditorGUILayout.PropertyField(inputActionRulesDualAxis, true); EditorGUILayout.PropertyField(inputActionRulesVectorAxis, true); EditorGUILayout.PropertyField(inputActionRulesQuaternionAxis, true); EditorGUILayout.PropertyField(inputActionRulesPoseAxis, true); + serializedObject.ApplyModifiedProperties(); } } } \ No newline at end of file From 5e1d768b2a27cbbe7cc6e1b5392572d7041e2d9b Mon Sep 17 00:00:00 2001 From: Jarod Date: Wed, 12 Sep 2018 19:45:13 -0500 Subject: [PATCH 03/98] genericised ProcessRules --- .../Input/MixedRealityInputManager.cs | 114 ++++-------------- 1 file changed, 23 insertions(+), 91 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index ef29e3d9aae..c285e5c7b2c 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.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.Core.Definitions.Devices; @@ -1746,49 +1746,40 @@ public void RaiseDictationError(IMixedRealityInputSource source, string dictatio #region Rules - private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, bool criteria) + private MixedRealityInputAction ProcessRules_Internal(MixedRealityInputAction inputAction, T1[] inputActionRules, T2 criteria) where T1 : struct, IInputActionRule { - if (CurrentInputActionRulesProfile != null) + for (int i = 0; i < inputActionRules.Length; i++) { - var digitalRules = CurrentInputActionRulesProfile.InputActionRulesDigital; - - for (int i = 0; i < digitalRules.Length; i++) + if (inputActionRules[i].BaseAction == inputAction && inputActionRules[i].Criteria.Equals(criteria)) { - if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria == criteria) + if (inputActionRules[i].RuleAction == inputAction) { - if (digitalRules[i].RuleAction == inputAction) - { - Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); - return inputAction; - } - - return digitalRules[i].RuleAction; + Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); + return inputAction; } + + return inputActionRules[i].RuleAction; } } return inputAction; } - private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, float criteria) + private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, bool criteria) { if (CurrentInputActionRulesProfile != null) { - var digitalRules = CurrentInputActionRulesProfile.InputActionRulesSingleAxis; + ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesDigital, criteria); + } - for (int i = 0; i < digitalRules.Length; i++) - { - if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria.Equals(criteria)) - { - if (digitalRules[i].RuleAction == inputAction) - { - Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); - return inputAction; - } + return inputAction; + } - return digitalRules[i].RuleAction; - } - } + private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, float criteria) + { + if (CurrentInputActionRulesProfile != null) + { + ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesSingleAxis, criteria); } return inputAction; @@ -1798,24 +1789,7 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction { if (CurrentInputActionRulesProfile != null) { - var digitalRules = CurrentInputActionRulesProfile.InputActionRulesDualAxis; - - for (int i = 0; i < digitalRules.Length; i++) - { - if (digitalRules[i].BaseAction == inputAction) - { - if (digitalRules[i].Criteria == criteria) - { - if (digitalRules[i].RuleAction == inputAction) - { - Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); - return inputAction; - } - - return digitalRules[i].RuleAction; - } - } - } + ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesDualAxis, criteria); } return inputAction; @@ -1825,21 +1799,7 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction { if (CurrentInputActionRulesProfile != null) { - var digitalRules = CurrentInputActionRulesProfile.InputActionRulesVectorAxis; - - for (int i = 0; i < digitalRules.Length; i++) - { - if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria == criteria) - { - if (digitalRules[i].RuleAction == inputAction) - { - Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); - return inputAction; - } - - return digitalRules[i].RuleAction; - } - } + ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesVectorAxis, criteria); } return inputAction; @@ -1849,21 +1809,7 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction { if (CurrentInputActionRulesProfile != null) { - var digitalRules = CurrentInputActionRulesProfile.InputActionRulesQuaternionAxis; - - for (int i = 0; i < digitalRules.Length; i++) - { - if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria == criteria) - { - if (digitalRules[i].RuleAction == inputAction) - { - Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); - return inputAction; - } - - return digitalRules[i].RuleAction; - } - } + ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesQuaternionAxis, criteria); } return inputAction; @@ -1873,21 +1819,7 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction { if (CurrentInputActionRulesProfile != null) { - var digitalRules = CurrentInputActionRulesProfile.InputActionRulesPoseAxis; - - for (int i = 0; i < digitalRules.Length; i++) - { - if (digitalRules[i].BaseAction == inputAction && digitalRules[i].Criteria == criteria) - { - if (digitalRules[i].RuleAction == inputAction) - { - Debug.LogError("Input Action Rule cannot be the same as the rule's Base Action!"); - return inputAction; - } - - return digitalRules[i].RuleAction; - } - } + ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesPoseAxis, criteria); } return inputAction; From edbbd1e21d39bdd7775cb39e0c63f8ec8353a167 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Thu, 13 Sep 2018 17:44:54 +0100 Subject: [PATCH 04/98] Fixed the processing of rules: * Now if there is a rule, it will return. Before it would only ever return the source action * Enhanced the "Rules" check to skip over any axis not configured (zero length array) --- .../Input/MixedRealityInputManager.cs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index c285e5c7b2c..fe53c44bc15 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -1767,9 +1767,9 @@ private MixedRealityInputAction ProcessRules_Internal(MixedRealityInputA private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, bool criteria) { - if (CurrentInputActionRulesProfile != null) + if (CurrentInputActionRulesProfile != null && CurrentInputActionRulesProfile.InputActionRulesDigital?.Length > 0) { - ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesDigital, criteria); + return ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesDigital, criteria); } return inputAction; @@ -1777,9 +1777,9 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, float criteria) { - if (CurrentInputActionRulesProfile != null) + if (CurrentInputActionRulesProfile != null && CurrentInputActionRulesProfile.InputActionRulesSingleAxis?.Length > 0) { - ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesSingleAxis, criteria); + return ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesSingleAxis, criteria); } return inputAction; @@ -1787,9 +1787,9 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, Vector2 criteria) { - if (CurrentInputActionRulesProfile != null) + if (CurrentInputActionRulesProfile != null && CurrentInputActionRulesProfile.InputActionRulesDualAxis?.Length > 0) { - ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesDualAxis, criteria); + return ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesDualAxis, criteria); } return inputAction; @@ -1797,9 +1797,9 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, Vector3 criteria) { - if (CurrentInputActionRulesProfile != null) + if (CurrentInputActionRulesProfile != null && CurrentInputActionRulesProfile.InputActionRulesVectorAxis?.Length > 0) { - ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesVectorAxis, criteria); + return ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesVectorAxis, criteria); } return inputAction; @@ -1807,9 +1807,9 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, Quaternion criteria) { - if (CurrentInputActionRulesProfile != null) + if (CurrentInputActionRulesProfile != null && CurrentInputActionRulesProfile.InputActionRulesQuaternionAxis?.Length > 0) { - ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesQuaternionAxis, criteria); + return ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesQuaternionAxis, criteria); } return inputAction; @@ -1817,9 +1817,9 @@ private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction private MixedRealityInputAction ProcessRules(MixedRealityInputAction inputAction, MixedRealityPose criteria) { - if (CurrentInputActionRulesProfile != null) + if (CurrentInputActionRulesProfile != null && CurrentInputActionRulesProfile.InputActionRulesPoseAxis?.Length > 0) { - ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesPoseAxis, criteria); + return ProcessRules_Internal(inputAction, CurrentInputActionRulesProfile.InputActionRulesPoseAxis, criteria); } return inputAction; From 3148b3ed15c5447ba26f282fbe4a76451f090359 Mon Sep 17 00:00:00 2001 From: "Jonathan Palmer [MSoft Work]" Date: Tue, 25 Sep 2018 12:53:43 -0700 Subject: [PATCH 05/98] Added example assets to be used in tooltip sample scene. --- .../Demos/UX/Tooltips.meta | 8 + .../Demos/UX/Tooltips/Meshes.meta | 8 + .../Demos/UX/Tooltips/Meshes/Model_Bucky.fbx | Bin 0 -> 32480 bytes .../UX/Tooltips/Meshes/Model_Bucky.fbx.meta | 97 +++++++++ .../Demos/UX/Tooltips/Meshes/Model_Icosa.fbx | Bin 0 -> 29568 bytes .../UX/Tooltips/Meshes/Model_Icosa.fbx.meta | 97 +++++++++ .../Demos/UX/Tooltips/Meshes/Model_Octa.fbx | Bin 0 -> 28960 bytes .../UX/Tooltips/Meshes/Model_Octa.fbx.meta | 97 +++++++++ .../UX/Tooltips/Meshes/Model_Platonic.fbx | Bin 0 -> 23664 bytes .../Tooltips/Meshes/Model_Platonic.fbx.meta | 92 ++++++++ .../UX/Tooltips/Meshes/Model_Tetra.prefab | 143 ++++++++++++ .../Tooltips/Meshes/Model_Tetra.prefab.meta | 8 + .../Demos/UX/Tooltips/Meshes/TheModule.fbx | Bin 0 -> 367824 bytes .../UX/Tooltips/Meshes/TheModule.fbx.meta | 205 ++++++++++++++++++ 14 files changed, 755 insertions(+) create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx.meta diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips.meta new file mode 100644 index 00000000000..7ca8bb8d761 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d8c59bbdd8117e4283960275e8934be +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes.meta new file mode 100644 index 00000000000..c08b271cc84 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 03487502e560c0e48ad72a663954aa85 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx new file mode 100644 index 0000000000000000000000000000000000000000..026bd65ad78bc344357e1cf5ecd55c71e8994cf3 GIT binary patch literal 32480 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 W_>+-;6#hQ(uX~kmXUy@e^nU;~JFn9K literal 0 HcmV?d00001 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx.meta new file mode 100644 index 00000000000..62a0035740c --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx.meta @@ -0,0 +1,97 @@ +fileFormatVersion: 2 +guid: c185ec90f910abc4fbf0c1ef8a5c8a66 +ModelImporter: + serializedVersion: 22 + fileIDToRecycleName: + 100000: CINEMA_4D_Editor + 100002: //RootNode + 100004: Platonic + 400000: CINEMA_4D_Editor + 400002: //RootNode + 400004: Platonic + 2000000: CINEMA_4D_Editor + 2100000: No Name + 2300000: Platonic + 3300000: Platonic + 4300000: Platonic + 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 + 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 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + 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: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx new file mode 100644 index 0000000000000000000000000000000000000000..b6f8bf296824bc5ac6fd8cb7019f7ab9918d485a GIT binary patch literal 29568 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 literal 0 HcmV?d00001 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx.meta new file mode 100644 index 00000000000..c15b9b06fc9 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx.meta @@ -0,0 +1,97 @@ +fileFormatVersion: 2 +guid: 1aaa9d3bbddd05947a42a42c3e627154 +ModelImporter: + serializedVersion: 22 + fileIDToRecycleName: + 100000: CINEMA_4D_Editor + 100002: //RootNode + 100004: Platonic + 400000: CINEMA_4D_Editor + 400002: //RootNode + 400004: Platonic + 2000000: CINEMA_4D_Editor + 2100000: No Name + 2300000: Platonic + 3300000: Platonic + 4300000: Platonic + 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 + 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 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + 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: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx new file mode 100644 index 0000000000000000000000000000000000000000..e2b5dd3464ab4596b45781405b1fc624a78abb27 GIT binary patch literal 23664 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 literal 0 HcmV?d00001 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx.meta new file mode 100644 index 00000000000..839d5228393 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 034bfc9f4fc03c7488059a9b3e7e0db7 +ModelImporter: + serializedVersion: 22 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2100000: Mat + 2300000: //RootNode + 3300000: //RootNode + 4300000: Platonic_1 + 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 + 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 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + 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: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab new file mode 100644 index 00000000000..81a1b177870 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab @@ -0,0 +1,143 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1518205972025162} + m_IsPrefabParent: 1 +--- !u!1 &1370976729975188 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4993226159038490} + - component: {fileID: 33872725522972866} + - component: {fileID: 23438222969575584} + m_Layer: 0 + m_Name: Platonic + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1518205972025162 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4479957502932928} + m_Layer: 0 + m_Name: Model_Tetra + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1627669683963282 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4953339597329370} + m_Layer: 0 + m_Name: CINEMA_4D_Editor + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4479957502932928 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1518205972025162} + m_LocalRotation: {x: -0, y: -0.19536461, z: -0, w: 0.98073065} + m_LocalPosition: {x: -0.29837453, y: -0.43106988, z: 0.71920186} + m_LocalScale: {x: 0.1, y: 0.15, z: 0.1} + m_Children: + - {fileID: 4953339597329370} + - {fileID: 4993226159038490} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4953339597329370 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1627669683963282} + m_LocalRotation: {x: -0.14040467, y: -0.7287883, z: 0.12678394, w: 0.6580881} + m_LocalPosition: {x: -0.849495, y: 3.3469186, z: 8.316336} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4479957502932928} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4993226159038490 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1370976729975188} + 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: 4479957502932928} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23438222969575584 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1370976729975188} + 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_Materials: + - {fileID: 2100000, guid: b0fcdc3322e34d9ea83e8399bd9f4031, 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 &33872725522972866 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1370976729975188} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab.meta new file mode 100644 index 00000000000..a9fd6e0121e --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5eeec4e04f41bff4cbd5cbaf0e01596f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx new file mode 100644 index 0000000000000000000000000000000000000000..789bba74c37901479f40f942e5a48e930d71008e GIT binary patch literal 367824 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 literal 0 HcmV?d00001 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx.meta new file mode 100644 index 00000000000..81d9b488533 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx.meta @@ -0,0 +1,205 @@ +fileFormatVersion: 2 +guid: fdae284de03155b40944017e87efab21 +ModelImporter: + serializedVersion: 22 + fileIDToRecycleName: + 100000: BackBody + 100002: Backpack + 100004: BottomLeftBody + 100006: BottomRightBody + 100008: Camera + 100010: Directional Light + 100012: Face + 100014: FrontAntenna + 100016: Gas + 100018: GasTank + 100020: GasTankGlass + 100022: GoldBase + 100024: LeftTwirler + 100026: Legs1 + 100028: Legs2 + 100030: Legs3 + 100032: Legs4 + 100034: Light + 100036: Nose + 100038: //RootNode + 100040: ThrustCylinder + 100042: TopGoldDial + 100044: TopLeftBody + 400000: BackBody + 400002: Backpack + 400004: BottomLeftBody + 400006: BottomRightBody + 400008: Camera + 400010: Directional Light + 400012: Face + 400014: FrontAntenna + 400016: Gas + 400018: GasTank + 400020: GasTankGlass + 400022: GoldBase + 400024: LeftTwirler + 400026: Legs1 + 400028: Legs2 + 400030: Legs3 + 400032: Legs4 + 400034: Light + 400036: Nose + 400038: //RootNode + 400040: ThrustCylinder + 400042: TopGoldDial + 400044: TopLeftBody + 2000000: Camera + 2100000: White + 2100002: WhiteLight + 2100004: GreenGas + 2100006: ClearWindow + 2100008: Black + 2100010: BlackWindow + 2100012: Default + 2100014: RedLight + 2100016: Gold + 2300000: BackBody + 2300002: Backpack + 2300004: BottomLeftBody + 2300006: BottomRightBody + 2300008: Face + 2300010: FrontAntenna + 2300012: Gas + 2300014: GasTank + 2300016: GasTankGlass + 2300018: GoldBase + 2300020: LeftTwirler + 2300022: Legs1 + 2300024: Legs2 + 2300026: Legs3 + 2300028: Legs4 + 2300030: Light + 2300032: Nose + 2300034: ThrustCylinder + 2300036: TopGoldDial + 2300038: TopLeftBody + 3300000: BackBody + 3300002: Backpack + 3300004: BottomLeftBody + 3300006: BottomRightBody + 3300008: Face + 3300010: FrontAntenna + 3300012: Gas + 3300014: GasTank + 3300016: GasTankGlass + 3300018: GoldBase + 3300020: LeftTwirler + 3300022: Legs1 + 3300024: Legs2 + 3300026: Legs3 + 3300028: Legs4 + 3300030: Light + 3300032: Nose + 3300034: ThrustCylinder + 3300036: TopGoldDial + 3300038: TopLeftBody + 4300000: Light + 4300002: Backpack + 4300004: LeftTwirler + 4300006: GasTank + 4300008: Gas + 4300010: GasTankGlass + 4300012: BottomRightBody + 4300014: TopLeftBody + 4300016: Nose + 4300018: Face + 4300020: BackBody + 4300022: FrontAntenna + 4300024: BottomLeftBody + 4300026: GoldBase + 4300028: ThrustCylinder + 4300030: TopGoldDial + 4300032: Legs1 + 4300034: Legs2 + 4300036: Legs3 + 4300038: Legs4 + 7400000: Take 001 + 9500000: //RootNode + 10800000: Directional Light + 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 + 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 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + 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: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 2 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: From 9c9ce7e45e21602f197baf7b860a731e730b5d39 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 5 Oct 2018 21:27:09 -0700 Subject: [PATCH 06/98] Updated Input Action Rules Inspector --- .../Input/MixedRealityInputManager.cs | 10 +- .../MixedRealityInputActionRulesProfile.asset | 7 + .../MixedRealityInputActionRulesProfile.cs | 2 +- .../MixedRealityInputActionRulesInspector.cs | 359 +++++++++++++++++- 4 files changed, 361 insertions(+), 17 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index 7b54fedc4ba..1da21168989 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -73,7 +73,7 @@ public class MixedRealityInputManager : MixedRealityEventManager, IMixedRealityI private SpeechEventData speechEventData; private DictationEventData dictationEventData; - public MixedRealityInputActionRulesProfile CurrentInputActionRulesProfile { get; set; } + private MixedRealityInputActionRulesProfile CurrentInputActionRulesProfile { get; set; } #region IMixedRealityManager Implementation @@ -1444,7 +1444,7 @@ public void RaiseDictationError(IMixedRealityInputSource source, string dictatio #region Rules - private MixedRealityInputAction ProcessRules_Internal(MixedRealityInputAction inputAction, T1[] inputActionRules, T2 criteria) where T1 : struct, IInputActionRule + private static MixedRealityInputAction ProcessRules_Internal(MixedRealityInputAction inputAction, T1[] inputActionRules, T2 criteria) where T1 : struct, IInputActionRule { for (int i = 0; i < inputActionRules.Length; i++) { @@ -1456,6 +1456,12 @@ private MixedRealityInputAction ProcessRules_Internal(MixedRealityInputA return inputAction; } + if (inputActionRules[i].BaseAction.AxisConstraint != inputActionRules[i].RuleAction.AxisConstraint) + { + Debug.LogError("Input Action Rule doesn't have the same Axis Constraint as the Base Action!"); + return inputAction; + } + return inputActionRules[i].RuleAction; } } diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset index d2b6174b0cb..8d8dc527552 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset @@ -11,3 +11,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ee54661ca8af487c9db40e57d479fa48, type: 3} m_Name: MixedRealityInputActionRulesProfile m_EditorClassIdentifier: + isCustomProfile: 0 + inputActionRulesDigital: [] + inputActionRulesSingleAxis: [] + inputActionRulesDualAxis: [] + inputActionRulesVectorAxis: [] + inputActionRulesQuaternionAxis: [] + inputActionRulesPoseAxis: [] diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs index 7a04bda6a61..53946c024c2 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs @@ -7,7 +7,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem { [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Mixed Reality Input Action Rules Profile", fileName = "MixedRealityInputActionRulesProfile", order = (int)CreateProfileMenuItemIndices.InputActionRules)] - public class MixedRealityInputActionRulesProfile : ScriptableObject + public class MixedRealityInputActionRulesProfile : BaseMixedRealityProfile { [SerializeField] private InputActionRuleDigital[] inputActionRulesDigital; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs index 7761236fc2b..0cb136ddaed 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs @@ -1,8 +1,13 @@ // 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.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; +using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; +using Microsoft.MixedReality.Toolkit.Core.Inspectors; +using Microsoft.MixedReality.Toolkit.Core.Inspectors.Profiles; using Microsoft.MixedReality.Toolkit.Core.Managers; +using System.Linq; using UnityEditor; using UnityEngine; @@ -11,6 +16,12 @@ namespace Microsoft.MixedReality.Toolkit.Inspectors.Profiles [CustomEditor(typeof(MixedRealityInputActionRulesProfile))] public class MixedRealityInputActionRulesInspector : MixedRealityBaseConfigurationProfileInspector { + private static readonly GUIContent RuleAddButtonContent = new GUIContent("+ Add a New Rule Definition"); + private static readonly GUIContent RuleMinusButtonContent = new GUIContent("-", "Remove Rule Definition"); + private static readonly GUIContent BaseActionContent = new GUIContent("Base Input Action", "The Action that will raise new actions based on the criteria met"); + private static readonly GUIContent RuleActionContent = new GUIContent("Rule Input Action", "The Action that will be raised when the criteria is met"); + private static readonly GUIContent CriteriaContent = new GUIContent("Action Criteria", "The Criteria that must be met in order to raise the new Action"); + private SerializedProperty inputActionRulesDigital; private SerializedProperty inputActionRulesSingleAxis; private SerializedProperty inputActionRulesDualAxis; @@ -18,14 +29,36 @@ public class MixedRealityInputActionRulesInspector : MixedRealityBaseConfigurati private SerializedProperty inputActionRulesQuaternionAxis; private SerializedProperty inputActionRulesPoseAxis; + private int[] baseActionIds; + private string[] baseActionLabels; + private static int[] ruleActionIds = new int[0]; + private static string[] ruleActionLabels = new string[0]; + + private int selectedBaseActionId = 0; + private int selectedRuleActionId = 0; + + private static MixedRealityInputAction currentBaseAction = MixedRealityInputAction.None; + private static MixedRealityInputAction currentRuleAction = MixedRealityInputAction.None; + + private bool currentBoolCriteria; + private float currentSingleAxisCriteria; + private Vector2 currentDualAxisCriteria; + private Vector3 currentVectorCriteria; + private Quaternion currentQuaternionCriteria; + private MixedRealityPose currentPoseCriteria; + + private bool[] digitalFoldouts; + private bool[] singleAxisFoldouts; + private bool[] dualAxisFoldouts; + private bool[] vectorFoldouts; + private bool[] quaternionFoldouts; + private bool[] poseFoldouts; + private void OnEnable() { - if (!MixedRealityManager.ConfirmInitialized()) - { - return; - } - - if (!MixedRealityManager.HasActiveProfile) + if (!CheckMixedRealityManager(false) || + !MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled || + MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { return; } @@ -36,13 +69,31 @@ private void OnEnable() inputActionRulesVectorAxis = serializedObject.FindProperty("inputActionRulesVectorAxis"); inputActionRulesQuaternionAxis = serializedObject.FindProperty("inputActionRulesQuaternionAxis"); inputActionRulesPoseAxis = serializedObject.FindProperty("inputActionRulesPoseAxis"); + + baseActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + .Select(action => action.Description) + .Prepend("None").ToArray(); + + baseActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + .Select(action => (int)action.Id) + .Prepend(0).ToArray(); + + Reset(); } public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + + if (!CheckMixedRealityManager() || + !MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled || + MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { + if (GUILayout.Button("Back to Configuration Profile")) + { + Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + } + return; } @@ -53,16 +104,296 @@ public override void OnInspectorGUI() EditorGUILayout.Space(); EditorGUILayout.LabelField("Input Action Rules Profile", EditorStyles.boldLabel); - EditorGUILayout.HelpBox("The Input Action Rules...", MessageType.Info); + EditorGUILayout.HelpBox("Input Action Rules help define alternative Actions that will be raised based on specific criteria.\n\n" + + "You can create new rules by assigning a base Input Action below, then assigning the criteria you'd like to meet. When the criteria is met, the Rule's Action will be raised with the criteria value.", MessageType.Info); + + EditorGUILayout.Space(); + + var isGuiLocked = !(MixedRealityPreferences.LockProfiles && !((BaseMixedRealityProfile)target).IsCustomProfile); + GUI.enabled = isGuiLocked; serializedObject.Update(); - EditorGUILayout.PropertyField(inputActionRulesDigital, true); - EditorGUILayout.PropertyField(inputActionRulesSingleAxis, true); - EditorGUILayout.PropertyField(inputActionRulesDualAxis, true); - EditorGUILayout.PropertyField(inputActionRulesVectorAxis, true); - EditorGUILayout.PropertyField(inputActionRulesQuaternionAxis, true); - EditorGUILayout.PropertyField(inputActionRulesPoseAxis, true); + + selectedBaseActionId = RenderBaseInputAction(selectedBaseActionId, out currentBaseAction); + GUI.enabled = isGuiLocked && currentBaseAction != MixedRealityInputAction.None; + RenderCriteriaField(currentBaseAction); + + if (selectedBaseActionId == selectedRuleActionId) + { + selectedRuleActionId = 0; + } + + selectedRuleActionId = RenderRuleInputAction(selectedRuleActionId, out currentRuleAction); + + EditorGUILayout.Space(); + + GUI.enabled = isGuiLocked && + currentBaseAction != MixedRealityInputAction.None && + currentRuleAction != MixedRealityInputAction.None && + currentBaseAction.AxisConstraint != AxisType.None && + currentBaseAction.AxisConstraint != AxisType.Raw; + + if (GUILayout.Button(RuleAddButtonContent, EditorStyles.miniButton)) + { + AddRule(); + Reset(); + } + + GUI.enabled = isGuiLocked; + + EditorGUILayout.Space(); + + var isWideMode = EditorGUIUtility.wideMode; + EditorGUIUtility.wideMode = true; + + RenderList(inputActionRulesDigital, digitalFoldouts); + RenderList(inputActionRulesSingleAxis, singleAxisFoldouts); + RenderList(inputActionRulesDualAxis, dualAxisFoldouts); + RenderList(inputActionRulesVectorAxis, vectorFoldouts); + RenderList(inputActionRulesQuaternionAxis, quaternionFoldouts); + RenderList(inputActionRulesPoseAxis, poseFoldouts); + + EditorGUIUtility.wideMode = isWideMode; serializedObject.ApplyModifiedProperties(); } + + private void Reset() + { + selectedBaseActionId = 0; + selectedRuleActionId = 0; + currentBaseAction = MixedRealityInputAction.None; + currentRuleAction = MixedRealityInputAction.None; + currentBoolCriteria = false; + currentSingleAxisCriteria = 0f; + currentDualAxisCriteria = Vector2.zero; + currentVectorCriteria = Vector3.zero; + currentQuaternionCriteria = Quaternion.identity; + currentPoseCriteria = MixedRealityPose.ZeroIdentity; + + digitalFoldouts = new bool[inputActionRulesDigital.arraySize]; + singleAxisFoldouts = new bool[inputActionRulesSingleAxis.arraySize]; + dualAxisFoldouts = new bool[inputActionRulesDualAxis.arraySize]; + vectorFoldouts = new bool[inputActionRulesVectorAxis.arraySize]; + quaternionFoldouts = new bool[inputActionRulesQuaternionAxis.arraySize]; + poseFoldouts = new bool[inputActionRulesPoseAxis.arraySize]; + } + + private static void GetCompatibleActions(MixedRealityInputAction baseAction) + { + ruleActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + .Where(inputAction => inputAction.AxisConstraint == baseAction.AxisConstraint && inputAction.Id != baseAction.Id) + .Select(action => action.Description) + .Prepend("None").ToArray(); + + ruleActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + .Where(inputAction => inputAction.AxisConstraint == baseAction.AxisConstraint && inputAction.Id != baseAction.Id) + .Select(action => (int)action.Id) + .Prepend(0).ToArray(); + } + + private void RenderCriteriaField(MixedRealityInputAction action) + { + if (action != MixedRealityInputAction.None) + { + switch (action.AxisConstraint) + { + default: + case AxisType.None: + EditorGUILayout.HelpBox("Base rule must have an axis constraint.", MessageType.Warning); + break; + case AxisType.Raw: + EditorGUILayout.HelpBox("Base rule's axis constraint is Raw. It's not possible to set this value in the inspector.", MessageType.Warning); + break; + case AxisType.Digital: + currentBoolCriteria = EditorGUILayout.Toggle(CriteriaContent, currentBoolCriteria); + break; + case AxisType.SingleAxis: + currentSingleAxisCriteria = EditorGUILayout.FloatField(CriteriaContent, currentSingleAxisCriteria); + break; + case AxisType.DualAxis: + currentDualAxisCriteria = EditorGUILayout.Vector2Field(CriteriaContent, currentDualAxisCriteria); + break; + case AxisType.ThreeDofPosition: + currentVectorCriteria = EditorGUILayout.Vector3Field(CriteriaContent, currentVectorCriteria); + break; + case AxisType.ThreeDofRotation: + currentQuaternionCriteria.eulerAngles = EditorGUILayout.Vector3Field(CriteriaContent, currentQuaternionCriteria.eulerAngles); + break; + case AxisType.SixDof: + EditorGUILayout.LabelField(CriteriaContent); + EditorGUI.indentLevel++; + currentPoseCriteria.Position = EditorGUILayout.Vector3Field("Position", currentPoseCriteria.Position); + Quaternion rotation = currentPoseCriteria.Rotation; + rotation.eulerAngles = EditorGUILayout.Vector3Field("Rotation", rotation.eulerAngles); + currentPoseCriteria.Rotation = rotation; + EditorGUI.indentLevel--; + break; + } + } + } + + private void AddRule() + { + SerializedProperty rule; + switch (currentBaseAction.AxisConstraint) + { + case AxisType.Digital: + inputActionRulesDigital.arraySize += 1; + rule = inputActionRulesDigital.GetArrayElementAtIndex(inputActionRulesDigital.arraySize - 1); + rule.FindPropertyRelative("criteria").boolValue = currentBoolCriteria; + break; + case AxisType.SingleAxis: + inputActionRulesSingleAxis.arraySize += 1; + rule = inputActionRulesSingleAxis.GetArrayElementAtIndex(inputActionRulesSingleAxis.arraySize - 1); + rule.FindPropertyRelative("criteria").floatValue = currentSingleAxisCriteria; + break; + case AxisType.DualAxis: + inputActionRulesDualAxis.arraySize += 1; + rule = inputActionRulesDualAxis.GetArrayElementAtIndex(inputActionRulesDualAxis.arraySize - 1); + rule.FindPropertyRelative("criteria").vector2Value = currentDualAxisCriteria; + break; + case AxisType.ThreeDofPosition: + inputActionRulesVectorAxis.arraySize += 1; + rule = inputActionRulesVectorAxis.GetArrayElementAtIndex(inputActionRulesVectorAxis.arraySize - 1); + rule.FindPropertyRelative("criteria").vector3Value = currentVectorCriteria; + break; + case AxisType.ThreeDofRotation: + inputActionRulesQuaternionAxis.arraySize += 1; + rule = inputActionRulesQuaternionAxis.GetArrayElementAtIndex(inputActionRulesQuaternionAxis.arraySize - 1); + rule.FindPropertyRelative("criteria").quaternionValue = currentQuaternionCriteria; + break; + case AxisType.SixDof: + inputActionRulesPoseAxis.arraySize += 1; + rule = inputActionRulesPoseAxis.GetArrayElementAtIndex(inputActionRulesPoseAxis.arraySize - 1); + var criteria = rule.FindPropertyRelative("criteria"); + criteria.FindPropertyRelative("position").vector3Value = currentPoseCriteria.Position; + criteria.FindPropertyRelative("rotation").quaternionValue = currentPoseCriteria.Rotation; + break; + default: + Debug.LogError("Invalid Axis Constraint!"); + return; + } + + var baseAction = rule.FindPropertyRelative("baseAction"); + var baseActionId = baseAction.FindPropertyRelative("id"); + var baseActionDescription = baseAction.FindPropertyRelative("description"); + var baseActionConstraint = baseAction.FindPropertyRelative("axisConstraint"); + + baseActionId.intValue = (int)currentBaseAction.Id; + baseActionDescription.stringValue = currentBaseAction.Description; + baseActionConstraint.intValue = (int)currentBaseAction.AxisConstraint; + + var ruleAction = rule.FindPropertyRelative("ruleAction"); + var ruleActionId = ruleAction.FindPropertyRelative("id"); + var ruleActionDescription = ruleAction.FindPropertyRelative("description"); + var ruleActionConstraint = ruleAction.FindPropertyRelative("axisConstraint"); + + ruleActionId.intValue = (int)currentRuleAction.Id; + ruleActionDescription.stringValue = currentRuleAction.Description; + ruleActionConstraint.intValue = (int)currentRuleAction.AxisConstraint; + } + + private int RenderBaseInputAction(int baseActionId, out MixedRealityInputAction action) + { + action = MixedRealityInputAction.None; + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(BaseActionContent); + EditorGUI.BeginChangeCheck(); + baseActionId = EditorGUILayout.IntPopup(baseActionId, baseActionLabels, baseActionIds); + + for (int i = 0; i < MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Length; i++) + { + if (baseActionId == (int)MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[i].Id) + { + action = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[i]; + } + } + + if (action != MixedRealityInputAction.None) + { + GetCompatibleActions(action); + } + + EditorGUILayout.EndHorizontal(); + return baseActionId; + } + + private int RenderRuleInputAction(int ruleActionId, out MixedRealityInputAction action) + { + action = MixedRealityInputAction.None; + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(RuleActionContent); + EditorGUI.BeginChangeCheck(); + ruleActionId = EditorGUILayout.IntPopup(ruleActionId, ruleActionLabels, ruleActionIds); + + for (int i = 0; i < MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Length; i++) + { + if (ruleActionId == (int)MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[i].Id) + { + action = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[i]; + } + } + + EditorGUILayout.EndHorizontal(); + return ruleActionId; + } + + private void RenderList(SerializedProperty list, bool[] foldouts) + { + for (int i = 0; i < list?.arraySize; i++) + { + var rule = list.GetArrayElementAtIndex(i); + var criteria = rule.FindPropertyRelative("criteria"); + + var baseAction = rule.FindPropertyRelative("baseAction"); + var baseActionId = baseAction.FindPropertyRelative("id"); + var baseActionDescription = baseAction.FindPropertyRelative("description"); + var baseActionConstraint = baseAction.FindPropertyRelative("axisConstraint"); + + var ruleAction = rule.FindPropertyRelative("ruleAction"); + var ruleActionId = ruleAction.FindPropertyRelative("id"); + var ruleActionDescription = ruleAction.FindPropertyRelative("description"); + var ruleActionConstraint = ruleAction.FindPropertyRelative("axisConstraint"); + + EditorGUILayout.BeginHorizontal(); + foldouts[i] = EditorGUILayout.Foldout(foldouts[i], new GUIContent($"{baseActionDescription.stringValue} -> {ruleActionDescription.stringValue}"), true); + + if (GUILayout.Button(RuleMinusButtonContent, EditorStyles.miniButtonRight, GUILayout.Width(24f))) + { + list.DeleteArrayElementAtIndex(i); + EditorGUILayout.EndHorizontal(); + return; + } + + EditorGUILayout.EndHorizontal(); + + if (foldouts[i]) + { + EditorGUI.indentLevel++; + + MixedRealityInputAction newBaseAction; + baseActionId.intValue = RenderBaseInputAction(baseActionId.intValue, out newBaseAction); + baseActionDescription.stringValue = newBaseAction.Description; + baseActionConstraint.intValue = (int)newBaseAction.AxisConstraint; + + if (baseActionId.intValue == ruleActionId.intValue || newBaseAction == MixedRealityInputAction.None) + { + ruleActionId.intValue = (int)MixedRealityInputAction.None.Id; + ruleActionDescription.stringValue = MixedRealityInputAction.None.Description; + ruleActionConstraint.intValue = (int)MixedRealityInputAction.None.AxisConstraint; + } + + EditorGUILayout.PropertyField(criteria); + + MixedRealityInputAction newRuleAction; + ruleActionId.intValue = RenderRuleInputAction(ruleActionId.intValue, out newRuleAction); + ruleActionDescription.stringValue = newRuleAction.Description; + ruleActionConstraint.intValue = (int)newRuleAction.AxisConstraint; + EditorGUI.indentLevel--; + } + + EditorGUILayout.Space(); + } + } } } \ No newline at end of file From 68247d9a2d4a1eb0f47721bc85e675ae5ca89642 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 6 Oct 2018 09:44:49 -0700 Subject: [PATCH 07/98] updated method name --- .../Profiles/MixedRealityInputActionRulesInspector.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs index 0cb136ddaed..00265394ae6 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs @@ -78,7 +78,7 @@ private void OnEnable() .Select(action => (int)action.Id) .Prepend(0).ToArray(); - Reset(); + ResetCriteria(); } public override void OnInspectorGUI() @@ -136,7 +136,7 @@ public override void OnInspectorGUI() if (GUILayout.Button(RuleAddButtonContent, EditorStyles.miniButton)) { AddRule(); - Reset(); + ResetCriteria(); } GUI.enabled = isGuiLocked; @@ -157,7 +157,7 @@ public override void OnInspectorGUI() serializedObject.ApplyModifiedProperties(); } - private void Reset() + private void ResetCriteria() { selectedBaseActionId = 0; selectedRuleActionId = 0; From be853dadc608246d395c70c25fbb919c62e27e56 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Sun, 7 Oct 2018 14:02:06 +0100 Subject: [PATCH 08/98] Fixed UWP Lag issue, changed from Event Based updates to polling. Issue seems related to the way Unity is exposing the InteractionManager and access to the data within which seems UI / polling bound. --- .../WindowsMixedRealityDeviceManager.cs | 71 +++++++++---------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs index a30ee12fe07..317fade391c 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs @@ -35,6 +35,16 @@ public WindowsMixedRealityDeviceManager(string name, uint priority) : base(name, /// private readonly Dictionary activeControllers = new Dictionary(); + /// + /// Cache of the states captured from the Unity InteractionManager for UWP + /// + InteractionSourceState[] interactionmanagerStates; + + /// + /// The current source state reading for the Unity InteractionManager for UWP + /// + public InteractionSourceState[] LastInteractionManagerStateReading { get; protected set; } + /// public override IMixedRealityController[] GetActiveControllers() { @@ -243,21 +253,18 @@ public override void Enable() } InteractionManager.InteractionSourceDetected += InteractionManager_InteractionSourceDetected; - InteractionManager.InteractionSourceUpdated += InteractionManager_InteractionSourceUpdated; - InteractionManager.InteractionSourcePressed += InteractionManager_InteractionSourcePressed; - InteractionManager.InteractionSourceReleased += InteractionManager_InteractionSourceReleased; InteractionManager.InteractionSourceLost += InteractionManager_InteractionSourceLost; - InteractionSourceState[] states = InteractionManager.GetCurrentReading(); + interactionmanagerStates = InteractionManager.GetCurrentReading(); // NOTE: We update the source state data, in case an app wants to query it on source detected. - for (var i = 0; i < states.Length; i++) + for (var i = 0; i < interactionmanagerStates?.Length; i++) { - var controller = GetController(states[i].source); + var controller = GetController(interactionmanagerStates[i].source); if (controller != null) { - controller.UpdateController(states[i]); + controller.UpdateController(interactionmanagerStates[i]); MixedRealityManager.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); } } @@ -270,6 +277,26 @@ public override void Enable() } } + /// + public override void Update() + { + base.Update(); + + interactionmanagerStates = InteractionManager.GetCurrentReading(); + + for (var i = 0; i < interactionmanagerStates?.Length; i++) + { + var controller = GetController(interactionmanagerStates[i].source); + + if (controller != null) + { + controller.UpdateController(interactionmanagerStates[i]); + } + } + + LastInteractionManagerStateReading = interactionmanagerStates; + } + private void RegisterGestureEvents() { if (gestureRecognizer == null) @@ -333,9 +360,6 @@ public override void Disable() navigationGestureRecognizer?.Dispose(); InteractionManager.InteractionSourceDetected -= InteractionManager_InteractionSourceDetected; - InteractionManager.InteractionSourcePressed -= InteractionManager_InteractionSourcePressed; - InteractionManager.InteractionSourceUpdated -= InteractionManager_InteractionSourceUpdated; - InteractionManager.InteractionSourceReleased -= InteractionManager_InteractionSourceReleased; InteractionManager.InteractionSourceLost -= InteractionManager_InteractionSourceLost; InteractionSourceState[] states = InteractionManager.GetCurrentReading(); @@ -438,33 +462,6 @@ private void InteractionManager_InteractionSourceDetected(InteractionSourceDetec controller?.UpdateController(args.state); } - /// - /// SDK Interaction Source Updated Event handler - /// - /// SDK source updated event arguments - private void InteractionManager_InteractionSourceUpdated(InteractionSourceUpdatedEventArgs args) - { - GetController(args.state.source)?.UpdateController(args.state); - } - - /// - /// SDK Interaction Source Pressed Event handler - /// - /// SDK source pressed event arguments - private void InteractionManager_InteractionSourcePressed(InteractionSourcePressedEventArgs args) - { - GetController(args.state.source)?.UpdateController(args.state); - } - - /// - /// SDK Interaction Source Released Event handler - /// - /// SDK source released event arguments - private void InteractionManager_InteractionSourceReleased(InteractionSourceReleasedEventArgs args) - { - GetController(args.state.source)?.UpdateController(args.state); - } - /// /// SDK Interaction Source Lost Event handler /// From 7693bb302626e6b8fb99d56f5b0f3616151524af Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 8 Oct 2018 09:03:47 -0700 Subject: [PATCH 09/98] updated gitignore file --- .gitignore | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ccc032e42be..79358b55cdc 100644 --- a/.gitignore +++ b/.gitignore @@ -14,8 +14,15 @@ UnityGenerated/ UnityPackageManager/ project.json project.lock.json -WSATestCertificate.pfx -WSATestCertificate.pfx.meta +*.package + +# ============ # +# Certificates # +# ============ # +*.cert +*.privkey +*.pfx +*.pfx.meta # ===================================== # # Visual Studio / MonoDevelop generated # @@ -55,3 +62,4 @@ Assets/ThirdParty.meta Assets/TextMesh Pro.meta Assets/TextMesh Pro/ --Version/ +.out/ From 02667a6c7fb7f5f0d237d0d7d0809154fd7f8855 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 8 Oct 2018 09:13:25 -0700 Subject: [PATCH 10/98] out folder is actually unity generated --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 79358b55cdc..84f72a9c966 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ UWP/ WindowsStoreApp/ UnityGenerated/ UnityPackageManager/ +.out/ project.json project.lock.json *.package @@ -62,4 +63,3 @@ Assets/ThirdParty.meta Assets/TextMesh Pro.meta Assets/TextMesh Pro/ --Version/ -.out/ From 67a5d7450d13547bd9b733b3189da23508528b02 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 8 Oct 2018 10:09:06 -0700 Subject: [PATCH 11/98] better filtering --- .../MixedRealityInputActionRulesInspector.cs | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs index 00265394ae6..1d297284de0 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs @@ -54,6 +54,8 @@ public class MixedRealityInputActionRulesInspector : MixedRealityBaseConfigurati private bool[] quaternionFoldouts; private bool[] poseFoldouts; + private MixedRealityInputActionRulesProfile thisProfile; + private void OnEnable() { if (!CheckMixedRealityManager(false) || @@ -71,12 +73,16 @@ private void OnEnable() inputActionRulesPoseAxis = serializedObject.FindProperty("inputActionRulesPoseAxis"); baseActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + .Where(action => action.AxisConstraint != AxisType.None && action.AxisConstraint != AxisType.Raw) .Select(action => action.Description) - .Prepend("None").ToArray(); + .ToArray(); baseActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + .Where(action => action.AxisConstraint != AxisType.None && action.AxisConstraint != AxisType.Raw) .Select(action => (int)action.Id) - .Prepend(0).ToArray(); + .ToArray(); + + thisProfile = target as MixedRealityInputActionRulesProfile; ResetCriteria(); } @@ -128,6 +134,7 @@ public override void OnInspectorGUI() EditorGUILayout.Space(); GUI.enabled = isGuiLocked && + !RuleExists() && currentBaseAction != MixedRealityInputAction.None && currentRuleAction != MixedRealityInputAction.None && currentBaseAction.AxisConstraint != AxisType.None && @@ -157,6 +164,27 @@ public override void OnInspectorGUI() serializedObject.ApplyModifiedProperties(); } + private bool RuleExists() + { + switch (currentBaseAction.AxisConstraint) + { + default: + return false; + case AxisType.Digital: + return thisProfile.InputActionRulesDigital.Any(digitalRule => digitalRule.BaseAction == currentBaseAction && digitalRule.RuleAction == currentRuleAction); + case AxisType.SingleAxis: + return thisProfile.InputActionRulesSingleAxis.Any(singleAxisRule => singleAxisRule.BaseAction == currentBaseAction && singleAxisRule.RuleAction == currentRuleAction); + case AxisType.DualAxis: + return thisProfile.InputActionRulesDualAxis.Any(dualAxisRule => dualAxisRule.BaseAction == currentBaseAction && dualAxisRule.RuleAction == currentRuleAction); + case AxisType.ThreeDofPosition: + return thisProfile.InputActionRulesVectorAxis.Any(vectorAxisRule => vectorAxisRule.BaseAction == currentBaseAction && vectorAxisRule.RuleAction == currentRuleAction); + case AxisType.ThreeDofRotation: + return thisProfile.InputActionRulesQuaternionAxis.Any(quaternionRule => quaternionRule.BaseAction == currentBaseAction && quaternionRule.RuleAction == currentRuleAction); + case AxisType.SixDof: + return thisProfile.InputActionRulesPoseAxis.Any(poseRule => poseRule.BaseAction == currentBaseAction && poseRule.RuleAction == currentRuleAction); + } + } + private void ResetCriteria() { selectedBaseActionId = 0; @@ -183,12 +211,12 @@ private static void GetCompatibleActions(MixedRealityInputAction baseAction) ruleActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == baseAction.AxisConstraint && inputAction.Id != baseAction.Id) .Select(action => action.Description) - .Prepend("None").ToArray(); + .ToArray(); ruleActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == baseAction.AxisConstraint && inputAction.Id != baseAction.Id) .Select(action => (int)action.Id) - .Prepend(0).ToArray(); + .ToArray(); } private void RenderCriteriaField(MixedRealityInputAction action) @@ -198,11 +226,7 @@ private void RenderCriteriaField(MixedRealityInputAction action) switch (action.AxisConstraint) { default: - case AxisType.None: - EditorGUILayout.HelpBox("Base rule must have an axis constraint.", MessageType.Warning); - break; - case AxisType.Raw: - EditorGUILayout.HelpBox("Base rule's axis constraint is Raw. It's not possible to set this value in the inspector.", MessageType.Warning); + EditorGUILayout.HelpBox("Base rule must have a valid axis constraint.", MessageType.Warning); break; case AxisType.Digital: currentBoolCriteria = EditorGUILayout.Toggle(CriteriaContent, currentBoolCriteria); @@ -383,7 +407,7 @@ private void RenderList(SerializedProperty list, bool[] foldouts) ruleActionConstraint.intValue = (int)MixedRealityInputAction.None.AxisConstraint; } - EditorGUILayout.PropertyField(criteria); + EditorGUILayout.PropertyField(criteria, CriteriaContent); MixedRealityInputAction newRuleAction; ruleActionId.intValue = RenderRuleInputAction(ruleActionId.intValue, out newRuleAction); From 9535e0d3a9b8173a08d0a241b2da32d826bd00ab Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 8 Oct 2018 10:14:51 -0700 Subject: [PATCH 12/98] added note about only being able to assign rules to same axis constraint actions. renamed default profile asset --- ....asset => DefaultMixedRealityInputActionRulesProfile.asset} | 2 +- ...a => DefaultMixedRealityInputActionRulesProfile.asset.meta} | 0 .../Profiles/MixedRealityInputActionRulesInspector.cs | 3 ++- 3 files changed, 3 insertions(+), 2 deletions(-) rename Assets/MixedRealityToolkit-SDK/Profiles/{MixedRealityInputActionRulesProfile.asset => DefaultMixedRealityInputActionRulesProfile.asset} (91%) rename Assets/MixedRealityToolkit-SDK/Profiles/{MixedRealityInputActionRulesProfile.asset.meta => DefaultMixedRealityInputActionRulesProfile.asset.meta} (100%) diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputActionRulesProfile.asset similarity index 91% rename from Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset rename to Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputActionRulesProfile.asset index 8d8dc527552..6a893d00e92 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputActionRulesProfile.asset @@ -9,7 +9,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ee54661ca8af487c9db40e57d479fa48, type: 3} - m_Name: MixedRealityInputActionRulesProfile + m_Name: DefaultMixedRealityInputActionRulesProfile m_EditorClassIdentifier: isCustomProfile: 0 inputActionRulesDigital: [] diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset.meta b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputActionRulesProfile.asset.meta similarity index 100% rename from Assets/MixedRealityToolkit-SDK/Profiles/MixedRealityInputActionRulesProfile.asset.meta rename to Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityInputActionRulesProfile.asset.meta diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs index 1d297284de0..8b6be109ac7 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs @@ -111,7 +111,8 @@ public override void OnInspectorGUI() EditorGUILayout.Space(); EditorGUILayout.LabelField("Input Action Rules Profile", EditorStyles.boldLabel); EditorGUILayout.HelpBox("Input Action Rules help define alternative Actions that will be raised based on specific criteria.\n\n" + - "You can create new rules by assigning a base Input Action below, then assigning the criteria you'd like to meet. When the criteria is met, the Rule's Action will be raised with the criteria value.", MessageType.Info); + "You can create new rules by assigning a base Input Action below, then assigning the criteria you'd like to meet. When the criteria is met, the Rule's Action will be raised with the criteria value.\n\n" + + "Note: Rules can only be created for the same axis constraints.", MessageType.Info); EditorGUILayout.Space(); From 41f74ed498799a9f5a97d09a6add5e12c3be8cac Mon Sep 17 00:00:00 2001 From: Jarodshow Date: Mon, 8 Oct 2018 12:42:23 -0500 Subject: [PATCH 13/98] decreased button width --- .../Profiles/MixedRealityBaseConfigurationProfileInspector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs index 920d0eb925d..d0b7f8bedf0 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs @@ -51,7 +51,7 @@ protected static bool RenderProfile(SerializedProperty property) if (property.objectReferenceValue == null) { - if (GUILayout.Button(NewProfileContent, EditorStyles.miniButton)) + if (GUILayout.Button(NewProfileContent, EditorStyles.miniButton, GUILayout.Width(32f))) { var profileTypeName = property.type.Replace("PPtr<$", string.Empty).Replace(">", string.Empty); Debug.Assert(profileTypeName != null, "No Type Found"); From 4fff7bf84cb331207d43601129e5780a6239667b Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 8 Oct 2018 11:20:27 -0700 Subject: [PATCH 14/98] updated layout alignment --- .../MixedRealityInputActionRulesInspector.cs | 168 +++++++++++++++--- 1 file changed, 146 insertions(+), 22 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs index 8b6be109ac7..40b04c95c6a 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs @@ -18,9 +18,9 @@ public class MixedRealityInputActionRulesInspector : MixedRealityBaseConfigurati { private static readonly GUIContent RuleAddButtonContent = new GUIContent("+ Add a New Rule Definition"); private static readonly GUIContent RuleMinusButtonContent = new GUIContent("-", "Remove Rule Definition"); - private static readonly GUIContent BaseActionContent = new GUIContent("Base Input Action", "The Action that will raise new actions based on the criteria met"); - private static readonly GUIContent RuleActionContent = new GUIContent("Rule Input Action", "The Action that will be raised when the criteria is met"); - private static readonly GUIContent CriteriaContent = new GUIContent("Action Criteria", "The Criteria that must be met in order to raise the new Action"); + private static readonly GUIContent BaseActionContent = new GUIContent("Base Input Action:", "The Action that will raise new actions based on the criteria met"); + private static readonly GUIContent RuleActionContent = new GUIContent("Rule Input Action:", "The Action that will be raised when the criteria is met"); + private static readonly GUIContent CriteriaContent = new GUIContent("Action Criteria:", "The Criteria that must be met in order to raise the new Action"); private SerializedProperty inputActionRulesDigital; private SerializedProperty inputActionRulesSingleAxis; @@ -220,8 +220,10 @@ private static void GetCompatibleActions(MixedRealityInputAction baseAction) .ToArray(); } - private void RenderCriteriaField(MixedRealityInputAction action) + private void RenderCriteriaField(MixedRealityInputAction action, SerializedProperty criteriaValue = null) { + var isWideMode = EditorGUIUtility.wideMode; + EditorGUIUtility.wideMode = true; if (action != MixedRealityInputAction.None) { switch (action.AxisConstraint) @@ -230,30 +232,142 @@ private void RenderCriteriaField(MixedRealityInputAction action) EditorGUILayout.HelpBox("Base rule must have a valid axis constraint.", MessageType.Warning); break; case AxisType.Digital: - currentBoolCriteria = EditorGUILayout.Toggle(CriteriaContent, currentBoolCriteria); + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(CriteriaContent, GUILayout.Width(128)); + EditorGUI.BeginChangeCheck(); + var boolValue = EditorGUILayout.Toggle(GUIContent.none, criteriaValue?.boolValue ?? currentBoolCriteria, GUILayout.Width(64), GUILayout.ExpandWidth(true)); + + if (EditorGUI.EndChangeCheck()) + { + if (criteriaValue != null) + { + criteriaValue.boolValue = boolValue; + } + else + { + currentBoolCriteria = boolValue; + } + } + + EditorGUILayout.EndHorizontal(); break; case AxisType.SingleAxis: - currentSingleAxisCriteria = EditorGUILayout.FloatField(CriteriaContent, currentSingleAxisCriteria); + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(CriteriaContent, GUILayout.Width(128)); + EditorGUI.BeginChangeCheck(); + var floatValue = EditorGUILayout.FloatField(GUIContent.none, criteriaValue?.floatValue ?? currentSingleAxisCriteria, GUILayout.Width(64), GUILayout.ExpandWidth(true)); + + if (EditorGUI.EndChangeCheck()) + { + if (criteriaValue != null) + { + criteriaValue.floatValue = floatValue; + } + else + { + currentSingleAxisCriteria = floatValue; + } + } + + EditorGUILayout.EndHorizontal(); break; case AxisType.DualAxis: - currentDualAxisCriteria = EditorGUILayout.Vector2Field(CriteriaContent, currentDualAxisCriteria); + EditorGUILayout.LabelField(CriteriaContent, GUILayout.Width(128)); + EditorGUI.indentLevel++; + EditorGUI.BeginChangeCheck(); + var dualAxisValue = EditorGUILayout.Vector2Field("Position", criteriaValue?.vector2Value ?? currentDualAxisCriteria, GUILayout.Width(64), GUILayout.ExpandWidth(true)); + + if (EditorGUI.EndChangeCheck()) + { + if (criteriaValue != null) + { + criteriaValue.vector2Value = dualAxisValue; + } + else + { + currentDualAxisCriteria = dualAxisValue; + } + } + + EditorGUI.indentLevel--; break; case AxisType.ThreeDofPosition: - currentVectorCriteria = EditorGUILayout.Vector3Field(CriteriaContent, currentVectorCriteria); + EditorGUILayout.LabelField(CriteriaContent, GUILayout.Width(128)); + EditorGUI.indentLevel++; + EditorGUI.BeginChangeCheck(); + var positionValue = EditorGUILayout.Vector3Field("Position", criteriaValue?.vector3Value ?? currentVectorCriteria, GUILayout.ExpandWidth(true)); + + if (EditorGUI.EndChangeCheck()) + { + if (criteriaValue != null) + { + criteriaValue.vector3Value = positionValue; + } + else + { + currentVectorCriteria = positionValue; + } + } + + EditorGUI.indentLevel--; break; case AxisType.ThreeDofRotation: - currentQuaternionCriteria.eulerAngles = EditorGUILayout.Vector3Field(CriteriaContent, currentQuaternionCriteria.eulerAngles); + EditorGUILayout.LabelField(CriteriaContent, GUILayout.Width(128)); + EditorGUI.indentLevel++; + EditorGUI.BeginChangeCheck(); + var rotationValue = EditorGUILayout.Vector3Field("Rotation", criteriaValue?.quaternionValue.eulerAngles ?? currentQuaternionCriteria.eulerAngles, GUILayout.ExpandWidth(true)); + + if (EditorGUI.EndChangeCheck()) + { + if (criteriaValue != null) + { + criteriaValue.quaternionValue = Quaternion.Euler(rotationValue); + } + else + { + currentQuaternionCriteria = Quaternion.Euler(rotationValue); + } + } + + EditorGUI.indentLevel--; break; case AxisType.SixDof: - EditorGUILayout.LabelField(CriteriaContent); + EditorGUILayout.LabelField(CriteriaContent, GUILayout.Width(128)); EditorGUI.indentLevel++; - currentPoseCriteria.Position = EditorGUILayout.Vector3Field("Position", currentPoseCriteria.Position); - Quaternion rotation = currentPoseCriteria.Rotation; - rotation.eulerAngles = EditorGUILayout.Vector3Field("Rotation", rotation.eulerAngles); - currentPoseCriteria.Rotation = rotation; + + var posePosition = currentPoseCriteria.Position; + var poseRotation = currentPoseCriteria.Rotation; + + if (criteriaValue != null) + { + posePosition = criteriaValue.FindPropertyRelative("position").vector3Value; + poseRotation = criteriaValue.FindPropertyRelative("rotation").quaternionValue; + } + + EditorGUI.BeginChangeCheck(); + posePosition = EditorGUILayout.Vector3Field("Position", posePosition); + + poseRotation.eulerAngles = EditorGUILayout.Vector3Field("Rotation", poseRotation.eulerAngles); + + if (EditorGUI.EndChangeCheck()) + { + if (criteriaValue != null) + { + criteriaValue.FindPropertyRelative("position").vector3Value = posePosition; + criteriaValue.FindPropertyRelative("rotation").quaternionValue = poseRotation; + } + else + { + currentPoseCriteria.Position = posePosition; + currentPoseCriteria.Rotation = poseRotation; + } + } + EditorGUI.indentLevel--; break; } + + EditorGUIUtility.wideMode = isWideMode; } } @@ -318,13 +432,17 @@ private void AddRule() ruleActionConstraint.intValue = (int)currentRuleAction.AxisConstraint; } - private int RenderBaseInputAction(int baseActionId, out MixedRealityInputAction action) + private int RenderBaseInputAction(int baseActionId, out MixedRealityInputAction action, bool isLocked = false) { action = MixedRealityInputAction.None; EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(BaseActionContent); + EditorGUILayout.LabelField(BaseActionContent, GUILayout.Width(128)); EditorGUI.BeginChangeCheck(); - baseActionId = EditorGUILayout.IntPopup(baseActionId, baseActionLabels, baseActionIds); + + if (!isLocked) + { + baseActionId = EditorGUILayout.IntPopup(baseActionId, baseActionLabels, baseActionIds, GUILayout.ExpandWidth(true)); + } for (int i = 0; i < MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Length; i++) { @@ -339,6 +457,11 @@ private int RenderBaseInputAction(int baseActionId, out MixedRealityInputAction GetCompatibleActions(action); } + if (isLocked) + { + EditorGUILayout.LabelField(action.Description, EditorStyles.boldLabel, GUILayout.ExpandWidth(true)); + } + EditorGUILayout.EndHorizontal(); return baseActionId; } @@ -347,9 +470,9 @@ private int RenderRuleInputAction(int ruleActionId, out MixedRealityInputAction { action = MixedRealityInputAction.None; EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(RuleActionContent); + EditorGUILayout.LabelField(RuleActionContent, GUILayout.Width(128)); EditorGUI.BeginChangeCheck(); - ruleActionId = EditorGUILayout.IntPopup(ruleActionId, ruleActionLabels, ruleActionIds); + ruleActionId = EditorGUILayout.IntPopup(ruleActionId, ruleActionLabels, ruleActionIds, GUILayout.ExpandWidth(true)); for (int i = 0; i < MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Length; i++) { @@ -397,18 +520,19 @@ private void RenderList(SerializedProperty list, bool[] foldouts) EditorGUI.indentLevel++; MixedRealityInputAction newBaseAction; - baseActionId.intValue = RenderBaseInputAction(baseActionId.intValue, out newBaseAction); + baseActionId.intValue = RenderBaseInputAction(baseActionId.intValue, out newBaseAction, true); baseActionDescription.stringValue = newBaseAction.Description; baseActionConstraint.intValue = (int)newBaseAction.AxisConstraint; - if (baseActionId.intValue == ruleActionId.intValue || newBaseAction == MixedRealityInputAction.None) + if (baseActionId.intValue == ruleActionId.intValue || newBaseAction == MixedRealityInputAction.None || baseActionConstraint.intValue != ruleActionConstraint.intValue) { + criteria.Reset(); ruleActionId.intValue = (int)MixedRealityInputAction.None.Id; ruleActionDescription.stringValue = MixedRealityInputAction.None.Description; ruleActionConstraint.intValue = (int)MixedRealityInputAction.None.AxisConstraint; } - EditorGUILayout.PropertyField(criteria, CriteriaContent); + RenderCriteriaField(newBaseAction, criteria); MixedRealityInputAction newRuleAction; ruleActionId.intValue = RenderRuleInputAction(ruleActionId.intValue, out newRuleAction); From 618dc0a49a252edbe711b05ceab7abcf2073a893 Mon Sep 17 00:00:00 2001 From: Eric Carter Date: Mon, 8 Oct 2018 15:51:22 -0700 Subject: [PATCH 15/98] fixed a case where the MixedRealityPlayspace could return null --- Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs b/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs index 8e82108958f..b0090bc6e32 100644 --- a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs @@ -409,6 +409,7 @@ public Transform MixedRealityPlayspace Debug.LogWarning("The Mixed Reality Manager expected the camera's parent to be named " + MixedRealityPlayspaceName + ". The existing parent will be renamed and used instead."); CameraCache.Main.transform.parent.name = MixedRealityPlayspaceName; // If we rename it, we make it clearer that why it's being teleported around at runtime. } + mixedRealityPlayspace = CameraCache.Main.transform.parent; } // It's very important that the MixedRealityPlayspace align with the tracked space, From 5f8a91beca174f94aaf320ea51464e1c5b07832c Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Thu, 6 Sep 2018 11:46:32 -0700 Subject: [PATCH 16/98] Add Solvers scene and prefabs/scripts --- .../Demos/Solvers.meta | 8 + .../Demos/Solvers/Prefabs.meta | 8 + .../Demos/Solvers/Prefabs/BodyLocked.prefab | 128 + .../Solvers/Prefabs/BodyLocked.prefab.meta | 8 + .../Demos/Solvers/Prefabs/ChaseSource.prefab | 131 + .../Solvers/Prefabs/ChaseSource.prefab.meta | 8 + .../Prefabs/ChaseSourceWithOffset.prefab | 204 + .../Prefabs/ChaseSourceWithOffset.prefab.meta | 8 + .../ChaseSourceWithOffsetThenFaceHead.prefab | 325 ++ ...seSourceWithOffsetThenFaceHead.prefab.meta | 8 + .../Solvers/Prefabs/InBetweenSources.prefab | 125 + .../Prefabs/InBetweenSources.prefab.meta | 8 + .../Demos/Solvers/Prefabs/Snake.prefab | 4866 +++++++++++++++++ .../Demos/Solvers/Prefabs/Snake.prefab.meta | 8 + .../Demos/Solvers/Prefabs/SnakeHead.prefab | 205 + .../Solvers/Prefabs/SnakeHead.prefab.meta | 8 + .../Demos/Solvers/Prefabs/SnakePiece.prefab | 205 + .../Solvers/Prefabs/SnakePiece.prefab.meta | 8 + .../Prefabs/SolverSwappingVolume.prefab | 209 + .../Prefabs/SolverSwappingVolume.prefab.meta | 8 + .../Solvers/Prefabs/SurfaceMagnetism.prefab | 190 + .../Prefabs/SurfaceMagnetism.prefab.meta | 8 + .../SurfaceMagnetismAndRadialView.prefab | 168 + .../SurfaceMagnetismAndRadialView.prefab.meta | 8 + .../Demos/Solvers/Scenes.meta | 8 + .../Demos/Solvers/Scenes/Solvers.unity | 2678 +++++++++ .../Demos/Solvers/Scenes/Solvers.unity.meta | 7 + .../Demos/Solvers/Scripts.meta | 8 + .../Demos/Solvers/Scripts/SwapVolume.cs | 86 + .../Demos/Solvers/Scripts/SwapVolume.cs.meta | 11 + 30 files changed, 9658 insertions(+) create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts.meta create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs.meta diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers.meta new file mode 100644 index 00000000000..50de64a5d5c --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a49b2a9f446a9f84b9cfff096783fa0c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs.meta new file mode 100644 index 00000000000..ff72a442b6a --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98629adf2724b824eb60156008e8cc90 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab new file mode 100644 index 00000000000..8fd70b265d0 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab @@ -0,0 +1,128 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1644659546057122} + m_IsPrefabParent: 1 +--- !u!1 &1644659546057122 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4901806931539292} + - component: {fileID: 33633702823728314} + - component: {fileID: 23345689241976446} + - component: {fileID: 114474594170136286} + - component: {fileID: 114785721768203206} + m_Layer: 0 + m_Name: BodyLocked + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4901806931539292 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23345689241976446 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + 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_Materials: + - {fileID: 2100000, guid: 71d573ea4cb045cdadc98e56044f6d2c, 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 &33633702823728314 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &114474594170136286 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 0 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 +--- !u!114 &114785721768203206 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14c3d8a4208d4b649529822e217623d4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114474594170136286} + orientationType: 4 + localOffset: {x: 0, y: -0.6, z: 1} + worldOffset: {x: 0, y: 0, z: 0} + useAngleSteppingForWorldOffset: 0 + tetherAngleSteps: 6 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab.meta new file mode 100644 index 00000000000..deb96976e63 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eab8031fa00c51d458f94c301aec122b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab new file mode 100644 index 00000000000..3928d8b327c --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab @@ -0,0 +1,131 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1307245229378308} + m_IsPrefabParent: 1 +--- !u!1 &1307245229378308 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4730916243282228} + - component: {fileID: 114229151188300204} + - component: {fileID: 114604167685196832} + - component: {fileID: 33503633605293008} + - component: {fileID: 23066390738997328} + m_Layer: 0 + m_Name: ChaseSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4730916243282228 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307245229378308} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.025, y: 0.025, z: 0.025} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23066390738997328 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307245229378308} + 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_Materials: + - {fileID: 2100000, guid: c4a1b7475a654dd0acaa0cfdfba2e20c, 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 &33503633605293008 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307245229378308} + m_Mesh: {fileID: 4300000, guid: 841b5755ac02dbc439bd347f414de999, type: 3} +--- !u!114 &114229151188300204 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307245229378308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 +--- !u!114 &114604167685196832 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307245229378308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab.meta new file mode 100644 index 00000000000..43f6101812b --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de99acdc648a6d945ba138103ed87328 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab new file mode 100644 index 00000000000..4503bbfdc6a --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab @@ -0,0 +1,204 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1108371264373750} + m_IsPrefabParent: 1 +--- !u!1 &1081535205414756 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4523406418122248} + - component: {fileID: 33800930495665972} + - component: {fileID: 23713399949199268} + m_Layer: 0 + m_Name: Offset of -3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1108371264373750 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4526610178519342} + - component: {fileID: 114911825043747796} + - component: {fileID: 114318995609163506} + - component: {fileID: 33336251020598190} + - component: {fileID: 23798581092926046} + m_Layer: 0 + m_Name: ChaseSourceWithOffset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4523406418122248 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1081535205414756} + m_LocalRotation: {x: 1, y: 0, z: 0, w: 0} + m_LocalPosition: {x: -3, y: 0, z: -0.03} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4526610178519342} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 180} +--- !u!4 &4526610178519342 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1108371264373750} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.025, y: 0.025, z: 0.025} + m_Children: + - {fileID: 4523406418122248} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23713399949199268 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1081535205414756} + 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_Materials: + - {fileID: 2100000, guid: 00665e2a669d4b0fab1965843b4c914b, 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!23 &23798581092926046 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1108371264373750} + 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_Materials: + - {fileID: 2100000, guid: c4a1b7475a654dd0acaa0cfdfba2e20c, 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 &33336251020598190 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1108371264373750} + m_Mesh: {fileID: 4300000, guid: 841b5755ac02dbc439bd347f414de999, type: 3} +--- !u!33 &33800930495665972 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1081535205414756} + m_Mesh: {fileID: 4300000, guid: dc6c0266b7f350f40b24b8ddfae317b4, type: 3} +--- !u!114 &114318995609163506 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1108371264373750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 +--- !u!114 &114911825043747796 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1108371264373750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab.meta new file mode 100644 index 00000000000..9ea9c36b3ac --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 118ca9eb859ed4a42beb80e64c3380ab +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab new file mode 100644 index 00000000000..ac55715fe68 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab @@ -0,0 +1,325 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1041976978773994} + m_IsPrefabParent: 1 +--- !u!1 &1041976978773994 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4137615430852754} + - component: {fileID: 114577281956123938} + - component: {fileID: 114556860568291684} + - component: {fileID: 33641851672436378} + - component: {fileID: 23899599402834066} + m_Layer: 0 + m_Name: ChaseSourceWithOffsetThenFaceHead + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1297842464049450 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4678300638060350} + - component: {fileID: 33241649687522174} + - component: {fileID: 23017112438109294} + m_Layer: 0 + m_Name: Offset of -3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1555762991523294 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4064387390430804} + - component: {fileID: 114578645221470212} + - component: {fileID: 114894140878539200} + - component: {fileID: 23388841499621606} + - component: {fileID: 33588506142707064} + m_Layer: 0 + m_Name: LookAtHeadSolver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4064387390430804 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1555762991523294} + 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.001} + m_Children: [] + m_Father: {fileID: 4678300638060350} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4137615430852754 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1041976978773994} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.025, y: 0.025, z: 0.025} + m_Children: + - {fileID: 4678300638060350} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4678300638060350 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1297842464049450} + m_LocalRotation: {x: 0, y: 0, z: -1, w: 0} + m_LocalPosition: {x: -3, y: 0, z: -0.03} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4064387390430804} + m_Father: {fileID: 4137615430852754} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 180, y: 180, z: 0} +--- !u!23 &23017112438109294 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1297842464049450} + 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_Materials: + - {fileID: 2100000, guid: 00665e2a669d4b0fab1965843b4c914b, 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!23 &23388841499621606 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1555762991523294} + 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_Materials: + - {fileID: 2100000, guid: 3c55769e893c4f4c8c51b7fa69bee2b9, 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!23 &23899599402834066 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1041976978773994} + 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_Materials: + - {fileID: 2100000, guid: c4a1b7475a654dd0acaa0cfdfba2e20c, 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 &33241649687522174 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1297842464049450} + m_Mesh: {fileID: 4300000, guid: dc6c0266b7f350f40b24b8ddfae317b4, type: 3} +--- !u!33 &33588506142707064 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1555762991523294} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33641851672436378 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1041976978773994} + m_Mesh: {fileID: 4300000, guid: 841b5755ac02dbc439bd347f414de999, type: 3} +--- !u!114 &114556860568291684 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1041976978773994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114577281956123938} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 +--- !u!114 &114577281956123938 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1041976978773994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 +--- !u!114 &114578645221470212 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1555762991523294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 0 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 +--- !u!114 &114894140878539200 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1555762991523294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114578645221470212} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab.meta new file mode 100644 index 00000000000..d2b88ad26fa --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72dfc8e6a20d95041b3f652885a7ea9f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab new file mode 100644 index 00000000000..18879b3ecad --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab @@ -0,0 +1,125 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1946721682696148} + m_IsPrefabParent: 1 +--- !u!1 &1946721682696148 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4817510211244996} + - component: {fileID: 114709813557731528} + - component: {fileID: 33893993874790346} + - component: {fileID: 23881802533022504} + - component: {fileID: 114935902293540568} + m_Layer: 0 + m_Name: InBetweenSources + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4817510211244996 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1946721682696148} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.025, y: 0.025, z: 0.025} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23881802533022504 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1946721682696148} + 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_Materials: + - {fileID: 2100000, guid: c4a1b7475a654dd0acaa0cfdfba2e20c, 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 &33893993874790346 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1946721682696148} + m_Mesh: {fileID: 4300000, guid: 841b5755ac02dbc439bd347f414de999, type: 3} +--- !u!114 &114709813557731528 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1946721682696148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 +--- !u!114 &114935902293540568 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1946721682696148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de9b118fbc66f114cac64e9b05576a1b, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + partwayOffset: 0.5 + trackedObjectForSecondTransform: 1 + secondTransformOverride: {fileID: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab.meta new file mode 100644 index 00000000000..985755a6b0c --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab new file mode 100644 index 00000000000..3ccc3567f09 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab @@ -0,0 +1,4866 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1537659093898892} + m_IsPrefabParent: 1 +--- !u!1 &1104656696846412 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4916380402450456} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1145726283482928 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4342435378354722} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1156319513667296 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4898539984711342} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1160624051266082 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4258958419874150} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1171919684388332 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4719212773538510} + - component: {fileID: 114390035804951434} + - component: {fileID: 114360504785967414} + m_Layer: 0 + m_Name: SnakeHead + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1173532079499678 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4203243763399354} + - component: {fileID: 33536655716149498} + - component: {fileID: 136100729118043622} + - component: {fileID: 23473205122156852} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1178459475322372 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4133415228783004} + - component: {fileID: 33933722326979172} + - component: {fileID: 136249761873287858} + - component: {fileID: 23639437819866214} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1181073728290732 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4558240402017934} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1188168800204298 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4470211747698100} + - component: {fileID: 33752142110230730} + - component: {fileID: 136059678468286334} + - component: {fileID: 23085976447336518} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1190150453554930 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4121670469650174} + - component: {fileID: 33188635302017820} + - component: {fileID: 136868494121610320} + - component: {fileID: 23123907429325880} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1260824772608146 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4264220611167616} + - component: {fileID: 33285305197353836} + - component: {fileID: 136544756386600508} + - component: {fileID: 23196151661487598} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1271060407562264 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4353978069942568} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1288886531800880 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4047349385074226} + - component: {fileID: 33711521194380990} + - component: {fileID: 136203474748626374} + - component: {fileID: 23621104809922936} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1293980858892816 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4672676135359918} + - component: {fileID: 114802977075492880} + - component: {fileID: 114831910598433390} + m_Layer: 0 + m_Name: SnakePiece (20) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1298539237119756 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4313573028310134} + - component: {fileID: 33428904351392460} + - component: {fileID: 136518459701130456} + - component: {fileID: 23902647729979926} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1307769750183036 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4838369436807876} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1322270989534844 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4180945178794372} + - component: {fileID: 114528452368200674} + - component: {fileID: 114201054482223226} + m_Layer: 0 + m_Name: SnakePiece (14) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1335431540581656 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4113292622583742} + - component: {fileID: 114453212149398538} + - component: {fileID: 114743017698380238} + m_Layer: 0 + m_Name: SnakePiece (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1342384573151260 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4852067047663878} + - component: {fileID: 33205801797901726} + - component: {fileID: 136543146801268396} + - component: {fileID: 23001146809936520} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1360883322834500 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4111068035723752} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1364600139222010 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4102618498582994} + - component: {fileID: 33214882591029266} + - component: {fileID: 136190462431578438} + - component: {fileID: 23216396570895156} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1381498063874392 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4069800357527082} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1395924421901280 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4306829187839554} + - component: {fileID: 114492834070681342} + - component: {fileID: 114604330468239596} + m_Layer: 0 + m_Name: SnakePiece (16) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1408006721617988 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4625721591191024} + - component: {fileID: 33320874613957844} + - component: {fileID: 136226167360597018} + - component: {fileID: 23337542397068780} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1414800741882304 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4740674674704456} + - component: {fileID: 114919855469449968} + - component: {fileID: 114064114941653030} + m_Layer: 0 + m_Name: SnakePiece (17) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1429816342873814 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4223168473224492} + - component: {fileID: 114936381653534936} + - component: {fileID: 114726790890798954} + m_Layer: 0 + m_Name: SnakePiece (12) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1486573424259176 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4742138306858192} + - component: {fileID: 114535203513868254} + - component: {fileID: 114305931542313040} + m_Layer: 0 + m_Name: SnakePiece (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1486677436454996 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4283467299023566} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1520019312506174 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4251603451237924} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1537659093898892 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4739924145058372} + m_Layer: 0 + m_Name: Snake + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1575981756963088 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4578417716933416} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1612624020750050 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4233050509943732} + - component: {fileID: 33489436897144128} + - component: {fileID: 136685324606167088} + - component: {fileID: 23083232103898960} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1621016252644192 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4806617557993492} + - component: {fileID: 33732188903717444} + - component: {fileID: 136036874197906714} + - component: {fileID: 23813280019163444} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1632375535121440 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4140713928120628} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1659017562755370 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4728947691468408} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1662772027476440 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4710341522353602} + - component: {fileID: 33573440000564592} + - component: {fileID: 136778375857563742} + - component: {fileID: 23255440139175818} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1683456311400196 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4827096523253630} + - component: {fileID: 33172573971124092} + - component: {fileID: 136967406716784068} + - component: {fileID: 23904235587003490} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1683651673233848 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4498157154113050} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1699822779003782 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4299906721229242} + - component: {fileID: 114892725816305384} + - component: {fileID: 114999463940681146} + m_Layer: 0 + m_Name: SnakePiece (15) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1706610458368984 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4917119719687768} + - component: {fileID: 33407986865046948} + - component: {fileID: 136521989725840162} + - component: {fileID: 23338210706181256} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1730015203429534 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4322025787375346} + - component: {fileID: 114416443727872154} + - component: {fileID: 114300180824295488} + m_Layer: 0 + m_Name: SnakePiece (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1734277635479756 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4475236948240404} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1736742330482852 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4469508868098882} + - component: {fileID: 33128706031589926} + - component: {fileID: 136359013990371740} + - component: {fileID: 23464975801028430} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1739058094327258 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4431618215408844} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1743643989775410 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4444320502920110} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1757469024228050 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4185695180826104} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1759749777607564 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4808244867310922} + - component: {fileID: 33879659549721102} + - component: {fileID: 136359687743823404} + - component: {fileID: 23895696703756500} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1761773179040712 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4433731170516538} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1766029598539536 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4047663560525676} + - component: {fileID: 114475831971905602} + - component: {fileID: 114016962962148144} + m_Layer: 0 + m_Name: SnakePiece (10) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1782588866119804 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4327171221280566} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1793662558973332 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4324881598081378} + - component: {fileID: 114577296065692308} + - component: {fileID: 114132324726589930} + m_Layer: 0 + m_Name: SnakePiece (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1803689097280320 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4631956905764400} + - component: {fileID: 114784443225875358} + - component: {fileID: 114762079056890250} + m_Layer: 0 + m_Name: SnakePiece (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1816926552968770 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4995117078543574} + - component: {fileID: 114205176821015716} + - component: {fileID: 114248129699884224} + m_Layer: 0 + m_Name: SnakePiece (13) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1819220104035202 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4620955741722954} + - component: {fileID: 33740810540940868} + - component: {fileID: 136062921068834872} + - component: {fileID: 23820060925839048} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1820634623288778 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4714996448395508} + - component: {fileID: 33122933250028706} + - component: {fileID: 136018744819662638} + - component: {fileID: 23508975503247634} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1827740508882372 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4209776917060680} + - component: {fileID: 114365353813304710} + - component: {fileID: 114416462971053782} + m_Layer: 0 + m_Name: SnakePiece (9) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1833204340173810 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4607515790192126} + - component: {fileID: 33766583497328930} + - component: {fileID: 136821469830986892} + - component: {fileID: 23355730492138752} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1839045883416284 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4070270856902646} + - component: {fileID: 114725866772511870} + - component: {fileID: 114704109522201332} + m_Layer: 0 + m_Name: SnakePiece (22) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1849850335931856 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4751210799837254} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1855965114788464 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4044101586525420} + - component: {fileID: 114277052358527924} + - component: {fileID: 114628465954635856} + m_Layer: 0 + m_Name: SnakePiece (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1866544598411606 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4114503227073722} + - component: {fileID: 114388365418611060} + - component: {fileID: 114769301346886932} + m_Layer: 0 + m_Name: SnakePiece (19) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1872756829806124 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4707067087832446} + - component: {fileID: 114332239823627908} + - component: {fileID: 114046080384103152} + m_Layer: 0 + m_Name: SnakePiece (11) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1879757713335494 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4231508135785696} + - component: {fileID: 114152252500292652} + - component: {fileID: 114119291258026634} + m_Layer: 0 + m_Name: SnakePiece (23) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1886702042699658 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4826324118930500} + - component: {fileID: 33339700262373588} + - component: {fileID: 136082365783718302} + - component: {fileID: 23567491823344804} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1889344944042032 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4485279312787812} + - component: {fileID: 33351990369594052} + - component: {fileID: 136393476194318244} + - component: {fileID: 23020254822218940} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1895530769338554 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4257988327907464} + - component: {fileID: 114413585074026818} + - component: {fileID: 114692419140163664} + m_Layer: 0 + m_Name: SnakePiece + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1901124619133266 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4572114659017702} + - component: {fileID: 114460081049169556} + - component: {fileID: 114370076487579544} + m_Layer: 0 + m_Name: SnakePiece (18) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1912173747931542 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4864709762178270} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1918911731558666 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4472981074819286} + - component: {fileID: 33482667460555952} + - component: {fileID: 136386626373694428} + - component: {fileID: 23699763157898156} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1923713037734118 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4269470116167434} + - component: {fileID: 114277565321777378} + - component: {fileID: 114358157115147804} + m_Layer: 0 + m_Name: SnakePiece (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1927141342826216 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4639143926937786} + - component: {fileID: 114108703684830358} + - component: {fileID: 114281982501778886} + m_Layer: 0 + m_Name: SnakePiece (21) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1927485031178090 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4945512544929100} + - component: {fileID: 33417016061380204} + - component: {fileID: 136384034673840242} + - component: {fileID: 23984622098057542} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1940954806944738 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4578377818116268} + - component: {fileID: 114136454512939010} + - component: {fileID: 114746239015755110} + m_Layer: 0 + m_Name: SnakePiece (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1971781190171496 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4681176189152816} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1989385733649664 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4147729547069426} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1997145044369130 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4703414210442372} + - component: {fileID: 33432760780153190} + - component: {fileID: 136174040874039880} + - component: {fileID: 23377853222406374} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4044101586525420 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1855965114788464} + 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: 4945512544929100} + - {fileID: 4864709762178270} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4047349385074226 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1288886531800880} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4113292622583742} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4047663560525676 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1766029598539536} + 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: 4121670469650174} + - {fileID: 4327171221280566} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4069800357527082 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1381498063874392} + 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: 4719212773538510} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4070270856902646 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1839045883416284} + 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: 4917119719687768} + - {fileID: 4258958419874150} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4102618498582994 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1364600139222010} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4631956905764400} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4111068035723752 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1360883322834500} + 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: 4995117078543574} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4113292622583742 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1335431540581656} + 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: 4047349385074226} + - {fileID: 4916380402450456} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4114503227073722 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1866544598411606} + 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: 4203243763399354} + - {fileID: 4147729547069426} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4121670469650174 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1190150453554930} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4047663560525676} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4133415228783004 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1178459475322372} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4324881598081378} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4140713928120628 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1632375535121440} + 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: 4306829187839554} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4147729547069426 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1989385733649664} + 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: 4114503227073722} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4180945178794372 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1322270989534844} + 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: 4714996448395508} + - {fileID: 4283467299023566} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4185695180826104 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1757469024228050} + 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: 4209776917060680} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4203243763399354 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1173532079499678} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4114503227073722} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4209776917060680 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1827740508882372} + 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: 4826324118930500} + - {fileID: 4185695180826104} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4223168473224492 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1429816342873814} + 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: 4806617557993492} + - {fileID: 4431618215408844} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4231508135785696 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1879757713335494} + 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: 4607515790192126} + - {fileID: 4475236948240404} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4233050509943732 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1612624020750050} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4306829187839554} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4251603451237924 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1520019312506174} + 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: 4742138306858192} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4257988327907464 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1895530769338554} + 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: 4852067047663878} + - {fileID: 4898539984711342} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4258958419874150 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1160624051266082} + 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: 4070270856902646} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4264220611167616 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1260824772608146} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4740674674704456} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4269470116167434 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1923713037734118} + 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: 4808244867310922} + - {fileID: 4558240402017934} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4283467299023566 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1486677436454996} + 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: 4180945178794372} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4299906721229242 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1699822779003782} + 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: 4625721591191024} + - {fileID: 4342435378354722} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4306829187839554 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1395924421901280} + 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: 4233050509943732} + - {fileID: 4140713928120628} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4313573028310134 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1298539237119756} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4639143926937786} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4322025787375346 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1730015203429534} + 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: 4710341522353602} + - {fileID: 4681176189152816} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4324881598081378 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1793662558973332} + 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: 4133415228783004} + - {fileID: 4578417716933416} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4327171221280566 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1782588866119804} + 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: 4047663560525676} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4342435378354722 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1145726283482928} + 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: 4299906721229242} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4353978069942568 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1271060407562264} + 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: 4639143926937786} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4431618215408844 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1739058094327258} + 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: 4223168473224492} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4433731170516538 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1761773179040712} + 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: 4707067087832446} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4444320502920110 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1743643989775410} + 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: 4740674674704456} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4469508868098882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1736742330482852} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4707067087832446} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4470211747698100 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1188168800204298} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4578377818116268} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4472981074819286 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1918911731558666} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4572114659017702} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4475236948240404 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1734277635479756} + 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: 4231508135785696} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4485279312787812 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1889344944042032} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4995117078543574} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4498157154113050 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1683651673233848} + 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: 4672676135359918} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4558240402017934 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1181073728290732} + 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: 4269470116167434} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4572114659017702 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1901124619133266} + 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: 4472981074819286} + - {fileID: 4838369436807876} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4578377818116268 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1940954806944738} + 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: 4470211747698100} + - {fileID: 4751210799837254} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4578417716933416 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575981756963088} + 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: 4324881598081378} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4607515790192126 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1833204340173810} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4231508135785696} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4620955741722954 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1819220104035202} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4672676135359918} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4625721591191024 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1408006721617988} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4299906721229242} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4631956905764400 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1803689097280320} + 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: 4102618498582994} + - {fileID: 4728947691468408} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4639143926937786 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1927141342826216} + 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: 4313573028310134} + - {fileID: 4353978069942568} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4672676135359918 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1293980858892816} + 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: 4620955741722954} + - {fileID: 4498157154113050} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4681176189152816 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1971781190171496} + 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: 4322025787375346} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4703414210442372 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1997145044369130} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4742138306858192} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4707067087832446 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1872756829806124} + 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: 4469508868098882} + - {fileID: 4433731170516538} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4710341522353602 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1662772027476440} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4322025787375346} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4714996448395508 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1820634623288778} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4180945178794372} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4719212773538510 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1171919684388332} + 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: 4827096523253630} + - {fileID: 4069800357527082} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4728947691468408 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1659017562755370} + 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: 4631956905764400} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4739924145058372 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1537659093898892} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.435753, y: 0.8596, z: -1.1347291} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4719212773538510} + - {fileID: 4257988327907464} + - {fileID: 4324881598081378} + - {fileID: 4578377818116268} + - {fileID: 4044101586525420} + - {fileID: 4113292622583742} + - {fileID: 4269470116167434} + - {fileID: 4742138306858192} + - {fileID: 4322025787375346} + - {fileID: 4631956905764400} + - {fileID: 4209776917060680} + - {fileID: 4047663560525676} + - {fileID: 4707067087832446} + - {fileID: 4223168473224492} + - {fileID: 4995117078543574} + - {fileID: 4180945178794372} + - {fileID: 4299906721229242} + - {fileID: 4306829187839554} + - {fileID: 4740674674704456} + - {fileID: 4572114659017702} + - {fileID: 4114503227073722} + - {fileID: 4672676135359918} + - {fileID: 4639143926937786} + - {fileID: 4070270856902646} + - {fileID: 4231508135785696} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4740674674704456 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1414800741882304} + 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: 4264220611167616} + - {fileID: 4444320502920110} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4742138306858192 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1486573424259176} + 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: 4703414210442372} + - {fileID: 4251603451237924} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4751210799837254 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1849850335931856} + 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: 4578377818116268} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4806617557993492 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1621016252644192} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4223168473224492} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4808244867310922 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1759749777607564} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4269470116167434} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4826324118930500 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1886702042699658} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4209776917060680} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4827096523253630 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1683456311400196} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4719212773538510} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4838369436807876 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1307769750183036} + 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: 4572114659017702} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4852067047663878 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1342384573151260} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4257988327907464} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4864709762178270 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1912173747931542} + 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: 4044101586525420} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4898539984711342 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1156319513667296} + 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: 4257988327907464} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4916380402450456 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1104656696846412} + 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: 4113292622583742} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4917119719687768 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1706610458368984} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4070270856902646} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4945512544929100 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1927485031178090} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4044101586525420} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4995117078543574 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1816926552968770} + 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: 4485279312787812} + - {fileID: 4111068035723752} + m_Father: {fileID: 4739924145058372} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23001146809936520 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1342384573151260} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23020254822218940 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1889344944042032} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23083232103898960 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1612624020750050} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23085976447336518 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1188168800204298} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23123907429325880 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1190150453554930} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23196151661487598 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1260824772608146} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23216396570895156 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1364600139222010} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23255440139175818 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1662772027476440} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23337542397068780 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1408006721617988} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23338210706181256 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1706610458368984} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23355730492138752 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1833204340173810} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23377853222406374 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1997145044369130} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23464975801028430 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1736742330482852} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23473205122156852 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1173532079499678} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23508975503247634 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1820634623288778} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23567491823344804 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1886702042699658} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23621104809922936 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1288886531800880} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23639437819866214 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1178459475322372} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23699763157898156 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1918911731558666} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23813280019163444 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1621016252644192} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23820060925839048 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1819220104035202} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23895696703756500 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1759749777607564} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23902647729979926 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1298539237119756} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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!23 &23904235587003490 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1683456311400196} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: d7d199e3713db844294fce3e2db4705a, 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: 1 + 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!23 &23984622098057542 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1927485031178090} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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 &33122933250028706 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1820634623288778} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33128706031589926 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1736742330482852} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33172573971124092 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1683456311400196} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33188635302017820 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1190150453554930} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33205801797901726 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1342384573151260} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33214882591029266 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1364600139222010} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33285305197353836 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1260824772608146} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33320874613957844 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1408006721617988} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33339700262373588 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1886702042699658} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33351990369594052 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1889344944042032} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33407986865046948 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1706610458368984} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33417016061380204 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1927485031178090} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33428904351392460 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1298539237119756} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33432760780153190 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1997145044369130} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33482667460555952 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1918911731558666} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33489436897144128 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1612624020750050} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33536655716149498 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1173532079499678} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33573440000564592 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1662772027476440} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33711521194380990 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1288886531800880} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33732188903717444 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1621016252644192} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33740810540940868 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1819220104035202} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33752142110230730 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1188168800204298} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33766583497328930 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1833204340173810} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33879659549721102 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1759749777607564} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33933722326979172 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1178459475322372} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &114016962962148144 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1766029598539536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4185695180826104} +--- !u!114 &114046080384103152 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1872756829806124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4327171221280566} +--- !u!114 &114064114941653030 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1414800741882304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4140713928120628} +--- !u!114 &114108703684830358 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1927141342826216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114119291258026634 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1879757713335494} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4258958419874150} +--- !u!114 &114132324726589930 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1793662558973332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4898539984711342} +--- !u!114 &114136454512939010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1940954806944738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114152252500292652 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1879757713335494} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114201054482223226 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1322270989534844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4111068035723752} +--- !u!114 &114205176821015716 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1816926552968770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114248129699884224 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1816926552968770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4431618215408844} +--- !u!114 &114277052358527924 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1855965114788464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114277565321777378 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1923713037734118} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114281982501778886 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1927141342826216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4498157154113050} +--- !u!114 &114300180824295488 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1730015203429534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4251603451237924} +--- !u!114 &114305931542313040 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1486573424259176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4558240402017934} +--- !u!114 &114332239823627908 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1872756829806124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114358157115147804 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1923713037734118} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4916380402450456} +--- !u!114 &114360504785967414 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1171919684388332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 2 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} +--- !u!114 &114365353813304710 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1827740508882372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114370076487579544 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1901124619133266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4444320502920110} +--- !u!114 &114388365418611060 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1866544598411606} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114390035804951434 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1171919684388332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: 0, y: 0, z: 0} + GoalRotation: {x: 0, y: 0, z: 0, w: 0} + GoalScale: {x: 0, y: 0, z: 0} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 15 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114413585074026818 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1895530769338554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114416443727872154 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1730015203429534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114416462971053782 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1827740508882372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4728947691468408} +--- !u!114 &114453212149398538 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1335431540581656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114460081049169556 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1901124619133266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114475831971905602 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1766029598539536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114492834070681342 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1395924421901280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114528452368200674 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1322270989534844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114535203513868254 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1486573424259176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114577296065692308 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1793662558973332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114604330468239596 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1395924421901280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4342435378354722} +--- !u!114 &114628465954635856 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1855965114788464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4751210799837254} +--- !u!114 &114692419140163664 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1895530769338554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4069800357527082} +--- !u!114 &114704109522201332 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1839045883416284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4353978069942568} +--- !u!114 &114725866772511870 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1839045883416284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114726790890798954 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1429816342873814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4433731170516538} +--- !u!114 &114743017698380238 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1335431540581656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4864709762178270} +--- !u!114 &114746239015755110 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1940954806944738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 2 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4578417716933416} +--- !u!114 &114762079056890250 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1803689097280320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4681176189152816} +--- !u!114 &114769301346886932 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1866544598411606} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4838369436807876} +--- !u!114 &114784443225875358 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1803689097280320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114802977075492880 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1293980858892816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114831910598433390 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1293980858892816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4147729547069426} +--- !u!114 &114892725816305384 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1699822779003782} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114919855469449968 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1414800741882304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114936381653534936 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1429816342873814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114999463940681146 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1699822779003782} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 4283467299023566} +--- !u!136 &136018744819662638 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1820634623288778} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136036874197906714 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1621016252644192} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136059678468286334 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1188168800204298} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136062921068834872 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1819220104035202} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136082365783718302 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1886702042699658} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136100729118043622 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1173532079499678} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136174040874039880 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1997145044369130} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136190462431578438 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1364600139222010} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136203474748626374 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1288886531800880} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136226167360597018 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1408006721617988} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136249761873287858 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1178459475322372} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136359013990371740 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1736742330482852} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136359687743823404 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1759749777607564} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136384034673840242 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1927485031178090} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136386626373694428 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1918911731558666} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136393476194318244 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1889344944042032} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136518459701130456 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1298539237119756} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136521989725840162 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1706610458368984} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136543146801268396 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1342384573151260} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136544756386600508 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1260824772608146} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136685324606167088 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1612624020750050} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136778375857563742 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1662772027476440} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136821469830986892 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1833204340173810} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136868494121610320 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1190150453554930} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!136 &136967406716784068 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1683456311400196} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab.meta new file mode 100644 index 00000000000..17a1e2da2e9 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3788010008fc88047aa60e19868f58f9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab new file mode 100644 index 00000000000..453ee474908 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab @@ -0,0 +1,205 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1938354382771156} + m_IsPrefabParent: 1 +--- !u!1 &1386786035130178 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4553455934564640} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1915737012672190 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4411776247622956} + - component: {fileID: 33551780834094618} + - component: {fileID: 136348911340782948} + - component: {fileID: 23461779524546866} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1938354382771156 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4262708465451058} + - component: {fileID: 114226070726471496} + - component: {fileID: 114901983845158496} + m_Layer: 0 + m_Name: SnakeHead + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4262708465451058 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1938354382771156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.435753, y: 0.8596, z: -1.1347291} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4411776247622956} + - {fileID: 4553455934564640} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4411776247622956 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1915737012672190} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4262708465451058} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4553455934564640 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1386786035130178} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.13} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4262708465451058} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23461779524546866 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1915737012672190} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + 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 &33551780834094618 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1915737012672190} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &114226070726471496 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1938354382771156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.1 + RotateLerpTime: 0.1 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: 0, y: 0, z: 0} + GoalRotation: {x: 0, y: 0, z: 0, w: 0} + GoalScale: {x: 0, y: 0, z: 0} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 15 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114901983845158496 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1938354382771156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} +--- !u!136 &136348911340782948 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1915737012672190} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab.meta new file mode 100644 index 00000000000..de7d67939ec --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f3ce962babac664caa639781a05ad79 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab new file mode 100644 index 00000000000..f0791c93262 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab @@ -0,0 +1,205 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1654234197538378} + m_IsPrefabParent: 1 +--- !u!1 &1037742650345622 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4136507798298578} + m_Layer: 0 + m_Name: Attach Point + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1606982635225214 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4044856956087932} + - component: {fileID: 33826186131275604} + - component: {fileID: 136882273448677838} + - component: {fileID: 23144018560283282} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1654234197538378 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4247903131158174} + - component: {fileID: 114104664585887558} + - component: {fileID: 114459366717706634} + m_Layer: 0 + m_Name: SnakePiece + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4044856956087932 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1606982635225214} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: -0.0687} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4247903131158174} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!4 &4136507798298578 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1037742650345622} + 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: 4247903131158174} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4247903131158174 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1654234197538378} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.435753, y: 0.8596, z: -1.1347291} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4044856956087932} + - {fileID: 4136507798298578} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23144018560283282 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1606982635225214} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 + 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 &33826186131275604 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1606982635225214} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &114104664585887558 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1654234197538378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateLinkedTransform: 0 + MoveLerpTime: 0.01 + RotateLerpTime: 0.01 + ScaleLerpTime: 0 + MaintainScale: 1 + GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} + GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} + GoalScale: {x: 1, y: 1, z: 1} + Smoothing: 1 + Lifetime: 0 + ReferenceDirection: 1 + MinDistance: 0.1 + MaxDistance: 0.1 + MinViewDegrees: 0 + MaxViewDegrees: 30 + AspectV: 1 + IgnoreAngleClamp: 0 + IgnoreDistanceClamp: 0 + OrientToRefDir: 0 +--- !u!114 &114459366717706634 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1654234197538378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + element: 6 + handedness: 1 + trackedObjectToReference: 1 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} +--- !u!136 &136882273448677838 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1606982635225214} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab.meta new file mode 100644 index 00000000000..e5368790ec0 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e5c44cfea5c430649adac642d7edf012 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab new file mode 100644 index 00000000000..480a1a86e5e --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab @@ -0,0 +1,209 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1687025458477342} + m_IsPrefabParent: 1 +--- !u!1 &1687025458477342 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4348569316050982} + - component: {fileID: 33654643538595078} + - component: {fileID: 135082391517649018} + - component: {fileID: 23207221420031080} + - component: {fileID: 114459743357777030} + m_Layer: 0 + m_Name: SolverSwappingVolume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1859447626459620 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224604559336910218} + - component: {fileID: 222201781150831152} + - component: {fileID: 114140823018708156} + - component: {fileID: 223033226602904364} + m_Layer: 5 + m_Name: TextPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4348569316050982 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1687025458477342} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_Children: + - {fileID: 224604559336910218} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23207221420031080 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1687025458477342} + 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_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + 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 &33654643538595078 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1687025458477342} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &114140823018708156 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1859447626459620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9117647, g: 0.9117647, b: 0.9117647, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 100 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 144 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Label +--- !u!114 &114459743357777030 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1687025458477342} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: edea428b5e02f9144b45b9fbd5ba5278, type: 3} + m_Name: + m_EditorClassIdentifier: + hideThisObject: {fileID: 0} + spawnThisPrefab: {fileID: 0} + updateSolverTargetToClickSource: 1 +--- !u!135 &135082391517649018 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1687025458477342} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!222 &222201781150831152 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1859447626459620} +--- !u!223 &223033226602904364 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1859447626459620} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &224604559336910218 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1859447626459620} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} + m_Children: [] + m_Father: {fileID: 4348569316050982} + 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.842} + m_SizeDelta: {x: 800, y: 300} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab.meta new file mode 100644 index 00000000000..8037a279e9e --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20761d7153c2c724a8739c1ebac24bea +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab new file mode 100644 index 00000000000..5b5e74c2c80 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab @@ -0,0 +1,190 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1179292221703190} + m_IsPrefabParent: 1 +--- !u!1 &1179292221703190 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4308712392116548} + - component: {fileID: 33929012368511022} + - component: {fileID: 23885476246180956} + - component: {fileID: 114842819766563628} + - component: {fileID: 114396026402588154} + m_Layer: 2 + m_Name: SurfaceMagnetism + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1351302580768088 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4322429649936706} + - component: {fileID: 33989687625900974} + - component: {fileID: 65977897168068534} + m_Layer: 2 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4308712392116548 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1179292221703190} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.0375, y: 0.2, z: 0.2} + m_Children: + - {fileID: 4322429649936706} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4322429649936706 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1351302580768088} + 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: 4308712392116548} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23885476246180956 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1179292221703190} + 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_Materials: + - {fileID: 2100000, guid: 71d573ea4cb045cdadc98e56044f6d2c, 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 &33929012368511022 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1179292221703190} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33989687625900974 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1351302580768088} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &65977897168068534 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1351302580768088} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &114396026402588154 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1179292221703190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3e9078183f524b1baa8197daf640b60f, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + magneticSurfaces: + - serializedVersion: 2 + m_Bits: 4294967291 + maxDistance: 3 + closeDistance: 0.5 + surfaceNormalOffset: 0.5 + surfaceRayOffset: 0 + raycastMode: 0 + boxRaysPerEdge: 3 + orthographicBoxCast: 0 + maximumNormalVariance: 0.5 + sphereSize: 1 + volumeCastSizeOverride: 0 + useLinkedAltScaleOverride: 0 + raycastDirection: 0 + orientationMode: 2 + orientationBlend: 0.65 + debugEnabled: 0 +--- !u!114 &114842819766563628 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1179292221703190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab.meta new file mode 100644 index 00000000000..b37687fa6b9 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa50dc498bdec8646b565cb0fcb35316 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab new file mode 100644 index 00000000000..bcbcec42b9e --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab @@ -0,0 +1,168 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1832389131935346} + m_IsPrefabParent: 1 +--- !u!1 &1832389131935346 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4031760943160574} + - component: {fileID: 33945530532809340} + - component: {fileID: 23718145193287392} + - component: {fileID: 114855406103909200} + - component: {fileID: 114383769280500332} + - component: {fileID: 114755908734741902} + m_Layer: 2 + m_Name: SurfaceMagnetismAndRadialView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4031760943160574 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1832389131935346} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.039461266, y: 0.2, z: 0.2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!23 &23718145193287392 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1832389131935346} + 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_Materials: + - {fileID: 2100000, guid: 71d573ea4cb045cdadc98e56044f6d2c, 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 &33945530532809340 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1832389131935346} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &114383769280500332 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1832389131935346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 +--- !u!114 &114755908734741902 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1832389131935346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3e9078183f524b1baa8197daf640b60f, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + magneticSurfaces: + - serializedVersion: 2 + m_Bits: 4294967291 + maxDistance: 3 + closeDistance: 0.5 + surfaceNormalOffset: 0.5 + surfaceRayOffset: 0 + raycastMode: 0 + boxRaysPerEdge: 3 + orthographicBoxCast: 0 + maximumNormalVariance: 0.5 + sphereSize: 1 + volumeCastSizeOverride: 0 + useLinkedAltScaleOverride: 0 + raycastDirection: 0 + orientationMode: 3 + orientationBlend: 0.65 + debugEnabled: 0 +--- !u!114 &114855406103909200 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1832389131935346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab.meta new file mode 100644 index 00000000000..0e6bea022fc --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 75c7d301572f36d4aaf8d864a8f869f2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes.meta new file mode 100644 index 00000000000..07d858f7510 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6a754a1a9434984f8d584da38fe9f6e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity new file mode 100644 index 00000000000..0b837b34c36 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity @@ -0,0 +1,2678 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: 064cf2adabde05941a372e975e563706, type: 2} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &5415927 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.x + value: 1.906 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.y + value: 1.09 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.z + value: 0.494 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_Name + value: SurfaceMagnetismSwappingVolume + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: Solver + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 0} + propertyPath: m_Text + value: Surface Magnetism + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: HideThis + value: + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: SpawnThis + value: + objectReference: {fileID: 1179292221703190, guid: aa50dc498bdec8646b565cb0fcb35316, + type: 2} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: UpdateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThis + value: + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThis + value: + objectReference: {fileID: 1179292221703190, guid: aa50dc498bdec8646b565cb0fcb35316, + type: 2} + - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_Text + value: Surface Magnetism + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThisPrefab + value: + objectReference: {fileID: 1179292221703190, guid: aa50dc498bdec8646b565cb0fcb35316, + type: 2} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThisObject + value: + objectReference: {fileID: 1954249921} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &20172339 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 726208197} + m_Modifications: + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114474594170136286, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114785721768203206, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalScale.x + value: 0.4 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalScale.y + value: 0.4 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalScale.z + value: 0.4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &74001233 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 74001234} + m_Layer: 0 + m_Name: Body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &74001234 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 74001233} + 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: 624307635} + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &126281608 stripped +Transform: + m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + m_PrefabInternal: {fileID: 545577275} +--- !u!1 &142143629 stripped +GameObject: + m_PrefabParentObject: {fileID: 1644659546057122, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + m_PrefabInternal: {fileID: 20172339} +--- !u!1 &159833615 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 159833616} + - component: {fileID: 159833619} + - component: {fileID: 159833618} + - component: {fileID: 159833617} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &159833616 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 159833615} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} + m_LocalPosition: {x: 5.87, y: 1.16, z: 5.01} + m_LocalScale: {x: 2.5520132, y: 2.5520134, z: 2.5520134} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!23 &159833617 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 159833615} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!135 &159833618 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 159833615} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &159833619 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 159833615} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &181228729 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 181228731} + - component: {fileID: 181228730} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &181228730 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 181228729} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &181228731 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 181228729} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &414803422 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 414803426} + - component: {fileID: 414803425} + - component: {fileID: 414803424} + - component: {fileID: 414803423} + m_Layer: 0 + m_Name: Wall (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &414803423 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 414803422} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &414803424 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 414803422} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &414803425 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 414803422} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &414803426 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 414803422} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 6.2456203, y: -1.8686571, z: -0.6711333} + m_LocalScale: {x: 0.9741913, y: 1.3537316, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1 &456805605 stripped +GameObject: + m_PrefabParentObject: {fileID: 1946721682696148, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, + type: 2} + m_PrefabInternal: {fileID: 942644423} +--- !u!1 &499646159 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 499646163} + - component: {fileID: 499646162} + - component: {fileID: 499646161} + - component: {fileID: 499646160} + m_Layer: 0 + m_Name: Wall (9) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &499646160 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 499646159} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &499646161 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 499646159} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &499646162 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 499646159} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &499646163 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 499646159} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 12.978621, y: 2.6913428, z: -0.6691333} + m_LocalScale: {x: 0.9741913, y: 1.3537316, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1 &515884536 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 515884540} + - component: {fileID: 515884539} + - component: {fileID: 515884538} + - component: {fileID: 515884537} + m_Layer: 0 + m_Name: Wall (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &515884537 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 515884536} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &515884538 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 515884536} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &515884539 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 515884536} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &515884540 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 515884536} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 10.08562, y: 0.43134278, z: -0.6701333} + m_LocalScale: {x: 0.9741913, y: 1.3537316, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1001 &545577275 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.x + value: 1.906 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.y + value: 1.09 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.z + value: -0.65700006 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_Name + value: SurfaceMagnetismAndRadialViewSwappingVolume + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: Solver + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 0} + propertyPath: m_Text + value: 'Surface Magnetism + + + Radial View' + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: HideThis + value: + objectReference: {fileID: 831262266} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: SpawnThis + value: + objectReference: {fileID: 1832389131935346, guid: 75c7d301572f36d4aaf8d864a8f869f2, + type: 2} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: UpdateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThis + value: + objectReference: {fileID: 831262266} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThis + value: + objectReference: {fileID: 1832389131935346, guid: 75c7d301572f36d4aaf8d864a8f869f2, + type: 2} + - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_Text + value: 'Surface Magnetism + + + Radial View' + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThisObject + value: + objectReference: {fileID: 831262266} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThisPrefab + value: + objectReference: {fileID: 1832389131935346, guid: 75c7d301572f36d4aaf8d864a8f869f2, + type: 2} + - target: {fileID: 224604559336910218, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &552259680 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 552259684} + - component: {fileID: 552259683} + - component: {fileID: 552259682} + - component: {fileID: 552259681} + m_Layer: 0 + m_Name: Wall (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &552259681 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 552259680} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &552259682 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 552259680} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &552259683 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 552259680} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &552259684 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 552259680} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 11.04562, y: 1.268023, z: -0.6707333} + m_LocalScale: {x: 0.9741913, y: 1.3537316, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1 &624307631 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 624307635} + - component: {fileID: 624307634} + - component: {fileID: 624307633} + - component: {fileID: 624307632} + - component: {fileID: 624307637} + - component: {fileID: 624307636} + m_Layer: 0 + m_Name: Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &624307632 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 624307631} + m_Enabled: 1 +--- !u!124 &624307633 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 624307631} + m_Enabled: 1 +--- !u!20 &624307634 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 624307631} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &624307635 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 624307631} + 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: 2087691055} + m_Father: {fileID: 74001234} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &624307636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 624307631} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf98dd1206224111a38765365e98e207, type: 3} + m_Name: + m_EditorClassIdentifier: + cursorPrefab: {fileID: 1000012072213228, guid: 5b3e2856904e43c680f84f326861032a, + type: 2} + maxGazeCollisionDistance: 10 + raycastLayerMasks: + - serializedVersion: 2 + m_Bits: 4294967291 + stabilizer: + storedStabilitySamples: 60 + gazeTransform: {fileID: 0} + minHeadVelocityThreshold: 0.5 + maxHeadVelocityThreshold: 2 + debugDrawRay: 0 +--- !u!114 &624307637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 624307631} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6d8ddcf767354d5f90704bb40ddec60a, type: 3} + m_Name: + m_EditorClassIdentifier: + pointingExtent: 10 + uiRaycastCamera: {fileID: 2087691058} + pointingRaycastLayerMasks: + - serializedVersion: 2 + m_Bits: 4294967291 + debugDrawPointingRays: 0 + debugDrawPointingRayColors: [] +--- !u!1 &651759642 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 651759646} + - component: {fileID: 651759645} + - component: {fileID: 651759643} + - component: {fileID: 651759644} + m_Layer: 0 + m_Name: Wall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &651759643 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 651759642} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!64 &651759644 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 651759642} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 14 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &651759645 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 651759642} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &651759646 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 651759642} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 7.01562, y: 0.47134274, z: 2.4698668} + m_LocalScale: {x: 1.6742429, y: 5.4842668, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!1001 &683032822 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.x + value: -1.445 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.y + value: 1.09 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.z + value: 1.54 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_Name + value: ChaseSourceSwappingVolume + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_Text + value: Chase Hand + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: Solver + value: + objectReference: {fileID: 1250903681} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: HideThis + value: + objectReference: {fileID: 1250903681} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: SpawnThis + value: + objectReference: {fileID: 1307245229378308, guid: de99acdc648a6d945ba138103ed87328, + type: 2} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: UpdateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThis + value: + objectReference: {fileID: 1250903681} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThis + value: + objectReference: {fileID: 1307245229378308, guid: de99acdc648a6d945ba138103ed87328, + type: 2} + - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_Text + value: Chase Source + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThisObject + value: + objectReference: {fileID: 1250903681} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThisPrefab + value: + objectReference: {fileID: 1307245229378308, guid: de99acdc648a6d945ba138103ed87328, + type: 2} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &684894276 stripped +Transform: + m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + m_PrefabInternal: {fileID: 1476859234} +--- !u!4 &726208197 stripped +Transform: + m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + m_PrefabInternal: {fileID: 1290217486} +--- !u!1 &831262266 stripped +GameObject: + m_PrefabParentObject: {fileID: 1832389131935346, guid: 75c7d301572f36d4aaf8d864a8f869f2, + type: 2} + m_PrefabInternal: {fileID: 869483337} +--- !u!1001 &869483337 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 126281608} + m_Modifications: + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalScale.x + value: 0.15784508 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalScale.y + value: 0.8 + objectReference: {fileID: 0} + - target: {fileID: 4031760943160574, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + propertyPath: m_LocalScale.z + value: 0.8 + objectReference: {fileID: 0} + - target: {fileID: 114855406103909200, guid: 75c7d301572f36d4aaf8d864a8f869f2, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114383769280500332, guid: 75c7d301572f36d4aaf8d864a8f869f2, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114755908734741902, guid: 75c7d301572f36d4aaf8d864a8f869f2, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 75c7d301572f36d4aaf8d864a8f869f2, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &942644423 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1262663726} + m_Modifications: + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114935902293540568, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114709813557731528, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalScale.x + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalScale.y + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 4817510211244996, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + propertyPath: m_LocalScale.z + value: 0.1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1009541478 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1009541482} + - component: {fileID: 1009541481} + - component: {fileID: 1009541480} + - component: {fileID: 1009541479} + m_Layer: 0 + m_Name: Wall (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1009541479 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1009541478} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &1009541480 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1009541478} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1009541481 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1009541478} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1009541482 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1009541478} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 9.13862, y: -0.12765723, z: -0.6701333} + m_LocalScale: {x: 0.9741913, y: 1.3537316, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1 &1228140078 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1228140082} + - component: {fileID: 1228140081} + - component: {fileID: 1228140080} + - component: {fileID: 1228140079} + m_Layer: 0 + m_Name: Wall (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1228140079 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1228140078} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &1228140080 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1228140078} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1228140081 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1228140078} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1228140082 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1228140078} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 7.2056203, y: -1.1118171, z: -0.67173326} + m_LocalScale: {x: 0.9741913, y: 1.3537316, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1 &1250903681 stripped +GameObject: + m_PrefabParentObject: {fileID: 1307245229378308, guid: de99acdc648a6d945ba138103ed87328, + type: 2} + m_PrefabInternal: {fileID: 1866611480} +--- !u!4 &1262663726 stripped +Transform: + m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + m_PrefabInternal: {fileID: 1749948741} +--- !u!1001 &1290217486 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.x + value: 1.906 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.y + value: 1.09 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.z + value: 0.987 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_Name + value: BodyLockedSwappingVolume + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: Solver + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 0} + propertyPath: m_Text + value: Body Locked + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: HideThis + value: + objectReference: {fileID: 142143629} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: SpawnThis + value: + objectReference: {fileID: 1644659546057122, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: UpdateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThis + value: + objectReference: {fileID: 142143629} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThis + value: + objectReference: {fileID: 1644659546057122, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_Text + value: Body Locked + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThisPrefab + value: + objectReference: {fileID: 1644659546057122, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThisObject + value: + objectReference: {fileID: 142143629} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: updateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1374872478 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2102116491} + m_Modifications: + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114911825043747796, guid: 118ca9eb859ed4a42beb80e64c3380ab, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114318995609163506, guid: 118ca9eb859ed4a42beb80e64c3380ab, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalScale.x + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalScale.y + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 4526610178519342, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + propertyPath: m_LocalScale.z + value: 0.1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1374872479 stripped +GameObject: + m_PrefabParentObject: {fileID: 1108371264373750, guid: 118ca9eb859ed4a42beb80e64c3380ab, + type: 2} + m_PrefabInternal: {fileID: 1374872478} +--- !u!1001 &1445928901 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1835088801} + m_Modifications: + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114842819766563628, guid: aa50dc498bdec8646b565cb0fcb35316, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114396026402588154, guid: aa50dc498bdec8646b565cb0fcb35316, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalScale.x + value: 0.15 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalScale.y + value: 0.8 + objectReference: {fileID: 0} + - target: {fileID: 4308712392116548, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + propertyPath: m_LocalScale.z + value: 0.8 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: aa50dc498bdec8646b565cb0fcb35316, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1461201859 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.x + value: -0.947 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.y + value: 1.09 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.z + value: 1.54 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_Name + value: ChaseSourceWithOffsetSwappingVolume + objectReference: {fileID: 0} + - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_Text + value: 'Chase Source + + + Fixed Offset' + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThisObject + value: + objectReference: {fileID: 1374872479} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThisPrefab + value: + objectReference: {fileID: 1108371264373750, guid: 118ca9eb859ed4a42beb80e64c3380ab, + type: 2} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1476859234 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.x + value: -0.3260001 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.y + value: 1.09 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.z + value: 1.54 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_Name + value: ChaseSourceWithOffsetThenFaceHeadSwappingVolume + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: Solver + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 0} + propertyPath: m_Text + value: 'Chase Hand + + +Fixed Offset + + +Face Headset' + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: HideThis + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: SpawnThis + value: + objectReference: {fileID: 1041976978773994, guid: 72dfc8e6a20d95041b3f652885a7ea9f, + type: 2} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: UpdateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThis + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThis + value: + objectReference: {fileID: 1041976978773994, guid: 72dfc8e6a20d95041b3f652885a7ea9f, + type: 2} + - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_Text + value: 'Chase Source + + + Fixed Offset + + + Face Headset' + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThisObject + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThisPrefab + value: + objectReference: {fileID: 1041976978773994, guid: 72dfc8e6a20d95041b3f652885a7ea9f, + type: 2} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1482121905 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1482121909} + - component: {fileID: 1482121908} + - component: {fileID: 1482121907} + - component: {fileID: 1482121906} + m_Layer: 0 + m_Name: Wall (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1482121906 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1482121905} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &1482121907 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1482121905} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1482121908 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1482121905} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1482121909 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1482121905} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 8.17862, y: -0.70849735, z: -0.6695333} + m_LocalScale: {x: 0.9741913, y: 1.3537316, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1 &1540929156 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1540929158} + - component: {fileID: 1540929157} + m_Layer: 0 + m_Name: MixedRealityManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1540929157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1540929156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83d9acc7968244a8886f3af591305bcb, type: 3} + m_Name: + m_EditorClassIdentifier: + activeProfile: {fileID: 11400000, guid: 31a611a779d3499e8e35f1a2018ca841, type: 2} +--- !u!4 &1540929158 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1540929156} + 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: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1749948741 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.x + value: -1.493 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.y + value: 1.09 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.z + value: -1.035 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.y + value: -0.70912826 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.w + value: 0.7050795 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_Name + value: InBetweenSourcesSwappingVolume + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: Solver + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 0} + propertyPath: m_Text + value: In between Hands + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: HideThis + value: + objectReference: {fileID: 456805605} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: SpawnThis + value: + objectReference: {fileID: 1946721682696148, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, + type: 2} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: UpdateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: -90.328 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThis + value: + objectReference: {fileID: 456805605} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThis + value: + objectReference: {fileID: 1946721682696148, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, + type: 2} + - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_Text + value: In-between Sources + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: updateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThisObject + value: + objectReference: {fileID: 456805605} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThisPrefab + value: + objectReference: {fileID: 1946721682696148, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, + type: 2} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1778504649 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1778504653} + - component: {fileID: 1778504652} + - component: {fileID: 1778504651} + - component: {fileID: 1778504650} + m_Layer: 0 + m_Name: Wall (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1778504650 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1778504649} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &1778504651 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1778504649} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1778504652 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1778504649} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1778504653 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1778504649} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 12.01862, y: 2.0413427, z: -0.6685333} + m_LocalScale: {x: 0.9741913, y: 1.3537316, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!4 &1835088801 stripped +Transform: + m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + m_PrefabInternal: {fileID: 5415927} +--- !u!1001 &1866611480 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2061190545} + m_Modifications: + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114229151188300204, guid: de99acdc648a6d945ba138103ed87328, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114604167685196832, guid: de99acdc648a6d945ba138103ed87328, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalScale.x + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalScale.y + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 4730916243282228, guid: de99acdc648a6d945ba138103ed87328, type: 2} + propertyPath: m_LocalScale.z + value: 0.1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: de99acdc648a6d945ba138103ed87328, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1895901419 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1895901423} + - component: {fileID: 1895901422} + - component: {fileID: 1895901421} + - component: {fileID: 1895901420} + m_Layer: 0 + m_Name: Wall (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1895901420 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1895901419} + 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_Materials: + - {fileID: 2100000, guid: a5e028070ace428d8971079be1d965a6, 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: 1 + 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!65 &1895901421 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1895901419} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1895901422 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1895901419} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1895901423 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1895901419} + m_LocalRotation: {x: -0, y: -0.00043630067, z: -0, w: 0.99999994} + m_LocalPosition: {x: 7.02562, y: 0.47134274, z: -3.3301332} + m_LocalScale: {x: 1.6742429, y: 5.4842668, z: 1.945419} + m_Children: [] + m_Father: {fileID: 2030299620} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1 &1954249921 stripped +GameObject: + m_PrefabParentObject: {fileID: 1179292221703190, guid: aa50dc498bdec8646b565cb0fcb35316, + type: 2} + m_PrefabInternal: {fileID: 1445928901} +--- !u!1 &2030299619 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2030299620} + m_Layer: 0 + m_Name: Level Pieces + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2030299620 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2030299619} + 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: 651759646} + - {fileID: 414803426} + - {fileID: 1895901423} + - {fileID: 1228140082} + - {fileID: 1482121909} + - {fileID: 1009541482} + - {fileID: 515884540} + - {fileID: 552259684} + - {fileID: 1778504653} + - {fileID: 499646163} + - {fileID: 159833616} + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &2061190545 stripped +Transform: + m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + m_PrefabInternal: {fileID: 683032822} +--- !u!1 &2087691054 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2087691055} + - component: {fileID: 2087691058} + - component: {fileID: 2087691057} + - component: {fileID: 2087691056} + m_Layer: 0 + m_Name: UIRaycastCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2087691055 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087691054} + 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: 624307635} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2087691056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087691054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &2087691057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087691054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!20 &2087691058 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2087691054} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 3 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 0.5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 1 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1001 &2098571393 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 684894276} + m_Modifications: + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114577281956123938, guid: 72dfc8e6a20d95041b3f652885a7ea9f, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114556860568291684, guid: 72dfc8e6a20d95041b3f652885a7ea9f, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114894140878539200, guid: 72dfc8e6a20d95041b3f652885a7ea9f, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114578645221470212, guid: 72dfc8e6a20d95041b3f652885a7ea9f, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalScale.x + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalScale.y + value: 0.1 + objectReference: {fileID: 0} + - target: {fileID: 4137615430852754, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + propertyPath: m_LocalScale.z + value: 0.1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &2102116491 stripped +Transform: + m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + m_PrefabInternal: {fileID: 1461201859} +--- !u!1 &2124696266 stripped +GameObject: + m_PrefabParentObject: {fileID: 1041976978773994, guid: 72dfc8e6a20d95041b3f652885a7ea9f, + type: 2} + m_PrefabInternal: {fileID: 2098571393} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity.meta new file mode 100644 index 00000000000..5b2f3d6ed82 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ddad3c804e095ab418ae445c5990b658 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts.meta new file mode 100644 index 00000000000..11e2d7866cd --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f773731e26a57e243b391a0f6a6cb025 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs new file mode 100644 index 00000000000..61be5887f41 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs @@ -0,0 +1,86 @@ +// 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.Core.Definitions.Utilities; +using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; +using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; +using Microsoft.MixedReality.Toolkit.SDK.Utilities.Solvers; +using UnityEngine; + +namespace Microsoft.MixedReality.Toolkit.Examples.Demos +{ + /// + /// This class is used in the SolverExamples scene, used to swap between active solvers + /// and placeholder solvers displayed in the scene. + /// + public class SwapVolume : MonoBehaviour, IMixedRealityPointerHandler + { + [SerializeField] + private GameObject hideThisObject = null; + + [SerializeField] + private GameObject spawnThisPrefab = null; + + [SerializeField] + private bool updateSolverTargetToClickSource = true; + + private SolverHandler solverHandler; + private GameObject spawnedObject; + + private void Awake() + { + // This example script depends on both GameObjects being properly set. + if (hideThisObject == null || spawnThisPrefab == null) + { + Destroy(gameObject); + } + } + + private void Start() + { + spawnedObject = Instantiate(spawnThisPrefab, hideThisObject.transform.position, hideThisObject.transform.rotation); + spawnedObject.SetActive(false); + solverHandler = spawnedObject.GetComponent(); + } + + + public void OnPointerUp(MixedRealityPointerEventData eventData) { } + + public void OnPointerDown(MixedRealityPointerEventData eventData) { } + + public void OnPointerClicked(MixedRealityPointerEventData eventData) + { + if (spawnedObject.activeSelf) + { + spawnedObject.SetActive(false); + hideThisObject.SetActive(true); + } + else + { + spawnedObject.SetActive(true); + + if (updateSolverTargetToClickSource && solverHandler != null) + { + if (eventData.Handedness == Handedness.Right) + { + solverHandler.TrackedObjectToReference = TrackedObjectType.MotionControllerRight; + } + else if (eventData.Handedness == Handedness.Left) + { + solverHandler.TrackedObjectToReference = TrackedObjectType.MotionControllerLeft; + } + } + + hideThisObject.SetActive(false); + } + + eventData.Use(); // Mark the event as used, so it doesn't fall through to other handlers. + } + + private void OnDestroy() + { + Destroy(spawnedObject); + Destroy(hideThisObject); + } + } +} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs.meta new file mode 100644 index 00000000000..6f2b31dd1ab --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: edea428b5e02f9144b45b9fbd5ba5278 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 5e7deb1b89a690370a9d2230ec73e9b281d75f80 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Thu, 6 Sep 2018 14:17:53 -0700 Subject: [PATCH 17/98] Proper SolverHandler serialization --- .../Demos/Solvers/Prefabs/ChaseSource.prefab | 1 + .../Prefabs/ChaseSourceWithOffset.prefab | 1 + .../Solvers/Prefabs/InBetweenSources.prefab | 1 + .../Demos/Solvers/Prefabs/Snake.prefab | 977 +++++++++--------- .../Demos/Solvers/Prefabs/SnakeHead.prefab | 205 ---- .../Solvers/Prefabs/SnakeHead.prefab.meta | 8 - .../Demos/Solvers/Prefabs/SnakePiece.prefab | 205 ---- .../Solvers/Prefabs/SnakePiece.prefab.meta | 8 - .../Solvers/Prefabs/SurfaceMagnetism.prefab | 1 + .../SurfaceMagnetismAndRadialView.prefab | 2 + 10 files changed, 482 insertions(+), 927 deletions(-) delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab.meta delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab.meta diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab index 3928d8b327c..221a6eebcb3 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab @@ -120,6 +120,7 @@ MonoBehaviour: maintainScale: 1 smoothing: 1 lifetime: 0 + SolverHandler: {fileID: 114229151188300204} referenceDirection: 1 minDistance: 1 maxDistance: 2 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab index 4503bbfdc6a..bc6675857b3 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab @@ -176,6 +176,7 @@ MonoBehaviour: maintainScale: 1 smoothing: 1 lifetime: 0 + SolverHandler: {fileID: 114911825043747796} referenceDirection: 1 minDistance: 1 maxDistance: 2 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab index 18879b3ecad..076adab8494 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/InBetweenSources.prefab @@ -120,6 +120,7 @@ MonoBehaviour: maintainScale: 1 smoothing: 1 lifetime: 0 + SolverHandler: {fileID: 114709813557731528} partwayOffset: 0.5 trackedObjectForSecondTransform: 1 secondTransformOverride: {fileID: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab index 3ccc3567f09..c954943ad24 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab @@ -2107,7 +2107,7 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1537659093898892} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.435753, y: 0.8596, z: -1.1347291} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 4719212773538510} @@ -2352,6 +2352,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2386,6 +2387,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2420,6 +2422,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2454,6 +2457,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2488,6 +2492,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2522,6 +2527,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2556,6 +2562,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2590,6 +2597,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2624,6 +2632,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2658,6 +2667,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2692,6 +2702,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2726,6 +2737,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2760,6 +2772,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2794,6 +2807,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2828,6 +2842,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2862,6 +2877,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2896,6 +2912,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2930,6 +2947,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2964,6 +2982,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -2998,6 +3017,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -3032,6 +3052,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -3066,6 +3087,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -3100,6 +3122,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -3134,6 +3157,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: d7d199e3713db844294fce3e2db4705a, type: 2} m_StaticBatchInfo: @@ -3168,6 +3192,7 @@ MeshRenderer: m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, type: 2} m_StaticBatchInfo: @@ -3375,12 +3400,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4185695180826104} + updateSolvers: 1 --- !u!114 &114046080384103152 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3392,12 +3417,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4327171221280566} + updateSolvers: 1 --- !u!114 &114064114941653030 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3409,12 +3434,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4140713928120628} + updateSolvers: 1 --- !u!114 &114108703684830358 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3426,25 +3451,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114281982501778886} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114119291258026634 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3456,12 +3479,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4258958419874150} + updateSolvers: 1 --- !u!114 &114132324726589930 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3473,12 +3496,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4898539984711342} + updateSolvers: 1 --- !u!114 &114136454512939010 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3490,25 +3513,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114746239015755110} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114152252500292652 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3520,25 +3541,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114119291258026634} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114201054482223226 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3550,12 +3569,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4111068035723752} + updateSolvers: 1 --- !u!114 &114205176821015716 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3567,25 +3586,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114248129699884224} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114248129699884224 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3597,12 +3614,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4431618215408844} + updateSolvers: 1 --- !u!114 &114277052358527924 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3614,25 +3631,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114628465954635856} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114277565321777378 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3644,25 +3659,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114358157115147804} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114281982501778886 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3674,12 +3687,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4498157154113050} + updateSolvers: 1 --- !u!114 &114300180824295488 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3691,12 +3704,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4251603451237924} + updateSolvers: 1 --- !u!114 &114305931542313040 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3708,12 +3721,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4558240402017934} + updateSolvers: 1 --- !u!114 &114332239823627908 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3725,25 +3738,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114046080384103152} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114358157115147804 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3755,12 +3766,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4916380402450456} + updateSolvers: 1 --- !u!114 &114360504785967414 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3772,12 +3783,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 2 trackedObjectToReference: 2 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 0} + updateSolvers: 1 --- !u!114 &114365353813304710 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3789,25 +3800,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114416462971053782} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114370076487579544 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3819,12 +3828,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4444320502920110} + updateSolvers: 1 --- !u!114 &114388365418611060 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3836,25 +3845,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114769301346886932} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114390035804951434 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3866,25 +3873,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: 0, y: 0, z: 0} - GoalRotation: {x: 0, y: 0, z: 0, w: 0} - GoalScale: {x: 0, y: 0, z: 0} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 15 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114360504785967414} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114413585074026818 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3896,25 +3901,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114692419140163664} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114416443727872154 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3926,25 +3929,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114300180824295488} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114416462971053782 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3956,12 +3957,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4728947691468408} + updateSolvers: 1 --- !u!114 &114453212149398538 MonoBehaviour: m_ObjectHideFlags: 1 @@ -3973,25 +3974,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114743017698380238} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114460081049169556 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4003,25 +4002,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114370076487579544} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114475831971905602 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4033,25 +4030,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114016962962148144} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114492834070681342 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4063,25 +4058,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114604330468239596} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114528452368200674 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4093,25 +4086,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114201054482223226} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114535203513868254 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4123,25 +4114,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114305931542313040} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114577296065692308 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4153,25 +4142,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114132324726589930} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114604330468239596 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4183,12 +4170,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4342435378354722} + updateSolvers: 1 --- !u!114 &114628465954635856 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4200,12 +4187,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4751210799837254} + updateSolvers: 1 --- !u!114 &114692419140163664 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4217,12 +4204,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4069800357527082} + updateSolvers: 1 --- !u!114 &114704109522201332 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4234,12 +4221,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4353978069942568} + updateSolvers: 1 --- !u!114 &114725866772511870 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4251,25 +4238,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114704109522201332} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114726790890798954 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4281,12 +4266,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4433731170516538} + updateSolvers: 1 --- !u!114 &114743017698380238 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4298,12 +4283,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4864709762178270} + updateSolvers: 1 --- !u!114 &114746239015755110 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4315,12 +4300,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 2 trackedObjectToReference: 2 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4578417716933416} + updateSolvers: 1 --- !u!114 &114762079056890250 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4332,12 +4317,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4681176189152816} + updateSolvers: 1 --- !u!114 &114769301346886932 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4349,12 +4334,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4838369436807876} + updateSolvers: 1 --- !u!114 &114784443225875358 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4366,25 +4351,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114762079056890250} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114802977075492880 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4396,25 +4379,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114831910598433390} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114831910598433390 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4426,12 +4407,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4147729547069426} + updateSolvers: 1 --- !u!114 &114892725816305384 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4443,25 +4424,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114999463940681146} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114919855469449968 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4473,25 +4452,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114064114941653030} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114936381653534936 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4503,25 +4480,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} m_Name: m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114726790890798954} + referenceDirection: 1 + minDistance: 1 + maxDistance: 2 + minViewDegrees: 0 + maxViewDegrees: 30 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!114 &114999463940681146 MonoBehaviour: m_ObjectHideFlags: 1 @@ -4533,12 +4508,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} m_Name: m_EditorClassIdentifier: - element: 6 handedness: 1 trackedObjectToReference: 1 additionalOffset: {x: 0, y: 0, z: 0} additionalRotation: {x: 0, y: 0, z: 0} transformTarget: {fileID: 4283467299023566} + updateSolvers: 1 --- !u!136 &136018744819662638 CapsuleCollider: m_ObjectHideFlags: 1 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab deleted file mode 100644 index 453ee474908..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab +++ /dev/null @@ -1,205 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 1938354382771156} - m_IsPrefabParent: 1 ---- !u!1 &1386786035130178 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4553455934564640} - m_Layer: 0 - m_Name: Attach Point - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1915737012672190 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4411776247622956} - - component: {fileID: 33551780834094618} - - component: {fileID: 136348911340782948} - - component: {fileID: 23461779524546866} - m_Layer: 0 - m_Name: Capsule - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1938354382771156 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4262708465451058} - - component: {fileID: 114226070726471496} - - component: {fileID: 114901983845158496} - m_Layer: 0 - m_Name: SnakeHead - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4262708465451058 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1938354382771156} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.435753, y: 0.8596, z: -1.1347291} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 4411776247622956} - - {fileID: 4553455934564640} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4411776247622956 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1915737012672190} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: -0.0687} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_Children: [] - m_Father: {fileID: 4262708465451058} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!4 &4553455934564640 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1386786035130178} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.13} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 4262708465451058} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23461779524546866 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1915737012672190} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - 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 &33551780834094618 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1915737012672190} - m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &114226070726471496 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1938354382771156} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} - m_Name: - m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.1 - RotateLerpTime: 0.1 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: 0, y: 0, z: 0} - GoalRotation: {x: 0, y: 0, z: 0, w: 0} - GoalScale: {x: 0, y: 0, z: 0} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 15 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 ---- !u!114 &114901983845158496 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1938354382771156} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} - m_Name: - m_EditorClassIdentifier: - element: 6 - handedness: 1 - trackedObjectToReference: 1 - additionalOffset: {x: 0, y: 0, z: 0} - additionalRotation: {x: 0, y: 0, z: 0} - transformTarget: {fileID: 0} ---- !u!136 &136348911340782948 -CapsuleCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1915737012672190} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab.meta deleted file mode 100644 index de7d67939ec..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakeHead.prefab.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4f3ce962babac664caa639781a05ad79 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab deleted file mode 100644 index f0791c93262..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab +++ /dev/null @@ -1,205 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 1654234197538378} - m_IsPrefabParent: 1 ---- !u!1 &1037742650345622 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4136507798298578} - m_Layer: 0 - m_Name: Attach Point - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1606982635225214 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4044856956087932} - - component: {fileID: 33826186131275604} - - component: {fileID: 136882273448677838} - - component: {fileID: 23144018560283282} - m_Layer: 0 - m_Name: Capsule - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1654234197538378 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4247903131158174} - - component: {fileID: 114104664585887558} - - component: {fileID: 114459366717706634} - m_Layer: 0 - m_Name: SnakePiece - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4044856956087932 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1606982635225214} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: -0.0687} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_Children: [] - m_Father: {fileID: 4247903131158174} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!4 &4136507798298578 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1037742650345622} - 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: 4247903131158174} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4247903131158174 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1654234197538378} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.435753, y: 0.8596, z: -1.1347291} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 4044856956087932} - - {fileID: 4136507798298578} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23144018560283282 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1606982635225214} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: 47f3c5e1cb6142ba9697cd4c86d74321, 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: 1 - 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 &33826186131275604 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1606982635225214} - m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &114104664585887558 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1654234197538378} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} - m_Name: - m_EditorClassIdentifier: - UpdateLinkedTransform: 0 - MoveLerpTime: 0.01 - RotateLerpTime: 0.01 - ScaleLerpTime: 0 - MaintainScale: 1 - GoalPosition: {x: -0.23076731, y: 1.5623932, z: -0.12509447} - GoalRotation: {x: 0.58770555, y: -0.06718384, z: 0.049061842, w: 0.8047866} - GoalScale: {x: 1, y: 1, z: 1} - Smoothing: 1 - Lifetime: 0 - ReferenceDirection: 1 - MinDistance: 0.1 - MaxDistance: 0.1 - MinViewDegrees: 0 - MaxViewDegrees: 30 - AspectV: 1 - IgnoreAngleClamp: 0 - IgnoreDistanceClamp: 0 - OrientToRefDir: 0 ---- !u!114 &114459366717706634 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1654234197538378} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} - m_Name: - m_EditorClassIdentifier: - element: 6 - handedness: 1 - trackedObjectToReference: 1 - additionalOffset: {x: 0, y: 0, z: 0} - additionalRotation: {x: 0, y: 0, z: 0} - transformTarget: {fileID: 0} ---- !u!136 &136882273448677838 -CapsuleCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1606982635225214} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab.meta deleted file mode 100644 index e5368790ec0..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SnakePiece.prefab.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e5c44cfea5c430649adac642d7edf012 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab index 5b5e74c2c80..219fccdf063 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab @@ -153,6 +153,7 @@ MonoBehaviour: maintainScale: 1 smoothing: 1 lifetime: 0 + SolverHandler: {fileID: 114842819766563628} magneticSurfaces: - serializedVersion: 2 m_Bits: 4294967291 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab index bcbcec42b9e..f847a9eb5d3 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab @@ -104,6 +104,7 @@ MonoBehaviour: maintainScale: 1 smoothing: 1 lifetime: 0 + SolverHandler: {fileID: 114855406103909200} referenceDirection: 1 minDistance: 1 maxDistance: 2 @@ -131,6 +132,7 @@ MonoBehaviour: maintainScale: 1 smoothing: 1 lifetime: 0 + SolverHandler: {fileID: 114855406103909200} magneticSurfaces: - serializedVersion: 2 m_Bits: 4294967291 From 66283e8d560832d23130eb212a9ae23c8533e221 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Thu, 6 Sep 2018 17:15:04 -0700 Subject: [PATCH 18/98] Fix prefab settings --- .../Demos/Solvers/Prefabs/BodyLocked.prefab | 10 +- .../Demos/Solvers/Prefabs/ChaseSource.prefab | 8 +- .../Prefabs/ChaseSourceWithOffset.prefab | 8 +- .../ChaseSourceWithOffsetThenFaceHead.prefab | 20 +- .../Demos/Solvers/Prefabs/Snake.prefab | 198 +++++++++--------- .../Solvers/Prefabs/SurfaceMagnetism.prefab | 4 +- .../SurfaceMagnetismAndRadialView.prefab | 8 +- 7 files changed, 128 insertions(+), 128 deletions(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab index 8fd70b265d0..f76ce57dbb2 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab @@ -121,8 +121,8 @@ MonoBehaviour: smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114474594170136286} - orientationType: 4 - localOffset: {x: 0, y: -0.6, z: 1} - worldOffset: {x: 0, y: 0, z: 0} - useAngleSteppingForWorldOffset: 0 - tetherAngleSteps: 6 + orientationType: 2 + localOffset: {x: 0, y: 0, z: 0} + worldOffset: {x: 0, y: -0.6, z: 1} + useAngleSteppingForWorldOffset: 1 + tetherAngleSteps: 10 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab index 221a6eebcb3..9ccb1186ce4 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSource.prefab @@ -121,11 +121,11 @@ MonoBehaviour: smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114229151188300204} - referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + referenceDirection: 0 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 - maxViewDegrees: 30 + maxViewDegrees: 0 aspectV: 1 ignoreAngleClamp: 0 ignoreDistanceClamp: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab index bc6675857b3..1e92889dead 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffset.prefab @@ -177,11 +177,11 @@ MonoBehaviour: smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114911825043747796} - referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + referenceDirection: 0 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 - maxViewDegrees: 30 + maxViewDegrees: 0 aspectV: 1 ignoreAngleClamp: 0 ignoreDistanceClamp: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab index ac55715fe68..d30327b9b49 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/ChaseSourceWithOffsetThenFaceHead.prefab @@ -74,7 +74,7 @@ Transform: m_GameObject: {fileID: 1555762991523294} 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.001} + m_LocalScale: {x: 2, y: 2, z: 0.001} m_Children: [] m_Father: {fileID: 4678300638060350} m_RootOrder: 0 @@ -252,11 +252,11 @@ MonoBehaviour: smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114577281956123938} - referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + referenceDirection: 0 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 - maxViewDegrees: 30 + maxViewDegrees: 0 aspectV: 1 ignoreAngleClamp: 0 ignoreDistanceClamp: 0 @@ -314,12 +314,12 @@ MonoBehaviour: smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114578645221470212} - referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + referenceDirection: 0 + minDistance: 0 + maxDistance: 0 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 - ignoreAngleClamp: 0 - ignoreDistanceClamp: 0 + ignoreAngleClamp: 1 + ignoreDistanceClamp: 1 orientToReferenceDirection: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab index c954943ad24..3cb6ede5f56 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Snake.prefab @@ -3452,16 +3452,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114281982501778886} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3514,16 +3514,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114746239015755110} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3542,16 +3542,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114119291258026634} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3587,16 +3587,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114248129699884224} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3632,16 +3632,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114628465954635856} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3660,16 +3660,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114358157115147804} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3739,16 +3739,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114046080384103152} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3801,16 +3801,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114416462971053782} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3846,16 +3846,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114769301346886932} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3882,10 +3882,10 @@ MonoBehaviour: lifetime: 0 SolverHandler: {fileID: 114360504785967414} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 - maxViewDegrees: 30 + maxViewDegrees: 15 aspectV: 1 ignoreAngleClamp: 0 ignoreDistanceClamp: 0 @@ -3902,16 +3902,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114692419140163664} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3930,16 +3930,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114300180824295488} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -3975,16 +3975,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114743017698380238} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4003,16 +4003,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114370076487579544} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4031,16 +4031,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114016962962148144} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4059,16 +4059,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114604330468239596} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4087,16 +4087,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114201054482223226} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4115,16 +4115,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114305931542313040} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4143,16 +4143,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114132324726589930} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4239,16 +4239,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114704109522201332} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4352,16 +4352,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114762079056890250} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4380,16 +4380,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114831910598433390} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4425,16 +4425,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114999463940681146} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4453,16 +4453,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114064114941653030} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 @@ -4481,16 +4481,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 + moveLerpTime: 0.01 + rotateLerpTime: 0.01 scaleLerpTime: 0 maintainScale: 1 smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114726790890798954} referenceDirection: 1 - minDistance: 1 - maxDistance: 2 + minDistance: 0.1 + maxDistance: 0.1 minViewDegrees: 0 maxViewDegrees: 30 aspectV: 1 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab index 219fccdf063..1d7b966e4f5 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetism.prefab @@ -157,7 +157,7 @@ MonoBehaviour: magneticSurfaces: - serializedVersion: 2 m_Bits: 4294967291 - maxDistance: 3 + maxDistance: 30 closeDistance: 0.5 surfaceNormalOffset: 0.5 surfaceRayOffset: 0 @@ -170,7 +170,7 @@ MonoBehaviour: useLinkedAltScaleOverride: 0 raycastDirection: 0 orientationMode: 2 - orientationBlend: 0.65 + orientationBlend: 1 debugEnabled: 0 --- !u!114 &114842819766563628 MonoBehaviour: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab index f847a9eb5d3..bfe474e9b6d 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SurfaceMagnetismAndRadialView.prefab @@ -105,11 +105,11 @@ MonoBehaviour: smoothing: 1 lifetime: 0 SolverHandler: {fileID: 114855406103909200} - referenceDirection: 1 + referenceDirection: 0 minDistance: 1 - maxDistance: 2 + maxDistance: 30 minViewDegrees: 0 - maxViewDegrees: 30 + maxViewDegrees: 0 aspectV: 1 ignoreAngleClamp: 0 ignoreDistanceClamp: 0 @@ -136,7 +136,7 @@ MonoBehaviour: magneticSurfaces: - serializedVersion: 2 m_Bits: 4294967291 - maxDistance: 3 + maxDistance: 30 closeDistance: 0.5 surfaceNormalOffset: 0.5 surfaceRayOffset: 0 From 049e691f471eccca343fae49ae3150d3f0c5c943 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Fri, 5 Oct 2018 13:07:32 -0700 Subject: [PATCH 19/98] Rename Body to MixedRealityPlayspace --- .../Demos/Solvers/Scenes/Solvers.unity | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity index 0b837b34c36..dd0af4051eb 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity @@ -288,7 +288,7 @@ GameObject: m_Component: - component: {fileID: 74001234} m_Layer: 0 - m_Name: Body + m_Name: MixedRealityPlayspace m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 From 481b651a9877f59033aa10c2e17aba58b6ab4eb3 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Mon, 8 Oct 2018 16:45:39 -0700 Subject: [PATCH 20/98] Add tooltips to demo code --- .../Demos/Solvers/Scripts/SwapVolume.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs index 61be5887f41..9298f3856c2 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs @@ -16,12 +16,15 @@ namespace Microsoft.MixedReality.Toolkit.Examples.Demos public class SwapVolume : MonoBehaviour, IMixedRealityPointerHandler { [SerializeField] + [Tooltip("The scene object to be hidden when the active solver is enabled.")] private GameObject hideThisObject = null; [SerializeField] + [Tooltip("The solver prefab to be spawned and used when this volume is activated.")] private GameObject spawnThisPrefab = null; [SerializeField] + [Tooltip("Whether to update the solver's target to be the controller that clicked on the volume or not.")] private bool updateSolverTargetToClickSource = true; private SolverHandler solverHandler; From 6a8a34fcb6990ff46ba2b993bcb99fc580869c64 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Mon, 8 Oct 2018 17:22:03 -0700 Subject: [PATCH 21/98] Rename BodyLocked solver prefab to match the script --- .../Demos/Solvers/Prefabs/{BodyLocked.prefab => Orbital.prefab} | 2 +- .../Prefabs/{BodyLocked.prefab.meta => Orbital.prefab.meta} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/{BodyLocked.prefab => Orbital.prefab} (99%) rename Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/{BodyLocked.prefab.meta => Orbital.prefab.meta} (100%) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab similarity index 99% rename from Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab rename to Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab index f76ce57dbb2..d5b68907304 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab @@ -24,7 +24,7 @@ GameObject: - component: {fileID: 114474594170136286} - component: {fileID: 114785721768203206} m_Layer: 0 - m_Name: BodyLocked + m_Name: Orbital m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab.meta similarity index 100% rename from Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/BodyLocked.prefab.meta rename to Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab.meta From c9810d4e38c4c952749f1dc47d1e60bdee3296d0 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Mon, 8 Oct 2018 17:45:12 -0700 Subject: [PATCH 22/98] Added a non-stepped orbital solver example --- .../Demos/Solvers/Prefabs/Orbital.prefab | 2 +- .../Prefabs/OrbitalWithStepping.prefab | 128 ++++++++++++++++++ .../Prefabs/OrbitalWithStepping.prefab.meta | 8 ++ ProjectSettings/QualitySettings.asset | 16 +-- ProjectSettings/UnityConnectSettings.asset | 2 +- 5 files changed, 139 insertions(+), 17 deletions(-) create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/OrbitalWithStepping.prefab create mode 100644 Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/OrbitalWithStepping.prefab.meta diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab index d5b68907304..54043787fd9 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/Orbital.prefab @@ -124,5 +124,5 @@ MonoBehaviour: orientationType: 2 localOffset: {x: 0, y: 0, z: 0} worldOffset: {x: 0, y: -0.6, z: 1} - useAngleSteppingForWorldOffset: 1 + useAngleSteppingForWorldOffset: 0 tetherAngleSteps: 10 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/OrbitalWithStepping.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/OrbitalWithStepping.prefab new file mode 100644 index 00000000000..1ba36dcd218 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/OrbitalWithStepping.prefab @@ -0,0 +1,128 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1644659546057122} + m_IsPrefabParent: 1 +--- !u!1 &1644659546057122 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4901806931539292} + - component: {fileID: 33633702823728314} + - component: {fileID: 23345689241976446} + - component: {fileID: 114474594170136286} + - component: {fileID: 114785721768203206} + m_Layer: 0 + m_Name: OrbitalWithStepping + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4901806931539292 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23345689241976446 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + 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_Materials: + - {fileID: 2100000, guid: 71d573ea4cb045cdadc98e56044f6d2c, 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 &33633702823728314 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &114474594170136286 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 0 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 +--- !u!114 &114785721768203206 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1644659546057122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14c3d8a4208d4b649529822e217623d4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114474594170136286} + orientationType: 2 + localOffset: {x: 0, y: 0, z: 0} + worldOffset: {x: 0, y: -0.6, z: 1} + useAngleSteppingForWorldOffset: 1 + tetherAngleSteps: 10 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/OrbitalWithStepping.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/OrbitalWithStepping.prefab.meta new file mode 100644 index 00000000000..e6afe07fd45 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/OrbitalWithStepping.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c1a5decf3f13c2847b2e92b462ec9886 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset index 05daac3c492..7ef343ac5b1 100644 --- a/ProjectSettings/QualitySettings.asset +++ b/ProjectSettings/QualitySettings.asset @@ -174,18 +174,4 @@ QualitySettings: asyncUploadBufferSize: 4 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - m_PerPlatformDefaultQuality: - Android: 2 - Nintendo 3DS: 5 - Nintendo Switch: 5 - PS4: 5 - PSM: 5 - PSP2: 2 - Standalone: 5 - Tizen: 2 - WebGL: 3 - WiiU: 5 - Windows Store Apps: 5 - XboxOne: 5 - iPhone: 2 - tvOS: 2 + m_PerPlatformDefaultQuality: {} diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset index 3da14d5baf1..1be4600519a 100644 --- a/ProjectSettings/UnityConnectSettings.asset +++ b/ProjectSettings/UnityConnectSettings.asset @@ -3,7 +3,7 @@ --- !u!310 &1 UnityConnectSettings: m_ObjectHideFlags: 0 - m_Enabled: 0 + m_Enabled: 1 m_TestMode: 0 m_TestEventUrl: m_TestConfigUrl: From 7c720e58e57458a3a69d5f87a9bb4ce22091adbb Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Mon, 8 Oct 2018 17:45:25 -0700 Subject: [PATCH 23/98] Updating Solvers scene from PR feedback --- .../Demos/Solvers/Scenes/Solvers.unity | 373 ++++++++++++++++-- 1 file changed, 332 insertions(+), 41 deletions(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity index dd0af4051eb..40cefa8cc0b 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity @@ -26,7 +26,7 @@ RenderSettings: m_AmbientIntensity: 1 m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 2100000, guid: 064cf2adabde05941a372e975e563706, type: 2} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} m_HaloStrength: 0.5 m_FlareStrength: 1 m_FlareFadeSpeed: 3 @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -122,7 +122,7 @@ Prefab: m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 1.906 + value: 2 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y @@ -130,7 +130,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 0.494 + value: 1.1 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x @@ -138,7 +138,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0.7071068 + value: 0.17364816 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z @@ -146,11 +146,11 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.7071068 + value: 0.9848078 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder - value: 6 + value: 7 objectReference: {fileID: 0} - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Name @@ -178,7 +178,7 @@ Prefab: type: 2} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalEulerAnglesHint.y - value: 90 + value: 20 objectReference: {fileID: 0} - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} @@ -306,7 +306,7 @@ Transform: m_Children: - {fileID: 624307635} m_Father: {fileID: 0} - m_RootOrder: 10 + m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &126281608 stripped Transform: @@ -466,7 +466,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &414803422 GameObject: @@ -737,7 +737,7 @@ Prefab: m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 1.906 + value: 2.5 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y @@ -745,7 +745,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: -0.65700006 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x @@ -753,7 +753,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0.7071068 + value: 0.2164396 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z @@ -761,11 +761,11 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.7071068 + value: 0.97629607 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder - value: 7 + value: 8 objectReference: {fileID: 0} - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Name @@ -795,7 +795,7 @@ Prefab: type: 2} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalEulerAnglesHint.y - value: 90 + value: 25 objectReference: {fileID: 0} - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} @@ -1145,7 +1145,7 @@ Prefab: m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: -1.445 + value: -0.5 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y @@ -1153,7 +1153,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.54 + value: 1.4 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x @@ -1161,7 +1161,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0 + value: -0.043619405 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z @@ -1169,7 +1169,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 1 + value: 0.9990483 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder @@ -1231,6 +1231,10 @@ Prefab: value: objectReference: {fileID: 1307245229378308, guid: de99acdc648a6d945ba138103ed87328, type: 2} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: -5 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -1467,6 +1471,187 @@ Transform: m_Father: {fileID: 2030299620} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1001 &1048284899 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1054748776} + m_Modifications: + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114474594170136286, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114785721768203206, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalScale.x + value: 0.4 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalScale.y + value: 0.4 + objectReference: {fileID: 0} + - target: {fileID: 4901806931539292, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + propertyPath: m_LocalScale.z + value: 0.4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: eab8031fa00c51d458f94c301aec122b, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1048284900 stripped +GameObject: + m_PrefabParentObject: {fileID: 1644659546057122, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + m_PrefabInternal: {fileID: 1048284899} +--- !u!1001 &1054748775 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.x + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.y + value: 1.09 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalPosition.z + value: 1.2 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.y + value: 0.13052616 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalRotation.w + value: 0.9914449 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_Name + value: OrbitalWithSteppingSwappingVolume + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: Solver + value: + objectReference: {fileID: 2124696266} + - target: {fileID: 0} + propertyPath: m_Text + value: Body Locked + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: HideThis + value: + objectReference: {fileID: 1048284900} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: SpawnThis + value: + objectReference: {fileID: 1644659546057122, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 15 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: UpdateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThis + value: + objectReference: {fileID: 1048284900} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThis + value: + objectReference: {fileID: 1644659546057122, guid: eab8031fa00c51d458f94c301aec122b, + type: 2} + - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: m_Text + value: Orbital with Stepping + objectReference: {fileID: 0} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: spawnThisPrefab + value: + objectReference: {fileID: 1644659546057122, guid: c1a5decf3f13c2847b2e92b462ec9886, + type: 2} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: hideThisObject + value: + objectReference: {fileID: 1048284900} + - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + propertyPath: updateSolverTargetToClickSource + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &1054748776 stripped +Transform: + m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, + type: 2} + m_PrefabInternal: {fileID: 1054748775} --- !u!1 &1228140078 GameObject: m_ObjectHideFlags: 0 @@ -1571,7 +1756,7 @@ Prefab: m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 1.906 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y @@ -1579,7 +1764,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 0.987 + value: 1.3 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x @@ -1587,7 +1772,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0.7071068 + value: 0.08715578 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z @@ -1595,7 +1780,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.7071068 + value: 0.9961947 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder @@ -1603,7 +1788,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Name - value: BodyLockedSwappingVolume + value: OrbitalSwappingVolume objectReference: {fileID: 0} - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} @@ -1627,7 +1812,7 @@ Prefab: type: 2} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalEulerAnglesHint.y - value: 90 + value: 10 objectReference: {fileID: 0} - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} @@ -1648,7 +1833,7 @@ Prefab: - target: {fileID: 114140823018708156, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Text - value: Body Locked + value: Orbital objectReference: {fileID: 0} - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} @@ -1811,7 +1996,7 @@ Prefab: m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: -0.947 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y @@ -1819,7 +2004,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.54 + value: 1.5 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x @@ -1875,7 +2060,7 @@ Prefab: m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: -0.3260001 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y @@ -1883,7 +2068,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.54 + value: 1.4 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x @@ -1891,7 +2076,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0 + value: 0.043619405 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z @@ -1899,7 +2084,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 1 + value: 0.9990483 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder @@ -1969,6 +2154,10 @@ Prefab: value: objectReference: {fileID: 1041976978773994, guid: 72dfc8e6a20d95041b3f652885a7ea9f, type: 2} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 5 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -2107,7 +2296,7 @@ Prefab: m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: -1.493 + value: -1 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y @@ -2115,23 +2304,23 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: -1.035 + value: 1.3 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: -0 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: -0.70912826 + value: -0.13052624 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.7050795 + value: 0.9914449 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder @@ -2168,7 +2357,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalEulerAnglesHint.y - value: -90.328 + value: -15 objectReference: {fileID: 0} - target: {fileID: 114459743357777030, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} @@ -2486,13 +2675,115 @@ Transform: - {fileID: 499646163} - {fileID: 159833616} m_Father: {fileID: 0} - m_RootOrder: 9 + m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &2061190545 stripped Transform: m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_PrefabInternal: {fileID: 683032822} +--- !u!1001 &2083613292 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_LocalPosition.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_LocalPosition.y + value: 1.67 + objectReference: {fileID: 0} + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_LocalPosition.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_LocalRotation.y + value: 0.38268343 + objectReference: {fileID: 0} + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_LocalRotation.w + value: 0.92387956 + objectReference: {fileID: 0} + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_RootOrder + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_LocalEulerAnglesHint.y + value: 45 + objectReference: {fileID: 0} + - target: {fileID: 114107642412081004, guid: a900c08743a94c328074df8bbe3eb63c, + type: 2} + propertyPath: m_Text + value: 'Solvers + +' + objectReference: {fileID: 0} + - target: {fileID: 114713125240876806, guid: a900c08743a94c328074df8bbe3eb63c, + type: 2} + propertyPath: m_Text + value: Immersive headset + objectReference: {fileID: 0} + - target: {fileID: 114995780653097258, guid: a900c08743a94c328074df8bbe3eb63c, + type: 2} + propertyPath: m_Text + value: 'Solvers are intended to provide a reliable way to specify the update + order for Unity components, in order to implement deterministic compound transformations. + + + Building on this, solvers offer a range of follow behaviors (e.g. tag-along) + which can be safely stacked (e.g. tag-along + surface magnetism + momentum). + + + + To use this scene, point at and click on a sphere in the scene. This will + activate the associated solver and, if supported, attach it to the controller + that clicked on it. Click on the sphere again to deactivate it. You can click + on multiple spheres in a row to activate more than one solver at a time.' + objectReference: {fileID: 0} + - target: {fileID: 224849082003076088, guid: a900c08743a94c328074df8bbe3eb63c, + type: 2} + propertyPath: m_AnchoredPosition.y + value: 0.12 + objectReference: {fileID: 0} + - target: {fileID: 1951033628531078, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_Name + value: SceneDescriptionPanel + objectReference: {fileID: 0} + - target: {fileID: 114125765304321574, guid: a900c08743a94c328074df8bbe3eb63c, + type: 2} + propertyPath: m_Text + value: How to use + objectReference: {fileID: 0} + - target: {fileID: 224745427211728820, guid: a900c08743a94c328074df8bbe3eb63c, + type: 2} + propertyPath: m_AnchoredPosition.y + value: -0.021 + objectReference: {fileID: 0} + - target: {fileID: 1054075472835142, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1149545904682892, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} + m_IsPrefabParent: 0 --- !u!1 &2087691054 GameObject: m_ObjectHideFlags: 0 From 1873a6f53eeebfde1592dfa8ff86add72d409603 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 9 Oct 2018 09:46:44 -0700 Subject: [PATCH 24/98] added ability to assign same action with different criteria --- .../MixedRealityInputActionRulesInspector.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs index 40b04c95c6a..9bb5ca560c1 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionRulesInspector.cs @@ -172,17 +172,17 @@ private bool RuleExists() default: return false; case AxisType.Digital: - return thisProfile.InputActionRulesDigital.Any(digitalRule => digitalRule.BaseAction == currentBaseAction && digitalRule.RuleAction == currentRuleAction); + return thisProfile.InputActionRulesDigital.Any(digitalRule => digitalRule.BaseAction == currentBaseAction && digitalRule.RuleAction == currentRuleAction && digitalRule.Criteria == currentBoolCriteria); case AxisType.SingleAxis: - return thisProfile.InputActionRulesSingleAxis.Any(singleAxisRule => singleAxisRule.BaseAction == currentBaseAction && singleAxisRule.RuleAction == currentRuleAction); + return thisProfile.InputActionRulesSingleAxis.Any(singleAxisRule => singleAxisRule.BaseAction == currentBaseAction && singleAxisRule.RuleAction == currentRuleAction && singleAxisRule.Criteria.Equals(currentSingleAxisCriteria)); case AxisType.DualAxis: - return thisProfile.InputActionRulesDualAxis.Any(dualAxisRule => dualAxisRule.BaseAction == currentBaseAction && dualAxisRule.RuleAction == currentRuleAction); + return thisProfile.InputActionRulesDualAxis.Any(dualAxisRule => dualAxisRule.BaseAction == currentBaseAction && dualAxisRule.RuleAction == currentRuleAction && dualAxisRule.Criteria == currentDualAxisCriteria); case AxisType.ThreeDofPosition: - return thisProfile.InputActionRulesVectorAxis.Any(vectorAxisRule => vectorAxisRule.BaseAction == currentBaseAction && vectorAxisRule.RuleAction == currentRuleAction); + return thisProfile.InputActionRulesVectorAxis.Any(vectorAxisRule => vectorAxisRule.BaseAction == currentBaseAction && vectorAxisRule.RuleAction == currentRuleAction && vectorAxisRule.Criteria == currentVectorCriteria); case AxisType.ThreeDofRotation: - return thisProfile.InputActionRulesQuaternionAxis.Any(quaternionRule => quaternionRule.BaseAction == currentBaseAction && quaternionRule.RuleAction == currentRuleAction); + return thisProfile.InputActionRulesQuaternionAxis.Any(quaternionRule => quaternionRule.BaseAction == currentBaseAction && quaternionRule.RuleAction == currentRuleAction && quaternionRule.Criteria == currentQuaternionCriteria); case AxisType.SixDof: - return thisProfile.InputActionRulesPoseAxis.Any(poseRule => poseRule.BaseAction == currentBaseAction && poseRule.RuleAction == currentRuleAction); + return thisProfile.InputActionRulesPoseAxis.Any(poseRule => poseRule.BaseAction == currentBaseAction && poseRule.RuleAction == currentRuleAction && poseRule.Criteria == currentPoseCriteria); } } From 3193f8eab621297eebb659e7e745c7bc1846dbc8 Mon Sep 17 00:00:00 2001 From: "David Kline (ANALOG)" Date: Tue, 9 Oct 2018 14:51:42 -0700 Subject: [PATCH 25/98] add background to text captions --- .../Prefabs/SolverSwappingVolume.prefab | 268 +++++++++++++++++- 1 file changed, 260 insertions(+), 8 deletions(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab index 480a1a86e5e..4d1d3909340 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab @@ -11,6 +11,40 @@ Prefab: m_ParentPrefab: {fileID: 0} m_RootGameObject: {fileID: 1687025458477342} m_IsPrefabParent: 1 +--- !u!1 &1159118993940860 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4790300607699990} + - component: {fileID: 33043184315017164} + - component: {fileID: 65781297915521130} + - component: {fileID: 23169601023157532} + - component: {fileID: 54233848105879872} + m_Layer: 0 + m_Name: Backpanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1251398631305346 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4440517697149476} + m_Layer: 0 + m_Name: CaptionPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1687025458477342 GameObject: m_ObjectHideFlags: 0 @@ -30,19 +64,38 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!1 &1859447626459620 +--- !u!1 &1806980022041722 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} serializedVersion: 5 m_Component: + - component: {fileID: 4532111562577858} + - component: {fileID: 114537914091800886} + - component: {fileID: 114720463534382782} + - component: {fileID: 33793527096412838} + - component: {fileID: 23348121759550618} + m_Layer: 0 + m_Name: ChaseSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1859447626459620 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: - component: {fileID: 224604559336910218} - component: {fileID: 222201781150831152} - component: {fileID: 114140823018708156} - component: {fileID: 223033226602904364} m_Layer: 5 - m_Name: TextPanel + m_Name: TextContext m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -54,14 +107,91 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1687025458477342} + m_LocalRotation: {x: 0, y: -0.043619405, z: 0, w: 0.9990483} + m_LocalPosition: {x: -0.5, y: 1.09, z: 1.4} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_Children: + - {fileID: 4532111562577858} + - {fileID: 4440517697149476} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: -5, z: 0} +--- !u!4 &4440517697149476 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1251398631305346} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 224604559336910218} - m_Father: {fileID: 0} + - {fileID: 4790300607699990} + m_Father: {fileID: 4348569316050982} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4532111562577858 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1806980022041722} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 4348569316050982} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4790300607699990 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1159118993940860} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0.001, y: 0.838, z: 0.009} + m_LocalScale: {x: 0.01, y: 0.61496276, z: 1.5883514} + m_Children: [] + m_Father: {fileID: 4440517697149476} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!23 &23169601023157532 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1159118993940860} + 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_Materials: + - {fileID: 2100000, guid: a8de2758c4b4460cae694f0d50d94fbb, 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: 1 + 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!23 &23207221420031080 MeshRenderer: m_ObjectHideFlags: 1 @@ -97,6 +227,48 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 +--- !u!23 &23348121759550618 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1806980022041722} + 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_Materials: + - {fileID: 2100000, guid: c4a1b7475a654dd0acaa0cfdfba2e20c, 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 &33043184315017164 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1159118993940860} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!33 &33654643538595078 MeshFilter: m_ObjectHideFlags: 1 @@ -104,6 +276,40 @@ MeshFilter: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1687025458477342} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &33793527096412838 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1806980022041722} + m_Mesh: {fileID: 4300000, guid: 841b5755ac02dbc439bd347f414de999, type: 3} +--- !u!54 &54233848105879872 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1159118993940860} + serializedVersion: 2 + m_Mass: 100 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 126 + m_CollisionDetection: 0 +--- !u!65 &65781297915521130 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1159118993940860} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} --- !u!114 &114140823018708156 MonoBehaviour: m_ObjectHideFlags: 1 @@ -136,7 +342,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 1 m_LineSpacing: 1 - m_Text: Label + m_Text: Chase Source --- !u!114 &114459743357777030 MonoBehaviour: m_ObjectHideFlags: 1 @@ -148,9 +354,55 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: edea428b5e02f9144b45b9fbd5ba5278, type: 3} m_Name: m_EditorClassIdentifier: - hideThisObject: {fileID: 0} - spawnThisPrefab: {fileID: 0} + hideThisObject: {fileID: 1806980022041722} + spawnThisPrefab: {fileID: 1307245229378308, guid: de99acdc648a6d945ba138103ed87328, + type: 2} updateSolverTargetToClickSource: 1 +--- !u!114 &114537914091800886 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1806980022041722} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} + m_Name: + m_EditorClassIdentifier: + handedness: 1 + trackedObjectToReference: 2 + additionalOffset: {x: 0, y: 0, z: 0} + additionalRotation: {x: 0, y: 0, z: 0} + transformTarget: {fileID: 0} + updateSolvers: 1 +--- !u!114 &114720463534382782 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1806980022041722} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} + m_Name: + m_EditorClassIdentifier: + updateLinkedTransform: 0 + moveLerpTime: 0.1 + rotateLerpTime: 0.1 + scaleLerpTime: 0 + maintainScale: 1 + smoothing: 1 + lifetime: 0 + SolverHandler: {fileID: 114537914091800886} + referenceDirection: 0 + minDistance: 0.1 + maxDistance: 0.1 + minViewDegrees: 0 + maxViewDegrees: 0 + aspectV: 1 + ignoreAngleClamp: 0 + ignoreDistanceClamp: 0 + orientToReferenceDirection: 0 --- !u!135 &135082391517649018 SphereCollider: m_ObjectHideFlags: 1 @@ -199,7 +451,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.002, y: 0.002, z: 0.002} m_Children: [] - m_Father: {fileID: 4348569316050982} + m_Father: {fileID: 4440517697149476} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} From 951712a1a8e2cea0d628d787da4b9a976a2fdf2a Mon Sep 17 00:00:00 2001 From: Eric Carter Date: Tue, 9 Oct 2018 16:33:05 -0700 Subject: [PATCH 26/98] Added an overlap solver --- .../Features/Utilities/Solvers/Overlap.cs | 20 +++++++++++++++++++ .../Utilities/Solvers/Overlap.cs.meta | 11 ++++++++++ 2 files changed, 31 insertions(+) create mode 100644 Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs create mode 100644 Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs.meta diff --git a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs new file mode 100644 index 00000000000..7875e6299ba --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.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. + +namespace Microsoft.MixedReality.Toolkit.SDK.Utilities.Solvers +{ + /// + /// Provides a solver that overlaps with the tracked object. + /// + public class Overlap : Solver + { + public override void SolverUpdate() + { + GoalPosition = SolverHandler.TransformTarget.position; + GoalRotation = SolverHandler.TransformTarget.rotation; + + UpdateWorkingPositionToGoal(); + UpdateWorkingRotationToGoal(); + } + } +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs.meta b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs.meta new file mode 100644 index 00000000000..ab3145c1cba --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 97026b56b4e804b468b8d53af13e3c3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From e6cef69907c08c54d0b41430949a9b5126907a76 Mon Sep 17 00:00:00 2001 From: Eric Carter Date: Tue, 9 Oct 2018 16:41:46 -0700 Subject: [PATCH 27/98] script icon --- .../Features/Utilities/Solvers/Overlap.cs.meta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs.meta b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs.meta index ab3145c1cba..96b84efd490 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs.meta +++ b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/Overlap.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} userData: assetBundleName: assetBundleVariant: From ac88a3ba34bdfcdd6045399fe2f26855937312e2 Mon Sep 17 00:00:00 2001 From: "David Kline (ANALOG)" Date: Wed, 10 Oct 2018 10:07:38 -0700 Subject: [PATCH 28/98] add solver spheres to cylindrical obj collection --- .../Demos/Solvers/Scenes/Solvers.unity | 252 +++++++++++++----- 1 file changed, 179 insertions(+), 73 deletions(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity index 40cefa8cc0b..e302caf00f3 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity @@ -118,39 +118,39 @@ Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1785427622} m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 2 + value: 1.2141435 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y - value: 1.09 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.1 + value: 2.7433293 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0.17364816 + value: 0.20682955 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.9848078 + value: 0.978377 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder - value: 7 + value: 6 objectReference: {fileID: 0} - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Name @@ -212,6 +212,18 @@ Prefab: propertyPath: hideThisObject value: objectReference: {fileID: 1954249921} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalScale.x + value: 0.24999997 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalScale.z + value: 0.24999997 + objectReference: {fileID: 0} + - target: {fileID: 4440517697149476, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -306,7 +318,7 @@ Transform: m_Children: - {fileID: 624307635} m_Father: {fileID: 0} - m_RootOrder: 11 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &126281608 stripped Transform: @@ -466,7 +478,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 9 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &414803422 GameObject: @@ -733,39 +745,39 @@ Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1785427622} m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 2.5 + value: 1.6524272 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y - value: 1.09 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1 + value: 2.5038939 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0.2164396 + value: 0.2875489 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.97629607 + value: 0.95776594 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder - value: 8 + value: 7 objectReference: {fileID: 0} - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Name @@ -836,6 +848,10 @@ Prefab: propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} + - target: {fileID: 4440517697149476, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -1141,35 +1157,35 @@ Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1785427622} m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: -0.5 + value: -1.2141435 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y - value: 1.09 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.4 + value: 2.7433293 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: -0.043619405 + value: -0.20682955 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.9990483 + value: 0.978377 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder @@ -1235,6 +1251,10 @@ Prefab: propertyPath: m_LocalEulerAnglesHint.y value: -5 objectReference: {fileID: 0} + - target: {fileID: 4440517697149476, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -1545,39 +1565,39 @@ Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1785427622} m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 1.5 + value: 0.7422119 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y - value: 1.09 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.2 + value: 2.9067373 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0.13052616 + value: 0.12467475 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.9914449 + value: 0.9921977 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder - value: 6 + value: 5 objectReference: {fileID: 0} - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Name @@ -1644,6 +1664,10 @@ Prefab: propertyPath: updateSolverTargetToClickSource value: 0 objectReference: {fileID: 0} + - target: {fileID: 4440517697149476, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -1752,39 +1776,39 @@ Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1785427622} m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 1 + value: 0.24971074 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y - value: 1.09 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.3 + value: 2.9895895 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0.08715578 + value: 0.04165461 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.9961947 + value: 0.9991321 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder - value: 5 + value: 4 objectReference: {fileID: 0} - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Name @@ -1851,6 +1875,18 @@ Prefab: propertyPath: updateSolverTargetToClickSource value: 0 objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalScale.x + value: 0.24999997 + objectReference: {fileID: 0} + - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_LocalScale.z + value: 0.24999997 + objectReference: {fileID: 0} + - target: {fileID: 4440517697149476, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -1992,35 +2028,35 @@ Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1785427622} m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 0 + value: -0.7422119 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y - value: 1.09 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.5 + value: 2.9067373 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0 + value: -0.12467475 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 1 + value: 0.9921977 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder @@ -2048,6 +2084,10 @@ Prefab: value: objectReference: {fileID: 1108371264373750, guid: 118ca9eb859ed4a42beb80e64c3380ab, type: 2} + - target: {fileID: 4440517697149476, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -2056,35 +2096,35 @@ Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1785427622} m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: 0.5 + value: -0.24971074 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y - value: 1.09 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.4 + value: 2.9895895 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: 0.043619405 + value: -0.04165461 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.9990483 + value: 0.9991321 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder @@ -2158,6 +2198,10 @@ Prefab: propertyPath: m_LocalEulerAnglesHint.y value: 5 objectReference: {fileID: 0} + - target: {fileID: 4440517697149476, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -2292,39 +2336,39 @@ Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 1785427622} m_Modifications: - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.x - value: -1 + value: -1.6524272 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.y - value: 1.09 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalPosition.z - value: 1.3 + value: 2.5038939 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.y - value: -0.13052624 + value: -0.2875489 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_LocalRotation.w - value: 0.9914449 + value: 0.95776594 objectReference: {fileID: 0} - target: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_RootOrder - value: 4 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1687025458477342, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} propertyPath: m_Name @@ -2391,6 +2435,10 @@ Prefab: value: objectReference: {fileID: 1946721682696148, guid: 57dd3f4049bf6bb4cbcd5fd64c88ecca, type: 2} + - target: {fileID: 4440517697149476, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 20761d7153c2c724a8739c1ebac24bea, type: 2} m_IsPrefabParent: 0 @@ -2479,6 +2527,64 @@ Transform: m_Father: {fileID: 2030299620} m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: -0.05, z: 0} +--- !u!1 &1785427620 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1785427622} + - component: {fileID: 1785427621} + m_Layer: 0 + m_Name: SolverCollection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1785427621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1785427620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf12ee76e7e00a44a9a84256760020e6, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreInactiveTransforms: 1 + sortType: 1 + surfaceType: 0 + orientType: 1 + layout: 0 + radius: 3 + radialRange: 180 + rows: 1 + cellWidth: 0.5 + cellHeight: 0.5 +--- !u!4 &1785427622 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1785427620} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.4, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1262663726} + - {fileID: 2061190545} + - {fileID: 2102116491} + - {fileID: 684894276} + - {fileID: 726208197} + - {fileID: 1054748776} + - {fileID: 1835088801} + - {fileID: 126281608} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &1835088801 stripped Transform: m_PrefabParentObject: {fileID: 4348569316050982, guid: 20761d7153c2c724a8739c1ebac24bea, @@ -2675,7 +2781,7 @@ Transform: - {fileID: 499646163} - {fileID: 159833616} m_Father: {fileID: 0} - m_RootOrder: 10 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &2061190545 stripped Transform: @@ -2719,7 +2825,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} propertyPath: m_RootOrder - value: 12 + value: 4 objectReference: {fileID: 0} - target: {fileID: 4753320988497866, guid: a900c08743a94c328074df8bbe3eb63c, type: 2} propertyPath: m_LocalEulerAnglesHint.y From bab5498f9221f863eb88fdbb6e886774baf30635 Mon Sep 17 00:00:00 2001 From: Andrew Hall Date: Wed, 10 Oct 2018 11:25:12 -0700 Subject: [PATCH 29/98] Fix dotnet runtime for UWP --- .../Features/Diagnostics/CpuUseTracker.cs | 12 ++++++++++-- .../Features/Diagnostics/MemoryUseTracker.cs | 12 ------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/CpuUseTracker.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/CpuUseTracker.cs index 6461c8db7c6..2565924d07d 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/CpuUseTracker.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/CpuUseTracker.cs @@ -10,9 +10,12 @@ namespace Microsoft.MixedReality.Toolkit.SDK.DiagnosticsSystem internal class CpuUseTracker { private TimeSpan? processorTime; - private Process currentProcess = Process.GetCurrentProcess(); private TimeSpan[] readings = new TimeSpan[20]; - int index = 0; + private int index = 0; + +#if !WINDOWS_UWP || ENABLE_IL2CPP + private Process currentProcess = Process.GetCurrentProcess(); +#endif public void Reset() { @@ -21,6 +24,10 @@ public void Reset() public double GetReadingInMs() { +#if WINDOWS_UWP && !ENABLE_IL2CPP + // UWP doesn't support process with dotnet runtime, so we can't get CPU readings with the current pattern. + return -1; +#else if (!processorTime.HasValue) { processorTime = currentProcess.TotalProcessorTime; @@ -35,6 +42,7 @@ public double GetReadingInMs() index = (index + 1) % readings.Length; return Math.Round(readings.Average(t => t.TotalMilliseconds), 2); +#endif } } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MemoryUseTracker.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MemoryUseTracker.cs index 82f5ec13056..60d4dce9a97 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MemoryUseTracker.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MemoryUseTracker.cs @@ -9,7 +9,6 @@ namespace Microsoft.MixedReality.Toolkit.SDK.DiagnosticsSystem { internal class MemoryUseTracker { - private Process currentProcess = Process.GetCurrentProcess(); private readonly MemoryReading[] memoryReadings; private int index = 0; @@ -29,9 +28,6 @@ public MemoryUseTracker() public MemoryReading GetReading() { var reading = memoryReadings[index]; - - reading.VirtualMemoryInBytes = currentProcess.VirtualMemorySize64; - reading.WorkingSetMemoryInBytes = currentProcess.WorkingSet64; reading.GCMemoryInBytes = GC.GetTotalMemory(false); index = (index + 1) % memoryReadings.Length; @@ -41,14 +37,10 @@ public MemoryReading GetReading() public struct MemoryReading { - public long VirtualMemoryInBytes { get; set; } - public long WorkingSetMemoryInBytes { get; set; } public long GCMemoryInBytes { get; set; } public MemoryReading Reset() { - VirtualMemoryInBytes = 0; - WorkingSetMemoryInBytes = 0; GCMemoryInBytes = 0; return this; @@ -56,8 +48,6 @@ public MemoryReading Reset() public static MemoryReading operator +(MemoryReading a, MemoryReading b) { - a.VirtualMemoryInBytes += b.VirtualMemoryInBytes; - a.WorkingSetMemoryInBytes += b.WorkingSetMemoryInBytes; a.GCMemoryInBytes += b.GCMemoryInBytes; return a; @@ -65,8 +55,6 @@ public MemoryReading Reset() public static MemoryReading operator /(MemoryReading a, int b) { - a.VirtualMemoryInBytes /= b; - a.WorkingSetMemoryInBytes /= b; a.GCMemoryInBytes /= b; return a; From 8f0c76f73e675826c356efb7ec1698d2b5a4f44e Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Thu, 11 Oct 2018 20:06:42 -0700 Subject: [PATCH 30/98] Made sure Windows Speech Input's event data was raised by gaze, as Focused Object is determined by the event's input source. Updated SpeechInputHandler to only check if speech commands profile was null instead of if the speech commands were enabled. --- .../Input/Handlers/SpeechInputHandlerInspector.cs | 8 +++++++- .../Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index 8f62ed64aa5..1ffd3a18dc4 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -49,6 +49,12 @@ public override void OnInspectorGUI() return; } + if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile == null) + { + EditorGUILayout.HelpBox("No Speech Commands Profile Found, be sure to specify a profile in the Input System's configuration profile.", MessageType.Error); + return; + } + if (registeredKeywords == null || registeredKeywords.Length == 0) { registeredKeywords = RegisteredKeywords().Distinct().ToArray(); @@ -151,7 +157,7 @@ private void ShowList(SerializedProperty list) private static IEnumerable RegisteredKeywords() { if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled || - !MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.IsSpeechCommandsEnabled || + MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile == null || MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length == 0) { yield break; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs index 24b8fe2ae7d..b6193fb8893 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs @@ -121,7 +121,7 @@ private void OnPhraseRecognized(ConfidenceLevel confidence, TimeSpan phraseDurat { if (Commands[i].Keyword == text) { - MixedRealityManager.InputSystem.RaiseSpeechCommandRecognized(InputSource, Commands[i].Action, (RecognitionConfidenceLevel)confidence, phraseDuration, phraseStartTime, text); + MixedRealityManager.InputSystem.RaiseSpeechCommandRecognized(MixedRealityManager.InputSystem.GazeProvider.GazeInputSource, Commands[i].Action, (RecognitionConfidenceLevel)confidence, phraseDuration, phraseStartTime, text); break; } } From b9ee5adc494f6a253df565e6c6e3e9faf1ec07ea Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Thu, 11 Oct 2018 21:31:27 -0700 Subject: [PATCH 31/98] added an error warning to the speech input handler if a previously registered keyword is not in the speech command profile --- .../Handlers/SpeechInputHandlerInspector.cs | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index 1ffd3a18dc4..b86238f31f6 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -105,9 +105,9 @@ private void ShowList(SerializedProperty list) for (int index = 0; index < list.arraySize; index++) { // the element - SerializedProperty elementProperty = list.GetArrayElementAtIndex(index); + SerializedProperty speechCommandProperty = list.GetArrayElementAtIndex(index); EditorGUILayout.BeginHorizontal(); - bool elementExpanded = EditorGUILayout.PropertyField(elementProperty); + bool elementExpanded = EditorGUILayout.PropertyField(speechCommandProperty); GUILayout.FlexibleSpace(); // the remove element button bool elementRemoved = GUILayout.Button(RemoveButtonContent, EditorStyles.miniButton, MiniButtonWidth); @@ -119,9 +119,25 @@ private void ShowList(SerializedProperty list) EditorGUILayout.EndHorizontal(); + SerializedProperty keywordProperty = speechCommandProperty.FindPropertyRelative("keyword"); + + bool invalidKeyword = true; + foreach (string keyword in registeredKeywords) + { + if (keyword == keywordProperty.stringValue) + { + invalidKeyword = false; + break; + } + } + + if (invalidKeyword) + { + EditorGUILayout.HelpBox("Registered keyword is not recognized in the speech command profile!", MessageType.Error); + } + if (!elementRemoved && elementExpanded) { - SerializedProperty keywordProperty = elementProperty.FindPropertyRelative("keyword"); 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); @@ -131,7 +147,7 @@ private void ShowList(SerializedProperty list) keywordProperty.stringValue = keywords[currentSelection]; } - SerializedProperty responseProperty = elementProperty.FindPropertyRelative("response"); + SerializedProperty responseProperty = speechCommandProperty.FindPropertyRelative("response"); EditorGUILayout.PropertyField(responseProperty, true); } } From 281e2ca274762e41f38ef453b16b6f69666d7903 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 13 Oct 2018 09:01:11 -0700 Subject: [PATCH 32/98] reverted change to Windows Speech Input Device Manager --- .../_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs index b6193fb8893..24b8fe2ae7d 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs @@ -121,7 +121,7 @@ private void OnPhraseRecognized(ConfidenceLevel confidence, TimeSpan phraseDurat { if (Commands[i].Keyword == text) { - MixedRealityManager.InputSystem.RaiseSpeechCommandRecognized(MixedRealityManager.InputSystem.GazeProvider.GazeInputSource, Commands[i].Action, (RecognitionConfidenceLevel)confidence, phraseDuration, phraseStartTime, text); + MixedRealityManager.InputSystem.RaiseSpeechCommandRecognized(InputSource, Commands[i].Action, (RecognitionConfidenceLevel)confidence, phraseDuration, phraseStartTime, text); break; } } From 04d0f9437ceba7afc2d888597b3f50a59cd802b7 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 13 Oct 2018 10:02:37 -0700 Subject: [PATCH 33/98] Removed eventData methods for getting focus data. Users should instead iterate over the event data's pointers and call on the focus providers pointer methods for focus data. --- .../Features/Input/FocusProvider.cs | 46 ------------------- .../Input/Handlers/DragAndDropHandler.cs | 2 +- .../Input/MixedRealityInputManager.cs | 46 +++++++++++-------- .../InputSystem/IMixedRealityFocusProvider.cs | 26 +---------- 4 files changed, 29 insertions(+), 91 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs index b3fa7076a4f..a7868643cc5 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs @@ -252,52 +252,6 @@ private void Update() #endregion MonoBehaviour Implementation - #region Focus Details by EventData - - /// - public GameObject GetFocusedObject(BaseInputEventData eventData) - { - Debug.Assert(eventData != null); - if (OverrideFocusedObject != null) { return OverrideFocusedObject; } - - IMixedRealityPointer pointer; - return TryGetPointingSource(eventData, out pointer) ? GetFocusedObject(pointer) : null; - } - - /// - public bool TryGetFocusDetails(BaseInputEventData eventData, out FocusDetails focusDetails) - { - foreach (var pointerData in pointers) - { - if (pointerData.Pointer.InputSourceParent.SourceId == eventData.SourceId) - { - focusDetails = pointerData.Details; - return true; - } - } - - focusDetails = default(FocusDetails); - return false; - } - - /// - public bool TryGetPointingSource(BaseInputEventData eventData, out IMixedRealityPointer pointer) - { - foreach (var pointerData in pointers) - { - if (pointerData.Pointer.InputSourceParent.SourceId == eventData.SourceId) - { - pointer = pointerData.Pointer; - return true; - } - } - - pointer = null; - return false; - } - - #endregion Focus Details by EventData - #region Focus Details by IMixedRealityPointer /// diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs index c26e80cb55e..368ac01febd 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs @@ -135,7 +135,7 @@ void IMixedRealityPointerHandler.OnPointerDown(MixedRealityPointerEventData even currentPointer = eventData.Pointer; FocusDetails focusDetails; - Vector3 initialDraggingPosition = MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(eventData, out focusDetails) + Vector3 initialDraggingPosition = MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(eventData.Pointer, out focusDetails) ? focusDetails.Point : hostTransform.position; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index 9e027564095..c5bd36d4bfb 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -275,37 +275,43 @@ public override void HandleEvent(BaseEventData eventData, ExecuteEvents.Event return; } - GameObject focusedObject = FocusProvider?.GetFocusedObject(baseInputEventData); + Debug.Assert(baseInputEventData.InputSource.Pointers != null, $"InputSource {baseInputEventData.InputSource.SourceName} doesn't have any registered pointers! Input Sources without pointers should use the GazeProvider's pointer as a default fallback."); - // Handle modal input if one exists - if (modalInputStack.Count > 0) + // Get the focused object for each pointer of the event source + for (int i = 0; i < baseInputEventData.InputSource.Pointers.Length; i++) { - GameObject modalInput = modalInputStack.Peek(); + GameObject focusedObject = FocusProvider?.GetFocusedObject(baseInputEventData.InputSource.Pointers[i]); - // If there is a focused object in the hierarchy of the modal handler, start the event bubble there - if (focusedObject != null && modalInput != null && focusedObject.transform.IsChildOf(modalInput.transform)) + // Handle modal input if one exists + if (modalInputStack.Count > 0) { - if (ExecuteEvents.ExecuteHierarchy(focusedObject, baseInputEventData, eventHandler) && baseInputEventData.used) + GameObject modalInput = modalInputStack.Peek(); + + // If there is a focused object in the hierarchy of the modal handler, start the event bubble there + if (focusedObject != null && modalInput != null && focusedObject.transform.IsChildOf(modalInput.transform)) { - return; + if (ExecuteEvents.ExecuteHierarchy(focusedObject, baseInputEventData, eventHandler) && baseInputEventData.used) + { + return; + } } - } - // Otherwise, just invoke the event on the modal handler itself - else - { - if (ExecuteEvents.ExecuteHierarchy(modalInput, baseInputEventData, eventHandler) && baseInputEventData.used) + // Otherwise, just invoke the event on the modal handler itself + else { - return; + if (ExecuteEvents.ExecuteHierarchy(modalInput, baseInputEventData, eventHandler) && baseInputEventData.used) + { + return; + } } } - } - // If event was not handled by modal, pass it on to the current focused object - if (focusedObject != null) - { - if (ExecuteEvents.ExecuteHierarchy(focusedObject, baseInputEventData, eventHandler) && baseInputEventData.used) + // If event was not handled by modal, pass it on to the current focused object + if (focusedObject != null) { - return; + if (ExecuteEvents.ExecuteHierarchy(focusedObject, baseInputEventData, eventHandler) && baseInputEventData.used) + { + return; + } } } diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.cs index 754e3ea3eed..0fe1c2e4d01 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.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 Microsoft.MixedReality.Toolkit.Core.Definitions.Physics; using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; @@ -31,29 +32,6 @@ public interface IMixedRealityFocusProvider : IMixedRealitySourceStateHandler /// GameObject OverrideFocusedObject { get; set; } - /// - /// Gets the currently focused object based on specified the event data. - /// - /// - /// Currently focused for the events input source. - GameObject GetFocusedObject(BaseInputEventData eventData); - - /// - /// Try to get the focus details based on the specified event data. - /// - /// - /// - /// True, if event data pointer input source is registered. - bool TryGetFocusDetails(BaseInputEventData eventData, out FocusDetails focusDetails); - - /// - /// Try to get the registered pointer source that raised the event. - /// - /// - /// - /// True, if event data's pointer input source is registered. - bool TryGetPointingSource(BaseInputEventData eventData, out IMixedRealityPointer pointer); - /// /// Gets the currently focused object for the pointing source. /// If the pointing source is not registered, then the Gaze's Focused is returned. @@ -73,7 +51,7 @@ public interface IMixedRealityFocusProvider : IMixedRealitySourceStateHandler /// Get the Graphic Event Data for the specified pointing source. /// /// The pointer who's graphic event data we're looking for. - /// The graphihc event data for the specified pointer + /// The graphic event data for the specified pointer /// True, if graphic event data exists. bool TryGetSpecificPointerGraphicEventData(IMixedRealityPointer pointer, out GraphicInputEventData graphicInputEventData); From ef363e9a1f8b4c7b01385dd31614d62fac72ecb1 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 13 Oct 2018 10:12:58 -0700 Subject: [PATCH 34/98] removed unused using --- .../_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.cs index 0fe1c2e4d01..413590e34b0 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/IMixedRealityFocusProvider.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.Collections.Generic; using Microsoft.MixedReality.Toolkit.Core.Definitions.Physics; using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; From 1ccef055e7a92d864461105a9ebea3ad1487cf98 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 13 Oct 2018 10:17:21 -0700 Subject: [PATCH 35/98] got rid of the editor allocations from asserts in handle event method --- .../Features/Input/MixedRealityInputManager.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index c5bd36d4bfb..f874dd8e1bb 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -262,9 +262,14 @@ public override void HandleEvent(BaseEventData eventData, ExecuteEvents.Event Debug.Assert(eventData != null); var baseInputEventData = ExecuteEvents.ValidateEventData(eventData); Debug.Assert(baseInputEventData != null); - Debug.Assert(baseInputEventData.InputSource != null, $"Failed to find an input source for {baseInputEventData}"); Debug.Assert(!baseInputEventData.used); + if (baseInputEventData.InputSource == null) + { + Debug.LogError($"Failed to find an input source for {baseInputEventData}"); + return; + } + // Send the event to global listeners base.HandleEvent(eventData, eventHandler); @@ -275,7 +280,11 @@ public override void HandleEvent(BaseEventData eventData, ExecuteEvents.Event return; } - Debug.Assert(baseInputEventData.InputSource.Pointers != null, $"InputSource {baseInputEventData.InputSource.SourceName} doesn't have any registered pointers! Input Sources without pointers should use the GazeProvider's pointer as a default fallback."); + if (baseInputEventData.InputSource.Pointers == null) + { + Debug.LogError($"InputSource {baseInputEventData.InputSource.SourceName} doesn't have any registered pointers! Input Sources without pointers should use the GazeProvider's pointer as a default fallback."); + return; + } // Get the focused object for each pointer of the event source for (int i = 0; i < baseInputEventData.InputSource.Pointers.Length; i++) From 197da069bc0d6472aca74ae82aa2f4d76570e4df Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 13 Oct 2018 10:28:05 -0700 Subject: [PATCH 36/98] Cleaned up the dictation input device manager, and removed allocations when starting/stopping recording. Also added some safely checks to ensure we're in play mode when recording. --- .../WindowsDictationInputDeviceManager.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs index 4d0ff1e8683..475a030baee 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs @@ -59,8 +59,14 @@ public WindowsDictationInputDeviceManager(string name, uint priority) : base(nam /// private AudioClip dictationAudioClip; - private DictationRecognizer dictationRecognizer; - + private static DictationRecognizer dictationRecognizer; + + private readonly WaitUntil waitUntilPhraseRecognitionSystemHasStarted = new WaitUntil(() => PhraseRecognitionSystem.Status != SpeechSystemStatus.Stopped); + private readonly WaitUntil waitUntilPhraseRecognitionSystemHasStopped = new WaitUntil(() => PhraseRecognitionSystem.Status != SpeechSystemStatus.Running); + + private readonly WaitUntil waitUntilDictationRecognizerHasStarted = new WaitUntil(() => dictationRecognizer.Status != SpeechSystemStatus.Stopped); + private readonly WaitUntil waitUntilDictationRecognizerHasStopped = new WaitUntil(() => dictationRecognizer.Status != SpeechSystemStatus.Running); + /// public override void Enable() { @@ -135,7 +141,7 @@ public async void StartRecording(GameObject listener, float initialSilenceTimeou /// public async Task StartRecordingAsync(GameObject listener = null, float initialSilenceTimeout = 5f, float autoSilenceTimeout = 20f, int recordingTime = 10, string micDeviceName = "") { - if (IsListening || isTransitioning || MixedRealityManager.InputSystem == null) + if (IsListening || isTransitioning || MixedRealityManager.InputSystem == null || !Application.isPlaying) { Debug.LogWarning("Unable to start recording"); return; @@ -156,7 +162,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS PhraseRecognitionSystem.Shutdown(); } - await new WaitUntil(() => PhraseRecognitionSystem.Status != SpeechSystemStatus.Running); + await waitUntilPhraseRecognitionSystemHasStopped; // Query the maximum frequency of the default microphone. int minSamplingRate; // Not used. @@ -167,7 +173,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS dictationRecognizer.AutoSilenceTimeoutSeconds = autoSilenceTimeout; dictationRecognizer.Start(); - await new WaitUntil(() => dictationRecognizer.Status != SpeechSystemStatus.Stopped); + await waitUntilDictationRecognizerHasStarted; if (dictationRecognizer.Status == SpeechSystemStatus.Failed) { @@ -190,7 +196,7 @@ public async void StopRecording() /// public async Task StopRecordingAsync() { - if (!IsListening || isTransitioning) + if (!IsListening || isTransitioning || !Application.isPlaying) { Debug.LogWarning("Unable to stop recording"); return null; @@ -212,11 +218,11 @@ public async Task StopRecordingAsync() dictationRecognizer.Stop(); } - await new WaitUntil(() => dictationRecognizer.Status != SpeechSystemStatus.Running); + await waitUntilDictationRecognizerHasStopped; PhraseRecognitionSystem.Restart(); - await new WaitUntil(() => PhraseRecognitionSystem.Status == SpeechSystemStatus.Running); + await waitUntilPhraseRecognitionSystemHasStarted; isTransitioning = false; return dictationAudioClip; From 7ce99250a45a2d802170dea0e85ae17a0be7c7df Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 13 Oct 2018 10:33:38 -0700 Subject: [PATCH 37/98] added asserts for system status results --- .../Devices/VoiceInput/WindowsDictationInputDeviceManager.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs index 475a030baee..2d14268c9d0 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs @@ -163,6 +163,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS } await waitUntilPhraseRecognitionSystemHasStopped; + Debug.Assert(PhraseRecognitionSystem.Status == SpeechSystemStatus.Stopped); // Query the maximum frequency of the default microphone. int minSamplingRate; // Not used. @@ -174,6 +175,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS dictationRecognizer.Start(); await waitUntilDictationRecognizerHasStarted; + Debug.Assert(dictationRecognizer.Status == SpeechSystemStatus.Running); if (dictationRecognizer.Status == SpeechSystemStatus.Failed) { @@ -219,10 +221,12 @@ public async Task StopRecordingAsync() } await waitUntilDictationRecognizerHasStopped; + Debug.Assert(dictationRecognizer.Status == SpeechSystemStatus.Stopped); PhraseRecognitionSystem.Restart(); await waitUntilPhraseRecognitionSystemHasStarted; + Debug.Assert(PhraseRecognitionSystem.Status == SpeechSystemStatus.Running); isTransitioning = false; return dictationAudioClip; From 3195af9efc69863abefcad55c4d10003588d950a Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 13 Oct 2018 19:20:13 -0700 Subject: [PATCH 38/98] Refactored Manager concept into Services --- .../Scripts/BoundaryVisualizationDemo.cs | 30 +- .../Boundary/MixedRealityBoundaryManager.cs | 42 +- .../MixedRealityDiagnosticsManager.cs | 10 +- .../Features/Input/FocusProvider.cs | 20 +- .../Features/Input/GazeProvider.cs | 10 +- .../Input/Handlers/DragAndDropHandler.cs | 6 +- .../Input/Handlers/TeleportHotSpot.cs | 6 +- .../Input/InputSystemGlobalListener.cs | 10 +- .../Input/MixedRealityInputManager.cs | 2 +- .../MixedRealityTeleportManager.cs | 6 +- .../Features/UX/Scripts/Cursors/BaseCursor.cs | 20 +- .../UX/Scripts/Cursors/CursorModifier.cs | 2 +- .../Scripts/Cursors/InteractiveMeshCursor.cs | 2 +- .../UX/Scripts/Cursors/TeleportCursor.cs | 4 +- .../Scripts/Pointers/BaseControllerPointer.cs | 20 +- .../UX/Scripts/Pointers/MousePointer.cs | 2 +- .../UX/Scripts/Pointers/TeleportPointer.cs | 14 +- .../Utilities/Solvers/ControllerFinder.cs | 4 +- .../Handlers/BaseInputHandlerInspector.cs | 2 +- .../Handlers/SpeechInputHandlerInspector.cs | 12 +- .../MixedRealityManagerTests.cs | 134 ++-- .../InputSystem/Pointers/GenericPointer.cs | 2 +- .../Sources/BaseGenericInputSource.cs | 4 +- .../MixedRealityInputSystemProfile.cs | 8 +- .../MixedRealityConfigurationProfile.cs | 19 +- .../_Core/Devices/BaseController.cs | 24 +- .../_Core/Devices/BaseDeviceManager.cs | 12 +- .../WindowsMixedRealityController.cs | 52 +- .../WindowsMixedRealityDeviceManager.cs | 42 +- .../Devices/OpenVR/GenericOpenVRController.cs | 8 +- .../Devices/OpenVR/OpenVRDeviceManager.cs | 2 +- .../UnityInput/GenericJoystickController.cs | 18 +- .../Devices/UnityInput/MouseController.cs | 24 +- .../Devices/UnityInput/MouseDeviceManager.cs | 8 +- .../UnityInput/UnityJoystickManager.cs | 8 +- .../UnityInput/UnityTouchController.cs | 44 +- .../UnityInput/UnityTouchDeviceManager.cs | 14 +- .../WindowsDictationInputDeviceManager.cs | 24 +- .../WindowsSpeechInputDeviceManager.cs | 10 +- .../_Core/Inspectors/ControllerPopupWindow.cs | 38 +- .../MixedRealityManagerInspector.cs | 8 +- .../Profiles/BaseMixedRealityInspector.cs | 8 +- ...tyBoundaryVisualizationProfileInspector.cs | 4 +- .../MixedRealityCameraProfileInspector.cs | 2 +- ...xedRealityConfigurationProfileInspector.cs | 14 +- ...ealityControllerMappingProfileInspector.cs | 12 +- ...ControllerVisualizationProfileInspector.cs | 6 +- ...ealityDiagnosticsSystemProfileInspector.cs | 2 +- .../MixedRealityGesturesProfileInspector.cs | 18 +- ...ixedRealityInputActionsProfileInspector.cs | 6 +- ...MixedRealityInputSystemProfileInspector.cs | 8 +- .../MixedRealityPointerProfileInspector.cs | 2 +- ...ityRegisteredComponentsProfileInspector.cs | 4 +- ...edRealitySpeechCommandsProfileInspector.cs | 18 +- .../InputActionPropertyDrawer.cs | 10 +- .../Utilities/CanvasEditorExtension.cs | 18 +- .../Devices/IMixedRealityDeviceManager.cs | 2 +- .../EventSystem/IMixedRealityEventSystem.cs | 2 +- .../Interfaces/IMixedRealityComponent.cs | 2 +- ...lityManager.cs => IMixedRealityService.cs} | 20 +- ...r.cs.meta => IMixedRealityService.cs.meta} | 0 .../_Core/Managers/BaseManager.cs | 52 -- .../_Core/Managers/README.md | 16 - .../_Core/{Managers.meta => Services.meta} | 0 .../BaseEventSystem.cs} | 8 +- .../BaseEventSystem.cs.meta} | 0 .../_Core/Services/BaseService.cs | 35 ++ .../BaseService.cs.meta} | 0 .../MixedRealityOrchestrator.cs} | 583 +++++++++--------- .../MixedRealityOrchestrator.cs.meta} | 0 .../_Core/Services/README.md | 10 + .../{Managers => Services}/README.md.meta | 0 .../_Core/Utilities/CanvasUtility.cs | 2 +- .../MixedRealityManagerConstruction.md | 160 ----- .../Documentation/MixedRealityServices.md | 85 +++ 75 files changed, 869 insertions(+), 967 deletions(-) rename Assets/MixedRealityToolkit/_Core/Interfaces/{IMixedRealityManager.cs => IMixedRealityService.cs} (64%) rename Assets/MixedRealityToolkit/_Core/Interfaces/{IMixedRealityManager.cs.meta => IMixedRealityService.cs.meta} (100%) delete mode 100644 Assets/MixedRealityToolkit/_Core/Managers/BaseManager.cs delete mode 100644 Assets/MixedRealityToolkit/_Core/Managers/README.md rename Assets/MixedRealityToolkit/_Core/{Managers.meta => Services.meta} (100%) rename Assets/MixedRealityToolkit/_Core/{Managers/MixedRealityEventManager.cs => Services/BaseEventSystem.cs} (89%) rename Assets/MixedRealityToolkit/_Core/{Managers/MixedRealityEventManager.cs.meta => Services/BaseEventSystem.cs.meta} (100%) create mode 100644 Assets/MixedRealityToolkit/_Core/Services/BaseService.cs rename Assets/MixedRealityToolkit/_Core/{Managers/BaseManager.cs.meta => Services/BaseService.cs.meta} (100%) rename Assets/MixedRealityToolkit/_Core/{Managers/MixedRealityManager.cs => Services/MixedRealityOrchestrator.cs} (56%) rename Assets/MixedRealityToolkit/_Core/{Managers/MixedRealityManager.cs.meta => Services/MixedRealityOrchestrator.cs.meta} (100%) create mode 100644 Assets/MixedRealityToolkit/_Core/Services/README.md rename Assets/MixedRealityToolkit/_Core/{Managers => Services}/README.md.meta (100%) delete mode 100644 External/Documentation/MixedRealityManagerConstruction.md create mode 100644 External/Documentation/MixedRealityServices.md diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs index 81df4854bc3..ce631e7a81b 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs +++ b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs @@ -42,13 +42,13 @@ private void Awake() { markerParent = new GameObject(); markerParent.name = "Boundary Demo Markers"; - markerParent.transform.parent = MixedRealityManager.Instance.MixedRealityPlayspace; + markerParent.transform.parent = MixedRealityOrchestrator.Instance.MixedRealityPlayspace; } private void Start() { - if (MixedRealityManager.BoundarySystem != null) + if (MixedRealityOrchestrator.BoundarySystem != null) { if (markers.Count == 0) { @@ -59,25 +59,25 @@ private void Start() private void Update() { - if (MixedRealityManager.BoundarySystem != null) + if (MixedRealityOrchestrator.BoundarySystem != null) { - MixedRealityManager.BoundarySystem.ShowFloor = showFloor; - MixedRealityManager.BoundarySystem.ShowPlayArea = showPlayArea; - MixedRealityManager.BoundarySystem.ShowTrackedArea = showTrackedArea; - MixedRealityManager.BoundarySystem.ShowBoundaryWalls = showBoundaryWalls; - MixedRealityManager.BoundarySystem.ShowBoundaryCeiling = showBoundaryCeiling; + MixedRealityOrchestrator.BoundarySystem.ShowFloor = showFloor; + MixedRealityOrchestrator.BoundarySystem.ShowPlayArea = showPlayArea; + MixedRealityOrchestrator.BoundarySystem.ShowTrackedArea = showTrackedArea; + MixedRealityOrchestrator.BoundarySystem.ShowBoundaryWalls = showBoundaryWalls; + MixedRealityOrchestrator.BoundarySystem.ShowBoundaryCeiling = showBoundaryCeiling; } } private async void OnEnable() { - await new WaitUntil(() => MixedRealityManager.BoundarySystem != null); - MixedRealityManager.BoundarySystem.Register(gameObject); + await new WaitUntil(() => MixedRealityOrchestrator.BoundarySystem != null); + MixedRealityOrchestrator.BoundarySystem.Register(gameObject); } private void OnDisable() { - MixedRealityManager.BoundarySystem?.Unregister(gameObject); + MixedRealityOrchestrator.BoundarySystem?.Unregister(gameObject); } #endregion MonoBehaviour Implementation @@ -104,13 +104,13 @@ private void AddMarkers() float widthRect; float heightRect; - if (!MixedRealityManager.BoundarySystem.TryGetRectangularBoundsParams(out centerRect, out angleRect, out widthRect, out heightRect)) + if (!MixedRealityOrchestrator.BoundarySystem.TryGetRectangularBoundsParams(out centerRect, out angleRect, out widthRect, out heightRect)) { // If we have no boundary manager or rectangular bounds we will show no indicators return; } - MixedRealityBoundaryVisualizationProfile visualizationProfile = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile; + MixedRealityBoundaryVisualizationProfile visualizationProfile = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile; if (visualizationProfile == null) { // We do not have a visualization profile configured, therefore do not render the indicators. @@ -135,12 +135,12 @@ private void AddMarkers() Material material = null; // Check inscribed rectangle first - if (MixedRealityManager.BoundarySystem.Contains(position, Boundary.Type.PlayArea)) + if (MixedRealityOrchestrator.BoundarySystem.Contains(position, Boundary.Type.PlayArea)) { material = visualizationProfile.PlayAreaMaterial; } // Then check geometry - else if (MixedRealityManager.BoundarySystem.Contains(position, Boundary.Type.TrackedArea)) + else if (MixedRealityOrchestrator.BoundarySystem.Contains(position, Boundary.Type.TrackedArea)) { material = visualizationProfile.TrackedAreaMaterial; } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs index d9943c240ce..a51ed9d2ede 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs @@ -19,7 +19,7 @@ namespace Microsoft.MixedReality.Toolkit.SDK.BoundarySystem /// /// The Boundary system controls the presentation and display of the users boundary in a scene. /// - public class MixedRealityBoundaryManager : MixedRealityEventManager, IMixedRealityBoundarySystem + public class MixedRealityBoundaryManager : BaseEventSystem, IMixedRealityBoundarySystem { #region IMixedRealityManager Implementation @@ -39,18 +39,18 @@ private void InitializeInternal() { boundaryEventData = new BoundaryEventData(EventSystem.current); - Scale = MixedRealityManager.Instance.ActiveProfile.TargetExperienceScale; - BoundaryHeight = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryHeight; + Scale = MixedRealityOrchestrator.Instance.ActiveProfile.TargetExperienceScale; + BoundaryHeight = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryHeight; SetTrackingSpace(); CalculateBoundaryBounds(); Boundary.visible = true; - ShowFloor = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowFloor; - ShowPlayArea = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowPlayArea; - ShowTrackedArea = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowTrackedArea; - ShowBoundaryWalls = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowBoundaryWalls; - ShowBoundaryCeiling = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowBoundaryCeiling; + ShowFloor = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowFloor; + ShowPlayArea = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowPlayArea; + ShowTrackedArea = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowTrackedArea; + ShowBoundaryWalls = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowBoundaryWalls; + ShowBoundaryCeiling = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowBoundaryCeiling; if (ShowFloor) { @@ -189,7 +189,7 @@ public override void Destroy() private GameObject CreateBoundaryVisualizationParent() { GameObject visualizationParent = new GameObject("Boundary System Visualizations"); - visualizationParent.transform.parent = MixedRealityManager.Instance.MixedRealityPlayspace; + visualizationParent.transform.parent = MixedRealityOrchestrator.Instance.MixedRealityPlayspace; return visualizationParent; } @@ -456,7 +456,7 @@ public bool Contains(Vector3 location, Boundary.Type boundaryType = Boundary.Typ } // Handle the user teleporting (boundary moves with them). - location = MixedRealityManager.Instance.MixedRealityPlayspace.InverseTransformPoint(location); + location = MixedRealityOrchestrator.Instance.MixedRealityPlayspace.InverseTransformPoint(location); if (FloorHeight.Value > location.y || BoundaryHeight < location.y) @@ -499,7 +499,7 @@ public bool TryGetRectangularBoundsParams(out Vector2 center, out float angle, o } // Handle the user teleporting (boundary moves with them). - Vector3 transformedCenter = MixedRealityManager.Instance.MixedRealityPlayspace.TransformPoint( + Vector3 transformedCenter = MixedRealityOrchestrator.Instance.MixedRealityPlayspace.TransformPoint( new Vector3(rectangularBounds.Center.x, 0f, rectangularBounds.Center.y)); center = new Vector2(transformedCenter.x, transformedCenter.z); @@ -523,17 +523,17 @@ public GameObject GetFloorVisualization() return null; } - Vector3 floorScale = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorScale; + Vector3 floorScale = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorScale; // Render the floor. currentFloorObject = GameObject.CreatePrimitive(PrimitiveType.Cube); currentFloorObject.name = "Boundary System Floor"; currentFloorObject.transform.localScale = new Vector3(floorScale.x, boundaryObjectThickness, floorScale.y); currentFloorObject.transform.Translate(new Vector3( - MixedRealityManager.Instance.MixedRealityPlayspace.position.x, + MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.x, FloorHeight.Value - (currentFloorObject.transform.localScale.y * 0.5f), - MixedRealityManager.Instance.MixedRealityPlayspace.position.z)); - currentFloorObject.GetComponent().sharedMaterial = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorMaterial; + MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.z)); + currentFloorObject.GetComponent().sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorMaterial; return currentFloorObject; } @@ -571,7 +571,7 @@ public GameObject GetPlayAreaVisualization() currentPlayAreaObject.transform.Translate(new Vector3(center.x, boundaryObjectRenderOffset, center.y)); currentPlayAreaObject.transform.Rotate(new Vector3(90, -angle, 0)); currentPlayAreaObject.transform.localScale = new Vector3(width, height, 1.0f); - currentPlayAreaObject.GetComponent().sharedMaterial = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.PlayAreaMaterial; + currentPlayAreaObject.GetComponent().sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.PlayAreaMaterial; currentPlayAreaObject.transform.parent = BoundaryVisualizationParent.transform; @@ -606,14 +606,14 @@ public GameObject GetTrackedAreaVisualization() currentTrackedAreaObject.layer = ignoreRaycastLayerValue; currentTrackedAreaObject.AddComponent(); currentTrackedAreaObject.transform.Translate(new Vector3( - MixedRealityManager.Instance.MixedRealityPlayspace.position.x, + MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.x, boundaryObjectRenderOffset, - MixedRealityManager.Instance.MixedRealityPlayspace.position.z)); + MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.z)); // Configure the renderer properties. float lineWidth = 0.01f; LineRenderer lineRenderer = currentTrackedAreaObject.GetComponent(); - lineRenderer.sharedMaterial = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.TrackedAreaMaterial; + lineRenderer.sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.TrackedAreaMaterial; lineRenderer.useWorldSpace = false; lineRenderer.startWidth = lineWidth; lineRenderer.endWidth = lineWidth; @@ -653,7 +653,7 @@ public GameObject GetBoundaryWallVisualization() { GameObject wall = GameObject.CreatePrimitive(PrimitiveType.Cube); wall.name = $"Wall {i}"; - wall.GetComponent().sharedMaterial = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryWallMaterial; + wall.GetComponent().sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryWallMaterial; wall.transform.localScale = new Vector3((Bounds[i].PointB - Bounds[i].PointA).magnitude, BoundaryHeight, wallDepth); wall.layer = ignoreRaycastLayerValue; @@ -703,7 +703,7 @@ public GameObject GetBoundaryCeilingVisualization() boundaryBoundingBox.center.x, BoundaryHeight + (currentCeilingObject.transform.localScale.y * 0.5f), boundaryBoundingBox.center.z)); - currentCeilingObject.GetComponent().sharedMaterial = MixedRealityManager.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryCeilingMaterial; + currentCeilingObject.GetComponent().sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryCeilingMaterial; currentCeilingObject.transform.parent = BoundaryVisualizationParent.transform; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs index 93891ca6a56..a4f838d756e 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs @@ -8,7 +8,7 @@ namespace Microsoft.MixedReality.Toolkit.SDK.DiagnosticsSystem { - public class MixedRealityDiagnosticsManager : MixedRealityEventManager, IMixedRealityDiagnosticsSystem + public class MixedRealityDiagnosticsManager : BaseEventSystem, IMixedRealityDiagnosticsSystem { #region IMixedRealityManager private DiagnosticsEventData eventData; @@ -24,10 +24,10 @@ private void InitializeInternal() { eventData = new DiagnosticsEventData(EventSystem.current); - Visible = MixedRealityManager.Instance.ActiveProfile.DiagnosticsSystemProfile.Visible; - ShowCpu = MixedRealityManager.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowCpu; - ShowFps = MixedRealityManager.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowFps; - ShowMemory = MixedRealityManager.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowMemory; + Visible = MixedRealityOrchestrator.Instance.ActiveProfile.DiagnosticsSystemProfile.Visible; + ShowCpu = MixedRealityOrchestrator.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowCpu; + ShowFps = MixedRealityOrchestrator.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowFps; + ShowMemory = MixedRealityOrchestrator.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowMemory; RaiseDiagnosticsChanged(); } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs index b3fa7076a4f..03af2677f1d 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs @@ -236,7 +236,7 @@ private async void Awake() await WaitUntilInputSystemValid; - foreach (var inputSource in MixedRealityManager.InputSystem.DetectedInputSources) + foreach (var inputSource in MixedRealityOrchestrator.InputSystem.DetectedInputSources) { RegisterPointers(inputSource); } @@ -244,7 +244,7 @@ private async void Awake() private void Update() { - if (MixedRealityManager.InputSystem == null) { return; } + if (MixedRealityOrchestrator.InputSystem == null) { return; } UpdatePointers(); UpdateFocusedObjects(); @@ -453,7 +453,7 @@ private void RegisterPointers(IMixedRealityInputSource inputSource) RegisterPointer(inputSource.Pointers[i]); // Special Registration for Gaze - if (inputSource.SourceId == MixedRealityManager.InputSystem.GazeProvider.GazeInputSource.SourceId && gazeProviderPointingData == null) + if (inputSource.SourceId == MixedRealityOrchestrator.InputSystem.GazeProvider.GazeInputSource.SourceId && gazeProviderPointingData == null) { gazeProviderPointingData = new PointerData(inputSource.Pointers[i]); } @@ -485,10 +485,10 @@ public bool UnregisterPointer(IMixedRealityPointer pointer) if (!objectIsStillFocusedByOtherPointer) { - MixedRealityManager.InputSystem.RaiseFocusExit(pointer, unfocusedObject); + MixedRealityOrchestrator.InputSystem.RaiseFocusExit(pointer, unfocusedObject); } - MixedRealityManager.InputSystem.RaisePreFocusChanged(pointer, unfocusedObject, null); + MixedRealityOrchestrator.InputSystem.RaisePreFocusChanged(pointer, unfocusedObject, null); } pointers.Remove(pointerData); @@ -817,21 +817,21 @@ private void UpdateFocusedObjects() GameObject pendingUnfocusObject = change.PreviousPointerTarget; GameObject pendingFocusObject = change.CurrentPointerTarget; - MixedRealityManager.InputSystem.RaisePreFocusChanged(change.Pointer, pendingUnfocusObject, pendingFocusObject); + MixedRealityOrchestrator.InputSystem.RaisePreFocusChanged(change.Pointer, pendingUnfocusObject, pendingFocusObject); if (pendingOverallFocusExitSet.Contains(pendingUnfocusObject)) { - MixedRealityManager.InputSystem.RaiseFocusExit(change.Pointer, pendingUnfocusObject); + MixedRealityOrchestrator.InputSystem.RaiseFocusExit(change.Pointer, pendingUnfocusObject); pendingOverallFocusExitSet.Remove(pendingUnfocusObject); } if (pendingOverallFocusEnterSet.Contains(pendingFocusObject)) { - MixedRealityManager.InputSystem.RaiseFocusEnter(change.Pointer, pendingFocusObject); + MixedRealityOrchestrator.InputSystem.RaiseFocusEnter(change.Pointer, pendingFocusObject); pendingOverallFocusEnterSet.Remove(pendingFocusObject); } - MixedRealityManager.InputSystem.RaiseFocusChanged(change.Pointer, pendingUnfocusObject, pendingFocusObject); + MixedRealityOrchestrator.InputSystem.RaiseFocusChanged(change.Pointer, pendingUnfocusObject, pendingFocusObject); } Debug.Assert(pendingOverallFocusExitSet.Count == 0); @@ -861,7 +861,7 @@ public void OnSourceLost(SourceStateEventData eventData) if (gazeProviderPointingData != null && eventData.InputSource.Pointers[i].PointerId == gazeProviderPointingData.Pointer.PointerId) { // If the source lost is the gaze input source, then reset it. - if (eventData.InputSource.SourceId == MixedRealityManager.InputSystem.GazeProvider.GazeInputSource.SourceId) + if (eventData.InputSource.SourceId == MixedRealityOrchestrator.InputSystem.GazeProvider.GazeInputSource.SourceId) { gazeProviderPointingData.ResetFocusedObjects(); gazeProviderPointingData = null; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs index 6ae786d1650..6004f5e9478 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs @@ -235,7 +235,7 @@ public override bool TryGetPointerRotation(out Quaternion rotation) /// Optional handedness of the source that pressed the pointer. public void RaisePointerDown(MixedRealityInputAction mixedRealityInputAction, Handedness handedness = Handedness.None) { - MixedRealityManager.InputSystem.RaisePointerDown(this, handedness, mixedRealityInputAction); + MixedRealityOrchestrator.InputSystem.RaisePointerDown(this, handedness, mixedRealityInputAction); } /// @@ -245,8 +245,8 @@ public void RaisePointerDown(MixedRealityInputAction mixedRealityInputAction, Ha /// Optional handedness of the source that released the pointer. public void RaisePointerUp(MixedRealityInputAction mixedRealityInputAction, Handedness handedness = Handedness.None) { - MixedRealityManager.InputSystem.RaisePointerClicked(this, handedness, mixedRealityInputAction, 0); - MixedRealityManager.InputSystem.RaisePointerUp(this, handedness, mixedRealityInputAction); + MixedRealityOrchestrator.InputSystem.RaisePointerClicked(this, handedness, mixedRealityInputAction, 0); + MixedRealityOrchestrator.InputSystem.RaisePointerUp(this, handedness, mixedRealityInputAction); } } @@ -342,7 +342,7 @@ protected override void OnDisable() { base.OnDisable(); GazePointer.BaseCursor?.SetVisibility(false); - MixedRealityManager.InputSystem?.RaiseSourceLost(GazeInputSource); + MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(GazeInputSource); } #endregion MonoBehaviour Implementation @@ -395,7 +395,7 @@ private IMixedRealityPointer InitializeGazePointer() private async void RaiseSourceDetected() { await WaitUntilInputSystemValid; - MixedRealityManager.InputSystem.RaiseSourceDetected(GazeInputSource); + MixedRealityOrchestrator.InputSystem.RaiseSourceDetected(GazeInputSource); GazePointer.BaseCursor?.SetVisibility(true); } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs index c26e80cb55e..ddbd4d14f3a 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs @@ -135,7 +135,7 @@ void IMixedRealityPointerHandler.OnPointerDown(MixedRealityPointerEventData even currentPointer = eventData.Pointer; FocusDetails focusDetails; - Vector3 initialDraggingPosition = MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(eventData, out focusDetails) + Vector3 initialDraggingPosition = MixedRealityOrchestrator.InputSystem.FocusProvider.TryGetFocusDetails(eventData, out focusDetails) ? focusDetails.Point : hostTransform.position; @@ -201,7 +201,7 @@ private void StartDragging(Vector3 initialDraggingPosition) // TODO: robertes: Fix push/pop and single-handler model so that multiple HandDraggable components can be active at once. // Add self as a modal input handler, to get all inputs during the manipulation - MixedRealityManager.InputSystem.PushModalInputHandler(gameObject); + MixedRealityOrchestrator.InputSystem.PushModalInputHandler(gameObject); isDragging = true; @@ -327,7 +327,7 @@ private void StopDragging() } // Remove self as a modal input handler - MixedRealityManager.InputSystem.PopModalInputHandler(); + MixedRealityOrchestrator.InputSystem.PopModalInputHandler(); isDragging = false; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs index 9412831926c..800e35f0e02 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs @@ -30,8 +30,8 @@ public override void OnBeforeFocusChange(FocusEventData eventData) if (eventData.Pointer.IsInteractionEnabled) { - MixedRealityManager.TeleportSystem?.RaiseTeleportCanceled(eventData.Pointer, this); - MixedRealityManager.TeleportSystem?.RaiseTeleportRequest(eventData.Pointer, this); + MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportCanceled(eventData.Pointer, this); + MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportRequest(eventData.Pointer, this); } } else if (eventData.OldFocusedObject == gameObject) @@ -40,7 +40,7 @@ public override void OnBeforeFocusChange(FocusEventData eventData) if (eventData.Pointer.IsInteractionEnabled) { - MixedRealityManager.TeleportSystem?.RaiseTeleportCanceled(eventData.Pointer, this); + MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportCanceled(eventData.Pointer, this); } } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs index 4e14fbdcb25..9f9d5baa088 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs @@ -14,13 +14,13 @@ public class InputSystemGlobalListener : MonoBehaviour { private bool lateInitialize = true; - protected readonly WaitUntil WaitUntilInputSystemValid = new WaitUntil(() => MixedRealityManager.InputSystem != null); + protected readonly WaitUntil WaitUntilInputSystemValid = new WaitUntil(() => MixedRealityOrchestrator.InputSystem != null); protected virtual void OnEnable() { - if (MixedRealityManager.IsInitialized && MixedRealityManager.InputSystem != null && !lateInitialize) + if (MixedRealityOrchestrator.IsInitialized && MixedRealityOrchestrator.InputSystem != null && !lateInitialize) { - MixedRealityManager.InputSystem.Register(gameObject); + MixedRealityOrchestrator.InputSystem.Register(gameObject); } } @@ -30,13 +30,13 @@ protected virtual async void Start() { await WaitUntilInputSystemValid; lateInitialize = false; - MixedRealityManager.InputSystem.Register(gameObject); + MixedRealityOrchestrator.InputSystem.Register(gameObject); } } protected virtual void OnDisable() { - MixedRealityManager.InputSystem?.Unregister(gameObject); + MixedRealityOrchestrator.InputSystem?.Unregister(gameObject); } } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index 9e027564095..a14c38b4f4f 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -22,7 +22,7 @@ namespace Microsoft.MixedReality.Toolkit.SDK.Input /// /// The Mixed Reality Toolkit's specific implementation of the /// - public class MixedRealityInputManager : MixedRealityEventManager, IMixedRealityInputSystem + public class MixedRealityInputManager : BaseEventSystem, IMixedRealityInputSystem { /// public event Action InputEnabled; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs index 468a511bb81..242e3d55894 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs @@ -14,7 +14,7 @@ namespace Microsoft.MixedReality.Toolkit.SDK.Teleportation /// /// The Mixed Reality Toolkit's specific implementation of the /// - public class MixedRealityTeleportManager : MixedRealityEventManager, IMixedRealityTeleportSystem + public class MixedRealityTeleportManager : BaseEventSystem, IMixedRealityTeleportSystem { private TeleportEventData teleportEventData; @@ -47,7 +47,7 @@ private void InitializeInternal() if (eventSystems.Length == 0) { - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { eventSystemReference = new GameObject("Event System"); eventSystemReference.AddComponent(); @@ -237,7 +237,7 @@ private void ProcessTeleportationRequest(TeleportEventData eventData) { isProcessingTeleportRequest = true; - var cameraParent = MixedRealityManager.Instance.MixedRealityPlayspace; + var cameraParent = MixedRealityOrchestrator.Instance.MixedRealityPlayspace; targetRotation = Vector3.zero; targetRotation.y = eventData.Pointer.PointerOrientation; diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs index c811d99d281..8df189081ec 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs @@ -263,10 +263,10 @@ private void OnDestroy() protected virtual void RegisterManagers() { // Register the cursor as a listener, so that it can always get input events it cares about - MixedRealityManager.InputSystem.Register(gameObject); + MixedRealityOrchestrator.InputSystem.Register(gameObject); // Setup the cursor to be able to respond to input being globally enabled / disabled - if (MixedRealityManager.InputSystem.IsInputEnabled) + if (MixedRealityOrchestrator.InputSystem.IsInputEnabled) { OnInputEnabled(); } @@ -275,8 +275,8 @@ protected virtual void RegisterManagers() OnInputDisabled(); } - MixedRealityManager.InputSystem.InputEnabled += OnInputEnabled; - MixedRealityManager.InputSystem.InputDisabled += OnInputDisabled; + MixedRealityOrchestrator.InputSystem.InputEnabled += OnInputEnabled; + MixedRealityOrchestrator.InputSystem.InputDisabled += OnInputDisabled; } /// @@ -284,9 +284,9 @@ protected virtual void RegisterManagers() /// protected virtual void UnregisterManagers() { - MixedRealityManager.InputSystem.InputEnabled -= OnInputEnabled; - MixedRealityManager.InputSystem.InputDisabled -= OnInputDisabled; - MixedRealityManager.InputSystem.Unregister(gameObject); + MixedRealityOrchestrator.InputSystem.InputEnabled -= OnInputEnabled; + MixedRealityOrchestrator.InputSystem.InputDisabled -= OnInputDisabled; + MixedRealityOrchestrator.InputSystem.Unregister(gameObject); } /// @@ -302,9 +302,9 @@ protected virtual void UpdateCursorTransform() FocusDetails focusDetails; - if (!MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(Pointer, out focusDetails)) + if (!MixedRealityOrchestrator.InputSystem.FocusProvider.TryGetFocusDetails(Pointer, out focusDetails)) { - if (MixedRealityManager.InputSystem.FocusProvider.IsPointerRegistered(Pointer)) + if (MixedRealityOrchestrator.InputSystem.FocusProvider.IsPointerRegistered(Pointer)) { Debug.LogError($"{name}: Unable to get focus details for {pointer.GetType().Name}!"); } @@ -312,7 +312,7 @@ protected virtual void UpdateCursorTransform() return; } - GameObject newTargetedObject = MixedRealityManager.InputSystem.FocusProvider.GetFocusedObject(Pointer); + GameObject newTargetedObject = MixedRealityOrchestrator.InputSystem.FocusProvider.GetFocusedObject(Pointer); Vector3 lookForward; // Normalize scale on before update diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs index fbfd5d4b4a1..67a24008875 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs @@ -165,7 +165,7 @@ public Vector3 GetModifiedPosition(IMixedRealityCursor cursor) } FocusDetails focusDetails; - if (MixedRealityManager.InputSystem != null && MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(cursor.Pointer, out focusDetails)) + if (MixedRealityOrchestrator.InputSystem != null && MixedRealityOrchestrator.InputSystem.FocusProvider.TryGetFocusDetails(cursor.Pointer, out focusDetails)) { // Else, consider the modifiers on the cursor modifier, but don't snap return focusDetails.Point + HostTransform.TransformVector(CursorPositionOffset); diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs index 9e59421c3f3..b7674108d77 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs @@ -142,7 +142,7 @@ protected override void UpdateCursorTransform() } // handle scale of main cursor go - float distance = Vector3.Distance(MixedRealityManager.InputSystem.GazeProvider.GazeOrigin, transform.position); + float distance = Vector3.Distance(MixedRealityOrchestrator.InputSystem.GazeProvider.GazeOrigin, transform.position); float smoothScaling = 1 - DefaultCursorDistance * distanceScaleFactor; transform.localScale = initialScale * (distance * distanceScaleFactor + smoothScaling); } diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs index 9546eef8217..2a20d511fd9 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs @@ -90,9 +90,9 @@ protected override void UpdateCursorTransform() FocusDetails focusDetails; - if (!MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(Pointer, out focusDetails)) + if (!MixedRealityOrchestrator.InputSystem.FocusProvider.TryGetFocusDetails(Pointer, out focusDetails)) { - Debug.LogError(MixedRealityManager.InputSystem.FocusProvider.IsPointerRegistered(Pointer) + Debug.LogError(MixedRealityOrchestrator.InputSystem.FocusProvider.IsPointerRegistered(Pointer) ? $"{gameObject.name}: Unable to get focus details for {pointer.GetType().Name}!" : $"{pointer.GetType().Name} has not been registered!"); SetVisibility(false); diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs index 8820abd3fa2..18087af9d7f 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs @@ -127,9 +127,9 @@ protected override void OnEnable() { base.OnEnable(); - if (MixedRealityManager.IsInitialized && MixedRealityManager.TeleportSystem != null && !lateRegisterTeleport) + if (MixedRealityOrchestrator.IsInitialized && MixedRealityOrchestrator.TeleportSystem != null && !lateRegisterTeleport) { - MixedRealityManager.TeleportSystem.Register(gameObject); + MixedRealityOrchestrator.TeleportSystem.Register(gameObject); } } @@ -139,9 +139,9 @@ protected override async void Start() if (lateRegisterTeleport) { - await new WaitUntil(() => MixedRealityManager.TeleportSystem != null); + await new WaitUntil(() => MixedRealityOrchestrator.TeleportSystem != null); lateRegisterTeleport = false; - MixedRealityManager.TeleportSystem.Register(gameObject); + MixedRealityOrchestrator.TeleportSystem.Register(gameObject); } await WaitUntilInputSystemValid; @@ -151,7 +151,7 @@ protected override async void Start() protected override void OnDisable() { base.OnDisable(); - MixedRealityManager.TeleportSystem?.Unregister(gameObject); + MixedRealityOrchestrator.TeleportSystem?.Unregister(gameObject); IsHoldPressed = false; IsSelectPressed = false; @@ -183,7 +183,7 @@ public uint PointerId { if (pointerId == 0) { - pointerId = MixedRealityManager.InputSystem.FocusProvider.GenerateNewPointerId(); + pointerId = MixedRealityOrchestrator.InputSystem.FocusProvider.GenerateNewPointerId(); } return pointerId; @@ -245,7 +245,7 @@ public virtual bool IsInteractionEnabled /// public float PointerExtent { - get { return overrideGlobalPointerExtent ? MixedRealityManager.InputSystem.FocusProvider.GlobalPointingExtent : pointerExtent; } + get { return overrideGlobalPointerExtent ? MixedRealityOrchestrator.InputSystem.FocusProvider.GlobalPointingExtent : pointerExtent; } set { pointerExtent = value; } } @@ -391,8 +391,8 @@ public override void OnInputUp(InputEventData eventData) if (eventData.MixedRealityInputAction == pointerAction) { IsSelectPressed = false; - MixedRealityManager.InputSystem.RaisePointerClicked(this, Handedness, pointerAction, 0); - MixedRealityManager.InputSystem.RaisePointerUp(this, Handedness, pointerAction); + MixedRealityOrchestrator.InputSystem.RaisePointerClicked(this, Handedness, pointerAction, 0); + MixedRealityOrchestrator.InputSystem.RaisePointerUp(this, Handedness, pointerAction); } } } @@ -413,7 +413,7 @@ public override void OnInputDown(InputEventData eventData) { IsSelectPressed = true; HasSelectPressedOnce = true; - MixedRealityManager.InputSystem.RaisePointerDown(this, Handedness, pointerAction); + MixedRealityOrchestrator.InputSystem.RaisePointerDown(this, Handedness, pointerAction); } } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs index 117778e4af5..e48e34e8f07 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs @@ -102,7 +102,7 @@ protected override void Start() RayStabilizer = null; } - foreach (var inputSource in MixedRealityManager.InputSystem.DetectedInputSources) + foreach (var inputSource in MixedRealityOrchestrator.InputSystem.DetectedInputSources) { if (inputSource.SourceId == Controller.InputSource.SourceId) { diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs index 254c71b6b49..4f6cbb4008e 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs @@ -278,7 +278,7 @@ public override void OnPositionInputChanged(InputEventData eventData) { teleportEnabled = true; - MixedRealityManager.TeleportSystem?.RaiseTeleportRequest(this, TeleportHotSpot); + MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportRequest(this, TeleportHotSpot); } else if (canMove) { @@ -303,7 +303,7 @@ public override void OnPositionInputChanged(InputEventData eventData) { canMove = false; // Rotate the camera by the rotation amount. If our angle is positive then rotate in the positive direction, otherwise in the opposite direction. - MixedRealityManager.Instance.MixedRealityPlayspace.RotateAround(CameraCache.Main.transform.position, Vector3.up, angle >= 0.0f ? rotationAmount : -rotationAmount); + MixedRealityOrchestrator.Instance.MixedRealityPlayspace.RotateAround(CameraCache.Main.transform.position, Vector3.up, angle >= 0.0f ? rotationAmount : -rotationAmount); } else // We may be trying to strafe backwards. { @@ -317,10 +317,10 @@ public override void OnPositionInputChanged(InputEventData eventData) if (offsetStrafeAngle > 0 && offsetStrafeAngle < backStrafeActivationAngle) { canMove = false; - var height = MixedRealityManager.Instance.MixedRealityPlayspace.position.y; - var newPosition = -CameraCache.Main.transform.forward * strafeAmount + MixedRealityManager.Instance.MixedRealityPlayspace.position; + var height = MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.y; + var newPosition = -CameraCache.Main.transform.forward * strafeAmount + MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position; newPosition.y = height; - MixedRealityManager.Instance.MixedRealityPlayspace.position = newPosition; + MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position = newPosition; } } } @@ -344,7 +344,7 @@ public override void OnPositionInputChanged(InputEventData eventData) if (TeleportSurfaceResult == TeleportSurfaceResult.Valid || TeleportSurfaceResult == TeleportSurfaceResult.HotSpot) { - MixedRealityManager.TeleportSystem?.RaiseTeleportStarted(this, TeleportHotSpot); + MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportStarted(this, TeleportHotSpot); } } @@ -352,7 +352,7 @@ public override void OnPositionInputChanged(InputEventData eventData) { canTeleport = false; teleportEnabled = false; - MixedRealityManager.TeleportSystem?.RaiseTeleportCanceled(this, TeleportHotSpot); + MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportCanceled(this, TeleportHotSpot); } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs index 9aa11f682d4..83a5f1e1437 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs @@ -78,13 +78,13 @@ protected virtual void TryAndAddControllerTransform() { // Look if the controller was already loaded. This could happen if the // GameObject was instantiated at runtime and the model loaded event has already fired. - if (MixedRealityManager.InputSystem == null) + if (MixedRealityOrchestrator.InputSystem == null) { // The InputSystem could not be found. return; } - foreach (IMixedRealityController controller in MixedRealityManager.InputSystem.DetectedControllers) + foreach (IMixedRealityController controller in MixedRealityOrchestrator.InputSystem.DetectedControllers) { if (controller.ControllerHandedness == handedness) { diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs index 29b7a4f35ce..b07881a0d4e 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs @@ -13,7 +13,7 @@ public class BaseInputHandlerInspector : BaseMixedRealityInspector protected virtual void OnEnable() { - MixedRealityManager.ConfirmInitialized(); + MixedRealityOrchestrator.ConfirmInitialized(); isFocusRequiredProperty = serializedObject.FindProperty("isFocusRequired"); } diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index 8f62ed64aa5..07b7f8ff38e 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -43,7 +43,7 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); return; @@ -150,16 +150,16 @@ private void ShowList(SerializedProperty list) private static IEnumerable RegisteredKeywords() { - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled || - !MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.IsSpeechCommandsEnabled || - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length == 0) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled || + !MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.IsSpeechCommandsEnabled || + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length == 0) { yield break; } - for (var i = 0; i < MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length; i++) + for (var i = 0; i < MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length; i++) { - yield return MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands[i].Keyword; + yield return MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands[i].Keyword; } } } diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs index ef570923a0b..f8273099c30 100644 --- a/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs +++ b/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs @@ -20,7 +20,7 @@ public class MixedRealityManagerTests public static void CreateMixedRealityManager() { // Create The MR Manager - MixedRealityManager.ConfirmInitialized(); + MixedRealityOrchestrator.ConfirmInitialized(); } [Test] @@ -30,8 +30,8 @@ public void Test01_CreateMixedRealityManager() // Create The MR Manager CreateMixedRealityManager(); - GameObject manager = GameObject.Find(nameof(MixedRealityManager)); - Assert.AreEqual(nameof(MixedRealityManager), manager.name); + GameObject manager = GameObject.Find(nameof(MixedRealityOrchestrator)); + Assert.AreEqual(nameof(MixedRealityOrchestrator), manager.name); } [Test] @@ -39,10 +39,10 @@ public void Test02_TestNoMixedRealityConfigurationFound() { LogAssert.Expect(LogType.Error, "No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Manager"); - MixedRealityManager.Instance.ActiveProfile = null; + MixedRealityOrchestrator.Instance.ActiveProfile = null; - Assert.IsFalse(MixedRealityManager.HasActiveProfile); - Assert.IsNull(MixedRealityManager.Instance.ActiveProfile); + Assert.IsFalse(MixedRealityOrchestrator.HasActiveProfile); + Assert.IsNull(MixedRealityOrchestrator.Instance.ActiveProfile); CleanupScene(); } @@ -53,8 +53,8 @@ public void Test03_CreateMixedRealityManager() InitializeMixedRealityManager(); // Create Test Configuration - Assert.AreEqual(0, MixedRealityManager.Instance.ActiveProfile.ActiveManagers.Count); - Assert.AreEqual(3, MixedRealityManager.Instance.MixedRealityComponents.Count); + Assert.AreEqual(0, MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices.Count); + Assert.AreEqual(3, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); } [Test] @@ -63,13 +63,13 @@ public void Test04_CreateMixedRealityInputManager() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Tests - Assert.IsNotNull(MixedRealityManager.Instance.ActiveProfile); - Assert.IsNotEmpty(MixedRealityManager.Instance.ActiveProfile.ActiveManagers); - Assert.AreEqual(1, MixedRealityManager.Instance.ActiveProfile.ActiveManagers.Count); - Assert.AreEqual(3, MixedRealityManager.Instance.MixedRealityComponents.Count); + Assert.IsNotNull(MixedRealityOrchestrator.Instance.ActiveProfile); + Assert.IsNotEmpty(MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices); + Assert.AreEqual(1, MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices.Count); + Assert.AreEqual(3, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); } [Test] @@ -78,10 +78,10 @@ public void Test05_TestGetMixedRealityInputManager() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Retrieve Input System - var inputSystem = MixedRealityManager.Instance.GetManager(); + var inputSystem = MixedRealityOrchestrator.Instance.GetService(); // Tests Assert.IsNotNull(inputSystem); @@ -93,7 +93,7 @@ public void Test06_TestMixedRealityInputManagerDoesNotExist() InitializeMixedRealityManager(); // Check for Input System - var inputSystemExists = MixedRealityManager.Instance.ManagerExists(); + var inputSystemExists = MixedRealityOrchestrator.Instance.IsServiceRegistered(); // Tests Assert.IsFalse(inputSystemExists); @@ -106,10 +106,10 @@ public void Test07_TestMixedRealityInputManagerExists() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Check for Input System - var inputSystemExists = MixedRealityManager.Instance.ManagerExists(); + var inputSystemExists = MixedRealityOrchestrator.Instance.IsServiceRegistered(); // Tests Assert.IsTrue(inputSystemExists); @@ -123,13 +123,13 @@ public void Test08_CreateMixedRealityComponent() var component = new TestComponentManager1(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), component); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), component); // Tests - Assert.AreEqual(4, MixedRealityManager.Instance.MixedRealityComponents.Count); + Assert.AreEqual(4, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); } [Test] @@ -138,13 +138,13 @@ public void Test09_TestMixedRealityComponentExists() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); // Retrieve Component1 - var component1 = MixedRealityManager.Instance.GetManager(typeof(ITestComponentManager1)); + var component1 = MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponentManager1)); // Tests Assert.IsNotNull(component1); @@ -156,15 +156,15 @@ public void Test10_TestMixedRealityComponents() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1()); - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1()); - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); // Retrieve Component1 - var components = MixedRealityManager.Instance.GetManagers(typeof(ITestComponentManager1)); + var components = MixedRealityOrchestrator.Instance.GetActiveServices(typeof(ITestComponentManager1)); // Tests Assert.AreEqual(3, components.Count()); @@ -176,15 +176,15 @@ public void Test11_TestMixedRealityComponent2DoesNotReturn() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); try { // Validate non-existent component - MixedRealityManager.Instance.GetManager(typeof(ITestComponentManager2), "Test2"); + MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponentManager2), "Test2"); Assert.Fail(); } catch (Exception) @@ -199,13 +199,13 @@ public void Test12_TestMixedRealityComponent2DoesNotExist() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component 1 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); // Validate non-existent component - var component2 = MixedRealityManager.Instance.ManagerExists(); + var component2 = MixedRealityOrchestrator.Instance.IsServiceRegistered(); // Tests Assert.IsFalse(component2); @@ -217,19 +217,19 @@ public void Test13_CreateMixedRealityComponentNameWithInput() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); //Add test component 1 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); //Add test component 2 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test2-1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test2-1" }); // Tests - Assert.IsNotNull(MixedRealityManager.Instance.ActiveProfile); - Assert.IsNotEmpty(MixedRealityManager.Instance.ActiveProfile.ActiveManagers); - Assert.AreEqual(1, MixedRealityManager.Instance.ActiveProfile.ActiveManagers.Count); - Assert.AreEqual(5, MixedRealityManager.Instance.MixedRealityComponents.Count); + Assert.IsNotNull(MixedRealityOrchestrator.Instance.ActiveProfile); + Assert.IsNotEmpty(MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices); + Assert.AreEqual(1, MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices.Count); + Assert.AreEqual(5, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); } [Test] @@ -238,23 +238,23 @@ public void Test14_ValidateComponentNameWithInput() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component 1 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test14-1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test14-1" }); // Add test component 2 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test14-2" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test14-2" }); // Retrieve Test component 2-2 - TestComponentManager2 component2 = (TestComponentManager2)MixedRealityManager.Instance.GetManager(typeof(ITestComponentManager2), "Test14-2"); + TestComponentManager2 component2 = (TestComponentManager2)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponentManager2), "Test14-2"); // Component 2-2 Tests Assert.IsNotNull(component2.InputSystem); Assert.AreEqual("Test14-2", component2.Name); // Retrieve Test component 2-1 - TestComponentManager1 component1 = (TestComponentManager1)MixedRealityManager.Instance.GetManager(typeof(ITestComponentManager1), "Test14-1"); + TestComponentManager1 component1 = (TestComponentManager1)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponentManager1), "Test14-1"); // Component 2-1 Tests Assert.IsNotNull(component1.InputSystem); @@ -267,17 +267,17 @@ public void Test15_GetMixedRealityComponentsCollection() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component 1 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test15-1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test15-1" }); // Add test components 2 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test15-2.1" }); - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test15-2.2" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test15-2.1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test15-2.2" }); // Retrieve Component2 - var components = MixedRealityManager.Instance.GetManagers(typeof(ITestComponentManager2)); + var components = MixedRealityOrchestrator.Instance.GetActiveServices(typeof(ITestComponentManager2)); // Tests Assert.AreEqual(2, components.Count()); @@ -289,18 +289,18 @@ public void Test16_GetAllMixedRealityComponents() InitializeMixedRealityManager(); // Add Input System - MixedRealityManager.Instance.AddManager(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component 1 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test16-1.1" }); - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test16-1.2" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test16-1.1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test16-1.2" }); // Add test components 2 - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test16-2.1" }); - MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test16-2.2" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test16-2.1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test16-2.2" }); // Retrieve Component1 - var allComponents = MixedRealityManager.Instance.MixedRealityComponents; + var allComponents = MixedRealityOrchestrator.Instance.MixedRealityComponents; // Tests Assert.AreEqual(7, allComponents.Count); @@ -325,10 +325,10 @@ private static void InitializeMixedRealityManager() CreateMixedRealityManager(); // Test the Manager - Assert.IsNotNull(MixedRealityManager.Instance); + Assert.IsNotNull(MixedRealityOrchestrator.Instance); var configuration = ScriptableObject.CreateInstance(); - MixedRealityManager.Instance.ActiveProfile = configuration; - Assert.NotNull(MixedRealityManager.Instance.ActiveProfile); + MixedRealityOrchestrator.Instance.ActiveProfile = configuration; + Assert.NotNull(MixedRealityOrchestrator.Instance.ActiveProfile); } #endregion Helper Functions @@ -336,11 +336,11 @@ private static void InitializeMixedRealityManager() #region Test Components - public interface ITestComponentManager1 : IMixedRealityManager { } + public interface ITestComponentManager1 : IMixedRealityService { } - public interface ITestComponentManager2 : IMixedRealityManager { } + public interface ITestComponentManager2 : IMixedRealityService { } - internal class TestComponentManager1 : BaseManager, ITestComponentManager1 + internal class TestComponentManager1 : BaseService, ITestComponentManager1 { public IMixedRealityInputSystem InputSystem = null; @@ -350,7 +350,7 @@ internal class TestComponentManager1 : BaseManager, ITestComponentManager1 /// public override void Initialize() { - InputSystem = MixedRealityManager.Instance.GetManager(); + InputSystem = MixedRealityOrchestrator.Instance.GetService(); } /// @@ -378,7 +378,7 @@ public override void Destroy() } } - internal class TestComponentManager2 : BaseManager, ITestComponentManager2 + internal class TestComponentManager2 : BaseService, ITestComponentManager2 { public IMixedRealityInputSystem InputSystem = null; @@ -388,7 +388,7 @@ internal class TestComponentManager2 : BaseManager, ITestComponentManager2 /// public override void Initialize() { - InputSystem = MixedRealityManager.Instance.GetManager(); + InputSystem = MixedRealityOrchestrator.Instance.GetService(); } /// diff --git a/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs b/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs index 0a161878670..7d2a83128da 100644 --- a/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs +++ b/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs @@ -25,7 +25,7 @@ public class GenericPointer : IMixedRealityPointer /// public GenericPointer(string pointerName, IMixedRealityInputSource inputSourceParent) { - PointerId = MixedRealityManager.InputSystem.FocusProvider.GenerateNewPointerId(); + PointerId = MixedRealityOrchestrator.InputSystem.FocusProvider.GenerateNewPointerId(); PointerName = pointerName; this.inputSourceParent = inputSourceParent; } diff --git a/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs b/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs index 8044cd8d43e..564bf3b0001 100644 --- a/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs +++ b/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs @@ -22,9 +22,9 @@ public class BaseGenericInputSource : IMixedRealityInputSource, IDisposable /// public BaseGenericInputSource(string name, IMixedRealityPointer[] pointers = null) { - SourceId = MixedRealityManager.InputSystem.GenerateNewSourceId(); + SourceId = MixedRealityOrchestrator.InputSystem.GenerateNewSourceId(); SourceName = name; - Pointers = pointers ?? new[] { MixedRealityManager.InputSystem.GazeProvider.GazePointer }; + Pointers = pointers ?? new[] { MixedRealityOrchestrator.InputSystem.GazeProvider.GazePointer }; } /// diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs index 2d7b112490d..2b852d7a070 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs @@ -59,12 +59,12 @@ public MixedRealityPointerProfile PointerProfile /// /// Current Registered Speech System. /// - public IMixedRealitySpeechSystem SpeechSystem => speechSystem ?? (speechSystem = MixedRealityManager.Instance.GetManager()); + public IMixedRealitySpeechSystem SpeechSystem => speechSystem ?? (speechSystem = MixedRealityOrchestrator.Instance.GetService()); /// /// Is the speech Commands Enabled? /// - public bool IsSpeechCommandsEnabled => speechCommandsProfile != null && SpeechSystem != null && MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled; + public bool IsSpeechCommandsEnabled => speechCommandsProfile != null && SpeechSystem != null && MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled; [SerializeField] [Tooltip("Speech Command profile for wiring up Voice Input to Actions.")] @@ -84,12 +84,12 @@ public MixedRealitySpeechCommandsProfile SpeechCommandsProfile /// /// Current Registered Dictation Manager. /// - public IMixedRealityDictationManager DictationManager => dictationManager ?? (dictationManager = MixedRealityManager.Instance.GetManager()); + public IMixedRealityDictationManager DictationManager => dictationManager ?? (dictationManager = MixedRealityOrchestrator.Instance.GetService()); /// /// Is Dictation Enabled? /// - public bool IsDictationEnabled => MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && DictationManager != null; + public bool IsDictationEnabled => MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && DictationManager != null; [SerializeField] [Tooltip("Enable and configure the devices for your application.")] diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs index c45eadff9f1..ca5ee9cd8a8 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs @@ -3,7 +3,6 @@ using Microsoft.MixedReality.Toolkit.Core.Attributes; using Microsoft.MixedReality.Toolkit.Core.Definitions.BoundarySystem; -using Microsoft.MixedReality.Toolkit.Core.Definitions.Devices; using Microsoft.MixedReality.Toolkit.Core.Definitions.Diagnostics; using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; @@ -27,12 +26,12 @@ public class MixedRealityConfigurationProfile : BaseMixedRealityProfile, ISerial #region Manager Registry properties [SerializeField] - private SystemType[] initialManagerTypes = null; + private SystemType[] initialServiceTypes = null; /// /// Dictionary list of active managers used by the Mixed Reality Manager at runtime /// - public Dictionary ActiveManagers { get; } = new Dictionary(); + public Dictionary ActiveServices { get; } = new Dictionary(); #endregion Manager Registry properties @@ -245,24 +244,24 @@ public SystemType DiagnosticsSystemSystemType /// void ISerializationCallbackReceiver.OnBeforeSerialize() { - var count = ActiveManagers.Count; - initialManagerTypes = new SystemType[count]; + var count = ActiveServices.Count; + initialServiceTypes = new SystemType[count]; - foreach (var manager in ActiveManagers) + foreach (var service in ActiveServices) { --count; - initialManagerTypes[count] = new SystemType(manager.Value.GetType()); + initialServiceTypes[count] = new SystemType(service.Value.GetType()); } } /// void ISerializationCallbackReceiver.OnAfterDeserialize() { - if (ActiveManagers.Count == 0) + if (ActiveServices.Count == 0) { - for (int i = 0; i < initialManagerTypes?.Length; i++) + for (int i = 0; i < initialServiceTypes?.Length; i++) { - ActiveManagers.Add(initialManagerTypes[i], Activator.CreateInstance(initialManagerTypes[i]) as IMixedRealityManager); + ActiveServices.Add(initialServiceTypes[i], Activator.CreateInstance(initialServiceTypes[i]) as IMixedRealityService); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs b/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs index 751716d7f62..a47eced7e3d 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs @@ -89,15 +89,15 @@ protected BaseController(TrackingState trackingState, Handedness controllerHande /// public bool SetupConfiguration(Type controllerType) { - if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.IsControllerMappingEnabled) + if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.IsControllerMappingEnabled) { - if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.RenderMotionControllers) + if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.RenderMotionControllers) { TryRenderControllerModel(controllerType); } // We can only enable controller profiles if mappings exist. - var controllerMappings = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerMappingProfile.MixedRealityControllerMappingProfiles; + var controllerMappings = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerMappingProfile.MixedRealityControllerMappingProfiles; // Have to test that a controller type has been registered in the profiles, // else it's Unity Input manager mappings will not have been setup by the inspector @@ -162,25 +162,25 @@ private void TryRenderControllerModel(Type controllerType) { GameObject controllerModel = null; - if (!MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.RenderMotionControllers) { return; } + if (!MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.RenderMotionControllers) { return; } // If a specific controller template wants to override the global model, assign that instead. - if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.IsControllerMappingEnabled && - !MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.UseDefaultModels) + if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.IsControllerMappingEnabled && + !MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.UseDefaultModels) { - controllerModel = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GetControllerModelOverride(controllerType, ControllerHandedness); + controllerModel = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GetControllerModelOverride(controllerType, ControllerHandedness); } // Get the global controller model for each hand. if (controllerModel == null) { - if (ControllerHandedness == Handedness.Left && MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalLeftHandModel != null) + if (ControllerHandedness == Handedness.Left && MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalLeftHandModel != null) { - controllerModel = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalLeftHandModel; + controllerModel = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalLeftHandModel; } - else if (ControllerHandedness == Handedness.Right && MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalRightHandModel != null) + else if (ControllerHandedness == Handedness.Right && MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalRightHandModel != null) { - controllerModel = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalRightHandModel; + controllerModel = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalRightHandModel; } } @@ -189,7 +189,7 @@ private void TryRenderControllerModel(Type controllerType) // If we've got a controller model prefab, then place it in the scene. if (controllerModel != null) { - var controllerObject = UnityEngine.Object.Instantiate(controllerModel, MixedRealityManager.Instance.MixedRealityPlayspace); + var controllerObject = UnityEngine.Object.Instantiate(controllerModel, MixedRealityOrchestrator.Instance.MixedRealityPlayspace); controllerObject.name = $"{ControllerHandedness}_{controllerObject.name}"; Visualizer = controllerObject.GetComponent(); diff --git a/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs index 350d93c3be4..91d32777785 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs @@ -64,13 +64,13 @@ protected virtual IMixedRealityPointer[] RequestPointers(SystemType controllerTy { var pointers = new List(); - if (MixedRealityManager.HasActiveProfile && - MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.PointerProfile != null) + if (MixedRealityOrchestrator.HasActiveProfile && + MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.PointerProfile != null) { - for (int i = 0; i < MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointerOptions.Length; i++) + for (int i = 0; i < MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointerOptions.Length; i++) { - var pointerProfile = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointerOptions[i]; + var pointerProfile = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointerOptions[i]; if (!useSpecificType) { @@ -82,7 +82,7 @@ protected virtual IMixedRealityPointer[] RequestPointers(SystemType controllerTy { var pointerObject = Object.Instantiate(pointerProfile.PointerPrefab); var pointer = pointerObject.GetComponent(); - pointerObject.transform.SetParent(MixedRealityManager.Instance.MixedRealityPlayspace); + pointerObject.transform.SetParent(MixedRealityOrchestrator.Instance.MixedRealityPlayspace); if (pointer != null) { diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs index 713aa704c43..8e8e3c57004 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs @@ -185,22 +185,22 @@ private void UpdateControllerData(InteractionSourceState interactionSourceState) // Raise input system events if it is enabled. if (lastState != TrackingState) { - MixedRealityManager.InputSystem?.RaiseSourceTrackingStateChanged(InputSource, this, TrackingState); + MixedRealityOrchestrator.InputSystem?.RaiseSourceTrackingStateChanged(InputSource, this, TrackingState); } if (TrackingState == TrackingState.Tracked && lastControllerPose != currentControllerPose) { if (IsPositionAvailable && IsRotationAvailable) { - MixedRealityManager.InputSystem?.RaiseSourcePoseChanged(InputSource, this, currentControllerPose); + MixedRealityOrchestrator.InputSystem?.RaiseSourcePoseChanged(InputSource, this, currentControllerPose); } else if (IsPositionAvailable && !IsRotationAvailable) { - MixedRealityManager.InputSystem?.RaiseSourcePositionChanged(InputSource, this, currentControllerPosition); + MixedRealityOrchestrator.InputSystem?.RaiseSourcePositionChanged(InputSource, this, currentControllerPosition); } else if (!IsPositionAvailable && IsRotationAvailable) { - MixedRealityManager.InputSystem?.RaiseSourceRotationChanged(InputSource, this, currentControllerRotation); + MixedRealityOrchestrator.InputSystem?.RaiseSourceRotationChanged(InputSource, this, currentControllerRotation); } } } @@ -225,7 +225,7 @@ private void UpdatePointerData(InteractionSourceState interactionSourceState, Mi if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityManager.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, currentPointerPose); + MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, currentPointerPose); } } @@ -243,10 +243,10 @@ private void UpdateGripData(InteractionSourceState interactionSourceState, Mixed interactionSourceState.sourcePose.TryGetPosition(out currentGripPosition, InteractionSourceNode.Grip); interactionSourceState.sourcePose.TryGetRotation(out currentGripRotation, InteractionSourceNode.Grip); - if (MixedRealityManager.Instance.MixedRealityPlayspace != null) + if (MixedRealityOrchestrator.Instance.MixedRealityPlayspace != null) { - currentGripPose.Position = MixedRealityManager.Instance.MixedRealityPlayspace.TransformPoint(currentGripPosition); - currentGripPose.Rotation = Quaternion.Euler(MixedRealityManager.Instance.MixedRealityPlayspace.TransformDirection(currentGripRotation.eulerAngles)); + currentGripPose.Position = MixedRealityOrchestrator.Instance.MixedRealityPlayspace.TransformPoint(currentGripPosition); + currentGripPose.Rotation = Quaternion.Euler(MixedRealityOrchestrator.Instance.MixedRealityPlayspace.TransformDirection(currentGripRotation.eulerAngles)); } else { @@ -261,7 +261,7 @@ private void UpdateGripData(InteractionSourceState interactionSourceState, Mixed if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityManager.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, currentGripPose); + MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, currentGripPose); } } break; @@ -288,11 +288,11 @@ private void UpdateTouchPadData(InteractionSourceState interactionSourceState, M // Raise input system Event if it enabled if (interactionSourceState.touchpadTouched) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -308,11 +308,11 @@ private void UpdateTouchPadData(InteractionSourceState interactionSourceState, M // Raise input system Event if it enabled if (interactionSourceState.touchpadPressed) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -326,7 +326,7 @@ private void UpdateTouchPadData(InteractionSourceState interactionSourceState, M if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityManager.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.touchpadPosition); + MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.touchpadPosition); } break; } @@ -353,11 +353,11 @@ private void UpdateThumbStickData(InteractionSourceState interactionSourceState, // Raise input system Event if it enabled if (interactionSourceState.thumbstickPressed) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -371,7 +371,7 @@ private void UpdateThumbStickData(InteractionSourceState interactionSourceState, if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityManager.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.thumbstickPosition); + MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.thumbstickPosition); } break; } @@ -397,11 +397,11 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi // Raise input system Event if it enabled if (interactionSourceState.grasped) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } @@ -417,11 +417,11 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi // Raise input system Event if it enabled if (interactionSourceState.selectPressed) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -435,7 +435,7 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityManager.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.selectPressedAmount); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.selectPressedAmount); } break; } @@ -450,11 +450,11 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi // Raise input system Event if it enabled if (interactionSourceState.selectPressedAmount > 0) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -478,11 +478,11 @@ private void UpdateMenuData(InteractionSourceState interactionSourceState, Mixed // Raise input system Event if it enabled if (interactionSourceState.menuPressed) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs index 317fade391c..576e38abfac 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs @@ -224,10 +224,10 @@ public override void Enable() RegisterGestureEvents(); RegisterNavigationEvents(); - if (MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null) + if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null) { - var gestureProfile = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.GesturesProfile; + var gestureProfile = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile; GestureSettings = gestureProfile.ManipulationGestures; NavigationSettings = gestureProfile.NavigationGestures; RailsNavigationSettings = gestureProfile.RailsNavigationGestures; @@ -265,13 +265,13 @@ public override void Enable() if (controller != null) { controller.UpdateController(interactionmanagerStates[i]); - MixedRealityManager.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); } } - if (MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null && - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.WindowsGestureAutoStart == AutoStartBehavior.AutoStart) + if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null && + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.WindowsGestureAutoStart == AutoStartBehavior.AutoStart) { GestureRecognizerEnabled = true; } @@ -407,7 +407,7 @@ private WindowsMixedRealityController GetController(InteractionSource interactio var pointers = interactionSource.supportsPointing ? RequestPointers(typeof(WindowsMixedRealityController), controllingHand) : null; string nameModifier = controllingHand == Handedness.None ? interactionSource.kind.ToString() : controllingHand.ToString(); - var inputSource = MixedRealityManager.InputSystem?.RequestNewGenericInputSource($"Mixed Reality Controller {nameModifier}", pointers); + var inputSource = MixedRealityOrchestrator.InputSystem?.RequestNewGenericInputSource($"Mixed Reality Controller {nameModifier}", pointers); var detectedController = new WindowsMixedRealityController(TrackingState.NotTracked, controllingHand, inputSource); if (!detectedController.SetupConfiguration(typeof(WindowsMixedRealityController))) @@ -436,7 +436,7 @@ private void RemoveController(InteractionSourceState interactionSourceState) if (controller != null) { - MixedRealityManager.InputSystem?.RaiseSourceLost(controller.InputSource, controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(controller.InputSource, controller); } activeControllers.Remove(interactionSourceState.source.id); @@ -456,7 +456,7 @@ private void InteractionManager_InteractionSourceDetected(InteractionSourceDetec if (controller != null) { - MixedRealityManager.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); } controller?.UpdateController(args.state); @@ -480,7 +480,7 @@ private void GestureRecognizer_HoldStarted(HoldStartedEventArgs args) var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem?.RaiseGestureStarted(controller, holdAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureStarted(controller, holdAction); } } @@ -489,7 +489,7 @@ private void GestureRecognizer_HoldCompleted(HoldCompletedEventArgs args) var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureCompleted(controller, holdAction); + MixedRealityOrchestrator.InputSystem.RaiseGestureCompleted(controller, holdAction); } } @@ -498,7 +498,7 @@ private void GestureRecognizer_HoldCanceled(HoldCanceledEventArgs args) var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureCanceled(controller, holdAction); + MixedRealityOrchestrator.InputSystem.RaiseGestureCanceled(controller, holdAction); } } @@ -507,7 +507,7 @@ private void GestureRecognizer_ManipulationStarted(ManipulationStartedEventArgs var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureStarted(controller, manipulationAction); + MixedRealityOrchestrator.InputSystem.RaiseGestureStarted(controller, manipulationAction); } } @@ -516,7 +516,7 @@ private void GestureRecognizer_ManipulationUpdated(ManipulationUpdatedEventArgs var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureUpdated(controller, manipulationAction, args.cumulativeDelta); + MixedRealityOrchestrator.InputSystem.RaiseGestureUpdated(controller, manipulationAction, args.cumulativeDelta); } } @@ -525,7 +525,7 @@ private void GestureRecognizer_ManipulationCompleted(ManipulationCompletedEventA var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureCompleted(controller, manipulationAction, args.cumulativeDelta); + MixedRealityOrchestrator.InputSystem.RaiseGestureCompleted(controller, manipulationAction, args.cumulativeDelta); } } @@ -534,7 +534,7 @@ private void GestureRecognizer_ManipulationCanceled(ManipulationCanceledEventArg var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureCanceled(controller, manipulationAction); + MixedRealityOrchestrator.InputSystem.RaiseGestureCanceled(controller, manipulationAction); } } @@ -547,7 +547,7 @@ private void NavigationGestureRecognizer_NavigationStarted(NavigationStartedEven var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureStarted(controller, navigationAction); + MixedRealityOrchestrator.InputSystem.RaiseGestureStarted(controller, navigationAction); } } @@ -556,7 +556,7 @@ private void NavigationGestureRecognizer_NavigationUpdated(NavigationUpdatedEven var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureUpdated(controller, navigationAction, args.normalizedOffset); + MixedRealityOrchestrator.InputSystem.RaiseGestureUpdated(controller, navigationAction, args.normalizedOffset); } } @@ -565,7 +565,7 @@ private void NavigationGestureRecognizer_NavigationCompleted(NavigationCompleted var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureCompleted(controller, navigationAction, args.normalizedOffset); + MixedRealityOrchestrator.InputSystem.RaiseGestureCompleted(controller, navigationAction, args.normalizedOffset); } } @@ -574,7 +574,7 @@ private void NavigationGestureRecognizer_NavigationCanceled(NavigationCanceledEv var controller = GetController(args.source, false); if (controller != null) { - MixedRealityManager.InputSystem.RaiseGestureCanceled(controller, navigationAction); + MixedRealityOrchestrator.InputSystem.RaiseGestureCanceled(controller, navigationAction); } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs index ee610dd6862..0459d2ec94f 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs @@ -196,22 +196,22 @@ protected void UpdateControllerData(XRNodeState state) // Raise input system events if it is enabled. if (lastState != TrackingState) { - MixedRealityManager.InputSystem?.RaiseSourceTrackingStateChanged(InputSource, this, TrackingState); + MixedRealityOrchestrator.InputSystem?.RaiseSourceTrackingStateChanged(InputSource, this, TrackingState); } if (TrackingState == TrackingState.Tracked && LastControllerPose != CurrentControllerPose) { if (IsPositionAvailable && IsRotationAvailable) { - MixedRealityManager.InputSystem?.RaiseSourcePoseChanged(InputSource, this, CurrentControllerPose); + MixedRealityOrchestrator.InputSystem?.RaiseSourcePoseChanged(InputSource, this, CurrentControllerPose); } else if (IsPositionAvailable && !IsRotationAvailable) { - MixedRealityManager.InputSystem?.RaiseSourcePositionChanged(InputSource, this, CurrentControllerPosition); + MixedRealityOrchestrator.InputSystem?.RaiseSourcePositionChanged(InputSource, this, CurrentControllerPosition); } else if (!IsPositionAvailable && IsRotationAvailable) { - MixedRealityManager.InputSystem?.RaiseSourceRotationChanged(InputSource, this, CurrentControllerRotation); + MixedRealityOrchestrator.InputSystem?.RaiseSourceRotationChanged(InputSource, this, CurrentControllerRotation); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs index c985e580f76..4ec103f7e4f 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs @@ -79,7 +79,7 @@ protected override GenericJoystickController GetOrAddController(string joystickN } var pointers = RequestPointers(controllerType, controllingHand); - var inputSource = MixedRealityManager.InputSystem?.RequestNewGenericInputSource($"{currentControllerType} Controller {controllingHand}", pointers); + var inputSource = MixedRealityOrchestrator.InputSystem?.RequestNewGenericInputSource($"{currentControllerType} Controller {controllingHand}", pointers); var detectedController = Activator.CreateInstance(controllerType, TrackingState.NotTracked, controllingHand, inputSource, null) as GenericOpenVRController; if (detectedController == null) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs index 9cb20cb47ec..3be6f1b9247 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs @@ -94,18 +94,18 @@ protected void UpdateButtonData(MixedRealityInteractionMapping interactionMappin // Raise input system Event if it enabled if (interactionMapping.BoolData) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } else { if (interactionMapping.BoolData) { - MixedRealityManager.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } } @@ -148,7 +148,7 @@ protected void UpdateSingleAxisData(MixedRealityInteractionMapping interactionMa if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityManager.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.FloatData); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.FloatData); } return; default: @@ -162,18 +162,18 @@ protected void UpdateSingleAxisData(MixedRealityInteractionMapping interactionMa // Raise input system Event if it enabled if (interactionMapping.BoolData) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } else { if (interactionMapping.BoolData) { - MixedRealityManager.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, singleAxisValue); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, singleAxisValue); } } } @@ -196,7 +196,7 @@ protected void UpdateDualAxisData(MixedRealityInteractionMapping interactionMapp if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityManager.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.Vector2Data); + MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.Vector2Data); } } @@ -231,7 +231,7 @@ protected void UpdatePoseData(MixedRealityInteractionMapping interactionMapping) if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityManager.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.PoseData); + MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.PoseData); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs index db8c9360aaf..ed4eefc865b 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs @@ -76,9 +76,9 @@ public void Update() // Don't ask me why it's mapped weird. Bc Unity... mouseDelta.x = Input.GetAxis("Mouse X"); mouseDelta.y = -Input.GetAxis("Mouse Y"); - MixedRealityManager.InputSystem?.RaiseSourcePositionChanged(InputSource, this, mouseDelta); - MixedRealityManager.InputSystem?.RaiseSourcePoseChanged(InputSource, this, controllerPose); - MixedRealityManager.InputSystem?.RaiseSourcePositionChanged(InputSource, this, Input.mouseScrollDelta); + MixedRealityOrchestrator.InputSystem?.RaiseSourcePositionChanged(InputSource, this, mouseDelta); + MixedRealityOrchestrator.InputSystem?.RaiseSourcePoseChanged(InputSource, this, controllerPose); + MixedRealityOrchestrator.InputSystem?.RaiseSourcePositionChanged(InputSource, this, Input.mouseScrollDelta); for (int i = 0; i < Interactions.Length; i++) { @@ -88,7 +88,7 @@ public void Update() if (Interactions[i].Changed) { - MixedRealityManager.InputSystem?.RaisePoseInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].PoseData); + MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].PoseData); } } @@ -98,7 +98,7 @@ public void Update() if (Interactions[i].Changed) { - MixedRealityManager.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].Vector2Data); + MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].Vector2Data); } } @@ -108,7 +108,7 @@ public void Update() if (Interactions[i].Changed) { - MixedRealityManager.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].Vector2Data); + MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].Vector2Data); } } @@ -125,25 +125,25 @@ public void Update() // Raise input system Event if it enabled if (Interactions[i].BoolData) { - MixedRealityManager.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); if (Interactions[i].KeyCode == KeyCode.Mouse0) { - MixedRealityManager.InputSystem?.RaisePointerDown(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaisePointerDown(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction); } } else { if (Input.GetKeyUp(KeyCode.Mouse0)) { - MixedRealityManager.InputSystem?.RaisePointerClicked(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction, 1); + MixedRealityOrchestrator.InputSystem?.RaisePointerClicked(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction, 1); } - MixedRealityManager.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); if (Input.GetKeyUp(KeyCode.Mouse0)) { - MixedRealityManager.InputSystem?.RaisePointerUp(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaisePointerUp(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction); } } } @@ -151,7 +151,7 @@ public void Update() { if (Interactions[i].BoolData) { - MixedRealityManager.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs index 9abd98c7b69..525b002208c 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs @@ -40,10 +40,10 @@ public override void Enable() MixedRealityRaycaster.DebugEnabled = true; - if (MixedRealityManager.InputSystem != null) + if (MixedRealityOrchestrator.InputSystem != null) { var pointers = RequestPointers(new SystemType(typeof(MouseController)), Handedness.Any, true); - mouseInputSource = MixedRealityManager.InputSystem.RequestNewGenericInputSource("Mouse Input", pointers); + mouseInputSource = MixedRealityOrchestrator.InputSystem.RequestNewGenericInputSource("Mouse Input", pointers); } Controller = new MouseController(TrackingState.NotApplicable, Handedness.Any, mouseInputSource); @@ -57,7 +57,7 @@ public override void Enable() } Controller.SetupConfiguration(typeof(MouseController)); - MixedRealityManager.InputSystem?.RaiseSourceDetected(Controller.InputSource, Controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(Controller.InputSource, Controller); } /// @@ -73,7 +73,7 @@ public override void Disable() { if (Controller != null) { - MixedRealityManager.InputSystem?.RaiseSourceLost(Controller.InputSource, Controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(Controller.InputSource, Controller); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs index 0ace10e3251..1aadea7b9ae 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs @@ -56,7 +56,7 @@ public override void Disable() { if (genericOpenVRController.Value != null) { - MixedRealityManager.InputSystem?.RaiseSourceLost(genericOpenVRController.Value.InputSource, genericOpenVRController.Value); + MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(genericOpenVRController.Value.InputSource, genericOpenVRController.Value); } } @@ -87,7 +87,7 @@ private void RefreshDevices() if (controller != null) { - MixedRealityManager.InputSystem?.RaiseSourceLost(controller.InputSource, controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(controller.InputSource, controller); } ActiveControllers.Remove(lastDeviceList[i]); @@ -108,7 +108,7 @@ private void RefreshDevices() if (controller != null) { - MixedRealityManager.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); } } } @@ -144,7 +144,7 @@ protected virtual GenericJoystickController GetOrAddController(string joystickNa break; } - var inputSource = MixedRealityManager.InputSystem?.RequestNewGenericInputSource($"{controllerType.Name} Controller"); + var inputSource = MixedRealityOrchestrator.InputSystem?.RequestNewGenericInputSource($"{controllerType.Name} Controller"); var detectedController = Activator.CreateInstance(controllerType, TrackingState.NotTracked, Handedness.None, inputSource, null) as GenericJoystickController; if (detectedController == null) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs index 00f7dc6c5c5..250152ebfe3 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs @@ -63,12 +63,12 @@ public UnityTouchController(TrackingState trackingState, Handedness controllerHa public override void SetupDefaultInteractions(Handedness controllerHandedness) { AssignControllerMappings(DefaultInteractions); - if (MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null) + if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null) { - for (int i = 0; i < MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.Gestures.Length; i++) + for (int i = 0; i < MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.Gestures.Length; i++) { - var gesture = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.Gestures[i]; + var gesture = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.Gestures[i]; switch (gesture.GestureType) { @@ -88,9 +88,9 @@ public override void SetupDefaultInteractions(Handedness controllerHandedness) /// public void StartTouch() { - MixedRealityManager.InputSystem?.RaisePointerDown(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaisePointerDown(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction); isTouched = true; - MixedRealityManager.InputSystem?.RaiseGestureStarted(this, holdingAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureStarted(this, holdingAction); isHolding = true; } @@ -109,18 +109,18 @@ public void Update() if (Interactions[0].Changed) { - MixedRealityManager.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[0].MixedRealityInputAction, TouchData.deltaPosition); + MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[0].MixedRealityInputAction, TouchData.deltaPosition); } lastPose.Position = InputSource.Pointers[0].BaseCursor.Position; lastPose.Rotation = InputSource.Pointers[0].BaseCursor.Rotation; - MixedRealityManager.InputSystem?.RaiseSourcePoseChanged(InputSource, this, lastPose); + MixedRealityOrchestrator.InputSystem?.RaiseSourcePoseChanged(InputSource, this, lastPose); Interactions[1].PoseData = lastPose; if (Interactions[1].Changed) { - MixedRealityManager.InputSystem?.RaisePoseInputChanged(InputSource, Interactions[1].MixedRealityInputAction, lastPose); + MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, Interactions[1].MixedRealityInputAction, lastPose); } if (!isManipulating) @@ -128,16 +128,16 @@ public void Update() if (Mathf.Abs(TouchData.deltaPosition.x) > ManipulationThreshold || Mathf.Abs(TouchData.deltaPosition.y) > ManipulationThreshold) { - MixedRealityManager.InputSystem?.RaiseGestureCanceled(this, holdingAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, holdingAction); isHolding = false; - MixedRealityManager.InputSystem?.RaiseGestureStarted(this, manipulationAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureStarted(this, manipulationAction); isManipulating = true; } } else { - MixedRealityManager.InputSystem?.RaiseGestureUpdated(this, manipulationAction, TouchData.deltaPosition); + MixedRealityOrchestrator.InputSystem?.RaiseGestureUpdated(this, manipulationAction, TouchData.deltaPosition); } } } @@ -153,13 +153,13 @@ public void EndTouch() { if (isHolding) { - MixedRealityManager.InputSystem?.RaiseGestureCanceled(this, holdingAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, holdingAction); isHolding = false; } if (isManipulating) { - MixedRealityManager.InputSystem?.RaiseGestureCanceled(this, manipulationAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, manipulationAction); isManipulating = false; } } @@ -167,35 +167,35 @@ public void EndTouch() { if (isHolding) { - MixedRealityManager.InputSystem?.RaiseGestureCanceled(this, holdingAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, holdingAction); isHolding = false; } if (isManipulating) { - MixedRealityManager.InputSystem?.RaiseGestureCanceled(this, manipulationAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, manipulationAction); isManipulating = false; } - MixedRealityManager.InputSystem?.RaisePointerClicked(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction, TouchData.tapCount); + MixedRealityOrchestrator.InputSystem?.RaisePointerClicked(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction, TouchData.tapCount); } if (isHolding) { - MixedRealityManager.InputSystem?.RaiseGestureCompleted(this, holdingAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCompleted(this, holdingAction); isHolding = false; } if (isManipulating) { - MixedRealityManager.InputSystem?.RaiseGestureCompleted(this, manipulationAction, TouchData.deltaPosition); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCompleted(this, manipulationAction, TouchData.deltaPosition); isManipulating = false; } } if (isHolding) { - MixedRealityManager.InputSystem?.RaiseGestureCompleted(this, holdingAction); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCompleted(this, holdingAction); isHolding = false; } @@ -203,13 +203,13 @@ public void EndTouch() if (isManipulating) { - MixedRealityManager.InputSystem?.RaiseGestureCompleted(this, manipulationAction, TouchData.deltaPosition); + MixedRealityOrchestrator.InputSystem?.RaiseGestureCompleted(this, manipulationAction, TouchData.deltaPosition); isManipulating = false; } Debug.Assert(!isManipulating); - MixedRealityManager.InputSystem?.RaisePointerUp(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction); + MixedRealityOrchestrator.InputSystem?.RaisePointerUp(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction); Lifetime = 0.0f; isTouched = false; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs index fdaec42120a..039fb909c51 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs @@ -63,13 +63,13 @@ public override void Disable() { foreach (var controller in ActiveTouches) { - if (controller.Value == null || MixedRealityManager.InputSystem == null) { continue; } + if (controller.Value == null || MixedRealityOrchestrator.InputSystem == null) { continue; } - foreach (var inputSource in MixedRealityManager.InputSystem.DetectedInputSources) + foreach (var inputSource in MixedRealityOrchestrator.InputSystem.DetectedInputSources) { if (inputSource.SourceId == controller.Value.InputSource.SourceId) { - MixedRealityManager.InputSystem.RaiseSourceLost(controller.Value.InputSource, controller.Value); + MixedRealityOrchestrator.InputSystem.RaiseSourceLost(controller.Value.InputSource, controller.Value); } } } @@ -84,10 +84,10 @@ private void AddTouchController(Touch touch, Ray ray) { IMixedRealityInputSource inputSource = null; - if (MixedRealityManager.InputSystem != null) + if (MixedRealityOrchestrator.InputSystem != null) { var pointers = RequestPointers(typeof(UnityTouchController), Handedness.Any, true); - inputSource = MixedRealityManager.InputSystem.RequestNewGenericInputSource($"Touch {touch.fingerId}", pointers); + inputSource = MixedRealityOrchestrator.InputSystem.RequestNewGenericInputSource($"Touch {touch.fingerId}", pointers); } controller = new UnityTouchController(TrackingState.NotApplicable, Handedness.Any, inputSource); @@ -107,7 +107,7 @@ private void AddTouchController(Touch touch, Ray ray) ActiveTouches.Add(touch.fingerId, controller); } - MixedRealityManager.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); controller.StartTouch(); UpdateTouchData(touch, ray); } @@ -137,7 +137,7 @@ private void RemoveTouchController(Touch touch) } controller.EndTouch(); - MixedRealityManager.InputSystem?.RaiseSourceLost(controller.InputSource, controller); + MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(controller.InputSource, controller); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs index 4d0ff1e8683..03d5fe6482d 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs @@ -66,13 +66,13 @@ public override void Enable() { if (!Application.isPlaying) { return; } - if (MixedRealityManager.InputSystem == null) + if (MixedRealityOrchestrator.InputSystem == null) { Debug.LogWarning("Unable to start Windows Dictation Device Manager. An Input System is required for this feature."); return; } - inputSource = MixedRealityManager.InputSystem.RequestNewGenericInputSource("Dictation Recognizer"); + inputSource = MixedRealityOrchestrator.InputSystem.RequestNewGenericInputSource("Dictation Recognizer"); dictationResult = string.Empty; if (dictationRecognizer == null) @@ -89,7 +89,7 @@ public override void Enable() /// public override void Update() { - if (!Application.isPlaying || MixedRealityManager.InputSystem == null) { return; } + if (!Application.isPlaying || MixedRealityOrchestrator.InputSystem == null) { return; } if (!isTransitioning && IsListening && !Microphone.IsRecording(deviceName) && dictationRecognizer.Status == SpeechSystemStatus.Running) { @@ -100,7 +100,7 @@ public override void Update() if (!hasFailed && dictationRecognizer.Status == SpeechSystemStatus.Failed) { hasFailed = true; - MixedRealityManager.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer has failed!"); + MixedRealityOrchestrator.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer has failed!"); } } @@ -135,7 +135,7 @@ public async void StartRecording(GameObject listener, float initialSilenceTimeou /// public async Task StartRecordingAsync(GameObject listener = null, float initialSilenceTimeout = 5f, float autoSilenceTimeout = 20f, int recordingTime = 10, string micDeviceName = "") { - if (IsListening || isTransitioning || MixedRealityManager.InputSystem == null) + if (IsListening || isTransitioning || MixedRealityOrchestrator.InputSystem == null) { Debug.LogWarning("Unable to start recording"); return; @@ -148,7 +148,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS if (listener != null) { hasListener = true; - MixedRealityManager.InputSystem.PushModalInputHandler(listener); + MixedRealityOrchestrator.InputSystem.PushModalInputHandler(listener); } if (PhraseRecognitionSystem.Status == SpeechSystemStatus.Running) @@ -171,7 +171,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS if (dictationRecognizer.Status == SpeechSystemStatus.Failed) { - MixedRealityManager.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer failed to start!"); + MixedRealityOrchestrator.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer failed to start!"); return; } @@ -201,7 +201,7 @@ public async Task StopRecordingAsync() if (hasListener) { - MixedRealityManager.InputSystem.PopModalInputHandler(); + MixedRealityOrchestrator.InputSystem.PopModalInputHandler(); hasListener = false; } @@ -231,7 +231,7 @@ private void DictationRecognizer_DictationHypothesis(string text) // We don't want to append to textSoFar yet, because the hypothesis may have changed on the next event. dictationResult = $"{textSoFar} {text}..."; - MixedRealityManager.InputSystem.RaiseDictationHypothesis(inputSource, dictationResult); + MixedRealityOrchestrator.InputSystem.RaiseDictationHypothesis(inputSource, dictationResult); } /// @@ -245,7 +245,7 @@ private void DictationRecognizer_DictationResult(string text, ConfidenceLevel co dictationResult = textSoFar.ToString(); - MixedRealityManager.InputSystem.RaiseDictationResult(inputSource, dictationResult); + MixedRealityOrchestrator.InputSystem.RaiseDictationResult(inputSource, dictationResult); } /// @@ -263,7 +263,7 @@ private void DictationRecognizer_DictationComplete(DictationCompletionCause caus dictationResult = "Dictation has timed out. Please try again."; } - MixedRealityManager.InputSystem.RaiseDictationComplete(inputSource, dictationResult, dictationAudioClip); + MixedRealityOrchestrator.InputSystem.RaiseDictationComplete(inputSource, dictationResult, dictationAudioClip); textSoFar = null; dictationResult = string.Empty; } @@ -277,7 +277,7 @@ private void DictationRecognizer_DictationError(string error, int hresult) { dictationResult = $"{error}\nHRESULT: {hresult}"; - MixedRealityManager.InputSystem.RaiseDictationError(inputSource, dictationResult); + MixedRealityOrchestrator.InputSystem.RaiseDictationError(inputSource, dictationResult); textSoFar = null; dictationResult = string.Empty; } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs index 24b8fe2ae7d..14d6c206ef2 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs @@ -24,7 +24,7 @@ public WindowsSpeechInputDeviceManager(string name, uint priority) : base(name, /// /// The keywords to be recognized and optional keyboard shortcuts. /// - private static SpeechCommands[] Commands => MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands; + private static SpeechCommands[] Commands => MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands; /// /// The Input Source for Windows Speech Input. @@ -41,7 +41,7 @@ public override void Enable() { if (!Application.isPlaying || Commands.Length == 0) { return; } - InputSource = MixedRealityManager.InputSystem?.RequestNewGenericInputSource("Windows Speech Input Source"); + InputSource = MixedRealityOrchestrator.InputSystem?.RequestNewGenericInputSource("Windows Speech Input Source"); var newKeywords = new string[Commands.Length]; @@ -50,11 +50,11 @@ public override void Enable() newKeywords[i] = Commands[i].Keyword; } - RecognitionConfidenceLevel = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechRecognitionConfidenceLevel; + RecognitionConfidenceLevel = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechRecognitionConfidenceLevel; keywordRecognizer = new KeywordRecognizer(newKeywords, (ConfidenceLevel) RecognitionConfidenceLevel); keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized; - if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechRecognizerStartBehavior == AutoStartBehavior.AutoStart) + if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechRecognizerStartBehavior == AutoStartBehavior.AutoStart) { StartRecognition(); } @@ -121,7 +121,7 @@ private void OnPhraseRecognized(ConfidenceLevel confidence, TimeSpan phraseDurat { if (Commands[i].Keyword == text) { - MixedRealityManager.InputSystem.RaiseSpeechCommandRecognized(InputSource, Commands[i].Action, (RecognitionConfidenceLevel)confidence, phraseDuration, phraseStartTime, text); + MixedRealityOrchestrator.InputSystem.RaiseSpeechCommandRecognized(InputSource, Commands[i].Action, (RecognitionConfidenceLevel)confidence, phraseDuration, phraseStartTime, text); break; } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs index 6ffac96a902..48dbbb1cb2d 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs @@ -102,7 +102,7 @@ private void OnFocus() #region Interaction Constraint Setup - actionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + actionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Select(action => (int)action.Id) .Prepend(0).ToArray(); @@ -110,81 +110,81 @@ private void OnFocus() .Select(axis => new GUIContent(axis.Name)) .Prepend(new GUIContent("None")).ToArray(); - actionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + actionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.None) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - actionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + actionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.None) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - rawActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + rawActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.Raw) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - rawActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + rawActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.Raw) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - digitalActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + digitalActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.Digital) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - digitalActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + digitalActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.Digital) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - singleAxisActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + singleAxisActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.SingleAxis) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - singleAxisActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + singleAxisActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.SingleAxis) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - dualAxisActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + dualAxisActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.DualAxis) .Select(action => (int)action.Id).Prepend(0).ToArray(); - dualAxisActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + dualAxisActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.DualAxis) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - threeDofPositionActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + threeDofPositionActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.ThreeDofPosition) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - threeDofPositionActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + threeDofPositionActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.ThreeDofPosition) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - threeDofRotationActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + threeDofRotationActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.ThreeDofRotation) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - threeDofRotationActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + threeDofRotationActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.ThreeDofRotation) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - sixDofActionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + sixDofActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.SixDof) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - sixDofActionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + sixDofActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.SixDof) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); @@ -454,7 +454,7 @@ private void RenderInteractionList(SerializedProperty interactionList, bool useC if (EditorGUI.EndChangeCheck()) { - var inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; + var inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; } @@ -694,7 +694,7 @@ private void RenderInteractionList(SerializedProperty interactionList, bool useC { MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionId.intValue = (int)inputAction.Id; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs index 683fd17e516..cb33f4879ac 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs @@ -9,7 +9,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Inspectors { - [CustomEditor(typeof(MixedRealityManager))] + [CustomEditor(typeof(MixedRealityOrchestrator))] public class MixedRealityManagerInspector : Editor { private SerializedProperty activeProfile; @@ -85,15 +85,15 @@ public override void OnInspectorGUI() if (changed) { - MixedRealityManager.Instance.ResetConfiguration((MixedRealityConfigurationProfile)activeProfile.objectReferenceValue); + MixedRealityOrchestrator.Instance.ResetConfiguration((MixedRealityConfigurationProfile)activeProfile.objectReferenceValue); } } [MenuItem("Mixed Reality Toolkit/Configure...")] public static void CreateMixedRealityManagerObject() { - Selection.activeObject = MixedRealityManager.Instance; - EditorGUIUtility.PingObject(MixedRealityManager.Instance); + Selection.activeObject = MixedRealityOrchestrator.Instance; + EditorGUIUtility.PingObject(MixedRealityOrchestrator.Instance); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs index 6f9f34ff6b1..208ce849d86 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs @@ -11,10 +11,10 @@ public abstract class BaseMixedRealityInspector : Editor /// True if the Mixed Reality Manager is properly initialized. protected bool CheckMixedRealityManager(bool showHelpBox = true) { - if (!MixedRealityManager.IsInitialized) + if (!MixedRealityOrchestrator.IsInitialized) { // Search the scene for one, in case we've just hot reloaded the assembly. - var managerSearch = FindObjectsOfType(); + var managerSearch = FindObjectsOfType(); if (managerSearch.Length == 0) { @@ -25,10 +25,10 @@ protected bool CheckMixedRealityManager(bool showHelpBox = true) return false; } - MixedRealityManager.ConfirmInitialized(); + MixedRealityOrchestrator.ConfirmInitialized(); } - if (!MixedRealityManager.HasActiveProfile) + if (!MixedRealityOrchestrator.HasActiveProfile) { if (showHelpBox) { diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs index d8e06c1b1fc..d319f26fbdd 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs @@ -70,14 +70,14 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } EditorGUILayout.Space(); EditorGUILayout.LabelField("Boundary Visualization Options", EditorStyles.boldLabel); EditorGUILayout.HelpBox("Boundary visualizations can help users stay oriented and comfortable in the experience.", MessageType.Info); // Boundary settings depend on the experience scale - if (MixedRealityManager.Instance.ActiveProfile.TargetExperienceScale != ExperienceScale.Room) + if (MixedRealityOrchestrator.Instance.ActiveProfile.TargetExperienceScale != ExperienceScale.Room) { EditorGUILayout.Space(); EditorGUILayout.HelpBox("Boundary visualization is only supported in Room scale experiences.", MessageType.Warning); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs index fdd25b21f83..36e011f7b55 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs @@ -54,7 +54,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs index 8013153a5b9..d78898d9d04 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs @@ -45,10 +45,10 @@ private void OnEnable() configurationProfile = target as MixedRealityConfigurationProfile; // Create The MR Manager if none exists. - if (!MixedRealityManager.IsInitialized) + if (!MixedRealityOrchestrator.IsInitialized) { // Search the scene for one, in case we've just hot reloaded the assembly. - var managerSearch = FindObjectsOfType(); + var managerSearch = FindObjectsOfType(); if (managerSearch.Length == 0) { @@ -58,7 +58,7 @@ private void OnEnable() "Yes", "Later")) { - MixedRealityManager.Instance.ActiveProfile = configurationProfile; + MixedRealityOrchestrator.Instance.ActiveProfile = configurationProfile; } else { @@ -68,12 +68,12 @@ private void OnEnable() } } - if (!MixedRealityManager.ConfirmInitialized()) + if (!MixedRealityOrchestrator.ConfirmInitialized()) { return; } - if (!MixedRealityManager.HasActiveProfile) + if (!MixedRealityOrchestrator.HasActiveProfile) { return; } @@ -108,7 +108,7 @@ public override void OnInspectorGUI() serializedObject.Update(); RenderMixedRealityToolkitLogo(); - if (!MixedRealityManager.IsInitialized) + if (!MixedRealityOrchestrator.IsInitialized) { EditorGUILayout.HelpBox("Unable to find Mixed Reality Manager!", MessageType.Error); return; @@ -216,7 +216,7 @@ public override void OnInspectorGUI() if (changed) { - EditorApplication.delayCall += () => MixedRealityManager.Instance.ResetConfiguration(configurationProfile); + EditorApplication.delayCall += () => MixedRealityOrchestrator.Instance.ResetConfiguration(configurationProfile); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs index c17be327831..55497192112 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs @@ -64,8 +64,8 @@ private void OnEnable() mixedRealityControllerMappingProfiles = serializedObject.FindProperty("mixedRealityControllerMappingProfiles"); - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled || - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled || + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { return; } @@ -83,13 +83,13 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } return; @@ -97,7 +97,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); @@ -105,7 +105,7 @@ public override void OnInspectorGUI() EditorGUILayout.HelpBox("Use this profile to define all the controllers and their inputs your users will be able to use in your application.\n\n" + "You'll want to define all your Input Actions first, then you can then wire them up to hardware sensors, controllers, gestures, and other input devices.", MessageType.Info); - if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) + if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { EditorGUILayout.HelpBox("No input actions found, please specify a input action profile in the main configuration.", MessageType.Error); return; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs index 256f9ebfd15..e9dfbc0f33e 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs @@ -65,13 +65,13 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } return; @@ -79,7 +79,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs index cedff2dbdcd..de6cab31d07 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs @@ -40,7 +40,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } if (MixedRealityPreferences.LockProfiles && !((BaseMixedRealityProfile)target).IsCustomProfile) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs index 0a1c4588041..f0dd8b0afec 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs @@ -40,11 +40,11 @@ private void OnEnable() windowsRailsNavigationGestures = serializedObject.FindProperty("railsNavigationGestures"); windowsGestureAutoStart = serializedObject.FindProperty("windowsGestureAutoStart"); - if (MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile != null) + if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile != null) { - actionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); - actionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); + actionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); + actionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); } } @@ -54,13 +54,13 @@ public override void OnInspectorGUI() if (!CheckMixedRealityManager()) { return; } - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } return; @@ -68,14 +68,14 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); EditorGUILayout.LabelField("Gesture Input", EditorStyles.boldLabel); EditorGUILayout.HelpBox("This gesture map is any and all movements of part the user's body, especially a hand or the head, that raise actions through the input system.\n\nNote: Defined controllers can look up the list of gestures and raise the events based on specific criteria.", MessageType.Info); - if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) + if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { EditorGUILayout.HelpBox("No input actions found, please specify a input action profile in the main configuration.", MessageType.Error); return; @@ -162,7 +162,7 @@ private static void RenderList(SerializedProperty list) if (EditorGUI.EndChangeCheck()) { - MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; + MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs index 38aedfdf529..40015ff9d47 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs @@ -39,13 +39,13 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } return; @@ -53,7 +53,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs index c9bea47565a..59c383ec0d5 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs @@ -22,12 +22,12 @@ public class MixedRealityInputSystemProfileInspector : MixedRealityBaseConfigura private void OnEnable() { - if (!MixedRealityManager.ConfirmInitialized()) + if (!MixedRealityOrchestrator.ConfirmInitialized()) { return; } - if (!MixedRealityManager.HasActiveProfile) + if (!MixedRealityOrchestrator.HasActiveProfile) { return; } @@ -51,7 +51,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } EditorGUILayout.Space(); @@ -88,7 +88,7 @@ public override void OnInspectorGUI() if (changed) { - EditorApplication.delayCall += () => MixedRealityManager.Instance.ResetConfiguration(MixedRealityManager.Instance.ActiveProfile); + EditorApplication.delayCall += () => MixedRealityOrchestrator.Instance.ResetConfiguration(MixedRealityOrchestrator.Instance.ActiveProfile); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs index faf79026685..764654266f8 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs @@ -49,7 +49,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs index cc99cbb01ff..8575d074728 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs @@ -38,7 +38,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } EditorGUILayout.Space(); @@ -133,7 +133,7 @@ private void RenderList(SerializedProperty list) if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); - MixedRealityManager.Instance.ResetConfiguration(MixedRealityManager.Instance.ActiveProfile); + MixedRealityOrchestrator.Instance.ResetConfiguration(MixedRealityOrchestrator.Instance.ActiveProfile); } EditorGUI.indentLevel--; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs index 3d7a166597e..92a5532de4c 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs @@ -33,14 +33,14 @@ private void OnEnable() return; } - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled || - MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { return; } + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled || + MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { return; } recognizerStartBehaviour = serializedObject.FindProperty("startBehavior"); recognitionConfidenceLevel = serializedObject.FindProperty("recognitionConfidenceLevel"); speechCommands = serializedObject.FindProperty("speechCommands"); - actionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); - actionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); + actionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); + actionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); } public override void OnInspectorGUI() @@ -51,13 +51,13 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; } return; @@ -65,7 +65,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; } if (MixedRealityPreferences.LockProfiles && !((BaseMixedRealityProfile)target).IsCustomProfile) @@ -77,7 +77,7 @@ public override void OnInspectorGUI() EditorGUILayout.LabelField("Speech Commands", EditorStyles.boldLabel); EditorGUILayout.HelpBox("Speech Commands are any/all spoken keywords your users will be able say to raise an Input Action in your application.", MessageType.Info); - if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) + if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { EditorGUILayout.HelpBox("No input actions found, please specify a input action profile in the main configuration.", MessageType.Error); return; @@ -149,7 +149,7 @@ private static void RenderList(SerializedProperty list) if (EditorGUI.EndChangeCheck()) { - MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; + MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs index cbce97267f0..1b309f10061 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs @@ -19,7 +19,7 @@ public class InputActionPropertyDrawer : PropertyDrawer public override void OnGUI(Rect rect, SerializedProperty property, GUIContent content) { - if (!MixedRealityManager.IsInitialized || !MixedRealityManager.HasActiveProfile) + if (!MixedRealityOrchestrator.IsInitialized || !MixedRealityOrchestrator.HasActiveProfile) { profile = null; actionLabels = new[] { new GUIContent("Missing Mixed Reality Manager") }; @@ -27,11 +27,11 @@ public override void OnGUI(Rect rect, SerializedProperty property, GUIContent co } if (profile == null || - (MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && + (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && profile.InputActions != null && - profile.InputActions != MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions)) + profile.InputActions != MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions)) { - profile = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile; + profile = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile; if (profile != null) { @@ -45,7 +45,7 @@ public override void OnGUI(Rect rect, SerializedProperty property, GUIContent co } } - if (!MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { profile = null; actionLabels = new[] { new GUIContent("Input System Disabled") }; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs index 6ff313ed0e0..8b92e7b09f0 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs @@ -26,8 +26,8 @@ private void OnEnable() { canvas = (Canvas)target; - if (MixedRealityManager.HasActiveProfile && - MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (MixedRealityOrchestrator.HasActiveProfile && + MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { CheckCanvasSettings(); } @@ -35,14 +35,14 @@ private void OnEnable() public override void OnInspectorGUI() { - if (!MixedRealityManager.HasActiveProfile || - !MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityOrchestrator.HasActiveProfile || + !MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { base.OnInspectorGUI(); return; } - if (MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && MixedRealityManager.InputSystem == null) + if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && MixedRealityOrchestrator.InputSystem == null) { EditorGUILayout.HelpBox("No Input System Profile found in the Mixed Reality Manager's Active Profile.", MessageType.Error); base.OnInspectorGUI(); @@ -64,11 +64,11 @@ private void CheckCanvasSettings() bool removeHelper = false; // Update the world camera if we need to. - if (canvas.isRootCanvas && canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera != MixedRealityManager.InputSystem.FocusProvider.UIRaycastCamera) + if (canvas.isRootCanvas && canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera != MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera) { if (EditorUtility.DisplayDialog("Attention!", DialogText, "OK", "Cancel")) { - canvas.worldCamera = MixedRealityManager.InputSystem.FocusProvider.UIRaycastCamera; + canvas.worldCamera = MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera; } else { @@ -77,14 +77,14 @@ private void CheckCanvasSettings() } // Add the Canvas Helper if we need it. - if (canvas.isRootCanvas && canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera == MixedRealityManager.InputSystem.FocusProvider.UIRaycastCamera) + if (canvas.isRootCanvas && canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera == MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera) { var helper = canvas.gameObject.EnsureComponent(); helper.Canvas = canvas; } // Reset the world canvas if we need to. - if (canvas.isRootCanvas && canvas.renderMode != RenderMode.WorldSpace && canvas.worldCamera == MixedRealityManager.InputSystem.FocusProvider.UIRaycastCamera) + if (canvas.isRootCanvas && canvas.renderMode != RenderMode.WorldSpace && canvas.worldCamera == MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera) { // Sets it back to MainCamera default. canvas.worldCamera = null; diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDeviceManager.cs index 4fe8831ec14..42d951c3052 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDeviceManager.cs @@ -7,7 +7,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices /// /// Mixed Reality Toolkit device definition, used to instantiate and manage a specific device / SDK /// - public interface IMixedRealityDeviceManager : IMixedRealityManager + public interface IMixedRealityDeviceManager : IMixedRealityService { /// /// Retrieve all controllers currently registered with this device at runtime (if direct access is required) diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/EventSystem/IMixedRealityEventSystem.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/EventSystem/IMixedRealityEventSystem.cs index 1899263f776..1cedff8cd13 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/EventSystem/IMixedRealityEventSystem.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/EventSystem/IMixedRealityEventSystem.cs @@ -10,7 +10,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.Events /// /// Interface used to implement an Event System that is compatible with the Mixed Reality Toolkit. /// - public interface IMixedRealityEventSystem : IMixedRealityManager + public interface IMixedRealityEventSystem : IMixedRealityService { /// /// List of event listeners that are registered to this Event System. diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs index 2f223f9301e..368f6ec6e28 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces /// /// Generic interface for all optional Mixed Reality systems, components, or features that can be added to the /// - public interface IMixedRealityComponent : IMixedRealityManager + public interface IMixedRealityComponent : IMixedRealityService { // Empty for now, but it is used to filter out the valid class types in the inspector dropdown. } diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityManager.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs similarity index 64% rename from Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityManager.cs rename to Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs index 5889bfa4266..d99e2466d19 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs @@ -4,12 +4,12 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces { /// - /// Generic interface for all Mixed Reality Managers + /// Generic interface for all Mixed Reality Services /// - public interface IMixedRealityManager + public interface IMixedRealityService { /// - /// Optional Priority attribute if multiple managers of the same type are required, enables targeting a manager for action + /// Optional Priority attribute if multiple services of the same type are required, enables targeting a service for action. /// string Name { get; } @@ -19,33 +19,33 @@ public interface IMixedRealityManager uint Priority { get; } /// - /// The initialize function is used to setup the manager once created. - /// This method is called once all managers have been registered in the Mixed Reality Manager. + /// The initialize function is used to setup the service once created. + /// This method is called once all services have been registered in the Mixed Reality Orchestrator. /// void Initialize(); /// - /// Optional Reset function to perform that will Reset the manager, for example, whenever there is a profile change. + /// Optional Reset function to perform that will Reset the service, for example, whenever there is a profile change. /// void Reset(); /// - /// Optional Enable function to enable / re-enable the manager. + /// Optional Enable function to enable / re-enable the service. /// void Enable(); /// - /// Optional Update function to perform per-frame updates of the manager. + /// Optional Update function to perform per-frame updates of the service. /// void Update(); /// - /// Optional Disable function to pause the manager. + /// Optional Disable function to pause the service. /// void Disable(); /// - /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Manager is destroyed. + /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Orchestrator is destroyed. /// void Destroy(); } diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityManager.cs.meta b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityManager.cs.meta rename to Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Managers/BaseManager.cs b/Assets/MixedRealityToolkit/_Core/Managers/BaseManager.cs deleted file mode 100644 index df4a32120e4..00000000000 --- a/Assets/MixedRealityToolkit/_Core/Managers/BaseManager.cs +++ /dev/null @@ -1,52 +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.Core.Managers -{ - /// - /// The base manager implements the IMixedRealityManager interface and provides default properties for all managers - /// - public class BaseManager : Interfaces.IMixedRealityManager - { - /// - /// Optional Name attribute if multiple managers of the same type are required, enables targeting a manager for action - /// - public virtual string Name { get; set; } - - /// - /// Optional Priority to reorder registered managers based on their respective priority, reduces the risk of race conditions by prioritizing the order in which managers are evaluated. - /// - public virtual uint Priority { get; set; } = 5; - - /// - /// The initialize function is used to setup the manager once created. - /// This method is called once all managers have been registered in the Mixed Reality Manager. - /// - public virtual void Initialize() { } - - /// - /// Optional Reset function to perform that will Reset the manager, for example, whenever there is a profile change. - /// - public virtual void Reset() { } - - /// - /// Optional Enable function to enable / re-enable the manager. - /// - public virtual void Enable() { } - - /// - /// Optional Update function to perform per-frame updates of the manager. - /// - public virtual void Update() { } - - /// - /// Optional Disable function to pause the manager. - /// - public virtual void Disable() { } - - /// - /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Manager is destroyed. - /// - public virtual void Destroy() { } - } -} diff --git a/Assets/MixedRealityToolkit/_Core/Managers/README.md b/Assets/MixedRealityToolkit/_Core/Managers/README.md deleted file mode 100644 index a534e00f7fa..00000000000 --- a/Assets/MixedRealityToolkit/_Core/Managers/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Mixed Reality Toolkit - Internal - Managers - -This folder contains all the MRTK Internal Managers and supporting functions - -## Manager Definitions - -The list of definitions for Internal MRTK Managers are listed below. - -### MixedRealityManager - -The MixedRealityManager is the core manager responsible for maintaining all active components in a Mixed Reality project. -It is also responsible for selecting and maintaining the active SDK / Device currently in operation in the project depending on the platform and available hardware. - -All other managers depend on the MixedRealityManager for coordinating calls between components as well as the active profile for the Mixed Reality Toolkit - -> [See the MixedRealityManager Guide for more info](/External/Documentation/MixedRealityManagerConstruction.md) \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Managers.meta b/Assets/MixedRealityToolkit/_Core/Services.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Managers.meta rename to Assets/MixedRealityToolkit/_Core/Services.meta diff --git a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityEventManager.cs b/Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs similarity index 89% rename from Assets/MixedRealityToolkit/_Core/Managers/MixedRealityEventManager.cs rename to Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs index a79f95ce559..0d89ff4a113 100644 --- a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityEventManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs @@ -10,11 +10,11 @@ namespace Microsoft.MixedReality.Toolkit.Core.Managers { /// - /// Event System Manager that can be inherited from to give other managers event capabilities. + /// Base Event System that can be inherited from to give other system features event capabilities. /// - public abstract class MixedRealityEventManager : BaseManager, IMixedRealityEventSystem + public abstract class BaseEventSystem : BaseService, IMixedRealityEventSystem { - #region IEventSystemManager Implementation + #region IMixedRealityEventSystem Implementation private static bool isExecutingEvents = false; private readonly WaitUntil doneExecutingEvents = new WaitUntil(() => !isExecutingEvents); @@ -62,7 +62,7 @@ public virtual async void Unregister(GameObject listener) EventListeners.Remove(listener); } - #endregion IEventSystemManager Implementation + #endregion IMixedRealityEventSystem Implementation // Example Event Pattern ############################################################# diff --git a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityEventManager.cs.meta b/Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Managers/MixedRealityEventManager.cs.meta rename to Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs b/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs new file mode 100644 index 00000000000..9857dcb5a87 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Services/BaseService.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. + +namespace Microsoft.MixedReality.Toolkit.Core.Managers +{ + /// + /// The base manager implements the IMixedRealityService interface and provides default properties for all services + /// + public class BaseService : Interfaces.IMixedRealityService + { + /// + public virtual string Name { get; set; } + + /// + public virtual uint Priority { get; set; } = 5; + + /// + public virtual void Initialize() { } + + /// + public virtual void Reset() { } + + /// + public virtual void Enable() { } + + /// + public virtual void Update() { } + + /// + public virtual void Disable() { } + + /// + public virtual void Destroy() { } + } +} diff --git a/Assets/MixedRealityToolkit/_Core/Managers/BaseManager.cs.meta b/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Managers/BaseManager.cs.meta rename to Assets/MixedRealityToolkit/_Core/Services/BaseService.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs similarity index 56% rename from Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs rename to Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs index b0090bc6e32..3f325009f48 100644 --- a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs @@ -17,19 +17,20 @@ namespace Microsoft.MixedReality.Toolkit.Core.Managers { /// - /// The Mixed Reality manager is responsible for coordinating the operation of the Mixed Reality Toolkit. - /// It provides a service registry for all active managers that are used within a project as well as providing the active configuration profile for the project. + /// The Mixed Reality Orchestrator is responsible for coordinating the operation of the Mixed Reality Toolkit. + /// It provides a service registry for all active services that are used within a project as well as providing the active configuration profile for the project. /// The Profile can be swapped out at any time to meet the needs of your project. /// - public class MixedRealityManager : MonoBehaviour + public class MixedRealityOrchestrator : MonoBehaviour { - #region Mixed Reality Manager Profile configuration + #region Mixed Reality Orchestrator Profile configuration - private bool isMixedRealityManagerInitializing = false; + private const string MixedRealityPlayspaceName = "MixedRealityPlayspace"; + + private bool isInitializing = false; /// - /// Checks if there is a valid instance of the MixedRealityManager, then checks if there - /// is there a valid Active Profile on this manager. + /// Checks if there is a valid instance of the MixedRealityOrchestrator, then checks if there is there a valid Active Profile. /// public static bool HasActiveProfile { @@ -50,7 +51,7 @@ public static bool HasActiveProfile } /// - /// The active profile of the Mixed Reality Manager which controls which components are active and their initial configuration. + /// The active profile of the Mixed Reality Orchestrator which controls which components are active and their initial configuration. /// *Note configuration is used on project initialization or replacement, changes to properties while it is running has no effect. /// [SerializeField] @@ -80,36 +81,36 @@ public MixedRealityConfigurationProfile ActiveProfile } /// - /// When a configuration Profile is replaced with a new configuration, force all managers to reset and read the new values + /// When a configuration Profile is replaced with a new configuration, force all services to reset and read the new values /// /// public void ResetConfiguration(MixedRealityConfigurationProfile profile) { if (activeProfile != null) { - DisableAllManagers(); - DestroyAllManagers(); + DisableAllServices(); + DestroyAllServices(); } activeProfile = profile; if (profile != null) { - DisableAllManagers(); - DestroyAllManagers(); + DisableAllServices(); + DestroyAllServices(); } Initialize(); } - #endregion Mixed Reality Manager Profile configuration + #endregion Mixed Reality Orchestrator Profile configuration #region Mixed Reality runtime component registry /// - /// Local component registry for the Mixed Reality Manager, to allow runtime use of the Manager. + /// Local component registry for the Mixed Reality Orchestrator, to allow runtime use of the . /// - public List> MixedRealityComponents { get; } = new List>(); + public List> MixedRealityComponents { get; } = new List>(); private int mixedRealityComponentsCount = 0; @@ -117,33 +118,33 @@ public void ResetConfiguration(MixedRealityConfigurationProfile profile) /// /// Function called when the instance is assigned. - /// Once all managers are registered and properties updated, the Mixed Reality Manager will initialize all active managers. - /// This ensures all managers can reference each other once started. + /// Once all services are registered and properties updated, the Mixed Reality Orchestrator will initialize all active services. + /// This ensures all services can reference each other once started. /// private void Initialize() { - isMixedRealityManagerInitializing = true; + isInitializing = true; - //If the Mixed Reality Manager is not configured, stop. + //If the Mixed Reality Orchestrator is not configured, stop. if (ActiveProfile == null) { - Debug.LogError("No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Manager"); + Debug.LogError("No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Orchestrator"); return; } #if UNITY_EDITOR - if (ActiveProfile.ActiveManagers.Count > 0) + if (ActiveProfile.ActiveServices.Count > 0) { if (!Application.isPlaying) { - DisableAllManagers(); - DestroyAllManagers(); + DisableAllServices(); + DestroyAllServices(); } else { mixedRealityComponentsCount = 0; MixedRealityComponents.Clear(); - ActiveProfile.ActiveManagers.Clear(); + ActiveProfile.ActiveServices.Clear(); } } #endif @@ -166,7 +167,7 @@ private void Initialize() } } - #region Managers Registration + #region Services Registration // If the Input system has been selected for initialization in the Active profile, enable it in the project if (ActiveProfile.IsInputSystemEnabled) @@ -176,7 +177,7 @@ private void Initialize() Utilities.Editor.InputMappingAxisUtility.CheckUnityInputManagerMappings(Definitions.Devices.ControllerMappingLibrary.UnityInputManagerAxes); #endif - AddManager(typeof(IMixedRealityInputSystem), Activator.CreateInstance(ActiveProfile.InputSystemType) as IMixedRealityInputSystem); + RegisterService(typeof(IMixedRealityInputSystem), Activator.CreateInstance(ActiveProfile.InputSystemType) as IMixedRealityInputSystem); if (InputSystem == null) { @@ -187,7 +188,7 @@ private void Initialize() // If the Boundary system has been selected for initialization in the Active profile, enable it in the project if (ActiveProfile.IsBoundarySystemEnabled) { - AddManager(typeof(IMixedRealityBoundarySystem), Activator.CreateInstance(ActiveProfile.BoundarySystemSystemType) as IMixedRealityBoundarySystem); + RegisterService(typeof(IMixedRealityBoundarySystem), Activator.CreateInstance(ActiveProfile.BoundarySystemSystemType) as IMixedRealityBoundarySystem); if (BoundarySystem == null) { @@ -199,7 +200,7 @@ private void Initialize() // If the Teleport system has been selected for initialization in the Active profile, enable it in the project if (ActiveProfile.IsTeleportSystemEnabled) { - AddManager(typeof(IMixedRealityTeleportSystem), Activator.CreateInstance(ActiveProfile.TeleportSystemSystemType) as IMixedRealityTeleportSystem); + RegisterService(typeof(IMixedRealityTeleportSystem), Activator.CreateInstance(ActiveProfile.TeleportSystemSystemType) as IMixedRealityTeleportSystem); if (TeleportSystem == null) { @@ -209,7 +210,7 @@ private void Initialize() if (ActiveProfile.IsDiagnosticsSystemEnabled) { - AddManager(typeof(IMixedRealityDiagnosticsSystem), Activator.CreateInstance(ActiveProfile.DiagnosticsSystemSystemType) as IMixedRealityDiagnosticsSystem); + RegisterService(typeof(IMixedRealityDiagnosticsSystem), Activator.CreateInstance(ActiveProfile.DiagnosticsSystemSystemType) as IMixedRealityDiagnosticsSystem); if (DiagnosticsSystem == null) { @@ -230,50 +231,50 @@ private void Initialize() { if (configuration.ComponentType.Type != null) { - AddManager(typeof(IMixedRealityComponent), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityComponent); + RegisterService(typeof(IMixedRealityComponent), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityComponent); } } } } - #endregion Manager Registration + #endregion Service Registration - #region Managers Initialization + #region Services Initialization //TODO should this be optional? - //Sort the managers based on Priority - var orderedManagers = ActiveProfile.ActiveManagers.OrderBy(m => m.Value.Priority).ToArray(); - ActiveProfile.ActiveManagers.Clear(); + //Sort the services based on Priority + var orderedServices = ActiveProfile.ActiveServices.OrderBy(m => m.Value.Priority).ToArray(); + ActiveProfile.ActiveServices.Clear(); - foreach (var manager in orderedManagers) + foreach (var service in orderedServices) { - AddManager(manager.Key, manager.Value); + RegisterService(service.Key, service.Value); } - InitializeAllManagers(); + InitializeAllServices(); - #endregion Managers Initialization + #endregion Services Initialization - isMixedRealityManagerInitializing = false; + isInitializing = false; } private void EnsureMixedRealityRequirements() { // There's lots of documented cases that if the camera doesn't start at 0,0,0, things break with the WMR SDK specifically. // We'll enforce that here, then tracking can update it to the appropriate position later. - CameraCache.Main.transform.position = Vector3.zero; + CameraCache.Main.transform.position = Vector3.zero; } #region MonoBehaviour Implementation - private static MixedRealityManager instance; + private static MixedRealityOrchestrator instance; /// /// Returns the Singleton instance of the classes type. /// If no instance is found, then we search for an instance in the scene. /// If more than one instance is found, we throw an error and no instance is returned. /// - public static MixedRealityManager Instance + public static MixedRealityOrchestrator Instance { get { @@ -287,19 +288,19 @@ public static MixedRealityManager Instance return null; } - MixedRealityManager[] objects = FindObjectsOfType(); + MixedRealityOrchestrator[] objects = FindObjectsOfType(); searchForInstance = false; switch (objects.Length) { case 0: - instance = new GameObject(nameof(MixedRealityManager)).AddComponent(); + instance = new GameObject(nameof(MixedRealityOrchestrator)).AddComponent(); break; case 1: instance = objects[0]; break; default: - Debug.LogError($"Expected exactly 1 {nameof(MixedRealityManager)} but found {objects.Length}."); + Debug.LogError($"Expected exactly 1 {nameof(MixedRealityOrchestrator)} but found {objects.Length}."); return null; } @@ -316,11 +317,11 @@ public static MixedRealityManager Instance private static bool searchForInstance = true; /// - /// Expose an assertion whether the MixedRealityManager class is initialized. + /// Expose an assertion whether the MixedRealityOrchestrator class is initialized. /// public static void AssertIsInitialized() { - Debug.Assert(IsInitialized, "The MixedRealityManager has not been initialized."); + Debug.Assert(IsInitialized, "The MixedRealityOrchestrator has not been initialized."); } /// @@ -329,19 +330,19 @@ public static void AssertIsInitialized() public static bool IsInitialized => instance != null; /// - /// Static function to determine if the MixedRealityManager class has been initialized or not. + /// Static function to determine if the MixedRealityOrchestrator class has been initialized or not. /// /// public static bool ConfirmInitialized() { // ReSharper disable once UnusedVariable // Assigning the Instance to access is used Implicitly. - MixedRealityManager access = Instance; + MixedRealityOrchestrator access = Instance; return IsInitialized; } /// - /// Lock property for the Mixed Reality Manager to prevent reinitialization + /// Lock property for the Mixed Reality Orchestrator to prevent reinitialization /// private readonly object initializedLock = new object(); @@ -383,51 +384,49 @@ private void InitializeInternal() /// public Transform MixedRealityPlayspace { - get { + get + { AssertIsInitialized(); if (mixedRealityPlayspace) { return mixedRealityPlayspace; } + + if (CameraCache.Main.transform.parent == null) + { + mixedRealityPlayspace = new GameObject(MixedRealityPlayspaceName).transform; + CameraCache.Main.transform.SetParent(mixedRealityPlayspace); + } else { - string MixedRealityPlayspaceName = "MixedRealityPlayspace"; - if (CameraCache.Main.transform.parent == null) - { - mixedRealityPlayspace = new GameObject(MixedRealityPlayspaceName).transform; - CameraCache.Main.transform.SetParent(mixedRealityPlayspace); - } - else + if (CameraCache.Main.transform.parent.name != MixedRealityPlayspaceName) { - if (CameraCache.Main.transform.parent.name != MixedRealityPlayspaceName) - { - // Since the scene is set up with a different camera parent, its likely - // that there's an expectation that that parent is going to be used for - // something else. We print a warning to call out the fact that we're - // co-opting this object for use with teleporting and such, since that - // might cause conflicts with the parent's intended purpose. - Debug.LogWarning("The Mixed Reality Manager expected the camera's parent to be named " + MixedRealityPlayspaceName + ". The existing parent will be renamed and used instead."); - CameraCache.Main.transform.parent.name = MixedRealityPlayspaceName; // If we rename it, we make it clearer that why it's being teleported around at runtime. - } - mixedRealityPlayspace = CameraCache.Main.transform.parent; + // Since the scene is set up with a different camera parent, its likely + // that there's an expectation that that parent is going to be used for + // something else. We print a warning to call out the fact that we're + // co-opting this object for use with teleporting and such, since that + // might cause conflicts with the parent's intended purpose. + Debug.LogWarning($"The Mixed Reality Orchestrator expected the camera\'s parent to be named {MixedRealityPlayspaceName}. The existing parent will be renamed and used instead."); + CameraCache.Main.transform.parent.name = MixedRealityPlayspaceName; // If we rename it, we make it clearer that why it's being teleported around at runtime. } + mixedRealityPlayspace = CameraCache.Main.transform.parent; + } - // It's very important that the MixedRealityPlayspace align with the tracked space, - // otherwise reality-locked things like playspace boundaries won't be aligned properly. - // For now, we'll just assume that when the playspace is first initialized, the - // tracked space origin overlaps with the world space origin. If a platform ever does - // something else (i.e, placing the lower left hand corner of the tracked space at world - // space 0,0,0), we should compensate for that here. + // It's very important that the MixedRealityPlayspace align with the tracked space, + // otherwise reality-locked things like playspace boundaries won't be aligned properly. + // For now, we'll just assume that when the playspace is first initialized, the + // tracked space origin overlaps with the world space origin. If a platform ever does + // something else (i.e, placing the lower left hand corner of the tracked space at world + // space 0,0,0), we should compensate for that here. - return mixedRealityPlayspace; - } + return mixedRealityPlayspace; } } private void ApplicationOnQuitting() { - DisableAllManagers(); - DestroyAllManagers(); + DisableAllServices(); + DestroyAllServices(); } /// @@ -449,7 +448,7 @@ private void Awake() Destroy(this); } - Debug.LogWarning("Trying to instantiate a second instance of the Mixed Reality Manager. Additional Instance was destroyed"); + Debug.LogWarning("Trying to instantiate a second instance of the Mixed Reality Orchestrator. Additional Instance was destroyed"); } else if (!IsInitialized) { @@ -459,35 +458,35 @@ private void Awake() } /// - /// The MonoBehaviour OnEnable event, which is then circulated to all active managers + /// The MonoBehaviour OnEnable event, which is then circulated to all active services /// private void OnEnable() { - EnableAllManagers(); + EnableAllServices(); } /// - /// The MonoBehaviour Update event, which is then circulated to all active managers + /// The MonoBehaviour Update event, which is then circulated to all active services /// private void Update() { - UpdateAllManagers(); + UpdateAllServices(); } /// - /// The MonoBehaviour OnDisable event, which is then circulated to all active managers + /// The MonoBehaviour OnDisable event, which is then circulated to all active services /// private void OnDisable() { - DisableAllManagers(); + DisableAllServices(); } /// - /// The MonoBehaviour Destroy event, which is then circulated to all active managers prior to the Mixed Reality Manager being destroyed + /// The MonoBehaviour Destroy event, which is then circulated to all active services prior to the Mixed Reality Orchestrator being destroyed /// private void OnDestroy() { - DestroyAllManagers(); + DestroyAllServices(); if (instance == this) { @@ -498,40 +497,40 @@ private void OnDestroy() #endregion MonoBehaviour Implementation - #region Manager Container Management + #region Service Container Management - #region Individual Manager Management + #region Individual Service Management /// - /// Add a new manager to the Mixed Reality Manager active Manager registry. + /// Add a new service to the Mixed Reality Orchestrator active service registry. /// /// The interface type for the system to be managed. E.G. InputSystem, BoundarySystem - /// The Instance of the manager class to register - public void AddManager(Type type, IMixedRealityManager manager) + /// The Instance of the service class to register + public void RegisterService(Type type, IMixedRealityService service) { if (ActiveProfile == null) { - Debug.LogError($"Unable to add a new {type.Name} Manager as the Mixed Reality manager has to Active Profile"); + Debug.LogError($"Unable to add a new {type.Name} Service as the Mixed Reality Orchestrator has to Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (manager == null) { throw new ArgumentNullException(nameof(manager)); } + if (service == null) { throw new ArgumentNullException(nameof(service)); } - if (IsCoreManagerType(type)) + if (IsCoreSystem(type)) { - IMixedRealityManager preexistingManager; - if (IsCoreManagerType(type)) + IMixedRealityService preExistingService; + if (IsCoreSystem(type)) { - ActiveProfile.ActiveManagers.TryGetValue(type, out preexistingManager); + ActiveProfile.ActiveServices.TryGetValue(type, out preExistingService); } else { - GetComponentByType(type, out preexistingManager); + GetService(type, out preExistingService); } - if (preexistingManager == null) + if (preExistingService == null) { - ActiveProfile.ActiveManagers.Add(type, manager); + ActiveProfile.ActiveServices.Add(type, service); } else { @@ -540,430 +539,430 @@ public void AddManager(Type type, IMixedRealityManager manager) } else { - MixedRealityComponents.Add(new Tuple(type, manager)); - if (!isMixedRealityManagerInitializing) { manager.Initialize(); } + MixedRealityComponents.Add(new Tuple(type, (IMixedRealityComponent)service)); + if (!isInitializing) { service.Initialize(); } mixedRealityComponentsCount = MixedRealityComponents.Count; } } /// - /// Generic function used to retrieve a manager from the Mixed Reality Manager active manager registry + /// Generic function used to retrieve a service from the Mixed Reality Orchestrator active service registry /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem. /// *Note type should be the Interface of the system to be retrieved and not the class itself - /// The instance of the manager class that is registered with the selected Interface - public T GetManager() where T : IMixedRealityManager + /// The instance of the service class that is registered with the selected Interface + public T GetService() where T : IMixedRealityService { - return (T)GetManager(typeof(T)); + return (T)GetService(typeof(T)); } /// - /// Retrieve a manager from the Mixed Reality Manager active manager registry + /// Retrieve a service from the Mixed Reality Orchestrator active service registry /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem - /// The Mixed Reality manager of the specified type - public IMixedRealityManager GetManager(Type type) + /// The Mixed Reality Orchestrator of the specified type + public IMixedRealityService GetService(Type type) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile."); + throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Orchestrator has no Active Profile."); } if (!IsInitialized) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has not been initialized!"); + throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Orchestrator has not been initialized!"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } - IMixedRealityManager manager; - if (IsCoreManagerType(type)) + IMixedRealityService service; + if (IsCoreSystem(type)) { - ActiveProfile.ActiveManagers.TryGetValue(type, out manager); + ActiveProfile.ActiveServices.TryGetValue(type, out service); } else { - GetComponentByType(type, out manager); + GetService(type, out service); } - if (manager == null) + if (service == null) { throw new NullReferenceException($"Unable to find {type.Name}."); } - return manager; + return service; } /// - /// Retrieve a manager from the Mixed Reality Manager active manager registry + /// Retrieve a service from the Mixed Reality Orchestrator active service registry /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem - /// Name of the specific manager - /// The Mixed Reality manager of the specified type - public IMixedRealityManager GetManager(Type type, string managerName) + /// Name of the specific service + /// The Mixed Reality Orchestrator of the specified type + public IMixedRealityService GetService(Type type, string serviceName) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {managerName} Manager as the Mixed Reality Manager has no Active Profile"); + throw new ArgumentNullException($"Unable to get {serviceName} Service as the Mixed Reality Orchestrator has no Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); } + if (string.IsNullOrEmpty(serviceName)) { throw new ArgumentNullException(nameof(serviceName)); } - IMixedRealityManager manager; - if (IsCoreManagerType(type)) + IMixedRealityService service; + if (IsCoreSystem(type)) { - ActiveProfile.ActiveManagers.TryGetValue(type, out manager); + ActiveProfile.ActiveServices.TryGetValue(type, out service); } else { - GetComponentByTypeAndName(type, managerName, out manager); + GetService(type, serviceName, out service); } - if (manager == null) + if (service == null) { - throw new NullReferenceException($"Unable to find {managerName} Manager."); + throw new NullReferenceException($"Unable to find {serviceName} Service."); } - return manager; + return service; } /// - /// Remove all managers from the Mixed Reality Manager active manager registry for a given type + /// Remove all services from the Mixed Reality Orchestrator active service registry for a given type /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem - public void RemoveManager(Type type) + public void UnregisterService(Type type) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to remove {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile"); + throw new ArgumentNullException($"Unable to remove {nameof(type)} Service as the Mixed Reality Orchestrator has no Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (IsCoreManagerType(type)) + if (IsCoreSystem(type)) { - ActiveProfile.ActiveManagers.Remove(type); + ActiveProfile.ActiveServices.Remove(type); } else { - IMixedRealityManager manager; - GetComponentByType(type, out manager); - if (manager != null) + IMixedRealityService service; + GetService(type, out service); + if (service != null) { - MixedRealityComponents.Remove(new Tuple(type, manager)); + MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityComponent)service)); } } } /// - /// Remove managers from the Mixed Reality Manager active manager registry for a given type and name + /// Remove services from the Mixed Reality Orchestrator active service registry for a given type and name /// Name is only supported for Mixed Reality runtime components /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem - /// The name of the manager to be removed. (Only for runtime components) - public void RemoveManager(Type type, string managerName) + /// The name of the service to be removed. (Only for runtime components) + public void UnregisterService(Type type, string serviceName) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to remove {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile"); + throw new ArgumentNullException($"Unable to remove {nameof(type)} service as the Mixed Reality Orchestrator has no Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); } + if (string.IsNullOrEmpty(serviceName)) { throw new ArgumentNullException(nameof(serviceName)); } - if (IsCoreManagerType(type)) + if (IsCoreSystem(type)) { - ActiveProfile.ActiveManagers.Remove(type); + ActiveProfile.ActiveServices.Remove(type); } else { - IMixedRealityManager manager; - GetComponentByTypeAndName(type, managerName, out manager); - if (manager != null) + IMixedRealityService service; + + if (GetService(type, serviceName, out service)) { - MixedRealityComponents.Remove(new Tuple(type, manager)); + MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityComponent)service)); } } } /// - /// Disable all managers in the Mixed Reality Manager active manager registry for a given type + /// Disable all services in the Mixed Reality Orchestrator active service registry for a given type /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem - public void DisableManager(Type type) + public void DisableService(Type type) { if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (IsCoreManagerType(type)) + if (IsCoreSystem(type)) { - GetManager(type).Disable(); + GetService(type).Disable(); } else { - foreach (var manager in GetManagers(type)) + foreach (var service in GetActiveServices(type)) { - manager.Disable(); + service.Disable(); } } } /// - /// Disable a specific manager from the Mixed Reality Manager active manager registry + /// Disable a specific service from the Mixed Reality Orchestrator active service registry /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem - /// Name of the specific manager - public void DisableManager(Type type, string managerName) + /// Name of the specific service + public void DisableService(Type type, string serviceName) { if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); } + if (string.IsNullOrEmpty(serviceName)) { throw new ArgumentNullException(nameof(serviceName)); } - if (IsCoreManagerType(type)) + if (IsCoreSystem(type)) { - GetManager(type).Disable(); + GetService(type).Disable(); } else { - foreach (var manager in GetManagers(type, managerName)) + foreach (var service in GetActiveServices(type, serviceName)) { - manager.Disable(); + service.Disable(); } } } /// - /// Enable all managers in the Mixed Reality Manager active manager registry for a given type + /// Enable all services in the Mixed Reality Orchestrator active service registry for a given type /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem - public void EnableManager(Type type) + public void EnableService(Type type) { if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (IsCoreManagerType(type)) + if (IsCoreSystem(type)) { - GetManager(type).Enable(); + GetService(type).Enable(); } else { - foreach (var manager in GetManagers(type)) + foreach (var service in GetActiveServices(type)) { - manager.Enable(); + service.Enable(); } } } /// - /// Enable a specific manager from the Mixed Reality Manager active manager registry + /// Enable a specific service from the Mixed Reality Orchestrator active service registry /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem - /// Name of the specific manager - public void EnableManager(Type type, string managerName) + /// Name of the specific service + public void EnableService(Type type, string serviceName) { if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); } + if (string.IsNullOrEmpty(serviceName)) { throw new ArgumentNullException(nameof(serviceName)); } - if (IsCoreManagerType(type)) + if (IsCoreSystem(type)) { - GetManager(type).Enable(); + GetService(type).Enable(); } else { - foreach (var manager in GetManagers(type, managerName)) + foreach (var service in GetActiveServices(type, serviceName)) { - manager.Enable(); + service.Enable(); } } } - #endregion Individual Manager Management + #endregion Individual Service Management - #region Multiple Managers Management + #region Multiple Service Management /// - /// Retrieve all managers from the Mixed Reality Manager active manager registry for a given type and an optional name + /// Retrieve all services from the Mixed Reality Orchestrator active service registry for a given type and an optional name /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem - /// An array of Managers that meet the search criteria - public IEnumerable GetManagers(Type type) + /// An array of services that meet the search criteria + public List GetActiveServices(Type type) { if (type == null) { throw new ArgumentNullException(nameof(type)); } - return GetManagers(type, string.Empty); + return GetActiveServices(type, string.Empty); } /// - /// Retrieve all managers from the Mixed Reality Manager active manager registry for a given type and an optional name + /// Retrieve all services from the Mixed Reality Orchestrator active service registry for a given type and an optional name /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem - /// Name of the specific manager - /// An array of Managers that meet the search criteria - public List GetManagers(Type type, string managerName) + /// Name of the specific service + /// An array of services that meet the search criteria + public List GetActiveServices(Type type, string serviceName) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile"); + throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Orchestrator has no Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } - var managers = new List(); + var services = new List(); - if (IsCoreManagerType(type)) + if (IsCoreSystem(type)) { - foreach (var manager in ActiveProfile.ActiveManagers) + foreach (var service in ActiveProfile.ActiveServices) { - if (manager.Key.Name == type.Name) + if (service.Key.Name == type.Name) { - managers.Add(manager.Value); + services.Add(service.Value); } } } else { // If no name provided, return all components of the same type. Else return the type/name combination. - if (string.IsNullOrWhiteSpace(managerName)) + if (string.IsNullOrWhiteSpace(serviceName)) { - GetComponentsByType(type, ref managers); + GetService(type, ref services); } else { - GetComponentsByTypeAndName(type, managerName, ref managers); + GetServices(type, serviceName, ref services); } } - return managers; + return services; } - private void InitializeAllManagers() + private void InitializeAllServices() { - //If the Mixed Reality Manager is not configured, stop. + //If the Mixed Reality Orchestrator is not configured, stop. if (activeProfile == null) { return; } - //Initialize all managers - foreach (var manager in activeProfile.ActiveManagers) + //Initialize all services + foreach (var service in activeProfile.ActiveServices) { - manager.Value.Initialize(); + service.Value.Initialize(); } // Enable all registered runtime components - foreach (var manager in MixedRealityComponents) + foreach (var component in MixedRealityComponents) { - manager.Item2.Initialize(); + component.Item2.Initialize(); } } - private void ResetAllManagers() + private void ResetAllServices() { - //If the Mixed Reality Manager is not configured, stop. + //If the Mixed Reality Orchestrator is not configured, stop. if (activeProfile == null) { return; } - // Reset all active managers in the registry - foreach (var manager in activeProfile.ActiveManagers) + // Reset all active services in the registry + foreach (var service in activeProfile.ActiveServices) { - manager.Value.Reset(); + service.Value.Reset(); } // Reset all registered runtime components - foreach (var manager in MixedRealityComponents) + foreach (var service in MixedRealityComponents) { - manager.Item2.Reset(); + service.Item2.Reset(); } } - private void EnableAllManagers() + private void EnableAllServices() { - //If the Mixed Reality Manager is not configured, stop. + //If the Mixed Reality Orchestrator is not configured, stop. if (activeProfile == null) { return; } - // Enable all active managers in the registry - foreach (var manager in activeProfile.ActiveManagers) + // Enable all active services in the registry + foreach (var service in activeProfile.ActiveServices) { - manager.Value.Enable(); + service.Value.Enable(); } // Enable all registered runtime components - foreach (var manager in MixedRealityComponents) + foreach (var component in MixedRealityComponents) { - manager.Item2.Enable(); + component.Item2.Enable(); } } - private void UpdateAllManagers() + private void UpdateAllServices() { - //If the Mixed Reality Manager is not configured, stop. + //If the Mixed Reality Orchestrator is not configured, stop. if (activeProfile == null) { return; } - // Update manager registry - foreach (var manager in activeProfile.ActiveManagers) + // Update service registry + foreach (var service in activeProfile.ActiveServices) { - manager.Value.Update(); + service.Value.Update(); } //Update runtime component registry - foreach (var manager in MixedRealityComponents) + foreach (var component in MixedRealityComponents) { - manager.Item2.Update(); + component.Item2.Update(); } } - private void DisableAllManagers() + private void DisableAllServices() { - //If the Mixed Reality Manager is not configured, stop. + //If the Mixed Reality Orchestrator is not configured, stop. if (activeProfile == null) { return; } - // Disable all active managers in the registry - foreach (var manager in activeProfile.ActiveManagers) + // Disable all active services in the registry + foreach (var service in activeProfile.ActiveServices) { - manager.Value.Disable(); + service.Value.Disable(); } // Disable all registered runtime components - foreach (var manager in MixedRealityComponents) + foreach (var component in MixedRealityComponents) { - manager.Item2.Disable(); + component.Item2.Disable(); } } - private void DestroyAllManagers() + private void DestroyAllServices() { - //If the Mixed Reality Manager is not configured, stop. + //If the Mixed Reality Orchestrator is not configured, stop. if (activeProfile == null) { return; } - // Destroy all active managers in the registry - foreach (var manager in activeProfile.ActiveManagers) + // Destroy all active services in the registry + foreach (var service in activeProfile.ActiveServices) { - manager.Value.Destroy(); + service.Value.Destroy(); } - activeProfile.ActiveManagers.Clear(); + activeProfile.ActiveServices.Clear(); // Destroy all registered runtime components - foreach (var manager in MixedRealityComponents) + foreach (var component in MixedRealityComponents) { - manager.Item2.Destroy(); + component.Item2.Destroy(); } MixedRealityComponents.Clear(); } - #endregion Multiple Managers Management + #endregion Multiple Service Management - #region Manager Utilities + #region Service Utilities /// - /// Generic function used to interrogate the Mixed Reality Manager active manager registry for the existence of a manager + /// Generic function used to interrogate the Mixed Reality Orchestrator active service registry for the existence of a service /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem. /// *Note type should be the Interface of the system to be retrieved and not the class itself - /// True, there is a manager registered with the selected interface, False, no manager found for that interface - public bool ManagerExists() where T : class + /// True, there is a service registered with the selected interface, False, no service found for that interface + public bool IsServiceRegistered() where T : class { - IMixedRealityManager manager; - ActiveProfile.ActiveManagers.TryGetValue(typeof(T), out manager); - return manager != null; + IMixedRealityService service; + ActiveProfile.ActiveServices.TryGetValue(typeof(T), out service); + return service != null; } - private bool IsCoreManagerType(Type type) + private bool IsCoreSystem(Type type) { if (type == null) { throw new ArgumentNullException(nameof(type)); } @@ -977,30 +976,30 @@ private bool IsCoreManagerType(Type type) /// Retrieve the first component from the registry that meets the selected type /// /// Interface type of the component being requested - /// return parameter of the function - private void GetComponentByType(Type type, out IMixedRealityManager manager) + /// return parameter of the function + private void GetService(Type type, out IMixedRealityService service) { if (type == null) { throw new ArgumentNullException(nameof(type)); } - GetComponentByTypeAndName(type, string.Empty, out manager); + GetService(type, string.Empty, out service); } /// /// Retrieve the first component from the registry that meets the selected type and name /// /// Interface type of the component being requested - /// Name of the specific manager - /// return parameter of the function - private void GetComponentByTypeAndName(Type type, string managerName, out IMixedRealityManager manager) + /// Name of the specific service + /// return parameter of the function + private bool GetService(Type type, string serviceName, out IMixedRealityService service) { if (type == null) { throw new ArgumentNullException(nameof(type)); } - manager = null; + service = null; - if (isMixedRealityManagerInitializing) + if (isInitializing) { - Debug.LogWarning("Unable to get a manager while initializing!"); - return; + Debug.LogWarning("Unable to get a service while initializing!"); + return false; } if (mixedRealityComponentsCount != MixedRealityComponents.Count) @@ -1010,48 +1009,50 @@ private void GetComponentByTypeAndName(Type type, string managerName, out IMixed for (int i = 0; i < mixedRealityComponentsCount; i++) { - if (CheckComponentMatch(type, managerName, MixedRealityComponents[i])) + if (CheckComponentMatch(type, serviceName, MixedRealityComponents[i])) { - manager = MixedRealityComponents[i].Item2; - break; + service = MixedRealityComponents[i].Item2; + return true; } } + + return false; } - private void GetComponentsByType(Type type, ref List managers) + private void GetService(Type type, ref List services) { if (type == null) { throw new ArgumentNullException(nameof(type)); } - GetComponentsByTypeAndName(type, string.Empty, ref managers); + GetServices(type, string.Empty, ref services); } - private void GetComponentsByTypeAndName(Type type, string managerName, ref List managers) + private void GetServices(Type type, string serviceName, ref List services) { if (type == null) { throw new ArgumentNullException(nameof(type)); } for (int i = 0; i < mixedRealityComponentsCount; i++) { - if (CheckComponentMatch(type, managerName, MixedRealityComponents[i])) + if (CheckComponentMatch(type, serviceName, MixedRealityComponents[i])) { - managers.Add(MixedRealityComponents[i].Item2); + services.Add(MixedRealityComponents[i].Item2); } } } - private static bool CheckComponentMatch(Type type, string managerName, Tuple managerTuple) + private static bool CheckComponentMatch(Type type, string serviceName, Tuple components) { - if ((managerTuple.Item1.Name == type.Name || - managerTuple.Item2.GetType().Name == type.Name) && - (string.IsNullOrEmpty(managerName) || managerTuple.Item2.Name == managerName)) + bool isValid = string.IsNullOrEmpty(serviceName) || components.Item2.Name == serviceName; + + if ((components.Item1.Name == type.Name || components.Item2.GetType().Name == type.Name) && isValid) { return true; } - var interfaces = managerTuple.Item2.GetType().GetInterfaces(); + var interfaces = components.Item2.GetType().GetInterfaces(); + for (int i = 0; i < interfaces.Length; i++) { - if (interfaces[i].Name == type.Name && - (string.IsNullOrEmpty(managerName) || managerTuple.Item2.Name == managerName)) + if (interfaces[i].Name == type.Name && isValid) { return true; } @@ -1060,40 +1061,40 @@ private static bool CheckComponentMatch(Type type, string managerName, Tuple - /// The current Input System registered with the Mixed Reality Manager. + /// The current Input System registered with the Mixed Reality Orchestrator. /// - public static IMixedRealityInputSystem InputSystem => inputSystem ?? (inputSystem = Instance.GetManager()); + public static IMixedRealityInputSystem InputSystem => inputSystem ?? (inputSystem = Instance.GetService()); private static IMixedRealityBoundarySystem boundarySystem = null; /// - /// The current Boundary System registered with the Mixed Reality Manager. + /// The current Boundary System registered with the Mixed Reality Orchestrator. /// - public static IMixedRealityBoundarySystem BoundarySystem => boundarySystem ?? (boundarySystem = Instance.GetManager()); + public static IMixedRealityBoundarySystem BoundarySystem => boundarySystem ?? (boundarySystem = Instance.GetService()); private static IMixedRealityTeleportSystem teleportSystem = null; /// - /// The current Teleport System registered with the Mixed Reality Manager. + /// The current Teleport System registered with the Mixed Reality Orchestrator. /// - public static IMixedRealityTeleportSystem TeleportSystem => teleportSystem ?? (teleportSystem = Instance.GetManager()); + public static IMixedRealityTeleportSystem TeleportSystem => teleportSystem ?? (teleportSystem = Instance.GetService()); private static IMixedRealityDiagnosticsSystem diagnosticsSystem = null; /// - /// The current Diagnostics System registered with the Mixed Reality Manager. + /// The current Diagnostics System registered with the Mixed Reality Orchestrator. /// - public static IMixedRealityDiagnosticsSystem DiagnosticsSystem => diagnosticsSystem ?? (diagnosticsSystem = Instance.GetManager()); + public static IMixedRealityDiagnosticsSystem DiagnosticsSystem => diagnosticsSystem ?? (diagnosticsSystem = Instance.GetService()); - #endregion Manager Accessors + #endregion Core System Accessors } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs.meta b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs.meta rename to Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Services/README.md b/Assets/MixedRealityToolkit/_Core/Services/README.md new file mode 100644 index 00000000000..a1b50077b47 --- /dev/null +++ b/Assets/MixedRealityToolkit/_Core/Services/README.md @@ -0,0 +1,10 @@ +# Mixed Reality Toolkit - Internal - Services + +## MixedRealityOrchestrator + +The `MixedRealityOrchestrator` is the core system responsible for maintaining all active services in a Mixed Reality project. +It is also responsible for selecting and maintaining the active SDK / Device currently in operation in the project depending on the platform and available hardware. + +All other services depend on the `MixedRealityOrchestrator` for coordinating calls between all the registered services for the Mixed Reality Toolkit + +> [See the Services Guide for more info](/External/Documentation/MixedRealityServices.md) \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Managers/README.md.meta b/Assets/MixedRealityToolkit/_Core/Services/README.md.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Managers/README.md.meta rename to Assets/MixedRealityToolkit/_Core/Services/README.md.meta diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs b/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs index 150a1603c0e..bf17b14855b 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs @@ -32,7 +32,7 @@ private void Start() if (Canvas.isRootCanvas && Canvas.renderMode == RenderMode.WorldSpace) { - Canvas.worldCamera = MixedRealityManager.InputSystem.FocusProvider.UIRaycastCamera; + Canvas.worldCamera = MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera; } } } diff --git a/External/Documentation/MixedRealityManagerConstruction.md b/External/Documentation/MixedRealityManagerConstruction.md deleted file mode 100644 index 46244e61059..00000000000 --- a/External/Documentation/MixedRealityManagerConstruction.md +++ /dev/null @@ -1,160 +0,0 @@ - - -# What makes a MixedRealityManager - -To avoid the performance overheads of the MonoBehaviour class, all Managers (components that require independent operation in a Mixed Reality Solution, e.g. InputSystem, Boundary, SpatialUnderstanding) are required to be discrete classes which are registered with the MixedRealityManager. - -The MixedRealityManager then coordinates all referencing between components and ensures that all managers receive the appropriate events (E.g. Awake/initialize, Update, Destroy) as well as being the central component where managers request references to other managers. - -Additionally, the Mixed Reality manager also maintains the active VR/XR/AR SDK in use in the running project, to initialize the active device based on attached hardware and instigate proper operation. - -# A Manager - -An individual manager can be any component that needs to be active and live in the project. If it needs to be alive in a scene and act on features, then it can be maintained by the Mixed Reality Manager. This brings several benefits over the traditional MonoBehaviour method, namely: - -* Performance - without the overhead of a MonoBehaviour, scripts are updates approximately 80% faster and don't need a gameobject to live. -* Referenceability - Managers can be discovered from the manager a lot faster and easier that searching objects in a scene -* No Type dependency - Though a method similar to Dependency Injection, managers can be decoupled from their type, this means the actual manager can be swapped out at any time without affecting code that consumes it. E.G. Replacing the InputSystem with another of your choosing. - -If a manager does need a game object in a scene (for example the Focus manager which needs a point in space to "look" at), it can simply reference / create that gameobject rather than be bound to it, which makes it a lot easier to manage. - -# Manager Example - -``` -// 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. -{ - /// - /// An example manager - /// - public class MyManager : BaseManager, IManagerIdentifierInterface - { - /// - /// MyManager constructor - /// - public MyManager() - { - //Get relevant properties from the active profile of the Manager - MyManagerProperty1 = MixedRealityManager.Instance.ActiveProfile.ManagerProperty1; - MyManagerProperty2 = MixedRealityManager.Instance.ActiveProfile.ManagerProperty2; - } - - /// - /// IMixedRealityManager Initialize function, called once the Mixed Reality Manager has finished registering all managers - /// - void Initialize() - { - //Initialize stuff - } - - /// - /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Manager is replaced - /// - private void Reset() - { - //React to profile change - } - - /// - /// Optional Update function to perform per-frame updates of the manager - /// - void Update() - { - if (Enabled) - { - //Update stuff - - } - } - - /// - /// Optional Disable function to pause the manager. - /// - void Disable() - { - //Destroy stuff - } - - /// - /// Optional Enable function to enable / re-enable the manager. - /// - void Enable() - { - //Destroy stuff - } - - /// - /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Manager is destroyed - /// - void Destroy() - { - //Destroy stuff - } - } -``` - -# MixedReality Runtime Managers (Components) -The Mixed Reality Manager is also extensible enough that is can support runtime as well as design time managers, the key differences being: - -## Mixed Reality Design Time Managers - -* Can only have a single instance (e.g. InputSystem, there can only be one) - -Register ---- -``` -MixedRealityManager.Instance.AddManager(typeof(Internal.Interfaces.IMixedRealityInputSystem), new InputSystem.MixedRealityInputManager()); -``` - -Retrieve ---- -``` -var inputSystem = MixedRealityManager.Instance.GetManager(); -``` - -## Mixed Reality Runtime Managers - -* Supports as many instances as you like, stored by interface type -* Also supports being named, in case you need an individual manager of a type that has a specific name - -Register ---- -``` -//Add test component 1 -MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager1), new TestComponentManager1()); - -//Add test component 2 -MixedRealityManager.Instance.AddManager(typeof(ITestComponentManager2), new TestComponentManager2() { Name = "Tester2" }); -``` - -Retrieve ---- -``` -//Retrieve Component1 -var component1 = MixedRealityManager.Instance.GetManager(typeof(ITestComponentManager1)); - -//Retrieve component named Tester2 -TestComponentManager2 component2 = (TestComponentManager2)MixedRealityManager.Instance.GetManager(typeof(ITestComponentManager2), "Tester2"); - -//Get all components of Type 2 -var type2Components = MixedRealityManager.Instance.GetManagers(typeof(ITestComponentManager2)); -``` - -To keep things simple, the Mixed Reality Manager can already distinguish between each type of Manager and will manage them accordingly, so it is the same code for registering and retrieving managers. - -# Manager Interfaces - -The Manager container uses a predefined Interface type for storage and retrieval of any Manager, this ensures there are no hard dependencies within the Mixed Reality Toolkit, so that each subsystem can easily be swapped out with another (so long as it confirms to the interface). - -Current System interfaces provided by the Mixed Reality Toolkit include: - -* IMixedRealityInputSystem -* IMixedRealityBoundarySystem - -When creating your own bespoke versions of these systems, you much ensure they comply with the interfaces provided by the Mixed Reality Toolkit (e.g. if you replace the InputSystem with another of your own design). - -Additionally, if you create your own Runtime managers, these must also have their own Interface which derives from *IMixedRealityManager* to ensure it is supported by the Mixed Reality Manager. - -> All Managers must also inherit from the **BaseManager** class, to implement the functions required by the Mixed Reality Manager for individual manager operation. E.G. Initialize, Update, Destroy. \ No newline at end of file diff --git a/External/Documentation/MixedRealityServices.md b/External/Documentation/MixedRealityServices.md new file mode 100644 index 00000000000..c8fa16cf8a7 --- /dev/null +++ b/External/Documentation/MixedRealityServices.md @@ -0,0 +1,85 @@ + + +# What makes a Mixed Reality Feature + +To avoid the performance overheads of the `MonoBehaviour` class, all Services (Systems, Features, or Modules that require independent operation in a Mixed Reality Solution, e.g. Input, Boundary, SpatialAwareness) are required to be discrete plain old c# classes which implement `IMixedRealityService` and is registered with the `MixedRealityOrchestrator`. + +The `MixedRealityOrchestrator` then coordinates all referencing between services and ensures that they receive all appropriate events (E.g. Awake/initialize, Update, Destroy) as well as facilitating the finding of other services when needed. + +Additionally, the `MixedRealityOrchestrator` also maintains the active VR/XR/AR SDK in use in the running project, to initialize the active device based on attached hardware and instigate proper operation. + +# A Service + +An individual service can be any functionality that needs to be implemented in the project. Traditionally some projects use Singletons which need to be alive in the scene, but this pattern has its advantages and disadvantages. We've decided to break away from this pattern in favor of a hybrid approach that brings several benefits over the traditional Singleton implementations with MonoBehaviours, namely: + +* Performance - without the overhead of a MonoBehaviour, [scripts are updates approximately 80% faster and don't need a `GameObject` to live](https://blogs.unity3d.com/2015/12/23/1k-update-calls/). +* Reference-ability - Services can be discovered from the `MixedRealityOrchestrator` a lot faster and easier that searching `GameObjects` in a scene. +* No Type dependency - Though a method similar to Dependency Injection, services can be decoupled from their type, this means the concrete implementation can be swapped out at any time without affecting code that consumes it. E.G. Replacing the InputSystem with a custom one. + +If a service does need to know about a `Transform` position in a scene, it can simply reference or create that `GameObject` rather than be a component attached to it, which makes it a lot easier to use when the project spans multiple scenes. + +# MixedReality Runtime Services + +The `MixedRealityOrchestrator` is also extensible enough that is can support runtime as well as design time service registrations, the key differences being: + +## Mixed Reality Core Systems + +* Can only have a single implementation registered (e.g. InputSystem, there can only be one) + +## System Registration + +```C# +MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new DefaultMixedRealityInputSystem()); +``` + +## System Retrieval + +```C# +var inputSystem = MixedRealityOrchestrator.Instance.GetService(); +``` + +## Mixed Reality Components + +* Supports as many instances as you like, stored by interface type `IMixedRealityComponent` +* Also supports being named, in case you need an individual service of a type that has a specific name + +## Component Registration + +```C# +// Add test component 1 +MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + +// Add test component 2 +MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2() { Name = "Tester2" }); +``` + +## Component Retrieval + +```C# +// Retrieve Component1 +var component1 = MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent1)); + +// Retrieve component named Tester2 +TestComponent2 component2 = (TestComponent2)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent2), "Tester2"); + +// Get all components of Type 2 +var type2Components = MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent2)); +``` + +To keep things simple, the `MixedRealityOrchestrator` can already distinguish between each type of service and will handle them accordingly, so it is the same code for registering and retrieving all types of services. + +# Service Interfaces + +The Service container uses a predefined Interface type for storage and retrieval of any Service, this ensures there are no hard dependencies within the Mixed Reality Toolkit, so that each subsystem can easily be swapped out with another (so long as it confirms to the interface). + +Current System interfaces provided by the Mixed Reality Toolkit include: + +* IMixedRealityInputSystem +* IMixedRealityBoundarySystem +* IMixedRealityTeleportSystem + +When creating your own implementations of these systems, you must ensure each complies with the interfaces provided by the Mixed Reality Toolkit (e.g. if you replace the InputSystem with another of your own design). + +Additionally, if you create your own Runtime Services, these must also have their own Interface which derives from `IMixedRealityComponent` to ensure it is supported by the `MixedRealityOrchestrator`. + +> All Services must also inherit from the **BaseService** class or implement `IMixedRealityService`, to implement the functions required by the `MixedRealityOrchestrator` so they're life-cycles are handled appropriately. (E.G. Initialize, Update, Destroy are called correctly.) \ No newline at end of file From 70329d3ca22d5a960dcff016847a9a74b2a570d7 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 14 Oct 2018 07:27:29 -0700 Subject: [PATCH 39/98] a bit more cleanup and fixed some typos --- .../Services/MixedRealityOrchestrator.cs | 25 +++------------- .../Documentation/MixedRealityServices.md | 29 +++++++++---------- 2 files changed, 17 insertions(+), 37 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs index 3f325009f48..acfccb0a5fd 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs @@ -288,7 +288,7 @@ public static MixedRealityOrchestrator Instance return null; } - MixedRealityOrchestrator[] objects = FindObjectsOfType(); + var objects = FindObjectsOfType(); searchForInstance = false; switch (objects.Length) @@ -387,6 +387,7 @@ public Transform MixedRealityPlayspace get { AssertIsInitialized(); + if (mixedRealityPlayspace) { return mixedRealityPlayspace; @@ -407,7 +408,8 @@ public Transform MixedRealityPlayspace // co-opting this object for use with teleporting and such, since that // might cause conflicts with the parent's intended purpose. Debug.LogWarning($"The Mixed Reality Orchestrator expected the camera\'s parent to be named {MixedRealityPlayspaceName}. The existing parent will be renamed and used instead."); - CameraCache.Main.transform.parent.name = MixedRealityPlayspaceName; // If we rename it, we make it clearer that why it's being teleported around at runtime. + // If we rename it, we make it clearer that why it's being teleported around at runtime. + CameraCache.Main.transform.parent.name = MixedRealityPlayspaceName; } mixedRealityPlayspace = CameraCache.Main.transform.parent; } @@ -418,7 +420,6 @@ public Transform MixedRealityPlayspace // tracked space origin overlaps with the world space origin. If a platform ever does // something else (i.e, placing the lower left hand corner of the tracked space at world // space 0,0,0), we should compensate for that here. - return mixedRealityPlayspace; } } @@ -429,12 +430,6 @@ private void ApplicationOnQuitting() DestroyAllServices(); } - /// - /// Base Awake method that sets the Singleton's unique instance. - /// Called by Unity when initializing a MonoBehaviour. - /// Scripts that extend Singleton should be sure to call base.Awake() unless they want - /// lazy initialization - /// private void Awake() { if (IsInitialized && instance != this) @@ -457,33 +452,21 @@ private void Awake() } } - /// - /// The MonoBehaviour OnEnable event, which is then circulated to all active services - /// private void OnEnable() { EnableAllServices(); } - /// - /// The MonoBehaviour Update event, which is then circulated to all active services - /// private void Update() { UpdateAllServices(); } - /// - /// The MonoBehaviour OnDisable event, which is then circulated to all active services - /// private void OnDisable() { DisableAllServices(); } - /// - /// The MonoBehaviour Destroy event, which is then circulated to all active services prior to the Mixed Reality Orchestrator being destroyed - /// private void OnDestroy() { DestroyAllServices(); diff --git a/External/Documentation/MixedRealityServices.md b/External/Documentation/MixedRealityServices.md index c8fa16cf8a7..fccba89945e 100644 --- a/External/Documentation/MixedRealityServices.md +++ b/External/Documentation/MixedRealityServices.md @@ -1,5 +1,3 @@ - - # What makes a Mixed Reality Feature To avoid the performance overheads of the `MonoBehaviour` class, all Services (Systems, Features, or Modules that require independent operation in a Mixed Reality Solution, e.g. Input, Boundary, SpatialAwareness) are required to be discrete plain old c# classes which implement `IMixedRealityService` and is registered with the `MixedRealityOrchestrator`. @@ -8,42 +6,41 @@ The `MixedRealityOrchestrator` then coordinates all referencing between services Additionally, the `MixedRealityOrchestrator` also maintains the active VR/XR/AR SDK in use in the running project, to initialize the active device based on attached hardware and instigate proper operation. -# A Service +## A Service An individual service can be any functionality that needs to be implemented in the project. Traditionally some projects use Singletons which need to be alive in the scene, but this pattern has its advantages and disadvantages. We've decided to break away from this pattern in favor of a hybrid approach that brings several benefits over the traditional Singleton implementations with MonoBehaviours, namely: -* Performance - without the overhead of a MonoBehaviour, [scripts are updates approximately 80% faster and don't need a `GameObject` to live](https://blogs.unity3d.com/2015/12/23/1k-update-calls/). -* Reference-ability - Services can be discovered from the `MixedRealityOrchestrator` a lot faster and easier that searching `GameObjects` in a scene. -* No Type dependency - Though a method similar to Dependency Injection, services can be decoupled from their type, this means the concrete implementation can be swapped out at any time without affecting code that consumes it. E.G. Replacing the InputSystem with a custom one. - -If a service does need to know about a `Transform` position in a scene, it can simply reference or create that `GameObject` rather than be a component attached to it, which makes it a lot easier to use when the project spans multiple scenes. +* Performance - without the overhead of a MonoBehaviour, [script updates are approximately 80% faster and doesn't require a `GameObject` to live in the scene](https://blogs.unity3d.com/2015/12/23/1k-update-calls/). +* Reference-ability - Services can be discovered from the `MixedRealityOrchestrator` a lot faster and easier than searching `GameObjects` in a scene or using `FindObjectsOfType`. +* No Type dependency - Though a method similar to Dependency Injection, services can be decoupled from their type, this means the concrete implementation can be swapped out at any time without adversely affecting code that consumes it (E.G. Replacing the default InputSystem with your custom one, so long as you've fully implemented each interface). +* Multi-scene usage - If a service does need to know about a `Transform` position in a scene, it can simply reference, or create, a `GameObject` _rather than be a component attached to it_. This makes it a lot easier to find and use the service when the project spans multiple scenes. -# MixedReality Runtime Services +## MixedReality Runtime Services The `MixedRealityOrchestrator` is also extensible enough that is can support runtime as well as design time service registrations, the key differences being: -## Mixed Reality Core Systems +### Mixed Reality Core Systems * Can only have a single implementation registered (e.g. InputSystem, there can only be one) -## System Registration +### System Registration ```C# MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new DefaultMixedRealityInputSystem()); ``` -## System Retrieval +### System Retrieval ```C# var inputSystem = MixedRealityOrchestrator.Instance.GetService(); ``` -## Mixed Reality Components +### Mixed Reality Components * Supports as many instances as you like, stored by interface type `IMixedRealityComponent` * Also supports being named, in case you need an individual service of a type that has a specific name -## Component Registration +### Component Registration ```C# // Add test component 1 @@ -53,7 +50,7 @@ MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new T MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2() { Name = "Tester2" }); ``` -## Component Retrieval +### Component Retrieval ```C# // Retrieve Component1 @@ -68,7 +65,7 @@ var type2Components = MixedRealityOrchestrator.Instance.GetService(typeof(ITestC To keep things simple, the `MixedRealityOrchestrator` can already distinguish between each type of service and will handle them accordingly, so it is the same code for registering and retrieving all types of services. -# Service Interfaces +## Service Interfaces The Service container uses a predefined Interface type for storage and retrieval of any Service, this ensures there are no hard dependencies within the Mixed Reality Toolkit, so that each subsystem can easily be swapped out with another (so long as it confirms to the interface). From 9acdc27f76cda7e984aca6b7d29cb49044953e9a Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 14 Oct 2018 07:31:09 -0700 Subject: [PATCH 40/98] replaced all the Mixed Reality Manager's with Mixed Reality Orchestrator --- .../Input/Handlers/SpeechInputHandlerInspector.cs | 2 +- .../MixedRealityManagerTests.cs | 14 +++++++------- .../MixedRealityConfigurationProfile.cs | 10 +++++----- .../Inspectors/MixedRealityManagerInspector.cs | 4 ++-- .../Profiles/BaseMixedRealityInspector.cs | 8 ++++---- .../MixedRealityConfigurationProfileInspector.cs | 6 +++--- ...dRealityRegisteredComponentsProfileInspector.cs | 2 +- .../PropertyDrawers/InputActionPropertyDrawer.cs | 2 +- .../Inspectors/Utilities/CanvasEditorExtension.cs | 2 +- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index 07b7f8ff38e..7fdd32ac1d6 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -52,7 +52,7 @@ public override void OnInspectorGUI() if (registeredKeywords == null || registeredKeywords.Length == 0) { registeredKeywords = RegisteredKeywords().Distinct().ToArray(); - EditorGUILayout.HelpBox("No keywords registered.\n\nKeywords can be registered via Speech Commands Profile on the Mixed Reality Manager's Configuration Profile.", MessageType.Error); + EditorGUILayout.HelpBox("No keywords registered.\n\nKeywords can be registered via Speech Commands Profile on the Mixed Reality Orchestrator's Configuration Profile.", MessageType.Error); return; } diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs index f8273099c30..9107d947e88 100644 --- a/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs +++ b/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs @@ -37,7 +37,7 @@ public void Test01_CreateMixedRealityManager() [Test] public void Test02_TestNoMixedRealityConfigurationFound() { - LogAssert.Expect(LogType.Error, "No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Manager"); + LogAssert.Expect(LogType.Error, "No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Orchestrator"); MixedRealityOrchestrator.Instance.ActiveProfile = null; @@ -346,7 +346,7 @@ internal class TestComponentManager1 : BaseService, ITestComponentManager1 /// /// The initialize function is used to setup the manager once created. - /// This method is called once all managers have been registered in the Mixed Reality Manager. + /// This method is called once all managers have been registered in the Mixed Reality Orchestrator. /// public override void Initialize() { @@ -362,7 +362,7 @@ public override void Update() } /// - /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Manager is replaced + /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Orchestrator is replaced /// public override void Reset() { @@ -370,7 +370,7 @@ public override void Reset() } /// - /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Manager is destroyed + /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Orchestrator is destroyed /// public override void Destroy() { @@ -384,7 +384,7 @@ internal class TestComponentManager2 : BaseService, ITestComponentManager2 /// /// The initialize function is used to setup the manager once created. - /// This method is called once all managers have been registered in the Mixed Reality Manager. + /// This method is called once all managers have been registered in the Mixed Reality Orchestrator. /// public override void Initialize() { @@ -400,7 +400,7 @@ public override void Update() } /// - /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Manager is replaced + /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Orchestrator is replaced /// public override void Reset() { @@ -408,7 +408,7 @@ public override void Reset() } /// - /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Manager is destroyed + /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Orchestrator is destroyed /// public override void Destroy() { diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs index ca5ee9cd8a8..2265313fb84 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs @@ -29,13 +29,13 @@ public class MixedRealityConfigurationProfile : BaseMixedRealityProfile, ISerial private SystemType[] initialServiceTypes = null; /// - /// Dictionary list of active managers used by the Mixed Reality Manager at runtime + /// Dictionary list of active managers used by the Mixed Reality Orchestrator at runtime /// public Dictionary ActiveServices { get; } = new Dictionary(); #endregion Manager Registry properties - #region Mixed Reality Manager configurable properties + #region Mixed Reality Orchestrator configurable properties [SerializeField] [Tooltip("The scale of the Mixed Reality experience.")] @@ -229,15 +229,15 @@ public SystemType DiagnosticsSystemSystemType } [SerializeField] - [Tooltip("All the additional non-required systems, features, and managers registered with the Mixed Reality Manager.")] + [Tooltip("All the additional non-required systems, features, and managers registered with the Mixed Reality Orchestrator.")] private MixedRealityRegisteredComponentsProfile registeredComponentsProfile = null; /// - /// All the additional non-required systems, features, and managers registered with the Mixed Reality Manager. + /// All the additional non-required systems, features, and managers registered with the Mixed Reality Orchestrator. /// public MixedRealityRegisteredComponentsProfile RegisteredComponentsProfile => registeredComponentsProfile; - #endregion Mixed Reality Manager configurable properties + #endregion Mixed Reality Orchestrator configurable properties #region ISerializationCallbackReceiver Implementation diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs index cb33f4879ac..70fae343e44 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs @@ -36,7 +36,7 @@ public override void OnInspectorGUI() { if (allConfigProfiles.Length > 1) { - EditorUtility.DisplayDialog("Attention!", "You must choose a profile for the Mixed Reality Manager.", "OK"); + EditorUtility.DisplayDialog("Attention!", "You must choose a profile for the Mixed Reality Orchestrator.", "OK"); currentPickerWindow = GUIUtility.GetControlID(FocusType.Passive); EditorGUIUtility.ShowObjectPicker(null, false, string.Empty, currentPickerWindow); } @@ -49,7 +49,7 @@ public override void OnInspectorGUI() } else { - if (EditorUtility.DisplayDialog("Attention!", "No profiles were found for the Mixed Reality Manager.\n\n" + + if (EditorUtility.DisplayDialog("Attention!", "No profiles were found for the Mixed Reality Orchestrator.\n\n" + "Would you like to create one now?", "OK", "Later")) { ScriptableObject profile = CreateInstance(nameof(MixedRealityConfigurationProfile)); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs index 208ce849d86..0ae5a46f585 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs @@ -6,9 +6,9 @@ namespace Microsoft.MixedReality.Toolkit.Core.Inspectors.Profiles public abstract class BaseMixedRealityInspector : Editor { /// - /// Check and make sure we have a Mixed Reality Manager and an active profile. + /// Check and make sure we have a Mixed Reality Orchestrator and an active profile. /// - /// True if the Mixed Reality Manager is properly initialized. + /// True if the Mixed Reality Orchestrator is properly initialized. protected bool CheckMixedRealityManager(bool showHelpBox = true) { if (!MixedRealityOrchestrator.IsInitialized) @@ -20,7 +20,7 @@ protected bool CheckMixedRealityManager(bool showHelpBox = true) { if (showHelpBox) { - EditorGUILayout.HelpBox("No Mixed Reality Manager found in scene.", MessageType.Error); + EditorGUILayout.HelpBox("No Mixed Reality Orchestrator found in scene.", MessageType.Error); } return false; } @@ -32,7 +32,7 @@ protected bool CheckMixedRealityManager(bool showHelpBox = true) { if (showHelpBox) { - EditorGUILayout.HelpBox("No Active Profile set on the Mixed Reality Manager.", MessageType.Error); + EditorGUILayout.HelpBox("No Active Profile set on the Mixed Reality Orchestrator.", MessageType.Error); } return false; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs index d78898d9d04..d5a04a7c7a7 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs @@ -54,7 +54,7 @@ private void OnEnable() { if (EditorUtility.DisplayDialog( "Attention!", - "There is no active Mixed Reality Manager in your scene!\n\nWould you like to create one now?", + "There is no active Mixed Reality Orchestrator in your scene!\n\nWould you like to create one now?", "Yes", "Later")) { @@ -62,7 +62,7 @@ private void OnEnable() } else { - Debug.LogWarning("No Mixed Reality Manager in your scene."); + Debug.LogWarning("No Mixed Reality Orchestrator in your scene."); return; } } @@ -110,7 +110,7 @@ public override void OnInspectorGUI() if (!MixedRealityOrchestrator.IsInitialized) { - EditorGUILayout.HelpBox("Unable to find Mixed Reality Manager!", MessageType.Error); + EditorGUILayout.HelpBox("Unable to find Mixed Reality Orchestrator!", MessageType.Error); return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs index 8575d074728..37a484e6a6c 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs @@ -43,7 +43,7 @@ public override void OnInspectorGUI() EditorGUILayout.Space(); EditorGUILayout.LabelField("Registered Components Profile", EditorStyles.boldLabel); - EditorGUILayout.HelpBox("This profile defines any additional systems, features, and managers to register with the Mixed Reality Manager.", MessageType.Info); + EditorGUILayout.HelpBox("This profile defines any additional systems, features, and managers to register with the Mixed Reality Orchestrator.", MessageType.Info); if (MixedRealityPreferences.LockProfiles && !((BaseMixedRealityProfile)target).IsCustomProfile) { diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs index 1b309f10061..2d53d5ba102 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs @@ -22,7 +22,7 @@ public override void OnGUI(Rect rect, SerializedProperty property, GUIContent co if (!MixedRealityOrchestrator.IsInitialized || !MixedRealityOrchestrator.HasActiveProfile) { profile = null; - actionLabels = new[] { new GUIContent("Missing Mixed Reality Manager") }; + actionLabels = new[] { new GUIContent("Missing Mixed Reality Orchestrator") }; actionIds = new[] { 0 }; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs index 8b92e7b09f0..245940c443a 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs @@ -44,7 +44,7 @@ public override void OnInspectorGUI() if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && MixedRealityOrchestrator.InputSystem == null) { - EditorGUILayout.HelpBox("No Input System Profile found in the Mixed Reality Manager's Active Profile.", MessageType.Error); + EditorGUILayout.HelpBox("No Input System Profile found in the Mixed Reality Orchestrator's Active Profile.", MessageType.Error); base.OnInspectorGUI(); return; } From bd210146391adae4fd76bc8bfe97f511247ab35e Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 14 Oct 2018 07:33:29 -0700 Subject: [PATCH 41/98] replaced all IMixedRealityManager's with IMixedRealityService --- .../Features/Boundary/MixedRealityBoundaryManager.cs | 4 ++-- .../Features/Diagnostics/MixedRealityDiagnosticsManager.cs | 4 ++-- .../Features/Input/MixedRealityInputManager.cs | 4 ++-- .../Features/Teleportation/MixedRealityTeleportManager.cs | 4 ++-- .../_Core/Definitions/MixedRealityComponentConfiguration.cs | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs index a51ed9d2ede..512fb7c486b 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs @@ -21,7 +21,7 @@ namespace Microsoft.MixedReality.Toolkit.SDK.BoundarySystem /// public class MixedRealityBoundaryManager : BaseEventSystem, IMixedRealityBoundarySystem { - #region IMixedRealityManager Implementation + #region IMixedRealityService Implementation private BoundaryEventData boundaryEventData = null; @@ -213,7 +213,7 @@ private void RaiseBoundaryVisualizationChanged() handler.OnBoundaryVisualizationChanged(boundaryEventData); }; - #endregion IMixedRealityManager Implementation + #endregion IMixedRealityService Implementation #region IMixedRealtyEventSystem Implementation diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs index a4f838d756e..1e88b934de8 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs @@ -10,7 +10,7 @@ namespace Microsoft.MixedReality.Toolkit.SDK.DiagnosticsSystem { public class MixedRealityDiagnosticsManager : BaseEventSystem, IMixedRealityDiagnosticsSystem { - #region IMixedRealityManager + #region IMixedRealityService private DiagnosticsEventData eventData; private GameObject diagnosticVisualization; @@ -92,7 +92,7 @@ private void RaiseDiagnosticsChanged() handler.OnDiagnosticSettingsChanged(diagnosticsEventsData); }; - #endregion IMixedRealityManager + #endregion IMixedRealityService #region IMixedRealityDiagnosticsManager private bool visible; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index a14c38b4f4f..a107e5ac7b9 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -73,7 +73,7 @@ public class MixedRealityInputManager : BaseEventSystem, IMixedRealityInputSyste private SpeechEventData speechEventData; private DictationEventData dictationEventData; - #region IMixedRealityManager Implementation + #region IMixedRealityService Implementation /// /// Constructor @@ -247,7 +247,7 @@ public override void Destroy() base.Destroy(); } - #endregion IMixedRealityManager Implementation + #endregion IMixedRealityService Implementation #region IEventSystemManager Implementation diff --git a/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs index 242e3d55894..b3ad6453ccb 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs @@ -29,7 +29,7 @@ public class MixedRealityTeleportManager : BaseEventSystem, IMixedRealityTelepor /// private GameObject eventSystemReference = null; - #region IMixedRealityManager Implementation + #region IMixedRealityService Implementation /// public override void Initialize() @@ -85,7 +85,7 @@ public override void Destroy() } } - #endregion IMixedRealityManager Implementation + #endregion IMixedRealityService Implementation #region IEventSystemManager Implementation diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs index 09c7a213035..34e193067a7 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs @@ -10,7 +10,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions { /// - /// Defines a system, feature, or manager to be registered with the on startup. + /// Defines a system, feature, or manager to be registered with the on startup. /// [Serializable] public struct MixedRealityComponentConfiguration From 4fe572d349f9ae0c529416b2e8b5537c83e4340d Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 14 Oct 2018 07:35:49 -0700 Subject: [PATCH 42/98] updates base class summary a bit --- Assets/MixedRealityToolkit/_Core/Services/BaseService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs b/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs index 9857dcb5a87..f459ad7c282 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs @@ -4,7 +4,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Managers { /// - /// The base manager implements the IMixedRealityService interface and provides default properties for all services + /// The base service implements and provides default properties for all services. /// public class BaseService : Interfaces.IMixedRealityService { From 02544d99d5b0e52a9d1bc39fd69057707c9e85c6 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 14 Oct 2018 07:39:07 -0700 Subject: [PATCH 43/98] updated serialized value on DefaultMixedRealityConfigurationProfile --- .../Profiles/DefaultMixedRealityConfigurationProfile.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset index a4537dd715d..2f63232a6a0 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Name: DefaultMixedRealityConfigurationProfile m_EditorClassIdentifier: isCustomProfile: 0 - initialManagerTypes: + initialServiceTypes: - reference: Microsoft.MixedReality.Toolkit.SDK.Teleportation.MixedRealityTeleportManager, Microsoft.MixedReality.Toolkit.SDK - reference: Microsoft.MixedReality.Toolkit.SDK.BoundarySystem.MixedRealityBoundaryManager, From 0d053816d0694d5cfbeada18489e9d5b7450d070 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 14 Oct 2018 08:05:48 -0700 Subject: [PATCH 44/98] renamed the inspector and test classes. a few more removals of manager --- .../Handlers/PointerClickHandlerInspector.cs | 4 +- .../Handlers/SpeechInputHandlerInspector.cs | 4 +- ...ts.cs => MixedRealityOrchestratorTests.cs} | 139 +++++++++--------- ... => MixedRealityOrchestratorTests.cs.meta} | 0 .../MixedRealityInputSystemProfile.cs | 8 +- .../MixedRealityConfigurationProfile.cs | 8 +- .../WindowsDictationInputDeviceManager.cs | 2 +- ...s => MixedRealityOrchestratorInspector.cs} | 4 +- ...MixedRealityOrchestratorInspector.cs.meta} | 0 .../Profiles/BaseMixedRealityInspector.cs | 4 +- ...tyBoundaryVisualizationProfileInspector.cs | 4 +- .../MixedRealityCameraProfileInspector.cs | 4 +- ...ealityControllerMappingProfileInspector.cs | 4 +- ...ControllerVisualizationProfileInspector.cs | 4 +- ...ealityDiagnosticsSystemProfileInspector.cs | 4 +- .../MixedRealityGesturesProfileInspector.cs | 4 +- ...ixedRealityInputActionsProfileInspector.cs | 4 +- ...MixedRealityInputSystemProfileInspector.cs | 2 +- .../MixedRealityPointerProfileInspector.cs | 4 +- ...ityRegisteredComponentsProfileInspector.cs | 4 +- ...edRealitySpeechCommandsProfileInspector.cs | 4 +- ...ger.cs => IMixedRealityDictationSystem.cs} | 2 +- ...a => IMixedRealityDictationSystem.cs.meta} | 0 23 files changed, 109 insertions(+), 108 deletions(-) rename Assets/MixedRealityToolkit-Tests/{MixedRealityManagerTests.cs => MixedRealityOrchestratorTests.cs} (74%) rename Assets/MixedRealityToolkit-Tests/{MixedRealityManagerTests.cs.meta => MixedRealityOrchestratorTests.cs.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Inspectors/{MixedRealityManagerInspector.cs => MixedRealityOrchestratorInspector.cs} (97%) rename Assets/MixedRealityToolkit/_Core/Inspectors/{MixedRealityManagerInspector.cs.meta => MixedRealityOrchestratorInspector.cs.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Interfaces/Devices/{IMixedRealityDictationManager.cs => IMixedRealityDictationSystem.cs} (96%) rename Assets/MixedRealityToolkit/_Core/Interfaces/Devices/{IMixedRealityDictationManager.cs.meta => IMixedRealityDictationSystem.cs.meta} (100%) diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/PointerClickHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/PointerClickHandlerInspector.cs index 67330580678..cadee67dce6 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/PointerClickHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/PointerClickHandlerInspector.cs @@ -21,14 +21,14 @@ protected override void OnEnable() pointerDownProperty = serializedObject.FindProperty("onPointerDownActionEvent"); pointerClickedProperty = serializedObject.FindProperty("onPointerClickedActionEvent"); - CheckMixedRealityManager(false); + CheckMixedRealityConfigured(false); } public override void OnInspectorGUI() { base.OnInspectorGUI(); - if (!CheckMixedRealityManager()) { return; } + if (!CheckMixedRealityConfigured()) { return; } serializedObject.Update(); EditorGUILayout.PropertyField(pointerUpProperty, true); diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index 7fdd32ac1d6..7736a3f7e38 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -29,7 +29,7 @@ protected override void OnEnable() keywordsProperty = serializedObject.FindProperty("keywords"); persistentKeywordsProperty = serializedObject.FindProperty("persistentKeywords"); - if (CheckMixedRealityManager(false)) + if (CheckMixedRealityConfigured(false)) { registeredKeywords = RegisteredKeywords().Distinct().ToArray(); } @@ -38,7 +38,7 @@ protected override void OnEnable() public override void OnInspectorGUI() { base.OnInspectorGUI(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs similarity index 74% rename from Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs rename to Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs index 9107d947e88..3532bbcde67 100644 --- a/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs +++ b/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs @@ -15,23 +15,21 @@ namespace Microsoft.MixedReality.Toolkit.Tests { - public class MixedRealityManagerTests + public class MixedRealityOrchestratorTests { - public static void CreateMixedRealityManager() + public static void CreateMixedRealityOrchestrator() { - // Create The MR Manager MixedRealityOrchestrator.ConfirmInitialized(); } [Test] - public void Test01_CreateMixedRealityManager() + public void Test01_CreateMixedRealityOrchestrator() { CleanupScene(); - // Create The MR Manager - CreateMixedRealityManager(); - GameObject manager = GameObject.Find(nameof(MixedRealityOrchestrator)); - Assert.AreEqual(nameof(MixedRealityOrchestrator), manager.name); + CreateMixedRealityOrchestrator(); + GameObject gameObject = GameObject.Find(nameof(MixedRealityOrchestrator)); + Assert.AreEqual(nameof(MixedRealityOrchestrator), gameObject.name); } [Test] @@ -48,9 +46,9 @@ public void Test02_TestNoMixedRealityConfigurationFound() } [Test] - public void Test03_CreateMixedRealityManager() + public void Test03_CreateMixedRealityOrchestrator() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Create Test Configuration Assert.AreEqual(0, MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices.Count); @@ -58,9 +56,9 @@ public void Test03_CreateMixedRealityManager() } [Test] - public void Test04_CreateMixedRealityInputManager() + public void Test04_CreateMixedRealityInputSystem() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); @@ -73,9 +71,9 @@ public void Test04_CreateMixedRealityInputManager() } [Test] - public void Test05_TestGetMixedRealityInputManager() + public void Test05_TestGetMixedRealityInputSystem() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); @@ -88,9 +86,9 @@ public void Test05_TestGetMixedRealityInputManager() } [Test] - public void Test06_TestMixedRealityInputManagerDoesNotExist() + public void Test06_TestMixedRealityInputSystemDoesNotExist() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Check for Input System var inputSystemExists = MixedRealityOrchestrator.Instance.IsServiceRegistered(); @@ -101,9 +99,9 @@ public void Test06_TestMixedRealityInputManagerDoesNotExist() [Test] - public void Test07_TestMixedRealityInputManagerExists() + public void Test07_TestMixedRealityInputSystemExists() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); @@ -118,15 +116,15 @@ public void Test07_TestMixedRealityInputManagerExists() [Test] public void Test08_CreateMixedRealityComponent() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); - var component = new TestComponentManager1(); + var component = new TestComponent1(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), component); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), component); // Tests Assert.AreEqual(4, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); @@ -135,16 +133,16 @@ public void Test08_CreateMixedRealityComponent() [Test] public void Test09_TestMixedRealityComponentExists() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); // Retrieve Component1 - var component1 = MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponentManager1)); + var component1 = MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent1)); // Tests Assert.IsNotNull(component1); @@ -153,18 +151,18 @@ public void Test09_TestMixedRealityComponentExists() [Test] public void Test10_TestMixedRealityComponents() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); // Retrieve Component1 - var components = MixedRealityOrchestrator.Instance.GetActiveServices(typeof(ITestComponentManager1)); + var components = MixedRealityOrchestrator.Instance.GetActiveServices(typeof(ITestComponent1)); // Tests Assert.AreEqual(3, components.Count()); @@ -173,18 +171,18 @@ public void Test10_TestMixedRealityComponents() [Test] public void Test11_TestMixedRealityComponent2DoesNotReturn() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); try { // Validate non-existent component - MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponentManager2), "Test2"); + MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent2), "Test2"); Assert.Fail(); } catch (Exception) @@ -196,16 +194,16 @@ public void Test11_TestMixedRealityComponent2DoesNotReturn() [Test] public void Test12_TestMixedRealityComponent2DoesNotExist() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); // Validate non-existent component - var component2 = MixedRealityOrchestrator.Instance.IsServiceRegistered(); + var component2 = MixedRealityOrchestrator.Instance.IsServiceRegistered(); // Tests Assert.IsFalse(component2); @@ -214,16 +212,16 @@ public void Test12_TestMixedRealityComponent2DoesNotExist() [Test] public void Test13_CreateMixedRealityComponentNameWithInput() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); //Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1()); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); //Add test component 2 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test2-1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test2-1" }); // Tests Assert.IsNotNull(MixedRealityOrchestrator.Instance.ActiveProfile); @@ -235,26 +233,26 @@ public void Test13_CreateMixedRealityComponentNameWithInput() [Test] public void Test14_ValidateComponentNameWithInput() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test14-1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test14-1" }); // Add test component 2 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test14-2" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test14-2" }); // Retrieve Test component 2-2 - TestComponentManager2 component2 = (TestComponentManager2)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponentManager2), "Test14-2"); + TestComponent2 component2 = (TestComponent2)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent2), "Test14-2"); // Component 2-2 Tests Assert.IsNotNull(component2.InputSystem); Assert.AreEqual("Test14-2", component2.Name); // Retrieve Test component 2-1 - TestComponentManager1 component1 = (TestComponentManager1)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponentManager1), "Test14-1"); + TestComponent1 component1 = (TestComponent1)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent1), "Test14-1"); // Component 2-1 Tests Assert.IsNotNull(component1.InputSystem); @@ -264,40 +262,40 @@ public void Test14_ValidateComponentNameWithInput() [Test] public void Test15_GetMixedRealityComponentsCollection() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test15-1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test15-1" }); // Add test components 2 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test15-2.1" }); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test15-2.2" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test15-2.1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test15-2.2" }); // Retrieve Component2 - var components = MixedRealityOrchestrator.Instance.GetActiveServices(typeof(ITestComponentManager2)); + var components = MixedRealityOrchestrator.Instance.GetActiveServices(typeof(ITestComponent2)); // Tests - Assert.AreEqual(2, components.Count()); + Assert.AreEqual(2, components.Count); } [Test] public void Test16_GetAllMixedRealityComponents() { - InitializeMixedRealityManager(); + InitializeMixedRealityOrchestrator(); // Add Input System MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test16-1.1" }); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager1), new TestComponentManager1 { Name = "Test16-1.2" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test16-1.1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test16-1.2" }); // Add test components 2 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test16-2.1" }); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponentManager2), new TestComponentManager2 { Name = "Test16-2.2" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test16-2.1" }); + MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test16-2.2" }); // Retrieve Component1 var allComponents = MixedRealityOrchestrator.Instance.MixedRealityComponents; @@ -307,7 +305,7 @@ public void Test16_GetAllMixedRealityComponents() } [Test] - public void Test17_CleanupMixedRealityManager() + public void Test17_CleanupMixedRealityOrchestrator() { CleanupScene(); } @@ -319,12 +317,13 @@ private static void CleanupScene() EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single); } - private static void InitializeMixedRealityManager() + private static void InitializeMixedRealityOrchestrator() { + // Setup CleanupScene(); - CreateMixedRealityManager(); + CreateMixedRealityOrchestrator(); - // Test the Manager + // Tests Assert.IsNotNull(MixedRealityOrchestrator.Instance); var configuration = ScriptableObject.CreateInstance(); MixedRealityOrchestrator.Instance.ActiveProfile = configuration; @@ -336,17 +335,17 @@ private static void InitializeMixedRealityManager() #region Test Components - public interface ITestComponentManager1 : IMixedRealityService { } + public interface ITestComponent1 : IMixedRealityService { } - public interface ITestComponentManager2 : IMixedRealityService { } + public interface ITestComponent2 : IMixedRealityService { } - internal class TestComponentManager1 : BaseService, ITestComponentManager1 + internal class TestComponent1 : BaseService, ITestComponent1 { public IMixedRealityInputSystem InputSystem = null; /// - /// The initialize function is used to setup the manager once created. - /// This method is called once all managers have been registered in the Mixed Reality Orchestrator. + /// The initialize function is used to setup the service once created. + /// This method is called once all services have been registered in the Mixed Reality Orchestrator. /// public override void Initialize() { @@ -354,7 +353,7 @@ public override void Initialize() } /// - /// Optional Update function to perform per-frame updates of the manager + /// Optional Update function to perform per-frame updates of the service /// public override void Update() { @@ -370,7 +369,7 @@ public override void Reset() } /// - /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Orchestrator is destroyed + /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Orchestrator is destroyed /// public override void Destroy() { @@ -378,13 +377,13 @@ public override void Destroy() } } - internal class TestComponentManager2 : BaseService, ITestComponentManager2 + internal class TestComponent2 : BaseService, ITestComponent2 { public IMixedRealityInputSystem InputSystem = null; /// - /// The initialize function is used to setup the manager once created. - /// This method is called once all managers have been registered in the Mixed Reality Orchestrator. + /// The initialize function is used to setup the service once created. + /// This method is called once all services have been registered in the Mixed Reality Orchestrator. /// public override void Initialize() { @@ -392,7 +391,7 @@ public override void Initialize() } /// - /// Optional Update function to perform per-frame updates of the manager + /// Optional Update function to perform per-frame updates of the service /// public override void Update() { @@ -408,7 +407,7 @@ public override void Reset() } /// - /// Optional Destroy function to perform cleanup of the manager before the Mixed Reality Orchestrator is destroyed + /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Orchestrator is destroyed /// public override void Destroy() { diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs.meta b/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit-Tests/MixedRealityManagerTests.cs.meta rename to Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs index 2b852d7a070..15d965d04b0 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs @@ -79,17 +79,17 @@ public MixedRealitySpeechCommandsProfile SpeechCommandsProfile private set { speechCommandsProfile = value; } } - private IMixedRealityDictationManager dictationManager; + private IMixedRealityDictationSystem dictationSystem; /// - /// Current Registered Dictation Manager. + /// Current Registered Dictation System. /// - public IMixedRealityDictationManager DictationManager => dictationManager ?? (dictationManager = MixedRealityOrchestrator.Instance.GetService()); + public IMixedRealityDictationSystem DictationSystem => dictationSystem ?? (dictationSystem = MixedRealityOrchestrator.Instance.GetService()); /// /// Is Dictation Enabled? /// - public bool IsDictationEnabled => MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && DictationManager != null; + public bool IsDictationEnabled => MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && DictationSystem != null; [SerializeField] [Tooltip("Enable and configure the devices for your application.")] diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs index 2265313fb84..9b771fb0dcf 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs @@ -23,17 +23,17 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Mixed Reality Configuration Profile", fileName = "MixedRealityConfigurationProfile", order = (int)CreateProfileMenuItemIndices.Configuration)] public class MixedRealityConfigurationProfile : BaseMixedRealityProfile, ISerializationCallbackReceiver { - #region Manager Registry properties + #region Service Registry properties [SerializeField] private SystemType[] initialServiceTypes = null; /// - /// Dictionary list of active managers used by the Mixed Reality Orchestrator at runtime + /// Dictionary list of active Systems used by the Mixed Reality Orchestrator at runtime /// public Dictionary ActiveServices { get; } = new Dictionary(); - #endregion Manager Registry properties + #endregion Service Registry properties #region Mixed Reality Orchestrator configurable properties @@ -220,7 +220,7 @@ public bool IsDiagnosticsSystemEnabled private SystemType diagnosticsSystemType; /// - /// Diagnostics Manager Script File to instantiate at runtime + /// Diagnostics System Script File to instantiate at runtime /// public SystemType DiagnosticsSystemSystemType { diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs index 03d5fe6482d..798a5e131af 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs @@ -16,7 +16,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.VoiceInput { #if UNITY_STANDALONE_WIN || UNITY_WSA || UNITY_EDITOR_WIN - public class WindowsDictationInputDeviceManager : BaseDeviceManager, IMixedRealityDictationManager + public class WindowsDictationInputDeviceManager : BaseDeviceManager, IMixedRealityDictationSystem { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs similarity index 97% rename from Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs rename to Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs index 70fae343e44..c3f23efd6d9 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs @@ -10,7 +10,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Inspectors { [CustomEditor(typeof(MixedRealityOrchestrator))] - public class MixedRealityManagerInspector : Editor + public class MixedRealityOrchestratorInspector : Editor { private SerializedProperty activeProfile; private int currentPickerWindow = -1; @@ -90,7 +90,7 @@ public override void OnInspectorGUI() } [MenuItem("Mixed Reality Toolkit/Configure...")] - public static void CreateMixedRealityManagerObject() + public static void CreateMixedRealityOrchestratorObject() { Selection.activeObject = MixedRealityOrchestrator.Instance; EditorGUIUtility.PingObject(MixedRealityOrchestrator.Instance); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs.meta b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityManagerInspector.cs.meta rename to Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs index 0ae5a46f585..9031d4aa95a 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs @@ -9,7 +9,7 @@ public abstract class BaseMixedRealityInspector : Editor /// Check and make sure we have a Mixed Reality Orchestrator and an active profile. /// /// True if the Mixed Reality Orchestrator is properly initialized. - protected bool CheckMixedRealityManager(bool showHelpBox = true) + protected static bool CheckMixedRealityConfigured(bool showHelpBox = true) { if (!MixedRealityOrchestrator.IsInitialized) { @@ -22,6 +22,7 @@ protected bool CheckMixedRealityManager(bool showHelpBox = true) { EditorGUILayout.HelpBox("No Mixed Reality Orchestrator found in scene.", MessageType.Error); } + return false; } @@ -34,6 +35,7 @@ protected bool CheckMixedRealityManager(bool showHelpBox = true) { EditorGUILayout.HelpBox("No Active Profile set on the Mixed Reality Orchestrator.", MessageType.Error); } + return false; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs index d319f26fbdd..421c6e5648f 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs @@ -36,7 +36,7 @@ public class MixedRealityBoundaryVisualizationProfileInspector : MixedRealityBas private void OnEnable() { - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -63,7 +63,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs index 36e011f7b55..05560259912 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs @@ -27,7 +27,7 @@ public class MixedRealityCameraProfileInspector : MixedRealityBaseConfigurationP private void OnEnable() { - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -47,7 +47,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs index 55497192112..98b0802daa5 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs @@ -57,7 +57,7 @@ public ControllerRenderProfile(SupportedControllerType controllerType, Handednes private void OnEnable() { - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -78,7 +78,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs index e9dfbc0f33e..2725e29f84d 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs @@ -42,7 +42,7 @@ private void OnEnable() defaultLabelWidth = EditorGUIUtility.labelWidth; defaultFieldWidth = EditorGUIUtility.fieldWidth; - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -60,7 +60,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs index de6cab31d07..0ce4375fe44 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs @@ -19,7 +19,7 @@ public class MixedRealityDiagnosticsSystemProfileInspector : MixedRealityBaseCon private void OnEnable() { - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -33,7 +33,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs index f0dd8b0afec..2844f3c9334 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs @@ -31,7 +31,7 @@ public class MixedRealityGesturesProfileInspector : MixedRealityBaseConfiguratio private void OnEnable() { - if (!CheckMixedRealityManager(false)) { return; } + if (!CheckMixedRealityConfigured(false)) { return; } gestures = serializedObject.FindProperty("gestures"); windowsManipulationGestureSettings = serializedObject.FindProperty("manipulationGestures"); @@ -52,7 +52,7 @@ public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) { return; } + if (!CheckMixedRealityConfigured()) { return; } if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) { diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs index 40015ff9d47..3834eec737f 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs @@ -23,7 +23,7 @@ public class MixedRealityInputActionsProfileInspector : MixedRealityBaseConfigur private void OnEnable() { - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -34,7 +34,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs index 59c383ec0d5..4d9dd73ae72 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs @@ -44,7 +44,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs index 764654266f8..6c9e44b9daa 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs @@ -22,7 +22,7 @@ public class MixedRealityPointerProfileInspector : MixedRealityBaseConfiguration private void OnEnable() { - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -42,7 +42,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs index 37a484e6a6c..44382246465 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs @@ -19,7 +19,7 @@ public class MixedRealityRegisteredComponentsProfileInspector : MixedRealityBase private void OnEnable() { - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -31,7 +31,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs index 92a5532de4c..15a53dd1c63 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs @@ -28,7 +28,7 @@ public class MixedRealitySpeechCommandsProfileInspector : MixedRealityBaseConfig private void OnEnable() { - if (!CheckMixedRealityManager(false)) + if (!CheckMixedRealityConfigured(false)) { return; } @@ -46,7 +46,7 @@ private void OnEnable() public override void OnInspectorGUI() { RenderMixedRealityToolkitLogo(); - if (!CheckMixedRealityManager()) + if (!CheckMixedRealityConfigured()) { return; } diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationManager.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs similarity index 96% rename from Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationManager.cs rename to Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs index 86de7b1d0b3..4d53c50ae56 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs @@ -9,7 +9,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices /// /// Mixed Reality Toolkit controller definition, used to manage a specific controller type /// - public interface IMixedRealityDictationManager : IMixedRealityDeviceManager, IMixedRealityComponent + public interface IMixedRealityDictationSystem : IMixedRealityDeviceManager, IMixedRealityComponent { /// /// Is the system currently listing to dictation input? diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationManager.cs.meta b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationManager.cs.meta rename to Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs.meta From 2a4c61c922290bd14bdeb6669ce0200baddcd3e2 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 14 Oct 2018 08:21:27 -0700 Subject: [PATCH 45/98] renamed Managers namespace to Services --- .../Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs | 2 +- .../Features/Boundary/MixedRealityBoundaryManager.cs | 2 +- .../Features/Diagnostics/MixedRealityDiagnosticsManager.cs | 2 +- Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs | 2 +- Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs | 2 +- .../Features/Input/Handlers/DragAndDropHandler.cs | 2 +- .../Features/Input/Handlers/TeleportHotSpot.cs | 2 +- .../Features/Input/InputSystemGlobalListener.cs | 2 +- .../Features/Input/MixedRealityInputManager.cs | 2 +- .../Features/Teleportation/MixedRealityTeleportManager.cs | 2 +- .../Features/UX/Scripts/Cursors/BaseCursor.cs | 2 +- .../Features/UX/Scripts/Cursors/CursorModifier.cs | 2 +- .../Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs | 2 +- .../Features/UX/Scripts/Cursors/TeleportCursor.cs | 2 +- .../Features/UX/Scripts/Pointers/BaseControllerPointer.cs | 2 +- .../Features/UX/Scripts/Pointers/MousePointer.cs | 2 +- .../Features/UX/Scripts/Pointers/TeleportPointer.cs | 2 +- .../Features/Utilities/Solvers/ControllerFinder.cs | 2 +- .../Inspectors/Input/Handlers/BaseInputHandlerInspector.cs | 2 +- .../Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs | 2 +- .../MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs | 2 +- .../MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs | 2 +- .../InputSystem/Sources/BaseGenericInputSource.cs | 2 +- .../Definitions/InputSystem/MixedRealityInputSystemProfile.cs | 2 +- Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs | 2 +- Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs | 2 +- .../_Core/Devices/MixedReality/WindowsMixedRealityController.cs | 2 +- .../Devices/MixedReality/WindowsMixedRealityDeviceManager.cs | 2 +- .../_Core/Devices/OpenVR/GenericOpenVRController.cs | 2 +- .../_Core/Devices/OpenVR/OpenVRDeviceManager.cs | 2 +- .../_Core/Devices/UnityInput/GenericJoystickController.cs | 2 +- .../_Core/Devices/UnityInput/MouseController.cs | 2 +- .../_Core/Devices/UnityInput/MouseDeviceManager.cs | 2 +- .../_Core/Devices/UnityInput/UnityJoystickManager.cs | 2 +- .../_Core/Devices/UnityInput/UnityTouchController.cs | 2 +- .../_Core/Devices/UnityInput/UnityTouchDeviceManager.cs | 2 +- .../Devices/VoiceInput/WindowsDictationInputDeviceManager.cs | 2 +- .../_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs | 2 +- .../_Core/Inspectors/ControllerPopupWindow.cs | 2 +- .../_Core/Inspectors/MixedRealityOrchestratorInspector.cs | 2 +- .../_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs | 2 +- .../MixedRealityBoundaryVisualizationProfileInspector.cs | 2 +- .../Inspectors/Profiles/MixedRealityCameraProfileInspector.cs | 2 +- .../Profiles/MixedRealityConfigurationProfileInspector.cs | 2 +- .../Profiles/MixedRealityControllerMappingProfileInspector.cs | 2 +- .../MixedRealityControllerVisualizationProfileInspector.cs | 2 +- .../Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs | 2 +- .../Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs | 2 +- .../Profiles/MixedRealityInputActionsProfileInspector.cs | 2 +- .../Profiles/MixedRealityInputSystemProfileInspector.cs | 2 +- .../Inspectors/Profiles/MixedRealityPointerProfileInspector.cs | 2 +- .../MixedRealityRegisteredComponentsProfileInspector.cs | 2 +- .../Profiles/MixedRealitySpeechCommandsProfileInspector.cs | 2 +- .../Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs | 2 +- .../_Core/Inspectors/Utilities/CanvasEditorExtension.cs | 2 +- Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs | 2 +- Assets/MixedRealityToolkit/_Core/Services/BaseService.cs | 2 +- .../_Core/Services/MixedRealityOrchestrator.cs | 2 +- Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs | 2 +- 59 files changed, 59 insertions(+), 59 deletions(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs index ce631e7a81b..e285bd265ee 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs +++ b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs @@ -4,7 +4,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.BoundarySystem; using Microsoft.MixedReality.Toolkit.Core.EventDatum.Boundary; using Microsoft.MixedReality.Toolkit.Core.Interfaces.BoundarySystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using System.Collections.Generic; using Microsoft.MixedReality.Toolkit.Core.Utilities.Async; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs index 512fb7c486b..87a23df2ed3 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.EventDatum.Boundary; using Microsoft.MixedReality.Toolkit.Core.Interfaces.BoundarySystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using System.Collections; using System.Collections.Generic; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs index 1e88b934de8..c807a0a8f17 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs @@ -1,7 +1,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Diagnostics; using Microsoft.MixedReality.Toolkit.Core.EventDatum.Diagnostics; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Diagnostics; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using UnityEngine; using UnityEngine.EventSystems; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs index 03af2677f1d..aed4a83e298 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Extensions; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using Microsoft.MixedReality.Toolkit.Core.Utilities.Async; using Microsoft.MixedReality.Toolkit.Core.Utilities.Physics; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs index 6004f5e9478..e159bd182a4 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs @@ -7,7 +7,7 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using Microsoft.MixedReality.Toolkit.Core.Utilities.Async; using Microsoft.MixedReality.Toolkit.Core.Utilities.Physics; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs index ddbd4d14f3a..0f6907d83c7 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs @@ -6,7 +6,7 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using UnityEngine; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs index 800e35f0e02..82e0d0f7585 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.TeleportSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.SDK.UX.Pointers; using UnityEngine; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs index 9f9d5baa088..9788ec7797e 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs @@ -1,7 +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.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities.Async; using UnityEngine; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index a107e5ac7b9..ae7d458207c 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -9,7 +9,7 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using Microsoft.MixedReality.Toolkit.InputSystem.Sources; using System; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs index b3ad6453ccb..91f5e181cd3 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs @@ -4,7 +4,7 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Teleport; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Interfaces.TeleportSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using UnityEngine; using UnityEngine.EventSystems; diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs index 8df189081ec..50bcfcfd331 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Physics; using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.SDK.Input; using Microsoft.MixedReality.Toolkit.SDK.UX.Pointers; using UnityEngine; diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs index 67a24008875..e25f77159ed 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs @@ -6,7 +6,7 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.SDK.UX.Cursors diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs index b7674108d77..c85c88a2b01 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs @@ -2,7 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.SDK.UX.Cursors diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs index 2a20d511fd9..8f9091d380b 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs @@ -6,7 +6,7 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Teleport; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Interfaces.TeleportSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using Microsoft.MixedReality.Toolkit.SDK.UX.Pointers; using System; diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs index 18087af9d7f..c25a08845c9 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs @@ -10,7 +10,7 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Physics; using Microsoft.MixedReality.Toolkit.Core.Interfaces.TeleportSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities.Async; using Microsoft.MixedReality.Toolkit.SDK.Input.Handlers; using System.Collections; diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs index e48e34e8f07..dc6d571cc06 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using Microsoft.MixedReality.Toolkit.Core.Utilities.Physics; using UnityEngine; diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs index 4f6cbb4008e..92d6f93743e 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Physics; using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.EventDatum.Teleport; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using Microsoft.MixedReality.Toolkit.Core.Utilities.Physics; using System; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs index 83a5f1e1437..68cbebe26e4 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.SDK.Utilities.Solvers diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs index b07881a0d4e..5cee8615f10 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs @@ -2,7 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.Inspectors.Profiles; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; namespace Microsoft.MixedReality.Toolkit.SDK.Inspectors.Input.Handlers diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index 7736a3f7e38..ca4b8866a35 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -1,7 +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.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.SDK.Input.Handlers; using System.Collections.Generic; using System.Linq; diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs index 3532bbcde67..bd66c51719b 100644 --- a/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs +++ b/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs @@ -4,7 +4,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Interfaces; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.SDK.Input; using NUnit.Framework; using System; diff --git a/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs b/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs index 7d2a83128da..e183d08c5b7 100644 --- a/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs +++ b/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs @@ -7,7 +7,7 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Physics; using Microsoft.MixedReality.Toolkit.Core.Interfaces.TeleportSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System.Collections; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs b/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs index 564bf3b0001..5ec5ad16214 100644 --- a/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs +++ b/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs @@ -2,7 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System; using System.Collections; diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs index 15d965d04b0..f0a70f34b01 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs @@ -4,7 +4,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Devices; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem diff --git a/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs b/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs index a47eced7e3d..265573577ef 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using System; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs index 91d32777785..19dc07560f3 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs @@ -4,7 +4,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using System.Collections.Generic; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs index 8e8e3c57004..c4a1ac060e8 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; #if UNITY_WSA using Microsoft.MixedReality.Toolkit.Core.Utilities; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs index 576e38abfac..4271bea9c83 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs @@ -9,7 +9,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Extensions; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System.Collections.Generic; using System.Linq; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs index 0459d2ec94f..12c4998320c 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs @@ -6,7 +6,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs index 4ec103f7e4f..886a9266c6c 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput; using Microsoft.MixedReality.Toolkit.Core.Interfaces; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs index 3be6f1b9247..4e08450e379 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs @@ -4,7 +4,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Devices; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs index ed4eefc865b..9639c10b6dc 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs index 525b002208c..3112e7ab8d9 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities.Physics; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs index 1aadea7b9ae..3488069f6f3 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System; using System.Collections.Generic; using System.Linq; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs index 250152ebfe3..5403d19b558 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs index 039fb909c51..79ef5287a0d 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using System.Collections.Generic; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs index 798a5e131af..9227472fe37 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities.Async; using System.Text; using System.Threading.Tasks; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs index 14d6c206ef2..1a82a258e67 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs @@ -5,7 +5,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System; using System.Collections.Generic; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs index 48dbbb1cb2d..68a620b8962 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs @@ -6,7 +6,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Inspectors.Data; using Microsoft.MixedReality.Toolkit.Core.Inspectors.Utilities; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System; using System.Collections.Generic; using System.IO; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs index c3f23efd6d9..c26dbf85062 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Extensions.EditorClassExtensions; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs index 9031d4aa95a..bd056ef6a33 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs @@ -1,4 +1,4 @@ -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; namespace Microsoft.MixedReality.Toolkit.Core.Inspectors.Profiles diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs index 421c6e5648f..01d6e5f69b5 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs @@ -4,7 +4,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.BoundarySystem; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs index 05560259912..101714be426 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs @@ -2,7 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.Definitions; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs index d5a04a7c7a7..0c514f07ff9 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs index 98b0802daa5..696651925df 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs @@ -8,7 +8,7 @@ using Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput; using Microsoft.MixedReality.Toolkit.Core.Devices.WindowsMixedReality; using Microsoft.MixedReality.Toolkit.Core.Extensions; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System; using System.Collections.Generic; using System.Linq; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs index 2725e29f84d..ee2a0b17be4 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs @@ -7,7 +7,7 @@ using Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput; using Microsoft.MixedReality.Toolkit.Core.Extensions; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs index 0ce4375fe44..c8716bf2648 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.Diagnostics; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs index 2844f3c9334..1156bfa3388 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System.Linq; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs index 3834eec737f..e85db6d99df 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs index 4d9dd73ae72..87b5effdb27 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs index 6c9e44b9daa..8fbe930a010 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEditorInternal; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs index 44382246465..6e5139f0771 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs @@ -2,7 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.Definitions; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs index 15a53dd1c63..900cb39d708 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions; using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System.Linq; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs index 2d53d5ba102..39122d5196c 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Extensions; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using System.Linq; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs index 245940c443a..c85b9066b0d 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Extensions; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs b/Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs index 0d89ff4a113..370960333a3 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/BaseEventSystem.cs @@ -7,7 +7,7 @@ using UnityEngine; using UnityEngine.EventSystems; -namespace Microsoft.MixedReality.Toolkit.Core.Managers +namespace Microsoft.MixedReality.Toolkit.Core.Services { /// /// Base Event System that can be inherited from to give other system features event capabilities. diff --git a/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs b/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs index f459ad7c282..5aba11251da 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/BaseService.cs @@ -1,7 +1,7 @@ // 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.Core.Managers +namespace Microsoft.MixedReality.Toolkit.Core.Services { /// /// The base service implements and provides default properties for all services. diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs index acfccb0a5fd..e831a88f679 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs @@ -14,7 +14,7 @@ using System.Linq; using UnityEngine; -namespace Microsoft.MixedReality.Toolkit.Core.Managers +namespace Microsoft.MixedReality.Toolkit.Core.Services { /// /// The Mixed Reality Orchestrator is responsible for coordinating the operation of the Mixed Reality Toolkit. diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs b/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs index bf17b14855b..ce4865abc90 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs @@ -1,7 +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.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Core.Utilities From b91fec276cba76a63d4f64586bfa5e01327d24d5 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 15 Oct 2018 17:41:09 -0700 Subject: [PATCH 46/98] Added gesture type filter so it's impossible to register the same gesture twice. --- .../MixedRealityGesturesProfileInspector.cs | 82 ++++++++++++++++--- 1 file changed, 72 insertions(+), 10 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs index 0a1c4588041..3a66f960057 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs @@ -2,8 +2,11 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.Definitions; +using Microsoft.MixedReality.Toolkit.Core.Definitions.Devices; using Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Managers; +using System; +using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEngine; @@ -19,9 +22,6 @@ public class MixedRealityGesturesProfileInspector : MixedRealityBaseConfiguratio private static readonly GUIContent GestureTypeContent = new GUIContent("Gesture Type", "The type of Gesture that will trigger the action."); private static readonly GUIContent ActionContent = new GUIContent("Action", "The action to trigger when a Gesture is recognized."); - private static GUIContent[] actionLabels; - private static int[] actionIds; - private SerializedProperty gestures; private SerializedProperty windowsManipulationGestureSettings; private SerializedProperty useRailsNavigation; @@ -29,6 +29,12 @@ public class MixedRealityGesturesProfileInspector : MixedRealityBaseConfiguratio private SerializedProperty windowsRailsNavigationGestures; private SerializedProperty windowsGestureAutoStart; + private MixedRealityGesturesProfile thisProfile; + private static GUIContent[] allGestureLabels; + private static int[] allGestureIds; + private static GUIContent[] actionLabels; + private static int[] actionIds; + private void OnEnable() { if (!CheckMixedRealityManager(false)) { return; } @@ -39,13 +45,42 @@ private void OnEnable() windowsNavigationGestureSettings = serializedObject.FindProperty("navigationGestures"); windowsRailsNavigationGestures = serializedObject.FindProperty("railsNavigationGestures"); windowsGestureAutoStart = serializedObject.FindProperty("windowsGestureAutoStart"); + thisProfile = target as MixedRealityGesturesProfile; + Debug.Assert(thisProfile != null); if (MixedRealityManager.Instance.ActiveProfile.IsInputSystemEnabled && MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile != null) { - actionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); - actionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); + actionLabels = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + .Select(action => new GUIContent(action.Description)) + .Prepend(new GUIContent("None")).ToArray(); + actionIds = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + .Select(action => (int)action.Id) + .Prepend(0).ToArray(); + } + + UpdateGestureLabels(); + } + + private void UpdateGestureLabels() + { + var allGestureTypeNames = Enum.GetNames(typeof(GestureInputType)); + + var tempIds = new List(); + var tempContent = new List(); + + for (int i = 0; i < allGestureTypeNames.Length; i++) + { + if (allGestureTypeNames[i].Equals("None") || + thisProfile.Gestures.All(mapping => !allGestureTypeNames[i].Equals(mapping.GestureType.ToString()))) + { + tempContent.Add(new GUIContent(allGestureTypeNames[i])); + tempIds.Add(i); + } } + + allGestureIds = tempIds.ToArray(); + allGestureLabels = tempContent.ToArray(); } public override void OnInspectorGUI() @@ -101,7 +136,7 @@ public override void OnInspectorGUI() serializedObject.ApplyModifiedProperties(); } - private static void RenderList(SerializedProperty list) + private void RenderList(SerializedProperty list) { EditorGUILayout.Space(); GUILayout.BeginVertical(); @@ -112,8 +147,8 @@ private static void RenderList(SerializedProperty list) var speechCommand = list.GetArrayElementAtIndex(list.arraySize - 1); var keyword = speechCommand.FindPropertyRelative("description"); keyword.stringValue = string.Empty; - var keyCode = speechCommand.FindPropertyRelative("gestureType"); - keyCode.intValue = (int)KeyCode.None; + var gestureType = speechCommand.FindPropertyRelative("gestureType"); + gestureType.intValue = (int)GestureInputType.None; var action = speechCommand.FindPropertyRelative("action"); var actionId = action.FindPropertyRelative("id"); actionId.intValue = 0; @@ -129,6 +164,7 @@ private static void RenderList(SerializedProperty list) { EditorGUILayout.HelpBox("Define a new Gesture.", MessageType.Warning); GUILayout.EndVertical(); + UpdateGestureLabels(); return; } @@ -149,14 +185,37 @@ private static void RenderList(SerializedProperty list) EditorGUILayout.BeginHorizontal(); SerializedProperty gesture = list.GetArrayElementAtIndex(i); var keyword = gesture.FindPropertyRelative("description"); - EditorGUILayout.PropertyField(keyword, GUIContent.none, GUILayout.ExpandWidth(true)); var gestureType = gesture.FindPropertyRelative("gestureType"); - EditorGUILayout.PropertyField(gestureType, GUIContent.none, GUILayout.Width(80f)); var action = gesture.FindPropertyRelative("action"); var actionId = action.FindPropertyRelative("id"); var actionDescription = action.FindPropertyRelative("description"); var actionConstraint = action.FindPropertyRelative("axisConstraint"); + EditorGUILayout.PropertyField(keyword, GUIContent.none, GUILayout.ExpandWidth(true)); + + Debug.Assert(allGestureLabels.Length == allGestureIds.Length); + + var gestureLabels = new GUIContent[allGestureLabels.Length + 1]; + var gestureIds = new int[allGestureIds.Length + 1]; + + gestureLabels[0] = new GUIContent(((GestureInputType)gestureType.intValue).ToString()); + gestureIds[0] = gestureType.intValue; + + for (int j = 0; j < allGestureLabels.Length; j++) + { + gestureLabels[j + 1] = allGestureLabels[j]; + gestureIds[j + 1] = allGestureIds[j]; + } + + EditorGUI.BeginChangeCheck(); + gestureType.intValue = EditorGUILayout.IntPopup(GUIContent.none, gestureType.intValue, gestureLabels, gestureIds, GUILayout.Width(80f)); + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + UpdateGestureLabels(); + } + EditorGUI.BeginChangeCheck(); actionId.intValue = EditorGUILayout.IntPopup(GUIContent.none, actionId.intValue, actionLabels, actionIds, GUILayout.Width(64f)); @@ -165,11 +224,14 @@ private static void RenderList(SerializedProperty list) MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; + serializedObject.ApplyModifiedProperties(); } if (GUILayout.Button(MinusButtonContent, EditorStyles.miniButtonRight, GUILayout.Width(24f))) { list.DeleteArrayElementAtIndex(i); + serializedObject.ApplyModifiedProperties(); + UpdateGestureLabels(); } EditorGUILayout.EndHorizontal(); From f463cdf7d2d8056b7325786cd2048ead4a56a393 Mon Sep 17 00:00:00 2001 From: Jonathan Dana Date: Tue, 16 Oct 2018 15:02:18 +0200 Subject: [PATCH 47/98] Add link to Azure hosted Slack invitation sender Provide an easy way to join the dedicated Slack instead of waiting for an authorized user to send an invitation manually. --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index af3b29cd4b9..b6c993ae652 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,7 +6,7 @@ For larger submissions, we have drafted contribution guidelines to ensure a smoo All changes be they small or large, need to adhere to the [MRTK Coding Standards](/CodingGuidelines.md), so please ensure you are familiar with these while developing to avoid delays when the change is being reviewed. -If you have any questions, please reach out on the [HoloLens forums](https://forums.hololens.com/) or the [HoloDevelopers slack](https://holodevelopers.slack.com/). +If you have any questions, please reach out on the [HoloLens forums](https://forums.hololens.com/) or the [HoloDevelopers slack](https://holodevelopers.slack.com/). You can easily be granted access the Slack community via the [automatic invitation sender](https://holodevelopersslack.azurewebsites.net/). # Submission process We provide several paths to enable developers to contribute to the Mixed Reality Toolkit, all starting with [creating a new Issue](https://github.com/Microsoft/MixedRealityToolkit-Unity/issues/new/choose) From 47f63cce4d9d7cfe23c2b1321faaad650ff3fbd4 Mon Sep 17 00:00:00 2001 From: Jonathan Dana Date: Tue, 16 Oct 2018 15:13:10 +0200 Subject: [PATCH 48/98] Fix typo on Contributing.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b6c993ae652..94018847f0d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,7 +6,7 @@ For larger submissions, we have drafted contribution guidelines to ensure a smoo All changes be they small or large, need to adhere to the [MRTK Coding Standards](/CodingGuidelines.md), so please ensure you are familiar with these while developing to avoid delays when the change is being reviewed. -If you have any questions, please reach out on the [HoloLens forums](https://forums.hololens.com/) or the [HoloDevelopers slack](https://holodevelopers.slack.com/). You can easily be granted access the Slack community via the [automatic invitation sender](https://holodevelopersslack.azurewebsites.net/). +If you have any questions, please reach out on the [HoloLens forums](https://forums.hololens.com/) or the [HoloDevelopers slack](https://holodevelopers.slack.com/). You can easily be granted access to the Slack community via the [automatic invitation sender](https://holodevelopersslack.azurewebsites.net/). # Submission process We provide several paths to enable developers to contribute to the Mixed Reality Toolkit, all starting with [creating a new Issue](https://github.com/Microsoft/MixedRealityToolkit-Unity/issues/new/choose) From a5f39d899b475e5585b1b7da896ceb605ee9b762 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 17 Oct 2018 23:50:41 -0700 Subject: [PATCH 49/98] finished name changes --- .../Audio/Scenes/AudioLoFiEffectDemo.unity | 2 +- .../Audio/Scenes/AudioOcclusionDemo.unity | 2 +- .../Scenes/BoundaryVisualization.unity | 2 +- .../Scripts/BoundaryVisualizationDemo.cs | 30 +- .../Demos/Solvers/Scenes/Solvers.unity | 2 +- .../Scenes/MaterialGallery.unity | 2 +- .../Scenes/StandardMaterialComparison.unity | 2 +- .../Scenes/StandardMaterials.unity | 2 +- .../Scenes/ObjectCollectionGallery.unity | 2 +- .../Demos/UX/Lines/Scenes/LineGallery.unity | 12 +- .../Boundary/MixedRealityBoundaryManager.cs | 40 +- .../MixedRealityDiagnosticsManager.cs | 8 +- .../Features/Input/FocusProvider.cs | 20 +- .../Features/Input/GazeProvider.cs | 10 +- .../Input/Handlers/DragAndDropHandler.cs | 6 +- .../Input/Handlers/TeleportHotSpot.cs | 6 +- .../Input/InputSystemGlobalListener.cs | 10 +- .../MixedRealityTeleportManager.cs | 4 +- .../Features/UX/Scripts/Cursors/BaseCursor.cs | 20 +- .../UX/Scripts/Cursors/CursorModifier.cs | 2 +- .../Scripts/Cursors/InteractiveMeshCursor.cs | 2 +- .../UX/Scripts/Cursors/TeleportCursor.cs | 4 +- .../Scripts/Pointers/BaseControllerPointer.cs | 20 +- .../UX/Scripts/Pointers/MousePointer.cs | 2 +- .../UX/Scripts/Pointers/TeleportPointer.cs | 14 +- .../Utilities/Solvers/ControllerFinder.cs | 4 +- .../Handlers/BaseInputHandlerInspector.cs | 2 +- .../Handlers/SpeechInputHandlerInspector.cs | 14 +- .../MixedRealityOrchestratorTests.cs | 419 ------------------ .../MixedRealityToolkitTests.cs | 419 ++++++++++++++++++ ....meta => MixedRealityToolkitTests.cs.meta} | 0 .../InputSystem/Pointers/GenericPointer.cs | 2 +- .../Sources/BaseGenericInputSource.cs | 4 +- .../MixedRealityInputSystemProfile.cs | 8 +- .../MixedRealityConfigurationProfile.cs | 10 +- .../_Core/Devices/BaseController.cs | 24 +- .../_Core/Devices/BaseDeviceManager.cs | 12 +- .../WindowsMixedRealityController.cs | 52 +-- .../WindowsMixedRealityDeviceManager.cs | 42 +- .../Devices/OpenVR/GenericOpenVRController.cs | 8 +- .../Devices/OpenVR/OpenVRDeviceManager.cs | 2 +- .../UnityInput/GenericJoystickController.cs | 18 +- .../Devices/UnityInput/MouseController.cs | 24 +- .../Devices/UnityInput/MouseDeviceManager.cs | 8 +- .../UnityInput/UnityJoystickManager.cs | 8 +- .../UnityInput/UnityTouchController.cs | 44 +- .../UnityInput/UnityTouchDeviceManager.cs | 14 +- .../WindowsDictationInputDeviceManager.cs | 24 +- .../WindowsSpeechInputDeviceManager.cs | 10 +- .../_Core/Inspectors/ControllerPopupWindow.cs | 38 +- ...tor.cs => MixedRealityToolkitInspector.cs} | 14 +- ...a => MixedRealityToolkitInspector.cs.meta} | 0 .../Profiles/BaseMixedRealityInspector.cs | 16 +- ...tyBoundaryVisualizationProfileInspector.cs | 4 +- .../MixedRealityCameraProfileInspector.cs | 2 +- ...xedRealityConfigurationProfileInspector.cs | 20 +- ...ealityControllerMappingProfileInspector.cs | 12 +- ...ControllerVisualizationProfileInspector.cs | 6 +- ...ealityDiagnosticsSystemProfileInspector.cs | 2 +- .../MixedRealityGesturesProfileInspector.cs | 18 +- ...ixedRealityInputActionsProfileInspector.cs | 6 +- ...MixedRealityInputSystemProfileInspector.cs | 8 +- .../MixedRealityPointerProfileInspector.cs | 2 +- ...ityRegisteredComponentsProfileInspector.cs | 6 +- ...edRealitySpeechCommandsProfileInspector.cs | 18 +- .../InputActionPropertyDrawer.cs | 12 +- .../Utilities/CanvasEditorExtension.cs | 20 +- .../_Core/Interfaces/IMixedRealityService.cs | 4 +- ...Orchestrator.cs => MixedRealityToolkit.cs} | 108 ++--- ...or.cs.meta => MixedRealityToolkit.cs.meta} | 0 .../_Core/Utilities/CanvasUtility.cs | 2 +- 71 files changed, 858 insertions(+), 858 deletions(-) delete mode 100644 Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs create mode 100644 Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs rename Assets/MixedRealityToolkit-Tests/{MixedRealityOrchestratorTests.cs.meta => MixedRealityToolkitTests.cs.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Inspectors/{MixedRealityOrchestratorInspector.cs => MixedRealityToolkitInspector.cs} (87%) rename Assets/MixedRealityToolkit/_Core/Inspectors/{MixedRealityOrchestratorInspector.cs.meta => MixedRealityToolkitInspector.cs.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Services/{MixedRealityOrchestrator.cs => MixedRealityToolkit.cs} (89%) rename Assets/MixedRealityToolkit/_Core/Services/{MixedRealityOrchestrator.cs.meta => MixedRealityToolkit.cs.meta} (100%) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Audio/Scenes/AudioLoFiEffectDemo.unity b/Assets/MixedRealityToolkit-Examples/Demos/Audio/Scenes/AudioLoFiEffectDemo.unity index 7699500810b..8cfc592cb8c 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Audio/Scenes/AudioLoFiEffectDemo.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/Audio/Scenes/AudioLoFiEffectDemo.unity @@ -153,7 +153,7 @@ GameObject: - component: {fileID: 431339712} - component: {fileID: 431339711} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Audio/Scenes/AudioOcclusionDemo.unity b/Assets/MixedRealityToolkit-Examples/Demos/Audio/Scenes/AudioOcclusionDemo.unity index e5798818432..a19435d1c04 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Audio/Scenes/AudioOcclusionDemo.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/Audio/Scenes/AudioOcclusionDemo.unity @@ -542,7 +542,7 @@ GameObject: - component: {fileID: 979633973} - component: {fileID: 979633972} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scenes/BoundaryVisualization.unity b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scenes/BoundaryVisualization.unity index a026f852a1f..b88f4acea20 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scenes/BoundaryVisualization.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scenes/BoundaryVisualization.unity @@ -740,7 +740,7 @@ GameObject: - component: {fileID: 1485507613} - component: {fileID: 1485507612} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs index e285bd265ee..c7964269c9d 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs +++ b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs @@ -42,13 +42,13 @@ private void Awake() { markerParent = new GameObject(); markerParent.name = "Boundary Demo Markers"; - markerParent.transform.parent = MixedRealityOrchestrator.Instance.MixedRealityPlayspace; + markerParent.transform.parent = MixedRealityToolkit.Instance.MixedRealityPlayspace; } private void Start() { - if (MixedRealityOrchestrator.BoundarySystem != null) + if (MixedRealityToolkit.BoundarySystem != null) { if (markers.Count == 0) { @@ -59,25 +59,25 @@ private void Start() private void Update() { - if (MixedRealityOrchestrator.BoundarySystem != null) + if (MixedRealityToolkit.BoundarySystem != null) { - MixedRealityOrchestrator.BoundarySystem.ShowFloor = showFloor; - MixedRealityOrchestrator.BoundarySystem.ShowPlayArea = showPlayArea; - MixedRealityOrchestrator.BoundarySystem.ShowTrackedArea = showTrackedArea; - MixedRealityOrchestrator.BoundarySystem.ShowBoundaryWalls = showBoundaryWalls; - MixedRealityOrchestrator.BoundarySystem.ShowBoundaryCeiling = showBoundaryCeiling; + MixedRealityToolkit.BoundarySystem.ShowFloor = showFloor; + MixedRealityToolkit.BoundarySystem.ShowPlayArea = showPlayArea; + MixedRealityToolkit.BoundarySystem.ShowTrackedArea = showTrackedArea; + MixedRealityToolkit.BoundarySystem.ShowBoundaryWalls = showBoundaryWalls; + MixedRealityToolkit.BoundarySystem.ShowBoundaryCeiling = showBoundaryCeiling; } } private async void OnEnable() { - await new WaitUntil(() => MixedRealityOrchestrator.BoundarySystem != null); - MixedRealityOrchestrator.BoundarySystem.Register(gameObject); + await new WaitUntil(() => MixedRealityToolkit.BoundarySystem != null); + MixedRealityToolkit.BoundarySystem.Register(gameObject); } private void OnDisable() { - MixedRealityOrchestrator.BoundarySystem?.Unregister(gameObject); + MixedRealityToolkit.BoundarySystem?.Unregister(gameObject); } #endregion MonoBehaviour Implementation @@ -104,13 +104,13 @@ private void AddMarkers() float widthRect; float heightRect; - if (!MixedRealityOrchestrator.BoundarySystem.TryGetRectangularBoundsParams(out centerRect, out angleRect, out widthRect, out heightRect)) + if (!MixedRealityToolkit.BoundarySystem.TryGetRectangularBoundsParams(out centerRect, out angleRect, out widthRect, out heightRect)) { // If we have no boundary manager or rectangular bounds we will show no indicators return; } - MixedRealityBoundaryVisualizationProfile visualizationProfile = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile; + MixedRealityBoundaryVisualizationProfile visualizationProfile = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile; if (visualizationProfile == null) { // We do not have a visualization profile configured, therefore do not render the indicators. @@ -135,12 +135,12 @@ private void AddMarkers() Material material = null; // Check inscribed rectangle first - if (MixedRealityOrchestrator.BoundarySystem.Contains(position, Boundary.Type.PlayArea)) + if (MixedRealityToolkit.BoundarySystem.Contains(position, Boundary.Type.PlayArea)) { material = visualizationProfile.PlayAreaMaterial; } // Then check geometry - else if (MixedRealityOrchestrator.BoundarySystem.Contains(position, Boundary.Type.TrackedArea)) + else if (MixedRealityToolkit.BoundarySystem.Contains(position, Boundary.Type.TrackedArea)) { material = visualizationProfile.TrackedAreaMaterial; } diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity index e302caf00f3..a9f5a1e9039 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scenes/Solvers.unity @@ -2300,7 +2300,7 @@ GameObject: - component: {fileID: 1540929158} - component: {fileID: 1540929157} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/MaterialGallery.unity b/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/MaterialGallery.unity index 7981286d17f..1510b50089f 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/MaterialGallery.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/MaterialGallery.unity @@ -4441,7 +4441,7 @@ GameObject: - component: {fileID: 1485507613} - component: {fileID: 1485507612} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/StandardMaterialComparison.unity b/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/StandardMaterialComparison.unity index e930b2af1ec..f5c0837f37e 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/StandardMaterialComparison.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/StandardMaterialComparison.unity @@ -13552,7 +13552,7 @@ GameObject: - component: {fileID: 1485507613} - component: {fileID: 1485507612} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/StandardMaterials.unity b/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/StandardMaterials.unity index b8f30ca197b..b98fe9e646f 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/StandardMaterials.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/StandardShader/Scenes/StandardMaterials.unity @@ -5230,7 +5230,7 @@ GameObject: - component: {fileID: 1485507613} - component: {fileID: 1485507612} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Collections/Scenes/ObjectCollectionGallery.unity b/Assets/MixedRealityToolkit-Examples/Demos/UX/Collections/Scenes/ObjectCollectionGallery.unity index 3b6d99dd8a0..714463b31d8 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Collections/Scenes/ObjectCollectionGallery.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Collections/Scenes/ObjectCollectionGallery.unity @@ -3039,7 +3039,7 @@ GameObject: - component: {fileID: 785226068} - component: {fileID: 785226067} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Lines/Scenes/LineGallery.unity b/Assets/MixedRealityToolkit-Examples/Demos/UX/Lines/Scenes/LineGallery.unity index 9c4b8373f4a..6eb0b6e871f 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Lines/Scenes/LineGallery.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Lines/Scenes/LineGallery.unity @@ -887,7 +887,7 @@ GameObject: - component: {fileID: 785226068} - component: {fileID: 785226067} m_Layer: 0 - m_Name: MixedRealityManager + m_Name: MixedRealityToolkit m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1383,7 +1383,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 64} + m_SizeDelta: {x: 0, y: 50} m_Pivot: {x: 0.5, y: 1} --- !u!114 &1264058820 MonoBehaviour: @@ -1433,8 +1433,8 @@ MonoBehaviour: m_outlineColor: serializedVersion: 2 rgba: 4278190080 - m_fontSize: 24 - m_fontSizeBase: 24 + m_fontSize: 36 + m_fontSizeBase: 36 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 @@ -1451,7 +1451,7 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: -1 + m_firstOverflowCharacterIndex: 9 m_linkedTextComponent: {fileID: 0} m_isLinkedTextComponent: 0 m_isTextTruncated: 0 @@ -1760,7 +1760,7 @@ MonoBehaviour: \u2013 creates insances of a mesh, then places them along the length of the line\n\u2022StripMeshLineRenderer \u2013 draws a strip of polygons along the length of the line" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} diff --git a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs index 87a23df2ed3..558f3c446ae 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs @@ -39,18 +39,18 @@ private void InitializeInternal() { boundaryEventData = new BoundaryEventData(EventSystem.current); - Scale = MixedRealityOrchestrator.Instance.ActiveProfile.TargetExperienceScale; - BoundaryHeight = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryHeight; + Scale = MixedRealityToolkit.Instance.ActiveProfile.TargetExperienceScale; + BoundaryHeight = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryHeight; SetTrackingSpace(); CalculateBoundaryBounds(); Boundary.visible = true; - ShowFloor = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowFloor; - ShowPlayArea = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowPlayArea; - ShowTrackedArea = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowTrackedArea; - ShowBoundaryWalls = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowBoundaryWalls; - ShowBoundaryCeiling = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowBoundaryCeiling; + ShowFloor = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowFloor; + ShowPlayArea = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowPlayArea; + ShowTrackedArea = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowTrackedArea; + ShowBoundaryWalls = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowBoundaryWalls; + ShowBoundaryCeiling = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.ShowBoundaryCeiling; if (ShowFloor) { @@ -189,7 +189,7 @@ public override void Destroy() private GameObject CreateBoundaryVisualizationParent() { GameObject visualizationParent = new GameObject("Boundary System Visualizations"); - visualizationParent.transform.parent = MixedRealityOrchestrator.Instance.MixedRealityPlayspace; + visualizationParent.transform.parent = MixedRealityToolkit.Instance.MixedRealityPlayspace; return visualizationParent; } @@ -456,7 +456,7 @@ public bool Contains(Vector3 location, Boundary.Type boundaryType = Boundary.Typ } // Handle the user teleporting (boundary moves with them). - location = MixedRealityOrchestrator.Instance.MixedRealityPlayspace.InverseTransformPoint(location); + location = MixedRealityToolkit.Instance.MixedRealityPlayspace.InverseTransformPoint(location); if (FloorHeight.Value > location.y || BoundaryHeight < location.y) @@ -499,7 +499,7 @@ public bool TryGetRectangularBoundsParams(out Vector2 center, out float angle, o } // Handle the user teleporting (boundary moves with them). - Vector3 transformedCenter = MixedRealityOrchestrator.Instance.MixedRealityPlayspace.TransformPoint( + Vector3 transformedCenter = MixedRealityToolkit.Instance.MixedRealityPlayspace.TransformPoint( new Vector3(rectangularBounds.Center.x, 0f, rectangularBounds.Center.y)); center = new Vector2(transformedCenter.x, transformedCenter.z); @@ -523,17 +523,17 @@ public GameObject GetFloorVisualization() return null; } - Vector3 floorScale = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorScale; + Vector3 floorScale = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorScale; // Render the floor. currentFloorObject = GameObject.CreatePrimitive(PrimitiveType.Cube); currentFloorObject.name = "Boundary System Floor"; currentFloorObject.transform.localScale = new Vector3(floorScale.x, boundaryObjectThickness, floorScale.y); currentFloorObject.transform.Translate(new Vector3( - MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.x, + MixedRealityToolkit.Instance.MixedRealityPlayspace.position.x, FloorHeight.Value - (currentFloorObject.transform.localScale.y * 0.5f), - MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.z)); - currentFloorObject.GetComponent().sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorMaterial; + MixedRealityToolkit.Instance.MixedRealityPlayspace.position.z)); + currentFloorObject.GetComponent().sharedMaterial = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorMaterial; return currentFloorObject; } @@ -571,7 +571,7 @@ public GameObject GetPlayAreaVisualization() currentPlayAreaObject.transform.Translate(new Vector3(center.x, boundaryObjectRenderOffset, center.y)); currentPlayAreaObject.transform.Rotate(new Vector3(90, -angle, 0)); currentPlayAreaObject.transform.localScale = new Vector3(width, height, 1.0f); - currentPlayAreaObject.GetComponent().sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.PlayAreaMaterial; + currentPlayAreaObject.GetComponent().sharedMaterial = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.PlayAreaMaterial; currentPlayAreaObject.transform.parent = BoundaryVisualizationParent.transform; @@ -606,14 +606,14 @@ public GameObject GetTrackedAreaVisualization() currentTrackedAreaObject.layer = ignoreRaycastLayerValue; currentTrackedAreaObject.AddComponent(); currentTrackedAreaObject.transform.Translate(new Vector3( - MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.x, + MixedRealityToolkit.Instance.MixedRealityPlayspace.position.x, boundaryObjectRenderOffset, - MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.z)); + MixedRealityToolkit.Instance.MixedRealityPlayspace.position.z)); // Configure the renderer properties. float lineWidth = 0.01f; LineRenderer lineRenderer = currentTrackedAreaObject.GetComponent(); - lineRenderer.sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.TrackedAreaMaterial; + lineRenderer.sharedMaterial = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.TrackedAreaMaterial; lineRenderer.useWorldSpace = false; lineRenderer.startWidth = lineWidth; lineRenderer.endWidth = lineWidth; @@ -653,7 +653,7 @@ public GameObject GetBoundaryWallVisualization() { GameObject wall = GameObject.CreatePrimitive(PrimitiveType.Cube); wall.name = $"Wall {i}"; - wall.GetComponent().sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryWallMaterial; + wall.GetComponent().sharedMaterial = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryWallMaterial; wall.transform.localScale = new Vector3((Bounds[i].PointB - Bounds[i].PointA).magnitude, BoundaryHeight, wallDepth); wall.layer = ignoreRaycastLayerValue; @@ -703,7 +703,7 @@ public GameObject GetBoundaryCeilingVisualization() boundaryBoundingBox.center.x, BoundaryHeight + (currentCeilingObject.transform.localScale.y * 0.5f), boundaryBoundingBox.center.z)); - currentCeilingObject.GetComponent().sharedMaterial = MixedRealityOrchestrator.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryCeilingMaterial; + currentCeilingObject.GetComponent().sharedMaterial = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.BoundaryCeilingMaterial; currentCeilingObject.transform.parent = BoundaryVisualizationParent.transform; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs index c807a0a8f17..ee089517ce9 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs @@ -24,10 +24,10 @@ private void InitializeInternal() { eventData = new DiagnosticsEventData(EventSystem.current); - Visible = MixedRealityOrchestrator.Instance.ActiveProfile.DiagnosticsSystemProfile.Visible; - ShowCpu = MixedRealityOrchestrator.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowCpu; - ShowFps = MixedRealityOrchestrator.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowFps; - ShowMemory = MixedRealityOrchestrator.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowMemory; + Visible = MixedRealityToolkit.Instance.ActiveProfile.DiagnosticsSystemProfile.Visible; + ShowCpu = MixedRealityToolkit.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowCpu; + ShowFps = MixedRealityToolkit.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowFps; + ShowMemory = MixedRealityToolkit.Instance.ActiveProfile.DiagnosticsSystemProfile.ShowMemory; RaiseDiagnosticsChanged(); } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs index aed4a83e298..791ee75b0b5 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/FocusProvider.cs @@ -236,7 +236,7 @@ private async void Awake() await WaitUntilInputSystemValid; - foreach (var inputSource in MixedRealityOrchestrator.InputSystem.DetectedInputSources) + foreach (var inputSource in MixedRealityToolkit.InputSystem.DetectedInputSources) { RegisterPointers(inputSource); } @@ -244,7 +244,7 @@ private async void Awake() private void Update() { - if (MixedRealityOrchestrator.InputSystem == null) { return; } + if (MixedRealityToolkit.InputSystem == null) { return; } UpdatePointers(); UpdateFocusedObjects(); @@ -453,7 +453,7 @@ private void RegisterPointers(IMixedRealityInputSource inputSource) RegisterPointer(inputSource.Pointers[i]); // Special Registration for Gaze - if (inputSource.SourceId == MixedRealityOrchestrator.InputSystem.GazeProvider.GazeInputSource.SourceId && gazeProviderPointingData == null) + if (inputSource.SourceId == MixedRealityToolkit.InputSystem.GazeProvider.GazeInputSource.SourceId && gazeProviderPointingData == null) { gazeProviderPointingData = new PointerData(inputSource.Pointers[i]); } @@ -485,10 +485,10 @@ public bool UnregisterPointer(IMixedRealityPointer pointer) if (!objectIsStillFocusedByOtherPointer) { - MixedRealityOrchestrator.InputSystem.RaiseFocusExit(pointer, unfocusedObject); + MixedRealityToolkit.InputSystem.RaiseFocusExit(pointer, unfocusedObject); } - MixedRealityOrchestrator.InputSystem.RaisePreFocusChanged(pointer, unfocusedObject, null); + MixedRealityToolkit.InputSystem.RaisePreFocusChanged(pointer, unfocusedObject, null); } pointers.Remove(pointerData); @@ -817,21 +817,21 @@ private void UpdateFocusedObjects() GameObject pendingUnfocusObject = change.PreviousPointerTarget; GameObject pendingFocusObject = change.CurrentPointerTarget; - MixedRealityOrchestrator.InputSystem.RaisePreFocusChanged(change.Pointer, pendingUnfocusObject, pendingFocusObject); + MixedRealityToolkit.InputSystem.RaisePreFocusChanged(change.Pointer, pendingUnfocusObject, pendingFocusObject); if (pendingOverallFocusExitSet.Contains(pendingUnfocusObject)) { - MixedRealityOrchestrator.InputSystem.RaiseFocusExit(change.Pointer, pendingUnfocusObject); + MixedRealityToolkit.InputSystem.RaiseFocusExit(change.Pointer, pendingUnfocusObject); pendingOverallFocusExitSet.Remove(pendingUnfocusObject); } if (pendingOverallFocusEnterSet.Contains(pendingFocusObject)) { - MixedRealityOrchestrator.InputSystem.RaiseFocusEnter(change.Pointer, pendingFocusObject); + MixedRealityToolkit.InputSystem.RaiseFocusEnter(change.Pointer, pendingFocusObject); pendingOverallFocusEnterSet.Remove(pendingFocusObject); } - MixedRealityOrchestrator.InputSystem.RaiseFocusChanged(change.Pointer, pendingUnfocusObject, pendingFocusObject); + MixedRealityToolkit.InputSystem.RaiseFocusChanged(change.Pointer, pendingUnfocusObject, pendingFocusObject); } Debug.Assert(pendingOverallFocusExitSet.Count == 0); @@ -861,7 +861,7 @@ public void OnSourceLost(SourceStateEventData eventData) if (gazeProviderPointingData != null && eventData.InputSource.Pointers[i].PointerId == gazeProviderPointingData.Pointer.PointerId) { // If the source lost is the gaze input source, then reset it. - if (eventData.InputSource.SourceId == MixedRealityOrchestrator.InputSystem.GazeProvider.GazeInputSource.SourceId) + if (eventData.InputSource.SourceId == MixedRealityToolkit.InputSystem.GazeProvider.GazeInputSource.SourceId) { gazeProviderPointingData.ResetFocusedObjects(); gazeProviderPointingData = null; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs index e159bd182a4..cd8b201ba9a 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/GazeProvider.cs @@ -235,7 +235,7 @@ public override bool TryGetPointerRotation(out Quaternion rotation) /// Optional handedness of the source that pressed the pointer. public void RaisePointerDown(MixedRealityInputAction mixedRealityInputAction, Handedness handedness = Handedness.None) { - MixedRealityOrchestrator.InputSystem.RaisePointerDown(this, handedness, mixedRealityInputAction); + MixedRealityToolkit.InputSystem.RaisePointerDown(this, handedness, mixedRealityInputAction); } /// @@ -245,8 +245,8 @@ public void RaisePointerDown(MixedRealityInputAction mixedRealityInputAction, Ha /// Optional handedness of the source that released the pointer. public void RaisePointerUp(MixedRealityInputAction mixedRealityInputAction, Handedness handedness = Handedness.None) { - MixedRealityOrchestrator.InputSystem.RaisePointerClicked(this, handedness, mixedRealityInputAction, 0); - MixedRealityOrchestrator.InputSystem.RaisePointerUp(this, handedness, mixedRealityInputAction); + MixedRealityToolkit.InputSystem.RaisePointerClicked(this, handedness, mixedRealityInputAction, 0); + MixedRealityToolkit.InputSystem.RaisePointerUp(this, handedness, mixedRealityInputAction); } } @@ -342,7 +342,7 @@ protected override void OnDisable() { base.OnDisable(); GazePointer.BaseCursor?.SetVisibility(false); - MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(GazeInputSource); + MixedRealityToolkit.InputSystem?.RaiseSourceLost(GazeInputSource); } #endregion MonoBehaviour Implementation @@ -395,7 +395,7 @@ private IMixedRealityPointer InitializeGazePointer() private async void RaiseSourceDetected() { await WaitUntilInputSystemValid; - MixedRealityOrchestrator.InputSystem.RaiseSourceDetected(GazeInputSource); + MixedRealityToolkit.InputSystem.RaiseSourceDetected(GazeInputSource); GazePointer.BaseCursor?.SetVisibility(true); } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs index 0f6907d83c7..5d41b65eee9 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs @@ -135,7 +135,7 @@ void IMixedRealityPointerHandler.OnPointerDown(MixedRealityPointerEventData even currentPointer = eventData.Pointer; FocusDetails focusDetails; - Vector3 initialDraggingPosition = MixedRealityOrchestrator.InputSystem.FocusProvider.TryGetFocusDetails(eventData, out focusDetails) + Vector3 initialDraggingPosition = MixedRealityToolkit.InputSystem.FocusProvider.TryGetFocusDetails(eventData, out focusDetails) ? focusDetails.Point : hostTransform.position; @@ -201,7 +201,7 @@ private void StartDragging(Vector3 initialDraggingPosition) // TODO: robertes: Fix push/pop and single-handler model so that multiple HandDraggable components can be active at once. // Add self as a modal input handler, to get all inputs during the manipulation - MixedRealityOrchestrator.InputSystem.PushModalInputHandler(gameObject); + MixedRealityToolkit.InputSystem.PushModalInputHandler(gameObject); isDragging = true; @@ -327,7 +327,7 @@ private void StopDragging() } // Remove self as a modal input handler - MixedRealityOrchestrator.InputSystem.PopModalInputHandler(); + MixedRealityToolkit.InputSystem.PopModalInputHandler(); isDragging = false; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs index 82e0d0f7585..a6ae86cc9b3 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/TeleportHotSpot.cs @@ -30,8 +30,8 @@ public override void OnBeforeFocusChange(FocusEventData eventData) if (eventData.Pointer.IsInteractionEnabled) { - MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportCanceled(eventData.Pointer, this); - MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportRequest(eventData.Pointer, this); + MixedRealityToolkit.TeleportSystem?.RaiseTeleportCanceled(eventData.Pointer, this); + MixedRealityToolkit.TeleportSystem?.RaiseTeleportRequest(eventData.Pointer, this); } } else if (eventData.OldFocusedObject == gameObject) @@ -40,7 +40,7 @@ public override void OnBeforeFocusChange(FocusEventData eventData) if (eventData.Pointer.IsInteractionEnabled) { - MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportCanceled(eventData.Pointer, this); + MixedRealityToolkit.TeleportSystem?.RaiseTeleportCanceled(eventData.Pointer, this); } } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs index 9788ec7797e..abfbf488a0f 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/InputSystemGlobalListener.cs @@ -14,13 +14,13 @@ public class InputSystemGlobalListener : MonoBehaviour { private bool lateInitialize = true; - protected readonly WaitUntil WaitUntilInputSystemValid = new WaitUntil(() => MixedRealityOrchestrator.InputSystem != null); + protected readonly WaitUntil WaitUntilInputSystemValid = new WaitUntil(() => MixedRealityToolkit.InputSystem != null); protected virtual void OnEnable() { - if (MixedRealityOrchestrator.IsInitialized && MixedRealityOrchestrator.InputSystem != null && !lateInitialize) + if (MixedRealityToolkit.IsInitialized && MixedRealityToolkit.InputSystem != null && !lateInitialize) { - MixedRealityOrchestrator.InputSystem.Register(gameObject); + MixedRealityToolkit.InputSystem.Register(gameObject); } } @@ -30,13 +30,13 @@ protected virtual async void Start() { await WaitUntilInputSystemValid; lateInitialize = false; - MixedRealityOrchestrator.InputSystem.Register(gameObject); + MixedRealityToolkit.InputSystem.Register(gameObject); } } protected virtual void OnDisable() { - MixedRealityOrchestrator.InputSystem?.Unregister(gameObject); + MixedRealityToolkit.InputSystem?.Unregister(gameObject); } } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs index 91f5e181cd3..e6fde0d192a 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Teleportation/MixedRealityTeleportManager.cs @@ -47,7 +47,7 @@ private void InitializeInternal() if (eventSystems.Length == 0) { - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { eventSystemReference = new GameObject("Event System"); eventSystemReference.AddComponent(); @@ -237,7 +237,7 @@ private void ProcessTeleportationRequest(TeleportEventData eventData) { isProcessingTeleportRequest = true; - var cameraParent = MixedRealityOrchestrator.Instance.MixedRealityPlayspace; + var cameraParent = MixedRealityToolkit.Instance.MixedRealityPlayspace; targetRotation = Vector3.zero; targetRotation.y = eventData.Pointer.PointerOrientation; diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs index 50bcfcfd331..13399e6c583 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/BaseCursor.cs @@ -263,10 +263,10 @@ private void OnDestroy() protected virtual void RegisterManagers() { // Register the cursor as a listener, so that it can always get input events it cares about - MixedRealityOrchestrator.InputSystem.Register(gameObject); + MixedRealityToolkit.InputSystem.Register(gameObject); // Setup the cursor to be able to respond to input being globally enabled / disabled - if (MixedRealityOrchestrator.InputSystem.IsInputEnabled) + if (MixedRealityToolkit.InputSystem.IsInputEnabled) { OnInputEnabled(); } @@ -275,8 +275,8 @@ protected virtual void RegisterManagers() OnInputDisabled(); } - MixedRealityOrchestrator.InputSystem.InputEnabled += OnInputEnabled; - MixedRealityOrchestrator.InputSystem.InputDisabled += OnInputDisabled; + MixedRealityToolkit.InputSystem.InputEnabled += OnInputEnabled; + MixedRealityToolkit.InputSystem.InputDisabled += OnInputDisabled; } /// @@ -284,9 +284,9 @@ protected virtual void RegisterManagers() /// protected virtual void UnregisterManagers() { - MixedRealityOrchestrator.InputSystem.InputEnabled -= OnInputEnabled; - MixedRealityOrchestrator.InputSystem.InputDisabled -= OnInputDisabled; - MixedRealityOrchestrator.InputSystem.Unregister(gameObject); + MixedRealityToolkit.InputSystem.InputEnabled -= OnInputEnabled; + MixedRealityToolkit.InputSystem.InputDisabled -= OnInputDisabled; + MixedRealityToolkit.InputSystem.Unregister(gameObject); } /// @@ -302,9 +302,9 @@ protected virtual void UpdateCursorTransform() FocusDetails focusDetails; - if (!MixedRealityOrchestrator.InputSystem.FocusProvider.TryGetFocusDetails(Pointer, out focusDetails)) + if (!MixedRealityToolkit.InputSystem.FocusProvider.TryGetFocusDetails(Pointer, out focusDetails)) { - if (MixedRealityOrchestrator.InputSystem.FocusProvider.IsPointerRegistered(Pointer)) + if (MixedRealityToolkit.InputSystem.FocusProvider.IsPointerRegistered(Pointer)) { Debug.LogError($"{name}: Unable to get focus details for {pointer.GetType().Name}!"); } @@ -312,7 +312,7 @@ protected virtual void UpdateCursorTransform() return; } - GameObject newTargetedObject = MixedRealityOrchestrator.InputSystem.FocusProvider.GetFocusedObject(Pointer); + GameObject newTargetedObject = MixedRealityToolkit.InputSystem.FocusProvider.GetFocusedObject(Pointer); Vector3 lookForward; // Normalize scale on before update diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs index e25f77159ed..1bf8512292e 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/CursorModifier.cs @@ -165,7 +165,7 @@ public Vector3 GetModifiedPosition(IMixedRealityCursor cursor) } FocusDetails focusDetails; - if (MixedRealityOrchestrator.InputSystem != null && MixedRealityOrchestrator.InputSystem.FocusProvider.TryGetFocusDetails(cursor.Pointer, out focusDetails)) + if (MixedRealityToolkit.InputSystem != null && MixedRealityToolkit.InputSystem.FocusProvider.TryGetFocusDetails(cursor.Pointer, out focusDetails)) { // Else, consider the modifiers on the cursor modifier, but don't snap return focusDetails.Point + HostTransform.TransformVector(CursorPositionOffset); diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs index c85c88a2b01..43f5335510c 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/InteractiveMeshCursor.cs @@ -142,7 +142,7 @@ protected override void UpdateCursorTransform() } // handle scale of main cursor go - float distance = Vector3.Distance(MixedRealityOrchestrator.InputSystem.GazeProvider.GazeOrigin, transform.position); + float distance = Vector3.Distance(MixedRealityToolkit.InputSystem.GazeProvider.GazeOrigin, transform.position); float smoothScaling = 1 - DefaultCursorDistance * distanceScaleFactor; transform.localScale = initialScale * (distance * distanceScaleFactor + smoothScaling); } diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs index 8f9091d380b..00ed17ad140 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Cursors/TeleportCursor.cs @@ -90,9 +90,9 @@ protected override void UpdateCursorTransform() FocusDetails focusDetails; - if (!MixedRealityOrchestrator.InputSystem.FocusProvider.TryGetFocusDetails(Pointer, out focusDetails)) + if (!MixedRealityToolkit.InputSystem.FocusProvider.TryGetFocusDetails(Pointer, out focusDetails)) { - Debug.LogError(MixedRealityOrchestrator.InputSystem.FocusProvider.IsPointerRegistered(Pointer) + Debug.LogError(MixedRealityToolkit.InputSystem.FocusProvider.IsPointerRegistered(Pointer) ? $"{gameObject.name}: Unable to get focus details for {pointer.GetType().Name}!" : $"{pointer.GetType().Name} has not been registered!"); SetVisibility(false); diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs index c25a08845c9..007974916d6 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs @@ -127,9 +127,9 @@ protected override void OnEnable() { base.OnEnable(); - if (MixedRealityOrchestrator.IsInitialized && MixedRealityOrchestrator.TeleportSystem != null && !lateRegisterTeleport) + if (MixedRealityToolkit.IsInitialized && MixedRealityToolkit.TeleportSystem != null && !lateRegisterTeleport) { - MixedRealityOrchestrator.TeleportSystem.Register(gameObject); + MixedRealityToolkit.TeleportSystem.Register(gameObject); } } @@ -139,9 +139,9 @@ protected override async void Start() if (lateRegisterTeleport) { - await new WaitUntil(() => MixedRealityOrchestrator.TeleportSystem != null); + await new WaitUntil(() => MixedRealityToolkit.TeleportSystem != null); lateRegisterTeleport = false; - MixedRealityOrchestrator.TeleportSystem.Register(gameObject); + MixedRealityToolkit.TeleportSystem.Register(gameObject); } await WaitUntilInputSystemValid; @@ -151,7 +151,7 @@ protected override async void Start() protected override void OnDisable() { base.OnDisable(); - MixedRealityOrchestrator.TeleportSystem?.Unregister(gameObject); + MixedRealityToolkit.TeleportSystem?.Unregister(gameObject); IsHoldPressed = false; IsSelectPressed = false; @@ -183,7 +183,7 @@ public uint PointerId { if (pointerId == 0) { - pointerId = MixedRealityOrchestrator.InputSystem.FocusProvider.GenerateNewPointerId(); + pointerId = MixedRealityToolkit.InputSystem.FocusProvider.GenerateNewPointerId(); } return pointerId; @@ -245,7 +245,7 @@ public virtual bool IsInteractionEnabled /// public float PointerExtent { - get { return overrideGlobalPointerExtent ? MixedRealityOrchestrator.InputSystem.FocusProvider.GlobalPointingExtent : pointerExtent; } + get { return overrideGlobalPointerExtent ? MixedRealityToolkit.InputSystem.FocusProvider.GlobalPointingExtent : pointerExtent; } set { pointerExtent = value; } } @@ -391,8 +391,8 @@ public override void OnInputUp(InputEventData eventData) if (eventData.MixedRealityInputAction == pointerAction) { IsSelectPressed = false; - MixedRealityOrchestrator.InputSystem.RaisePointerClicked(this, Handedness, pointerAction, 0); - MixedRealityOrchestrator.InputSystem.RaisePointerUp(this, Handedness, pointerAction); + MixedRealityToolkit.InputSystem.RaisePointerClicked(this, Handedness, pointerAction, 0); + MixedRealityToolkit.InputSystem.RaisePointerUp(this, Handedness, pointerAction); } } } @@ -413,7 +413,7 @@ public override void OnInputDown(InputEventData eventData) { IsSelectPressed = true; HasSelectPressedOnce = true; - MixedRealityOrchestrator.InputSystem.RaisePointerDown(this, Handedness, pointerAction); + MixedRealityToolkit.InputSystem.RaisePointerDown(this, Handedness, pointerAction); } } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs index dc6d571cc06..d185b84c9f5 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/MousePointer.cs @@ -102,7 +102,7 @@ protected override void Start() RayStabilizer = null; } - foreach (var inputSource in MixedRealityOrchestrator.InputSystem.DetectedInputSources) + foreach (var inputSource in MixedRealityToolkit.InputSystem.DetectedInputSources) { if (inputSource.SourceId == Controller.InputSource.SourceId) { diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs index 92d6f93743e..1b0f3bd70d6 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/TeleportPointer.cs @@ -278,7 +278,7 @@ public override void OnPositionInputChanged(InputEventData eventData) { teleportEnabled = true; - MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportRequest(this, TeleportHotSpot); + MixedRealityToolkit.TeleportSystem?.RaiseTeleportRequest(this, TeleportHotSpot); } else if (canMove) { @@ -303,7 +303,7 @@ public override void OnPositionInputChanged(InputEventData eventData) { canMove = false; // Rotate the camera by the rotation amount. If our angle is positive then rotate in the positive direction, otherwise in the opposite direction. - MixedRealityOrchestrator.Instance.MixedRealityPlayspace.RotateAround(CameraCache.Main.transform.position, Vector3.up, angle >= 0.0f ? rotationAmount : -rotationAmount); + MixedRealityToolkit.Instance.MixedRealityPlayspace.RotateAround(CameraCache.Main.transform.position, Vector3.up, angle >= 0.0f ? rotationAmount : -rotationAmount); } else // We may be trying to strafe backwards. { @@ -317,10 +317,10 @@ public override void OnPositionInputChanged(InputEventData eventData) if (offsetStrafeAngle > 0 && offsetStrafeAngle < backStrafeActivationAngle) { canMove = false; - var height = MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position.y; - var newPosition = -CameraCache.Main.transform.forward * strafeAmount + MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position; + var height = MixedRealityToolkit.Instance.MixedRealityPlayspace.position.y; + var newPosition = -CameraCache.Main.transform.forward * strafeAmount + MixedRealityToolkit.Instance.MixedRealityPlayspace.position; newPosition.y = height; - MixedRealityOrchestrator.Instance.MixedRealityPlayspace.position = newPosition; + MixedRealityToolkit.Instance.MixedRealityPlayspace.position = newPosition; } } } @@ -344,7 +344,7 @@ public override void OnPositionInputChanged(InputEventData eventData) if (TeleportSurfaceResult == TeleportSurfaceResult.Valid || TeleportSurfaceResult == TeleportSurfaceResult.HotSpot) { - MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportStarted(this, TeleportHotSpot); + MixedRealityToolkit.TeleportSystem?.RaiseTeleportStarted(this, TeleportHotSpot); } } @@ -352,7 +352,7 @@ public override void OnPositionInputChanged(InputEventData eventData) { canTeleport = false; teleportEnabled = false; - MixedRealityOrchestrator.TeleportSystem?.RaiseTeleportCanceled(this, TeleportHotSpot); + MixedRealityToolkit.TeleportSystem?.RaiseTeleportCanceled(this, TeleportHotSpot); } } diff --git a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs index 68cbebe26e4..232710df037 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/ControllerFinder.cs @@ -78,13 +78,13 @@ protected virtual void TryAndAddControllerTransform() { // Look if the controller was already loaded. This could happen if the // GameObject was instantiated at runtime and the model loaded event has already fired. - if (MixedRealityOrchestrator.InputSystem == null) + if (MixedRealityToolkit.InputSystem == null) { // The InputSystem could not be found. return; } - foreach (IMixedRealityController controller in MixedRealityOrchestrator.InputSystem.DetectedControllers) + foreach (IMixedRealityController controller in MixedRealityToolkit.InputSystem.DetectedControllers) { if (controller.ControllerHandedness == handedness) { diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs index 5cee8615f10..1197b1e22ac 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/BaseInputHandlerInspector.cs @@ -13,7 +13,7 @@ public class BaseInputHandlerInspector : BaseMixedRealityInspector protected virtual void OnEnable() { - MixedRealityOrchestrator.ConfirmInitialized(); + MixedRealityToolkit.ConfirmInitialized(); isFocusRequiredProperty = serializedObject.FindProperty("isFocusRequired"); } diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index ca4b8866a35..64b4ce73313 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -43,7 +43,7 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); return; @@ -52,7 +52,7 @@ public override void OnInspectorGUI() if (registeredKeywords == null || registeredKeywords.Length == 0) { registeredKeywords = RegisteredKeywords().Distinct().ToArray(); - EditorGUILayout.HelpBox("No keywords registered.\n\nKeywords can be registered via Speech Commands Profile on the Mixed Reality Orchestrator's Configuration Profile.", MessageType.Error); + EditorGUILayout.HelpBox("No keywords registered.\n\nKeywords can be registered via Speech Commands Profile on the Mixed Reality Toolkit's Configuration Profile.", MessageType.Error); return; } @@ -150,16 +150,16 @@ private void ShowList(SerializedProperty list) private static IEnumerable RegisteredKeywords() { - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled || - !MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.IsSpeechCommandsEnabled || - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length == 0) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled || + !MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.IsSpeechCommandsEnabled || + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length == 0) { yield break; } - for (var i = 0; i < MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length; i++) + for (var i = 0; i < MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands.Length; i++) { - yield return MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands[i].Keyword; + yield return MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands[i].Keyword; } } } diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs deleted file mode 100644 index bd66c51719b..00000000000 --- a/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs +++ /dev/null @@ -1,419 +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.Core.Definitions; -using Microsoft.MixedReality.Toolkit.Core.Interfaces; -using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Services; -using Microsoft.MixedReality.Toolkit.SDK.Input; -using NUnit.Framework; -using System; -using System.Linq; -using UnityEditor.SceneManagement; -using UnityEngine; -using UnityEngine.TestTools; - -namespace Microsoft.MixedReality.Toolkit.Tests -{ - public class MixedRealityOrchestratorTests - { - public static void CreateMixedRealityOrchestrator() - { - MixedRealityOrchestrator.ConfirmInitialized(); - } - - [Test] - public void Test01_CreateMixedRealityOrchestrator() - { - CleanupScene(); - - CreateMixedRealityOrchestrator(); - GameObject gameObject = GameObject.Find(nameof(MixedRealityOrchestrator)); - Assert.AreEqual(nameof(MixedRealityOrchestrator), gameObject.name); - } - - [Test] - public void Test02_TestNoMixedRealityConfigurationFound() - { - LogAssert.Expect(LogType.Error, "No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Orchestrator"); - - MixedRealityOrchestrator.Instance.ActiveProfile = null; - - Assert.IsFalse(MixedRealityOrchestrator.HasActiveProfile); - Assert.IsNull(MixedRealityOrchestrator.Instance.ActiveProfile); - - CleanupScene(); - } - - [Test] - public void Test03_CreateMixedRealityOrchestrator() - { - InitializeMixedRealityOrchestrator(); - - // Create Test Configuration - Assert.AreEqual(0, MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices.Count); - Assert.AreEqual(3, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); - } - - [Test] - public void Test04_CreateMixedRealityInputSystem() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Tests - Assert.IsNotNull(MixedRealityOrchestrator.Instance.ActiveProfile); - Assert.IsNotEmpty(MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices); - Assert.AreEqual(1, MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices.Count); - Assert.AreEqual(3, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); - } - - [Test] - public void Test05_TestGetMixedRealityInputSystem() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Retrieve Input System - var inputSystem = MixedRealityOrchestrator.Instance.GetService(); - - // Tests - Assert.IsNotNull(inputSystem); - } - - [Test] - public void Test06_TestMixedRealityInputSystemDoesNotExist() - { - InitializeMixedRealityOrchestrator(); - - // Check for Input System - var inputSystemExists = MixedRealityOrchestrator.Instance.IsServiceRegistered(); - - // Tests - Assert.IsFalse(inputSystemExists); - } - - - [Test] - public void Test07_TestMixedRealityInputSystemExists() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Check for Input System - var inputSystemExists = MixedRealityOrchestrator.Instance.IsServiceRegistered(); - - // Tests - Assert.IsTrue(inputSystemExists); - } - - [Test] - public void Test08_CreateMixedRealityComponent() - { - InitializeMixedRealityOrchestrator(); - - var component = new TestComponent1(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Add test component - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), component); - - // Tests - Assert.AreEqual(4, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); - } - - [Test] - public void Test09_TestMixedRealityComponentExists() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Add test component - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - - // Retrieve Component1 - var component1 = MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent1)); - - // Tests - Assert.IsNotNull(component1); - } - - [Test] - public void Test10_TestMixedRealityComponents() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Add test component - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - - // Retrieve Component1 - var components = MixedRealityOrchestrator.Instance.GetActiveServices(typeof(ITestComponent1)); - - // Tests - Assert.AreEqual(3, components.Count()); - } - - [Test] - public void Test11_TestMixedRealityComponent2DoesNotReturn() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Add test component - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - - try - { - // Validate non-existent component - MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent2), "Test2"); - Assert.Fail(); - } - catch (Exception) - { - // ignored - } - } - - [Test] - public void Test12_TestMixedRealityComponent2DoesNotExist() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - - // Validate non-existent component - var component2 = MixedRealityOrchestrator.Instance.IsServiceRegistered(); - - // Tests - Assert.IsFalse(component2); - } - - [Test] - public void Test13_CreateMixedRealityComponentNameWithInput() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - //Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - - //Add test component 2 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test2-1" }); - - // Tests - Assert.IsNotNull(MixedRealityOrchestrator.Instance.ActiveProfile); - Assert.IsNotEmpty(MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices); - Assert.AreEqual(1, MixedRealityOrchestrator.Instance.ActiveProfile.ActiveServices.Count); - Assert.AreEqual(5, MixedRealityOrchestrator.Instance.MixedRealityComponents.Count); - } - - [Test] - public void Test14_ValidateComponentNameWithInput() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test14-1" }); - - // Add test component 2 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test14-2" }); - - // Retrieve Test component 2-2 - TestComponent2 component2 = (TestComponent2)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent2), "Test14-2"); - - // Component 2-2 Tests - Assert.IsNotNull(component2.InputSystem); - Assert.AreEqual("Test14-2", component2.Name); - - // Retrieve Test component 2-1 - TestComponent1 component1 = (TestComponent1)MixedRealityOrchestrator.Instance.GetService(typeof(ITestComponent1), "Test14-1"); - - // Component 2-1 Tests - Assert.IsNotNull(component1.InputSystem); - Assert.AreEqual("Test14-1", component1.Name); - } - - [Test] - public void Test15_GetMixedRealityComponentsCollection() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test15-1" }); - - // Add test components 2 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test15-2.1" }); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test15-2.2" }); - - // Retrieve Component2 - var components = MixedRealityOrchestrator.Instance.GetActiveServices(typeof(ITestComponent2)); - - // Tests - Assert.AreEqual(2, components.Count); - } - - [Test] - public void Test16_GetAllMixedRealityComponents() - { - InitializeMixedRealityOrchestrator(); - - // Add Input System - MixedRealityOrchestrator.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); - - // Add test component 1 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test16-1.1" }); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test16-1.2" }); - - // Add test components 2 - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test16-2.1" }); - MixedRealityOrchestrator.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test16-2.2" }); - - // Retrieve Component1 - var allComponents = MixedRealityOrchestrator.Instance.MixedRealityComponents; - - // Tests - Assert.AreEqual(7, allComponents.Count); - } - - [Test] - public void Test17_CleanupMixedRealityOrchestrator() - { - CleanupScene(); - } - - #region Helper Functions - - private static void CleanupScene() - { - EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single); - } - - private static void InitializeMixedRealityOrchestrator() - { - // Setup - CleanupScene(); - CreateMixedRealityOrchestrator(); - - // Tests - Assert.IsNotNull(MixedRealityOrchestrator.Instance); - var configuration = ScriptableObject.CreateInstance(); - MixedRealityOrchestrator.Instance.ActiveProfile = configuration; - Assert.NotNull(MixedRealityOrchestrator.Instance.ActiveProfile); - } - - #endregion Helper Functions - } - - #region Test Components - - public interface ITestComponent1 : IMixedRealityService { } - - public interface ITestComponent2 : IMixedRealityService { } - - internal class TestComponent1 : BaseService, ITestComponent1 - { - public IMixedRealityInputSystem InputSystem = null; - - /// - /// The initialize function is used to setup the service once created. - /// This method is called once all services have been registered in the Mixed Reality Orchestrator. - /// - public override void Initialize() - { - InputSystem = MixedRealityOrchestrator.Instance.GetService(); - } - - /// - /// Optional Update function to perform per-frame updates of the service - /// - public override void Update() - { - // TODO Update stuff - } - - /// - /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Orchestrator is replaced - /// - public override void Reset() - { - // TODO React to profile change - } - - /// - /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Orchestrator is destroyed - /// - public override void Destroy() - { - // TODO Destroy stuff - } - } - - internal class TestComponent2 : BaseService, ITestComponent2 - { - public IMixedRealityInputSystem InputSystem = null; - - /// - /// The initialize function is used to setup the service once created. - /// This method is called once all services have been registered in the Mixed Reality Orchestrator. - /// - public override void Initialize() - { - InputSystem = MixedRealityOrchestrator.Instance.GetService(); - } - - /// - /// Optional Update function to perform per-frame updates of the service - /// - public override void Update() - { - // TODO Update stuff - } - - /// - /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Orchestrator is replaced - /// - public override void Reset() - { - // TODO React to profile change - } - - /// - /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Orchestrator is destroyed - /// - public override void Destroy() - { - // TODO Destroy stuff - } - } - - #endregion Test Components -} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs new file mode 100644 index 00000000000..e8379378cba --- /dev/null +++ b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs @@ -0,0 +1,419 @@ +// 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.Core.Definitions; +using Microsoft.MixedReality.Toolkit.Core.Interfaces; +using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; +using Microsoft.MixedReality.Toolkit.Core.Services; +using Microsoft.MixedReality.Toolkit.SDK.Input; +using NUnit.Framework; +using System; +using System.Linq; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.TestTools; + +namespace Microsoft.MixedReality.Toolkit.Tests +{ + public class MixedRealityToolkitTests + { + public static void InitializeMixedRealityToolkit() + { + MixedRealityToolkit.ConfirmInitialized(); + } + + [Test] + public void Test01_InitializeMixedRealityToolkit() + { + CleanupScene(); + + InitializeMixedRealityToolkit(); + GameObject gameObject = GameObject.Find(nameof(MixedRealityToolkit)); + Assert.AreEqual(nameof(MixedRealityToolkit), gameObject.name); + } + + [Test] + public void Test02_TestNoMixedRealityConfigurationFound() + { + LogAssert.Expect(LogType.Error, "No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Toolkit"); + + MixedRealityToolkit.Instance.ActiveProfile = null; + + Assert.IsFalse(MixedRealityToolkit.HasActiveProfile); + Assert.IsNull(MixedRealityToolkit.Instance.ActiveProfile); + + CleanupScene(); + } + + [Test] + public void Test03_CreateMixedRealityOrchestrator() + { + InitializeMixedRealityToolkitScene(); + + // Create Test Configuration + Assert.AreEqual(0, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count); + Assert.AreEqual(3, MixedRealityToolkit.Instance.MixedRealityComponents.Count); + } + + [Test] + public void Test04_CreateMixedRealityInputSystem() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Tests + Assert.IsNotNull(MixedRealityToolkit.Instance.ActiveProfile); + Assert.IsNotEmpty(MixedRealityToolkit.Instance.ActiveProfile.ActiveServices); + Assert.AreEqual(1, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count); + Assert.AreEqual(3, MixedRealityToolkit.Instance.MixedRealityComponents.Count); + } + + [Test] + public void Test05_TestGetMixedRealityInputSystem() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Retrieve Input System + var inputSystem = MixedRealityToolkit.Instance.GetService(); + + // Tests + Assert.IsNotNull(inputSystem); + } + + [Test] + public void Test06_TestMixedRealityInputSystemDoesNotExist() + { + InitializeMixedRealityToolkitScene(); + + // Check for Input System + var inputSystemExists = MixedRealityToolkit.Instance.IsServiceRegistered(); + + // Tests + Assert.IsFalse(inputSystemExists); + } + + + [Test] + public void Test07_TestMixedRealityInputSystemExists() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Check for Input System + var inputSystemExists = MixedRealityToolkit.Instance.IsServiceRegistered(); + + // Tests + Assert.IsTrue(inputSystemExists); + } + + [Test] + public void Test08_CreateMixedRealityComponent() + { + InitializeMixedRealityToolkitScene(); + + var component = new TestComponent1(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Add test component + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), component); + + // Tests + Assert.AreEqual(4, MixedRealityToolkit.Instance.MixedRealityComponents.Count); + } + + [Test] + public void Test09_TestMixedRealityComponentExists() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Add test component + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + + // Retrieve Component1 + var component1 = MixedRealityToolkit.Instance.GetService(typeof(ITestComponent1)); + + // Tests + Assert.IsNotNull(component1); + } + + [Test] + public void Test10_TestMixedRealityComponents() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Add test component + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + + // Retrieve Component1 + var components = MixedRealityToolkit.Instance.GetActiveServices(typeof(ITestComponent1)); + + // Tests + Assert.AreEqual(3, components.Count); + } + + [Test] + public void Test11_TestMixedRealityComponent2DoesNotReturn() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Add test component + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + + try + { + // Validate non-existent component + MixedRealityToolkit.Instance.GetService(typeof(ITestComponent2), "Test2"); + Assert.Fail(); + } + catch (Exception) + { + // ignored + } + } + + [Test] + public void Test12_TestMixedRealityComponent2DoesNotExist() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Add test component 1 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + + // Validate non-existent component + var component2 = MixedRealityToolkit.Instance.IsServiceRegistered(); + + // Tests + Assert.IsFalse(component2); + } + + [Test] + public void Test13_CreateMixedRealityComponentNameWithInput() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + //Add test component 1 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + + //Add test component 2 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test2-1" }); + + // Tests + Assert.IsNotNull(MixedRealityToolkit.Instance.ActiveProfile); + Assert.IsNotEmpty(MixedRealityToolkit.Instance.ActiveProfile.ActiveServices); + Assert.AreEqual(1, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count); + Assert.AreEqual(5, MixedRealityToolkit.Instance.MixedRealityComponents.Count); + } + + [Test] + public void Test14_ValidateComponentNameWithInput() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Add test component 1 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test14-1" }); + + // Add test component 2 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test14-2" }); + + // Retrieve Test component 2-2 + TestComponent2 component2 = (TestComponent2)MixedRealityToolkit.Instance.GetService(typeof(ITestComponent2), "Test14-2"); + + // Component 2-2 Tests + Assert.IsNotNull(component2.InputSystem); + Assert.AreEqual("Test14-2", component2.Name); + + // Retrieve Test component 2-1 + TestComponent1 component1 = (TestComponent1)MixedRealityToolkit.Instance.GetService(typeof(ITestComponent1), "Test14-1"); + + // Component 2-1 Tests + Assert.IsNotNull(component1.InputSystem); + Assert.AreEqual("Test14-1", component1.Name); + } + + [Test] + public void Test15_GetMixedRealityComponentsCollection() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Add test component 1 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test15-1" }); + + // Add test components 2 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test15-2.1" }); + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test15-2.2" }); + + // Retrieve Component2 + var components = MixedRealityToolkit.Instance.GetActiveServices(typeof(ITestComponent2)); + + // Tests + Assert.AreEqual(2, components.Count); + } + + [Test] + public void Test16_GetAllMixedRealityComponents() + { + InitializeMixedRealityToolkitScene(); + + // Add Input System + MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); + + // Add test component 1 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test16-1.1" }); + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1 { Name = "Test16-1.2" }); + + // Add test components 2 + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test16-2.1" }); + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2 { Name = "Test16-2.2" }); + + // Retrieve Component1 + var allComponents = MixedRealityToolkit.Instance.MixedRealityComponents; + + // Tests + Assert.AreEqual(7, allComponents.Count); + } + + [Test] + public void Test17_CleanupMixedRealityOrchestrator() + { + CleanupScene(); + } + + #region Helper Functions + + private static void CleanupScene() + { + EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single); + } + + private static void InitializeMixedRealityToolkitScene() + { + // Setup + CleanupScene(); + InitializeMixedRealityToolkit(); + + // Tests + Assert.IsNotNull(MixedRealityToolkit.Instance); + var configuration = ScriptableObject.CreateInstance(); + MixedRealityToolkit.Instance.ActiveProfile = configuration; + Assert.NotNull(MixedRealityToolkit.Instance.ActiveProfile); + } + + #endregion Helper Functions + } + + #region Test Components + + public interface ITestComponent1 : IMixedRealityService { } + + public interface ITestComponent2 : IMixedRealityService { } + + internal class TestComponent1 : BaseService, ITestComponent1 + { + public IMixedRealityInputSystem InputSystem = null; + + /// + /// The initialize function is used to setup the service once created. + /// This method is called once all services have been registered in the Mixed Reality Toolkit. + /// + public override void Initialize() + { + InputSystem = MixedRealityToolkit.Instance.GetService(); + } + + /// + /// Optional Update function to perform per-frame updates of the service + /// + public override void Update() + { + // TODO Update stuff + } + + /// + /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Toolkit is replaced + /// + public override void Reset() + { + // TODO React to profile change + } + + /// + /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Toolkit is destroyed + /// + public override void Destroy() + { + // TODO Destroy stuff + } + } + + internal class TestComponent2 : BaseService, ITestComponent2 + { + public IMixedRealityInputSystem InputSystem = null; + + /// + /// The initialize function is used to setup the service once created. + /// This method is called once all services have been registered in the Mixed Reality Toolkit. + /// + public override void Initialize() + { + InputSystem = MixedRealityToolkit.Instance.GetService(); + } + + /// + /// Optional Update function to perform per-frame updates of the service + /// + public override void Update() + { + // TODO Update stuff + } + + /// + /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Toolkit is replaced + /// + public override void Reset() + { + // TODO React to profile change + } + + /// + /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Toolkit is destroyed + /// + public override void Destroy() + { + // TODO Destroy stuff + } + } + + #endregion Test Components +} \ No newline at end of file diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs.meta b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit-Tests/MixedRealityOrchestratorTests.cs.meta rename to Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs.meta diff --git a/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs b/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs index e183d08c5b7..12ce9691d93 100644 --- a/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs +++ b/Assets/MixedRealityToolkit/InputSystem/Pointers/GenericPointer.cs @@ -25,7 +25,7 @@ public class GenericPointer : IMixedRealityPointer /// public GenericPointer(string pointerName, IMixedRealityInputSource inputSourceParent) { - PointerId = MixedRealityOrchestrator.InputSystem.FocusProvider.GenerateNewPointerId(); + PointerId = MixedRealityToolkit.InputSystem.FocusProvider.GenerateNewPointerId(); PointerName = pointerName; this.inputSourceParent = inputSourceParent; } diff --git a/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs b/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs index 5ec5ad16214..036c6a14f51 100644 --- a/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs +++ b/Assets/MixedRealityToolkit/InputSystem/Sources/BaseGenericInputSource.cs @@ -22,9 +22,9 @@ public class BaseGenericInputSource : IMixedRealityInputSource, IDisposable /// public BaseGenericInputSource(string name, IMixedRealityPointer[] pointers = null) { - SourceId = MixedRealityOrchestrator.InputSystem.GenerateNewSourceId(); + SourceId = MixedRealityToolkit.InputSystem.GenerateNewSourceId(); SourceName = name; - Pointers = pointers ?? new[] { MixedRealityOrchestrator.InputSystem.GazeProvider.GazePointer }; + Pointers = pointers ?? new[] { MixedRealityToolkit.InputSystem.GazeProvider.GazePointer }; } /// diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs index f0a70f34b01..a987d3d97d0 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputSystemProfile.cs @@ -59,12 +59,12 @@ public MixedRealityPointerProfile PointerProfile /// /// Current Registered Speech System. /// - public IMixedRealitySpeechSystem SpeechSystem => speechSystem ?? (speechSystem = MixedRealityOrchestrator.Instance.GetService()); + public IMixedRealitySpeechSystem SpeechSystem => speechSystem ?? (speechSystem = MixedRealityToolkit.Instance.GetService()); /// /// Is the speech Commands Enabled? /// - public bool IsSpeechCommandsEnabled => speechCommandsProfile != null && SpeechSystem != null && MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled; + public bool IsSpeechCommandsEnabled => speechCommandsProfile != null && SpeechSystem != null && MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled; [SerializeField] [Tooltip("Speech Command profile for wiring up Voice Input to Actions.")] @@ -84,12 +84,12 @@ public MixedRealitySpeechCommandsProfile SpeechCommandsProfile /// /// Current Registered Dictation System. /// - public IMixedRealityDictationSystem DictationSystem => dictationSystem ?? (dictationSystem = MixedRealityOrchestrator.Instance.GetService()); + public IMixedRealityDictationSystem DictationSystem => dictationSystem ?? (dictationSystem = MixedRealityToolkit.Instance.GetService()); /// /// Is Dictation Enabled? /// - public bool IsDictationEnabled => MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && DictationSystem != null; + public bool IsDictationEnabled => MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled && DictationSystem != null; [SerializeField] [Tooltip("Enable and configure the devices for your application.")] diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs index 9b771fb0dcf..db13c15169f 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs @@ -29,13 +29,13 @@ public class MixedRealityConfigurationProfile : BaseMixedRealityProfile, ISerial private SystemType[] initialServiceTypes = null; /// - /// Dictionary list of active Systems used by the Mixed Reality Orchestrator at runtime + /// Dictionary list of active Systems used by the Mixed Reality Toolkit at runtime /// public Dictionary ActiveServices { get; } = new Dictionary(); #endregion Service Registry properties - #region Mixed Reality Orchestrator configurable properties + #region Mixed Reality Toolkit configurable properties [SerializeField] [Tooltip("The scale of the Mixed Reality experience.")] @@ -229,15 +229,15 @@ public SystemType DiagnosticsSystemSystemType } [SerializeField] - [Tooltip("All the additional non-required systems, features, and managers registered with the Mixed Reality Orchestrator.")] + [Tooltip("All the additional non-required systems, features, and managers registered with the Mixed Reality Toolkit.")] private MixedRealityRegisteredComponentsProfile registeredComponentsProfile = null; /// - /// All the additional non-required systems, features, and managers registered with the Mixed Reality Orchestrator. + /// All the additional non-required systems, features, and managers registered with the Mixed Reality Toolkit. /// public MixedRealityRegisteredComponentsProfile RegisteredComponentsProfile => registeredComponentsProfile; - #endregion Mixed Reality Orchestrator configurable properties + #endregion Mixed Reality Toolkit configurable properties #region ISerializationCallbackReceiver Implementation diff --git a/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs b/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs index 265573577ef..f065fec143b 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs @@ -89,15 +89,15 @@ protected BaseController(TrackingState trackingState, Handedness controllerHande /// public bool SetupConfiguration(Type controllerType) { - if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.IsControllerMappingEnabled) + if (MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.IsControllerMappingEnabled) { - if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.RenderMotionControllers) + if (MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.RenderMotionControllers) { TryRenderControllerModel(controllerType); } // We can only enable controller profiles if mappings exist. - var controllerMappings = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerMappingProfile.MixedRealityControllerMappingProfiles; + var controllerMappings = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerMappingProfile.MixedRealityControllerMappingProfiles; // Have to test that a controller type has been registered in the profiles, // else it's Unity Input manager mappings will not have been setup by the inspector @@ -162,25 +162,25 @@ private void TryRenderControllerModel(Type controllerType) { GameObject controllerModel = null; - if (!MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.RenderMotionControllers) { return; } + if (!MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.RenderMotionControllers) { return; } // If a specific controller template wants to override the global model, assign that instead. - if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.IsControllerMappingEnabled && - !MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.UseDefaultModels) + if (MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.IsControllerMappingEnabled && + !MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.UseDefaultModels) { - controllerModel = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GetControllerModelOverride(controllerType, ControllerHandedness); + controllerModel = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GetControllerModelOverride(controllerType, ControllerHandedness); } // Get the global controller model for each hand. if (controllerModel == null) { - if (ControllerHandedness == Handedness.Left && MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalLeftHandModel != null) + if (ControllerHandedness == Handedness.Left && MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalLeftHandModel != null) { - controllerModel = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalLeftHandModel; + controllerModel = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalLeftHandModel; } - else if (ControllerHandedness == Handedness.Right && MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalRightHandModel != null) + else if (ControllerHandedness == Handedness.Right && MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalRightHandModel != null) { - controllerModel = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalRightHandModel; + controllerModel = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.ControllerVisualizationProfile.GlobalRightHandModel; } } @@ -189,7 +189,7 @@ private void TryRenderControllerModel(Type controllerType) // If we've got a controller model prefab, then place it in the scene. if (controllerModel != null) { - var controllerObject = UnityEngine.Object.Instantiate(controllerModel, MixedRealityOrchestrator.Instance.MixedRealityPlayspace); + var controllerObject = UnityEngine.Object.Instantiate(controllerModel, MixedRealityToolkit.Instance.MixedRealityPlayspace); controllerObject.name = $"{ControllerHandedness}_{controllerObject.name}"; Visualizer = controllerObject.GetComponent(); diff --git a/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs index 19dc07560f3..5965629b7dc 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs @@ -64,13 +64,13 @@ protected virtual IMixedRealityPointer[] RequestPointers(SystemType controllerTy { var pointers = new List(); - if (MixedRealityOrchestrator.HasActiveProfile && - MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.PointerProfile != null) + if (MixedRealityToolkit.HasActiveProfile && + MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.PointerProfile != null) { - for (int i = 0; i < MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointerOptions.Length; i++) + for (int i = 0; i < MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointerOptions.Length; i++) { - var pointerProfile = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointerOptions[i]; + var pointerProfile = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointerOptions[i]; if (!useSpecificType) { @@ -82,7 +82,7 @@ protected virtual IMixedRealityPointer[] RequestPointers(SystemType controllerTy { var pointerObject = Object.Instantiate(pointerProfile.PointerPrefab); var pointer = pointerObject.GetComponent(); - pointerObject.transform.SetParent(MixedRealityOrchestrator.Instance.MixedRealityPlayspace); + pointerObject.transform.SetParent(MixedRealityToolkit.Instance.MixedRealityPlayspace); if (pointer != null) { diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs index c4a1ac060e8..4f44162e16d 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs @@ -185,22 +185,22 @@ private void UpdateControllerData(InteractionSourceState interactionSourceState) // Raise input system events if it is enabled. if (lastState != TrackingState) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceTrackingStateChanged(InputSource, this, TrackingState); + MixedRealityToolkit.InputSystem?.RaiseSourceTrackingStateChanged(InputSource, this, TrackingState); } if (TrackingState == TrackingState.Tracked && lastControllerPose != currentControllerPose) { if (IsPositionAvailable && IsRotationAvailable) { - MixedRealityOrchestrator.InputSystem?.RaiseSourcePoseChanged(InputSource, this, currentControllerPose); + MixedRealityToolkit.InputSystem?.RaiseSourcePoseChanged(InputSource, this, currentControllerPose); } else if (IsPositionAvailable && !IsRotationAvailable) { - MixedRealityOrchestrator.InputSystem?.RaiseSourcePositionChanged(InputSource, this, currentControllerPosition); + MixedRealityToolkit.InputSystem?.RaiseSourcePositionChanged(InputSource, this, currentControllerPosition); } else if (!IsPositionAvailable && IsRotationAvailable) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceRotationChanged(InputSource, this, currentControllerRotation); + MixedRealityToolkit.InputSystem?.RaiseSourceRotationChanged(InputSource, this, currentControllerRotation); } } } @@ -225,7 +225,7 @@ private void UpdatePointerData(InteractionSourceState interactionSourceState, Mi if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, currentPointerPose); + MixedRealityToolkit.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, currentPointerPose); } } @@ -243,10 +243,10 @@ private void UpdateGripData(InteractionSourceState interactionSourceState, Mixed interactionSourceState.sourcePose.TryGetPosition(out currentGripPosition, InteractionSourceNode.Grip); interactionSourceState.sourcePose.TryGetRotation(out currentGripRotation, InteractionSourceNode.Grip); - if (MixedRealityOrchestrator.Instance.MixedRealityPlayspace != null) + if (MixedRealityToolkit.Instance.MixedRealityPlayspace != null) { - currentGripPose.Position = MixedRealityOrchestrator.Instance.MixedRealityPlayspace.TransformPoint(currentGripPosition); - currentGripPose.Rotation = Quaternion.Euler(MixedRealityOrchestrator.Instance.MixedRealityPlayspace.TransformDirection(currentGripRotation.eulerAngles)); + currentGripPose.Position = MixedRealityToolkit.Instance.MixedRealityPlayspace.TransformPoint(currentGripPosition); + currentGripPose.Rotation = Quaternion.Euler(MixedRealityToolkit.Instance.MixedRealityPlayspace.TransformDirection(currentGripRotation.eulerAngles)); } else { @@ -261,7 +261,7 @@ private void UpdateGripData(InteractionSourceState interactionSourceState, Mixed if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, currentGripPose); + MixedRealityToolkit.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, currentGripPose); } } break; @@ -288,11 +288,11 @@ private void UpdateTouchPadData(InteractionSourceState interactionSourceState, M // Raise input system Event if it enabled if (interactionSourceState.touchpadTouched) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -308,11 +308,11 @@ private void UpdateTouchPadData(InteractionSourceState interactionSourceState, M // Raise input system Event if it enabled if (interactionSourceState.touchpadPressed) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -326,7 +326,7 @@ private void UpdateTouchPadData(InteractionSourceState interactionSourceState, M if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.touchpadPosition); + MixedRealityToolkit.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.touchpadPosition); } break; } @@ -353,11 +353,11 @@ private void UpdateThumbStickData(InteractionSourceState interactionSourceState, // Raise input system Event if it enabled if (interactionSourceState.thumbstickPressed) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -371,7 +371,7 @@ private void UpdateThumbStickData(InteractionSourceState interactionSourceState, if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.thumbstickPosition); + MixedRealityToolkit.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.thumbstickPosition); } break; } @@ -397,11 +397,11 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi // Raise input system Event if it enabled if (interactionSourceState.grasped) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } @@ -417,11 +417,11 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi // Raise input system Event if it enabled if (interactionSourceState.selectPressed) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -435,7 +435,7 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.selectPressedAmount); + MixedRealityToolkit.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionSourceState.selectPressedAmount); } break; } @@ -450,11 +450,11 @@ private void UpdateTriggerData(InteractionSourceState interactionSourceState, Mi // Raise input system Event if it enabled if (interactionSourceState.selectPressedAmount > 0) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } break; @@ -478,11 +478,11 @@ private void UpdateMenuData(InteractionSourceState interactionSourceState, Mixed // Raise input system Event if it enabled if (interactionSourceState.menuPressed) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs index 4271bea9c83..05fcc9bb0f5 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs @@ -224,10 +224,10 @@ public override void Enable() RegisterGestureEvents(); RegisterNavigationEvents(); - if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null) + if (MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null) { - var gestureProfile = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile; + var gestureProfile = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.GesturesProfile; GestureSettings = gestureProfile.ManipulationGestures; NavigationSettings = gestureProfile.NavigationGestures; RailsNavigationSettings = gestureProfile.RailsNavigationGestures; @@ -265,13 +265,13 @@ public override void Enable() if (controller != null) { controller.UpdateController(interactionmanagerStates[i]); - MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + MixedRealityToolkit.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); } } - if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null && - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.WindowsGestureAutoStart == AutoStartBehavior.AutoStart) + if (MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null && + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.WindowsGestureAutoStart == AutoStartBehavior.AutoStart) { GestureRecognizerEnabled = true; } @@ -407,7 +407,7 @@ private WindowsMixedRealityController GetController(InteractionSource interactio var pointers = interactionSource.supportsPointing ? RequestPointers(typeof(WindowsMixedRealityController), controllingHand) : null; string nameModifier = controllingHand == Handedness.None ? interactionSource.kind.ToString() : controllingHand.ToString(); - var inputSource = MixedRealityOrchestrator.InputSystem?.RequestNewGenericInputSource($"Mixed Reality Controller {nameModifier}", pointers); + var inputSource = MixedRealityToolkit.InputSystem?.RequestNewGenericInputSource($"Mixed Reality Controller {nameModifier}", pointers); var detectedController = new WindowsMixedRealityController(TrackingState.NotTracked, controllingHand, inputSource); if (!detectedController.SetupConfiguration(typeof(WindowsMixedRealityController))) @@ -436,7 +436,7 @@ private void RemoveController(InteractionSourceState interactionSourceState) if (controller != null) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(controller.InputSource, controller); + MixedRealityToolkit.InputSystem?.RaiseSourceLost(controller.InputSource, controller); } activeControllers.Remove(interactionSourceState.source.id); @@ -456,7 +456,7 @@ private void InteractionManager_InteractionSourceDetected(InteractionSourceDetec if (controller != null) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + MixedRealityToolkit.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); } controller?.UpdateController(args.state); @@ -480,7 +480,7 @@ private void GestureRecognizer_HoldStarted(HoldStartedEventArgs args) var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureStarted(controller, holdAction); + MixedRealityToolkit.InputSystem?.RaiseGestureStarted(controller, holdAction); } } @@ -489,7 +489,7 @@ private void GestureRecognizer_HoldCompleted(HoldCompletedEventArgs args) var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureCompleted(controller, holdAction); + MixedRealityToolkit.InputSystem.RaiseGestureCompleted(controller, holdAction); } } @@ -498,7 +498,7 @@ private void GestureRecognizer_HoldCanceled(HoldCanceledEventArgs args) var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureCanceled(controller, holdAction); + MixedRealityToolkit.InputSystem.RaiseGestureCanceled(controller, holdAction); } } @@ -507,7 +507,7 @@ private void GestureRecognizer_ManipulationStarted(ManipulationStartedEventArgs var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureStarted(controller, manipulationAction); + MixedRealityToolkit.InputSystem.RaiseGestureStarted(controller, manipulationAction); } } @@ -516,7 +516,7 @@ private void GestureRecognizer_ManipulationUpdated(ManipulationUpdatedEventArgs var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureUpdated(controller, manipulationAction, args.cumulativeDelta); + MixedRealityToolkit.InputSystem.RaiseGestureUpdated(controller, manipulationAction, args.cumulativeDelta); } } @@ -525,7 +525,7 @@ private void GestureRecognizer_ManipulationCompleted(ManipulationCompletedEventA var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureCompleted(controller, manipulationAction, args.cumulativeDelta); + MixedRealityToolkit.InputSystem.RaiseGestureCompleted(controller, manipulationAction, args.cumulativeDelta); } } @@ -534,7 +534,7 @@ private void GestureRecognizer_ManipulationCanceled(ManipulationCanceledEventArg var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureCanceled(controller, manipulationAction); + MixedRealityToolkit.InputSystem.RaiseGestureCanceled(controller, manipulationAction); } } @@ -547,7 +547,7 @@ private void NavigationGestureRecognizer_NavigationStarted(NavigationStartedEven var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureStarted(controller, navigationAction); + MixedRealityToolkit.InputSystem.RaiseGestureStarted(controller, navigationAction); } } @@ -556,7 +556,7 @@ private void NavigationGestureRecognizer_NavigationUpdated(NavigationUpdatedEven var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureUpdated(controller, navigationAction, args.normalizedOffset); + MixedRealityToolkit.InputSystem.RaiseGestureUpdated(controller, navigationAction, args.normalizedOffset); } } @@ -565,7 +565,7 @@ private void NavigationGestureRecognizer_NavigationCompleted(NavigationCompleted var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureCompleted(controller, navigationAction, args.normalizedOffset); + MixedRealityToolkit.InputSystem.RaiseGestureCompleted(controller, navigationAction, args.normalizedOffset); } } @@ -574,7 +574,7 @@ private void NavigationGestureRecognizer_NavigationCanceled(NavigationCanceledEv var controller = GetController(args.source, false); if (controller != null) { - MixedRealityOrchestrator.InputSystem.RaiseGestureCanceled(controller, navigationAction); + MixedRealityToolkit.InputSystem.RaiseGestureCanceled(controller, navigationAction); } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs index 12c4998320c..7c37c962959 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/GenericOpenVRController.cs @@ -196,22 +196,22 @@ protected void UpdateControllerData(XRNodeState state) // Raise input system events if it is enabled. if (lastState != TrackingState) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceTrackingStateChanged(InputSource, this, TrackingState); + MixedRealityToolkit.InputSystem?.RaiseSourceTrackingStateChanged(InputSource, this, TrackingState); } if (TrackingState == TrackingState.Tracked && LastControllerPose != CurrentControllerPose) { if (IsPositionAvailable && IsRotationAvailable) { - MixedRealityOrchestrator.InputSystem?.RaiseSourcePoseChanged(InputSource, this, CurrentControllerPose); + MixedRealityToolkit.InputSystem?.RaiseSourcePoseChanged(InputSource, this, CurrentControllerPose); } else if (IsPositionAvailable && !IsRotationAvailable) { - MixedRealityOrchestrator.InputSystem?.RaiseSourcePositionChanged(InputSource, this, CurrentControllerPosition); + MixedRealityToolkit.InputSystem?.RaiseSourcePositionChanged(InputSource, this, CurrentControllerPosition); } else if (!IsPositionAvailable && IsRotationAvailable) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceRotationChanged(InputSource, this, CurrentControllerRotation); + MixedRealityToolkit.InputSystem?.RaiseSourceRotationChanged(InputSource, this, CurrentControllerRotation); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs index 886a9266c6c..48d1269c42a 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs @@ -79,7 +79,7 @@ protected override GenericJoystickController GetOrAddController(string joystickN } var pointers = RequestPointers(controllerType, controllingHand); - var inputSource = MixedRealityOrchestrator.InputSystem?.RequestNewGenericInputSource($"{currentControllerType} Controller {controllingHand}", pointers); + var inputSource = MixedRealityToolkit.InputSystem?.RequestNewGenericInputSource($"{currentControllerType} Controller {controllingHand}", pointers); var detectedController = Activator.CreateInstance(controllerType, TrackingState.NotTracked, controllingHand, inputSource, null) as GenericOpenVRController; if (detectedController == null) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs index 4e08450e379..a140068f05d 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/GenericJoystickController.cs @@ -94,18 +94,18 @@ protected void UpdateButtonData(MixedRealityInteractionMapping interactionMappin // Raise input system Event if it enabled if (interactionMapping.BoolData) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } else { if (interactionMapping.BoolData) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } } @@ -148,7 +148,7 @@ protected void UpdateSingleAxisData(MixedRealityInteractionMapping interactionMa if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.FloatData); + MixedRealityToolkit.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.FloatData); } return; default: @@ -162,18 +162,18 @@ protected void UpdateSingleAxisData(MixedRealityInteractionMapping interactionMa // Raise input system Event if it enabled if (interactionMapping.BoolData) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } else { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction); } } else { if (interactionMapping.BoolData) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, singleAxisValue); + MixedRealityToolkit.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, singleAxisValue); } } } @@ -196,7 +196,7 @@ protected void UpdateDualAxisData(MixedRealityInteractionMapping interactionMapp if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.Vector2Data); + MixedRealityToolkit.InputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.Vector2Data); } } @@ -231,7 +231,7 @@ protected void UpdatePoseData(MixedRealityInteractionMapping interactionMapping) if (interactionMapping.Changed) { // Raise input system Event if it enabled - MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.PoseData); + MixedRealityToolkit.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, interactionMapping.MixedRealityInputAction, interactionMapping.PoseData); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs index 9639c10b6dc..93c48d1ead7 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseController.cs @@ -76,9 +76,9 @@ public void Update() // Don't ask me why it's mapped weird. Bc Unity... mouseDelta.x = Input.GetAxis("Mouse X"); mouseDelta.y = -Input.GetAxis("Mouse Y"); - MixedRealityOrchestrator.InputSystem?.RaiseSourcePositionChanged(InputSource, this, mouseDelta); - MixedRealityOrchestrator.InputSystem?.RaiseSourcePoseChanged(InputSource, this, controllerPose); - MixedRealityOrchestrator.InputSystem?.RaiseSourcePositionChanged(InputSource, this, Input.mouseScrollDelta); + MixedRealityToolkit.InputSystem?.RaiseSourcePositionChanged(InputSource, this, mouseDelta); + MixedRealityToolkit.InputSystem?.RaiseSourcePoseChanged(InputSource, this, controllerPose); + MixedRealityToolkit.InputSystem?.RaiseSourcePositionChanged(InputSource, this, Input.mouseScrollDelta); for (int i = 0; i < Interactions.Length; i++) { @@ -88,7 +88,7 @@ public void Update() if (Interactions[i].Changed) { - MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].PoseData); + MixedRealityToolkit.InputSystem?.RaisePoseInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].PoseData); } } @@ -98,7 +98,7 @@ public void Update() if (Interactions[i].Changed) { - MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].Vector2Data); + MixedRealityToolkit.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].Vector2Data); } } @@ -108,7 +108,7 @@ public void Update() if (Interactions[i].Changed) { - MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].Vector2Data); + MixedRealityToolkit.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[i].MixedRealityInputAction, Interactions[i].Vector2Data); } } @@ -125,25 +125,25 @@ public void Update() // Raise input system Event if it enabled if (Interactions[i].BoolData) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); if (Interactions[i].KeyCode == KeyCode.Mouse0) { - MixedRealityOrchestrator.InputSystem?.RaisePointerDown(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaisePointerDown(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction); } } else { if (Input.GetKeyUp(KeyCode.Mouse0)) { - MixedRealityOrchestrator.InputSystem?.RaisePointerClicked(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction, 1); + MixedRealityToolkit.InputSystem?.RaisePointerClicked(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction, 1); } - MixedRealityOrchestrator.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); if (Input.GetKeyUp(KeyCode.Mouse0)) { - MixedRealityOrchestrator.InputSystem?.RaisePointerUp(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaisePointerUp(InputSource.Pointers[0], Interactions[i].MixedRealityInputAction); } } } @@ -151,7 +151,7 @@ public void Update() { if (Interactions[i].BoolData) { - MixedRealityOrchestrator.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaiseOnInputPressed(InputSource, ControllerHandedness, Interactions[i].MixedRealityInputAction); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs index 3112e7ab8d9..36a0eb81cc1 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs @@ -40,10 +40,10 @@ public override void Enable() MixedRealityRaycaster.DebugEnabled = true; - if (MixedRealityOrchestrator.InputSystem != null) + if (MixedRealityToolkit.InputSystem != null) { var pointers = RequestPointers(new SystemType(typeof(MouseController)), Handedness.Any, true); - mouseInputSource = MixedRealityOrchestrator.InputSystem.RequestNewGenericInputSource("Mouse Input", pointers); + mouseInputSource = MixedRealityToolkit.InputSystem.RequestNewGenericInputSource("Mouse Input", pointers); } Controller = new MouseController(TrackingState.NotApplicable, Handedness.Any, mouseInputSource); @@ -57,7 +57,7 @@ public override void Enable() } Controller.SetupConfiguration(typeof(MouseController)); - MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(Controller.InputSource, Controller); + MixedRealityToolkit.InputSystem?.RaiseSourceDetected(Controller.InputSource, Controller); } /// @@ -73,7 +73,7 @@ public override void Disable() { if (Controller != null) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(Controller.InputSource, Controller); + MixedRealityToolkit.InputSystem?.RaiseSourceLost(Controller.InputSource, Controller); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs index 3488069f6f3..03fc8a924b6 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs @@ -56,7 +56,7 @@ public override void Disable() { if (genericOpenVRController.Value != null) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(genericOpenVRController.Value.InputSource, genericOpenVRController.Value); + MixedRealityToolkit.InputSystem?.RaiseSourceLost(genericOpenVRController.Value.InputSource, genericOpenVRController.Value); } } @@ -87,7 +87,7 @@ private void RefreshDevices() if (controller != null) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(controller.InputSource, controller); + MixedRealityToolkit.InputSystem?.RaiseSourceLost(controller.InputSource, controller); } ActiveControllers.Remove(lastDeviceList[i]); @@ -108,7 +108,7 @@ private void RefreshDevices() if (controller != null) { - MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + MixedRealityToolkit.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); } } } @@ -144,7 +144,7 @@ protected virtual GenericJoystickController GetOrAddController(string joystickNa break; } - var inputSource = MixedRealityOrchestrator.InputSystem?.RequestNewGenericInputSource($"{controllerType.Name} Controller"); + var inputSource = MixedRealityToolkit.InputSystem?.RequestNewGenericInputSource($"{controllerType.Name} Controller"); var detectedController = Activator.CreateInstance(controllerType, TrackingState.NotTracked, Handedness.None, inputSource, null) as GenericJoystickController; if (detectedController == null) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs index 5403d19b558..5bd46f30d5e 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchController.cs @@ -63,12 +63,12 @@ public UnityTouchController(TrackingState trackingState, Handedness controllerHa public override void SetupDefaultInteractions(Handedness controllerHandedness) { AssignControllerMappings(DefaultInteractions); - if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null) + if (MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.GesturesProfile != null) { - for (int i = 0; i < MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.Gestures.Length; i++) + for (int i = 0; i < MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.Gestures.Length; i++) { - var gesture = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.Gestures[i]; + var gesture = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.GesturesProfile.Gestures[i]; switch (gesture.GestureType) { @@ -88,9 +88,9 @@ public override void SetupDefaultInteractions(Handedness controllerHandedness) /// public void StartTouch() { - MixedRealityOrchestrator.InputSystem?.RaisePointerDown(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaisePointerDown(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction); isTouched = true; - MixedRealityOrchestrator.InputSystem?.RaiseGestureStarted(this, holdingAction); + MixedRealityToolkit.InputSystem?.RaiseGestureStarted(this, holdingAction); isHolding = true; } @@ -109,18 +109,18 @@ public void Update() if (Interactions[0].Changed) { - MixedRealityOrchestrator.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[0].MixedRealityInputAction, TouchData.deltaPosition); + MixedRealityToolkit.InputSystem?.RaisePositionInputChanged(InputSource, Interactions[0].MixedRealityInputAction, TouchData.deltaPosition); } lastPose.Position = InputSource.Pointers[0].BaseCursor.Position; lastPose.Rotation = InputSource.Pointers[0].BaseCursor.Rotation; - MixedRealityOrchestrator.InputSystem?.RaiseSourcePoseChanged(InputSource, this, lastPose); + MixedRealityToolkit.InputSystem?.RaiseSourcePoseChanged(InputSource, this, lastPose); Interactions[1].PoseData = lastPose; if (Interactions[1].Changed) { - MixedRealityOrchestrator.InputSystem?.RaisePoseInputChanged(InputSource, Interactions[1].MixedRealityInputAction, lastPose); + MixedRealityToolkit.InputSystem?.RaisePoseInputChanged(InputSource, Interactions[1].MixedRealityInputAction, lastPose); } if (!isManipulating) @@ -128,16 +128,16 @@ public void Update() if (Mathf.Abs(TouchData.deltaPosition.x) > ManipulationThreshold || Mathf.Abs(TouchData.deltaPosition.y) > ManipulationThreshold) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, holdingAction); + MixedRealityToolkit.InputSystem?.RaiseGestureCanceled(this, holdingAction); isHolding = false; - MixedRealityOrchestrator.InputSystem?.RaiseGestureStarted(this, manipulationAction); + MixedRealityToolkit.InputSystem?.RaiseGestureStarted(this, manipulationAction); isManipulating = true; } } else { - MixedRealityOrchestrator.InputSystem?.RaiseGestureUpdated(this, manipulationAction, TouchData.deltaPosition); + MixedRealityToolkit.InputSystem?.RaiseGestureUpdated(this, manipulationAction, TouchData.deltaPosition); } } } @@ -153,13 +153,13 @@ public void EndTouch() { if (isHolding) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, holdingAction); + MixedRealityToolkit.InputSystem?.RaiseGestureCanceled(this, holdingAction); isHolding = false; } if (isManipulating) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, manipulationAction); + MixedRealityToolkit.InputSystem?.RaiseGestureCanceled(this, manipulationAction); isManipulating = false; } } @@ -167,35 +167,35 @@ public void EndTouch() { if (isHolding) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, holdingAction); + MixedRealityToolkit.InputSystem?.RaiseGestureCanceled(this, holdingAction); isHolding = false; } if (isManipulating) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCanceled(this, manipulationAction); + MixedRealityToolkit.InputSystem?.RaiseGestureCanceled(this, manipulationAction); isManipulating = false; } - MixedRealityOrchestrator.InputSystem?.RaisePointerClicked(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction, TouchData.tapCount); + MixedRealityToolkit.InputSystem?.RaisePointerClicked(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction, TouchData.tapCount); } if (isHolding) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCompleted(this, holdingAction); + MixedRealityToolkit.InputSystem?.RaiseGestureCompleted(this, holdingAction); isHolding = false; } if (isManipulating) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCompleted(this, manipulationAction, TouchData.deltaPosition); + MixedRealityToolkit.InputSystem?.RaiseGestureCompleted(this, manipulationAction, TouchData.deltaPosition); isManipulating = false; } } if (isHolding) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCompleted(this, holdingAction); + MixedRealityToolkit.InputSystem?.RaiseGestureCompleted(this, holdingAction); isHolding = false; } @@ -203,13 +203,13 @@ public void EndTouch() if (isManipulating) { - MixedRealityOrchestrator.InputSystem?.RaiseGestureCompleted(this, manipulationAction, TouchData.deltaPosition); + MixedRealityToolkit.InputSystem?.RaiseGestureCompleted(this, manipulationAction, TouchData.deltaPosition); isManipulating = false; } Debug.Assert(!isManipulating); - MixedRealityOrchestrator.InputSystem?.RaisePointerUp(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction); + MixedRealityToolkit.InputSystem?.RaisePointerUp(InputSource.Pointers[0], Interactions[2].MixedRealityInputAction); Lifetime = 0.0f; isTouched = false; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs index 79ef5287a0d..85d4cb5d999 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs @@ -63,13 +63,13 @@ public override void Disable() { foreach (var controller in ActiveTouches) { - if (controller.Value == null || MixedRealityOrchestrator.InputSystem == null) { continue; } + if (controller.Value == null || MixedRealityToolkit.InputSystem == null) { continue; } - foreach (var inputSource in MixedRealityOrchestrator.InputSystem.DetectedInputSources) + foreach (var inputSource in MixedRealityToolkit.InputSystem.DetectedInputSources) { if (inputSource.SourceId == controller.Value.InputSource.SourceId) { - MixedRealityOrchestrator.InputSystem.RaiseSourceLost(controller.Value.InputSource, controller.Value); + MixedRealityToolkit.InputSystem.RaiseSourceLost(controller.Value.InputSource, controller.Value); } } } @@ -84,10 +84,10 @@ private void AddTouchController(Touch touch, Ray ray) { IMixedRealityInputSource inputSource = null; - if (MixedRealityOrchestrator.InputSystem != null) + if (MixedRealityToolkit.InputSystem != null) { var pointers = RequestPointers(typeof(UnityTouchController), Handedness.Any, true); - inputSource = MixedRealityOrchestrator.InputSystem.RequestNewGenericInputSource($"Touch {touch.fingerId}", pointers); + inputSource = MixedRealityToolkit.InputSystem.RequestNewGenericInputSource($"Touch {touch.fingerId}", pointers); } controller = new UnityTouchController(TrackingState.NotApplicable, Handedness.Any, inputSource); @@ -107,7 +107,7 @@ private void AddTouchController(Touch touch, Ray ray) ActiveTouches.Add(touch.fingerId, controller); } - MixedRealityOrchestrator.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); + MixedRealityToolkit.InputSystem?.RaiseSourceDetected(controller.InputSource, controller); controller.StartTouch(); UpdateTouchData(touch, ray); } @@ -137,7 +137,7 @@ private void RemoveTouchController(Touch touch) } controller.EndTouch(); - MixedRealityOrchestrator.InputSystem?.RaiseSourceLost(controller.InputSource, controller); + MixedRealityToolkit.InputSystem?.RaiseSourceLost(controller.InputSource, controller); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs index 9227472fe37..3ce40990041 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs @@ -66,13 +66,13 @@ public override void Enable() { if (!Application.isPlaying) { return; } - if (MixedRealityOrchestrator.InputSystem == null) + if (MixedRealityToolkit.InputSystem == null) { Debug.LogWarning("Unable to start Windows Dictation Device Manager. An Input System is required for this feature."); return; } - inputSource = MixedRealityOrchestrator.InputSystem.RequestNewGenericInputSource("Dictation Recognizer"); + inputSource = MixedRealityToolkit.InputSystem.RequestNewGenericInputSource("Dictation Recognizer"); dictationResult = string.Empty; if (dictationRecognizer == null) @@ -89,7 +89,7 @@ public override void Enable() /// public override void Update() { - if (!Application.isPlaying || MixedRealityOrchestrator.InputSystem == null) { return; } + if (!Application.isPlaying || MixedRealityToolkit.InputSystem == null) { return; } if (!isTransitioning && IsListening && !Microphone.IsRecording(deviceName) && dictationRecognizer.Status == SpeechSystemStatus.Running) { @@ -100,7 +100,7 @@ public override void Update() if (!hasFailed && dictationRecognizer.Status == SpeechSystemStatus.Failed) { hasFailed = true; - MixedRealityOrchestrator.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer has failed!"); + MixedRealityToolkit.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer has failed!"); } } @@ -135,7 +135,7 @@ public async void StartRecording(GameObject listener, float initialSilenceTimeou /// public async Task StartRecordingAsync(GameObject listener = null, float initialSilenceTimeout = 5f, float autoSilenceTimeout = 20f, int recordingTime = 10, string micDeviceName = "") { - if (IsListening || isTransitioning || MixedRealityOrchestrator.InputSystem == null) + if (IsListening || isTransitioning || MixedRealityToolkit.InputSystem == null) { Debug.LogWarning("Unable to start recording"); return; @@ -148,7 +148,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS if (listener != null) { hasListener = true; - MixedRealityOrchestrator.InputSystem.PushModalInputHandler(listener); + MixedRealityToolkit.InputSystem.PushModalInputHandler(listener); } if (PhraseRecognitionSystem.Status == SpeechSystemStatus.Running) @@ -171,7 +171,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS if (dictationRecognizer.Status == SpeechSystemStatus.Failed) { - MixedRealityOrchestrator.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer failed to start!"); + MixedRealityToolkit.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer failed to start!"); return; } @@ -201,7 +201,7 @@ public async Task StopRecordingAsync() if (hasListener) { - MixedRealityOrchestrator.InputSystem.PopModalInputHandler(); + MixedRealityToolkit.InputSystem.PopModalInputHandler(); hasListener = false; } @@ -231,7 +231,7 @@ private void DictationRecognizer_DictationHypothesis(string text) // We don't want to append to textSoFar yet, because the hypothesis may have changed on the next event. dictationResult = $"{textSoFar} {text}..."; - MixedRealityOrchestrator.InputSystem.RaiseDictationHypothesis(inputSource, dictationResult); + MixedRealityToolkit.InputSystem.RaiseDictationHypothesis(inputSource, dictationResult); } /// @@ -245,7 +245,7 @@ private void DictationRecognizer_DictationResult(string text, ConfidenceLevel co dictationResult = textSoFar.ToString(); - MixedRealityOrchestrator.InputSystem.RaiseDictationResult(inputSource, dictationResult); + MixedRealityToolkit.InputSystem.RaiseDictationResult(inputSource, dictationResult); } /// @@ -263,7 +263,7 @@ private void DictationRecognizer_DictationComplete(DictationCompletionCause caus dictationResult = "Dictation has timed out. Please try again."; } - MixedRealityOrchestrator.InputSystem.RaiseDictationComplete(inputSource, dictationResult, dictationAudioClip); + MixedRealityToolkit.InputSystem.RaiseDictationComplete(inputSource, dictationResult, dictationAudioClip); textSoFar = null; dictationResult = string.Empty; } @@ -277,7 +277,7 @@ private void DictationRecognizer_DictationError(string error, int hresult) { dictationResult = $"{error}\nHRESULT: {hresult}"; - MixedRealityOrchestrator.InputSystem.RaiseDictationError(inputSource, dictationResult); + MixedRealityToolkit.InputSystem.RaiseDictationError(inputSource, dictationResult); textSoFar = null; dictationResult = string.Empty; } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs index 1a82a258e67..3dcb37a911c 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs @@ -24,7 +24,7 @@ public WindowsSpeechInputDeviceManager(string name, uint priority) : base(name, /// /// The keywords to be recognized and optional keyboard shortcuts. /// - private static SpeechCommands[] Commands => MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands; + private static SpeechCommands[] Commands => MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechCommands; /// /// The Input Source for Windows Speech Input. @@ -41,7 +41,7 @@ public override void Enable() { if (!Application.isPlaying || Commands.Length == 0) { return; } - InputSource = MixedRealityOrchestrator.InputSystem?.RequestNewGenericInputSource("Windows Speech Input Source"); + InputSource = MixedRealityToolkit.InputSystem?.RequestNewGenericInputSource("Windows Speech Input Source"); var newKeywords = new string[Commands.Length]; @@ -50,11 +50,11 @@ public override void Enable() newKeywords[i] = Commands[i].Keyword; } - RecognitionConfidenceLevel = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechRecognitionConfidenceLevel; + RecognitionConfidenceLevel = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechRecognitionConfidenceLevel; keywordRecognizer = new KeywordRecognizer(newKeywords, (ConfidenceLevel) RecognitionConfidenceLevel); keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized; - if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechRecognizerStartBehavior == AutoStartBehavior.AutoStart) + if (MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile.SpeechRecognizerStartBehavior == AutoStartBehavior.AutoStart) { StartRecognition(); } @@ -121,7 +121,7 @@ private void OnPhraseRecognized(ConfidenceLevel confidence, TimeSpan phraseDurat { if (Commands[i].Keyword == text) { - MixedRealityOrchestrator.InputSystem.RaiseSpeechCommandRecognized(InputSource, Commands[i].Action, (RecognitionConfidenceLevel)confidence, phraseDuration, phraseStartTime, text); + MixedRealityToolkit.InputSystem.RaiseSpeechCommandRecognized(InputSource, Commands[i].Action, (RecognitionConfidenceLevel)confidence, phraseDuration, phraseStartTime, text); break; } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs index 68a620b8962..aedde954a8f 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/ControllerPopupWindow.cs @@ -102,7 +102,7 @@ private void OnFocus() #region Interaction Constraint Setup - actionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + actionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Select(action => (int)action.Id) .Prepend(0).ToArray(); @@ -110,81 +110,81 @@ private void OnFocus() .Select(axis => new GUIContent(axis.Name)) .Prepend(new GUIContent("None")).ToArray(); - actionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + actionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.None) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - actionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + actionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.None) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - rawActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + rawActionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.Raw) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - rawActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + rawActionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.Raw) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - digitalActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + digitalActionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.Digital) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - digitalActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + digitalActionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.Digital) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - singleAxisActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + singleAxisActionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.SingleAxis) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - singleAxisActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + singleAxisActionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.SingleAxis) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - dualAxisActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + dualAxisActionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.DualAxis) .Select(action => (int)action.Id).Prepend(0).ToArray(); - dualAxisActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + dualAxisActionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.DualAxis) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - threeDofPositionActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + threeDofPositionActionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.ThreeDofPosition) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - threeDofPositionActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + threeDofPositionActionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.ThreeDofPosition) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - threeDofRotationActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + threeDofRotationActionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.ThreeDofRotation) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - threeDofRotationActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + threeDofRotationActionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.ThreeDofRotation) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); - sixDofActionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + sixDofActionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.SixDof) .Select(action => (int)action.Id) .Prepend(0).ToArray(); - sixDofActionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions + sixDofActionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions .Where(inputAction => inputAction.AxisConstraint == AxisType.SixDof) .Select(inputAction => new GUIContent(inputAction.Description)) .Prepend(new GUIContent("None")).ToArray(); @@ -454,7 +454,7 @@ private void RenderInteractionList(SerializedProperty interactionList, bool useC if (EditorGUI.EndChangeCheck()) { - var inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; + var inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; } @@ -694,7 +694,7 @@ private void RenderInteractionList(SerializedProperty interactionList, bool useC { MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionId.intValue = (int)inputAction.Id; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs similarity index 87% rename from Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs rename to Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs index c26dbf85062..c543afc26a6 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs @@ -9,8 +9,8 @@ namespace Microsoft.MixedReality.Toolkit.Core.Inspectors { - [CustomEditor(typeof(MixedRealityOrchestrator))] - public class MixedRealityOrchestratorInspector : Editor + [CustomEditor(typeof(MixedRealityToolkit))] + public class MixedRealityToolkitInspector : Editor { private SerializedProperty activeProfile; private int currentPickerWindow = -1; @@ -36,7 +36,7 @@ public override void OnInspectorGUI() { if (allConfigProfiles.Length > 1) { - EditorUtility.DisplayDialog("Attention!", "You must choose a profile for the Mixed Reality Orchestrator.", "OK"); + EditorUtility.DisplayDialog("Attention!", "You must choose a profile for the Mixed Reality Toolkit.", "OK"); currentPickerWindow = GUIUtility.GetControlID(FocusType.Passive); EditorGUIUtility.ShowObjectPicker(null, false, string.Empty, currentPickerWindow); } @@ -49,7 +49,7 @@ public override void OnInspectorGUI() } else { - if (EditorUtility.DisplayDialog("Attention!", "No profiles were found for the Mixed Reality Orchestrator.\n\n" + + if (EditorUtility.DisplayDialog("Attention!", "No profiles were found for the Mixed Reality Toolkit.\n\n" + "Would you like to create one now?", "OK", "Later")) { ScriptableObject profile = CreateInstance(nameof(MixedRealityConfigurationProfile)); @@ -85,15 +85,15 @@ public override void OnInspectorGUI() if (changed) { - MixedRealityOrchestrator.Instance.ResetConfiguration((MixedRealityConfigurationProfile)activeProfile.objectReferenceValue); + MixedRealityToolkit.Instance.ResetConfiguration((MixedRealityConfigurationProfile)activeProfile.objectReferenceValue); } } [MenuItem("Mixed Reality Toolkit/Configure...")] public static void CreateMixedRealityOrchestratorObject() { - Selection.activeObject = MixedRealityOrchestrator.Instance; - EditorGUIUtility.PingObject(MixedRealityOrchestrator.Instance); + Selection.activeObject = MixedRealityToolkit.Instance; + EditorGUIUtility.PingObject(MixedRealityToolkit.Instance); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs.meta b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityOrchestratorInspector.cs.meta rename to Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs index bd056ef6a33..22dbaa49996 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs @@ -6,34 +6,34 @@ namespace Microsoft.MixedReality.Toolkit.Core.Inspectors.Profiles public abstract class BaseMixedRealityInspector : Editor { /// - /// Check and make sure we have a Mixed Reality Orchestrator and an active profile. + /// Check and make sure we have a Mixed Reality Toolkit and an active profile. /// - /// True if the Mixed Reality Orchestrator is properly initialized. + /// True if the Mixed Reality Toolkit is properly initialized. protected static bool CheckMixedRealityConfigured(bool showHelpBox = true) { - if (!MixedRealityOrchestrator.IsInitialized) + if (!MixedRealityToolkit.IsInitialized) { // Search the scene for one, in case we've just hot reloaded the assembly. - var managerSearch = FindObjectsOfType(); + var managerSearch = FindObjectsOfType(); if (managerSearch.Length == 0) { if (showHelpBox) { - EditorGUILayout.HelpBox("No Mixed Reality Orchestrator found in scene.", MessageType.Error); + EditorGUILayout.HelpBox("No Mixed Reality Toolkit found in scene.", MessageType.Error); } return false; } - MixedRealityOrchestrator.ConfirmInitialized(); + MixedRealityToolkit.ConfirmInitialized(); } - if (!MixedRealityOrchestrator.HasActiveProfile) + if (!MixedRealityToolkit.HasActiveProfile) { if (showHelpBox) { - EditorGUILayout.HelpBox("No Active Profile set on the Mixed Reality Orchestrator.", MessageType.Error); + EditorGUILayout.HelpBox("No Active Profile set on the Mixed Reality Toolkit.", MessageType.Error); } return false; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs index 01d6e5f69b5..2940da82d43 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBoundaryVisualizationProfileInspector.cs @@ -70,14 +70,14 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } EditorGUILayout.Space(); EditorGUILayout.LabelField("Boundary Visualization Options", EditorStyles.boldLabel); EditorGUILayout.HelpBox("Boundary visualizations can help users stay oriented and comfortable in the experience.", MessageType.Info); // Boundary settings depend on the experience scale - if (MixedRealityOrchestrator.Instance.ActiveProfile.TargetExperienceScale != ExperienceScale.Room) + if (MixedRealityToolkit.Instance.ActiveProfile.TargetExperienceScale != ExperienceScale.Room) { EditorGUILayout.Space(); EditorGUILayout.HelpBox("Boundary visualization is only supported in Room scale experiences.", MessageType.Warning); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs index 101714be426..e13ac07b45e 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityCameraProfileInspector.cs @@ -54,7 +54,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs index 0c514f07ff9..3fda6b608db 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs @@ -45,35 +45,35 @@ private void OnEnable() configurationProfile = target as MixedRealityConfigurationProfile; // Create The MR Manager if none exists. - if (!MixedRealityOrchestrator.IsInitialized) + if (!MixedRealityToolkit.IsInitialized) { // Search the scene for one, in case we've just hot reloaded the assembly. - var managerSearch = FindObjectsOfType(); + var managerSearch = FindObjectsOfType(); if (managerSearch.Length == 0) { if (EditorUtility.DisplayDialog( "Attention!", - "There is no active Mixed Reality Orchestrator in your scene!\n\nWould you like to create one now?", + "There is no active Mixed Reality Toolkit in your scene!\n\nWould you like to create one now?", "Yes", "Later")) { - MixedRealityOrchestrator.Instance.ActiveProfile = configurationProfile; + MixedRealityToolkit.Instance.ActiveProfile = configurationProfile; } else { - Debug.LogWarning("No Mixed Reality Orchestrator in your scene."); + Debug.LogWarning("No Mixed Reality Toolkit in your scene."); return; } } } - if (!MixedRealityOrchestrator.ConfirmInitialized()) + if (!MixedRealityToolkit.ConfirmInitialized()) { return; } - if (!MixedRealityOrchestrator.HasActiveProfile) + if (!MixedRealityToolkit.HasActiveProfile) { return; } @@ -108,9 +108,9 @@ public override void OnInspectorGUI() serializedObject.Update(); RenderMixedRealityToolkitLogo(); - if (!MixedRealityOrchestrator.IsInitialized) + if (!MixedRealityToolkit.IsInitialized) { - EditorGUILayout.HelpBox("Unable to find Mixed Reality Orchestrator!", MessageType.Error); + EditorGUILayout.HelpBox("Unable to find Mixed Reality Toolkit!", MessageType.Error); return; } @@ -216,7 +216,7 @@ public override void OnInspectorGUI() if (changed) { - EditorApplication.delayCall += () => MixedRealityOrchestrator.Instance.ResetConfiguration(configurationProfile); + EditorApplication.delayCall += () => MixedRealityToolkit.Instance.ResetConfiguration(configurationProfile); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs index 696651925df..b8177aaf120 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerMappingProfileInspector.cs @@ -64,8 +64,8 @@ private void OnEnable() mixedRealityControllerMappingProfiles = serializedObject.FindProperty("mixedRealityControllerMappingProfiles"); - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled || - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled || + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { return; } @@ -83,13 +83,13 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } return; @@ -97,7 +97,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); @@ -105,7 +105,7 @@ public override void OnInspectorGUI() EditorGUILayout.HelpBox("Use this profile to define all the controllers and their inputs your users will be able to use in your application.\n\n" + "You'll want to define all your Input Actions first, then you can then wire them up to hardware sensors, controllers, gestures, and other input devices.", MessageType.Info); - if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) + if (MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { EditorGUILayout.HelpBox("No input actions found, please specify a input action profile in the main configuration.", MessageType.Error); return; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs index ee2a0b17be4..e5696b989f1 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityControllerVisualizationProfileInspector.cs @@ -65,13 +65,13 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } return; @@ -79,7 +79,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs index c8716bf2648..af7db78452a 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs @@ -40,7 +40,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } if (MixedRealityPreferences.LockProfiles && !((BaseMixedRealityProfile)target).IsCustomProfile) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs index 1156bfa3388..c34ab7952b7 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityGesturesProfileInspector.cs @@ -40,11 +40,11 @@ private void OnEnable() windowsRailsNavigationGestures = serializedObject.FindProperty("railsNavigationGestures"); windowsGestureAutoStart = serializedObject.FindProperty("windowsGestureAutoStart"); - if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile != null) + if (MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled && + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile != null) { - actionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); - actionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); + actionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); + actionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); } } @@ -54,13 +54,13 @@ public override void OnInspectorGUI() if (!CheckMixedRealityConfigured()) { return; } - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } return; @@ -68,14 +68,14 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); EditorGUILayout.LabelField("Gesture Input", EditorStyles.boldLabel); EditorGUILayout.HelpBox("This gesture map is any and all movements of part the user's body, especially a hand or the head, that raise actions through the input system.\n\nNote: Defined controllers can look up the list of gestures and raise the events based on specific criteria.", MessageType.Info); - if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) + if (MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { EditorGUILayout.HelpBox("No input actions found, please specify a input action profile in the main configuration.", MessageType.Error); return; @@ -162,7 +162,7 @@ private static void RenderList(SerializedProperty list) if (EditorGUI.EndChangeCheck()) { - MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; + MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs index e85db6d99df..fec7d490b6d 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputActionsProfileInspector.cs @@ -39,13 +39,13 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } return; @@ -53,7 +53,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs index 87b5effdb27..f7460063b29 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityInputSystemProfileInspector.cs @@ -22,12 +22,12 @@ public class MixedRealityInputSystemProfileInspector : MixedRealityBaseConfigura private void OnEnable() { - if (!MixedRealityOrchestrator.ConfirmInitialized()) + if (!MixedRealityToolkit.ConfirmInitialized()) { return; } - if (!MixedRealityOrchestrator.HasActiveProfile) + if (!MixedRealityToolkit.HasActiveProfile) { return; } @@ -51,7 +51,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } EditorGUILayout.Space(); @@ -88,7 +88,7 @@ public override void OnInspectorGUI() if (changed) { - EditorApplication.delayCall += () => MixedRealityOrchestrator.Instance.ResetConfiguration(MixedRealityOrchestrator.Instance.ActiveProfile); + EditorApplication.delayCall += () => MixedRealityToolkit.Instance.ResetConfiguration(MixedRealityToolkit.Instance.ActiveProfile); } } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs index 8fbe930a010..28945dc6e61 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityPointerProfileInspector.cs @@ -49,7 +49,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; } EditorGUILayout.Space(); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs index 6e5139f0771..c7271a5b5a0 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs @@ -38,12 +38,12 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } EditorGUILayout.Space(); EditorGUILayout.LabelField("Registered Components Profile", EditorStyles.boldLabel); - EditorGUILayout.HelpBox("This profile defines any additional systems, features, and managers to register with the Mixed Reality Orchestrator.", MessageType.Info); + EditorGUILayout.HelpBox("This profile defines any additional systems, features, and managers to register with the Mixed Reality Toolkit.", MessageType.Info); if (MixedRealityPreferences.LockProfiles && !((BaseMixedRealityProfile)target).IsCustomProfile) { @@ -133,7 +133,7 @@ private void RenderList(SerializedProperty list) if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); - MixedRealityOrchestrator.Instance.ResetConfiguration(MixedRealityOrchestrator.Instance.ActiveProfile); + MixedRealityToolkit.Instance.ResetConfiguration(MixedRealityToolkit.Instance.ActiveProfile); } EditorGUI.indentLevel--; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs index 900cb39d708..7ca2c8c6d96 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealitySpeechCommandsProfileInspector.cs @@ -33,14 +33,14 @@ private void OnEnable() return; } - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled || - MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { return; } + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled || + MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { return; } recognizerStartBehaviour = serializedObject.FindProperty("startBehavior"); recognitionConfidenceLevel = serializedObject.FindProperty("recognitionConfidenceLevel"); speechCommands = serializedObject.FindProperty("speechCommands"); - actionLabels = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); - actionIds = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); + actionLabels = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => new GUIContent(action.Description)).Prepend(new GUIContent("None")).ToArray(); + actionIds = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions.Select(action => (int)action.Id).Prepend(0).ToArray(); } public override void OnInspectorGUI() @@ -51,13 +51,13 @@ public override void OnInspectorGUI() return; } - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { EditorGUILayout.HelpBox("No input system is enabled, or you need to specify the type in the main configuration profile.", MessageType.Error); if (GUILayout.Button("Back to Configuration Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile; } return; @@ -65,7 +65,7 @@ public override void OnInspectorGUI() if (GUILayout.Button("Back to Input Profile")) { - Selection.activeObject = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile; + Selection.activeObject = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; } if (MixedRealityPreferences.LockProfiles && !((BaseMixedRealityProfile)target).IsCustomProfile) @@ -77,7 +77,7 @@ public override void OnInspectorGUI() EditorGUILayout.LabelField("Speech Commands", EditorStyles.boldLabel); EditorGUILayout.HelpBox("Speech Commands are any/all spoken keywords your users will be able say to raise an Input Action in your application.", MessageType.Info); - if (MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) + if (MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile == null) { EditorGUILayout.HelpBox("No input actions found, please specify a input action profile in the main configuration.", MessageType.Error); return; @@ -149,7 +149,7 @@ private static void RenderList(SerializedProperty list) if (EditorGUI.EndChangeCheck()) { - MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; + MixedRealityInputAction inputAction = actionId.intValue == 0 ? MixedRealityInputAction.None : MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions[actionId.intValue - 1]; actionDescription.stringValue = inputAction.Description; actionConstraint.enumValueIndex = (int)inputAction.AxisConstraint; } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs index 39122d5196c..92d6eca4a13 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/PropertyDrawers/InputActionPropertyDrawer.cs @@ -19,19 +19,19 @@ public class InputActionPropertyDrawer : PropertyDrawer public override void OnGUI(Rect rect, SerializedProperty property, GUIContent content) { - if (!MixedRealityOrchestrator.IsInitialized || !MixedRealityOrchestrator.HasActiveProfile) + if (!MixedRealityToolkit.IsInitialized || !MixedRealityToolkit.HasActiveProfile) { profile = null; - actionLabels = new[] { new GUIContent("Missing Mixed Reality Orchestrator") }; + actionLabels = new[] { new GUIContent("Missing Mixed Reality Toolkit") }; actionIds = new[] { 0 }; } if (profile == null || - (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && + (MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled && profile.InputActions != null && - profile.InputActions != MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions)) + profile.InputActions != MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions)) { - profile = MixedRealityOrchestrator.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile; + profile = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile; if (profile != null) { @@ -45,7 +45,7 @@ public override void OnGUI(Rect rect, SerializedProperty property, GUIContent co } } - if (!MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { profile = null; actionLabels = new[] { new GUIContent("Input System Disabled") }; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs index c85b9066b0d..2d458c3ae69 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs @@ -26,8 +26,8 @@ private void OnEnable() { canvas = (Canvas)target; - if (MixedRealityOrchestrator.HasActiveProfile && - MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (MixedRealityToolkit.HasActiveProfile && + MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { CheckCanvasSettings(); } @@ -35,16 +35,16 @@ private void OnEnable() public override void OnInspectorGUI() { - if (!MixedRealityOrchestrator.HasActiveProfile || - !MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled) + if (!MixedRealityToolkit.HasActiveProfile || + !MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled) { base.OnInspectorGUI(); return; } - if (MixedRealityOrchestrator.Instance.ActiveProfile.IsInputSystemEnabled && MixedRealityOrchestrator.InputSystem == null) + if (MixedRealityToolkit.Instance.ActiveProfile.IsInputSystemEnabled && MixedRealityToolkit.InputSystem == null) { - EditorGUILayout.HelpBox("No Input System Profile found in the Mixed Reality Orchestrator's Active Profile.", MessageType.Error); + EditorGUILayout.HelpBox("No Input System Profile found in the Mixed Reality Toolkit's Active Profile.", MessageType.Error); base.OnInspectorGUI(); return; } @@ -64,11 +64,11 @@ private void CheckCanvasSettings() bool removeHelper = false; // Update the world camera if we need to. - if (canvas.isRootCanvas && canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera != MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera) + if (canvas.isRootCanvas && canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera != MixedRealityToolkit.InputSystem.FocusProvider.UIRaycastCamera) { if (EditorUtility.DisplayDialog("Attention!", DialogText, "OK", "Cancel")) { - canvas.worldCamera = MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera; + canvas.worldCamera = MixedRealityToolkit.InputSystem.FocusProvider.UIRaycastCamera; } else { @@ -77,14 +77,14 @@ private void CheckCanvasSettings() } // Add the Canvas Helper if we need it. - if (canvas.isRootCanvas && canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera == MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera) + if (canvas.isRootCanvas && canvas.renderMode == RenderMode.WorldSpace && canvas.worldCamera == MixedRealityToolkit.InputSystem.FocusProvider.UIRaycastCamera) { var helper = canvas.gameObject.EnsureComponent(); helper.Canvas = canvas; } // Reset the world canvas if we need to. - if (canvas.isRootCanvas && canvas.renderMode != RenderMode.WorldSpace && canvas.worldCamera == MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera) + if (canvas.isRootCanvas && canvas.renderMode != RenderMode.WorldSpace && canvas.worldCamera == MixedRealityToolkit.InputSystem.FocusProvider.UIRaycastCamera) { // Sets it back to MainCamera default. canvas.worldCamera = null; diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs index d99e2466d19..b8cb1889614 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs @@ -20,7 +20,7 @@ public interface IMixedRealityService /// /// The initialize function is used to setup the service once created. - /// This method is called once all services have been registered in the Mixed Reality Orchestrator. + /// This method is called once all services have been registered in the Mixed Reality Toolkit. /// void Initialize(); @@ -45,7 +45,7 @@ public interface IMixedRealityService void Disable(); /// - /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Orchestrator is destroyed. + /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Toolkit is destroyed. /// void Destroy(); } diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs similarity index 89% rename from Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs rename to Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index e831a88f679..d79cfdc9b10 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -17,20 +17,20 @@ namespace Microsoft.MixedReality.Toolkit.Core.Services { /// - /// The Mixed Reality Orchestrator is responsible for coordinating the operation of the Mixed Reality Toolkit. + /// This class is responsible for coordinating the operation of the Mixed Reality Toolkit. It is the only Singleton in the entire project. /// It provides a service registry for all active services that are used within a project as well as providing the active configuration profile for the project. /// The Profile can be swapped out at any time to meet the needs of your project. /// - public class MixedRealityOrchestrator : MonoBehaviour + public class MixedRealityToolkit : MonoBehaviour { - #region Mixed Reality Orchestrator Profile configuration + #region Mixed Reality Toolkit Profile configuration private const string MixedRealityPlayspaceName = "MixedRealityPlayspace"; private bool isInitializing = false; /// - /// Checks if there is a valid instance of the MixedRealityOrchestrator, then checks if there is there a valid Active Profile. + /// Checks if there is a valid instance of the MixedRealityToolkit, then checks if there is there a valid Active Profile. /// public static bool HasActiveProfile { @@ -51,7 +51,7 @@ public static bool HasActiveProfile } /// - /// The active profile of the Mixed Reality Orchestrator which controls which components are active and their initial configuration. + /// The active profile of the Mixed Reality Toolkit which controls which components are active and their initial configuration. /// *Note configuration is used on project initialization or replacement, changes to properties while it is running has no effect. /// [SerializeField] @@ -103,12 +103,12 @@ public void ResetConfiguration(MixedRealityConfigurationProfile profile) Initialize(); } - #endregion Mixed Reality Orchestrator Profile configuration + #endregion Mixed Reality Toolkit Profile configuration #region Mixed Reality runtime component registry /// - /// Local component registry for the Mixed Reality Orchestrator, to allow runtime use of the . + /// Local component registry for the Mixed Reality Toolkit, to allow runtime use of the . /// public List> MixedRealityComponents { get; } = new List>(); @@ -118,17 +118,17 @@ public void ResetConfiguration(MixedRealityConfigurationProfile profile) /// /// Function called when the instance is assigned. - /// Once all services are registered and properties updated, the Mixed Reality Orchestrator will initialize all active services. + /// Once all services are registered and properties updated, the Mixed Reality Toolkit will initialize all active services. /// This ensures all services can reference each other once started. /// private void Initialize() { isInitializing = true; - //If the Mixed Reality Orchestrator is not configured, stop. + //If the Mixed Reality Toolkit is not configured, stop. if (ActiveProfile == null) { - Debug.LogError("No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Orchestrator"); + Debug.LogError("No Mixed Reality Configuration Profile found, cannot initialize the Mixed Reality Toolkit"); return; } @@ -267,14 +267,14 @@ private void EnsureMixedRealityRequirements() #region MonoBehaviour Implementation - private static MixedRealityOrchestrator instance; + private static MixedRealityToolkit instance; /// /// Returns the Singleton instance of the classes type. /// If no instance is found, then we search for an instance in the scene. /// If more than one instance is found, we throw an error and no instance is returned. /// - public static MixedRealityOrchestrator Instance + public static MixedRealityToolkit Instance { get { @@ -288,19 +288,19 @@ public static MixedRealityOrchestrator Instance return null; } - var objects = FindObjectsOfType(); + var objects = FindObjectsOfType(); searchForInstance = false; switch (objects.Length) { case 0: - instance = new GameObject(nameof(MixedRealityOrchestrator)).AddComponent(); + instance = new GameObject(nameof(MixedRealityToolkit)).AddComponent(); break; case 1: instance = objects[0]; break; default: - Debug.LogError($"Expected exactly 1 {nameof(MixedRealityOrchestrator)} but found {objects.Length}."); + Debug.LogError($"Expected exactly 1 {nameof(MixedRealityToolkit)} but found {objects.Length}."); return null; } @@ -317,11 +317,11 @@ public static MixedRealityOrchestrator Instance private static bool searchForInstance = true; /// - /// Expose an assertion whether the MixedRealityOrchestrator class is initialized. + /// Expose an assertion whether the MixedRealityToolkit class is initialized. /// public static void AssertIsInitialized() { - Debug.Assert(IsInitialized, "The MixedRealityOrchestrator has not been initialized."); + Debug.Assert(IsInitialized, "The MixedRealityToolkit has not been initialized."); } /// @@ -330,19 +330,19 @@ public static void AssertIsInitialized() public static bool IsInitialized => instance != null; /// - /// Static function to determine if the MixedRealityOrchestrator class has been initialized or not. + /// Static function to determine if the MixedRealityToolkit class has been initialized or not. /// /// public static bool ConfirmInitialized() { // ReSharper disable once UnusedVariable // Assigning the Instance to access is used Implicitly. - MixedRealityOrchestrator access = Instance; + MixedRealityToolkit access = Instance; return IsInitialized; } /// - /// Lock property for the Mixed Reality Orchestrator to prevent reinitialization + /// Lock property for the Mixed Reality Toolkit to prevent reinitialization /// private readonly object initializedLock = new object(); @@ -407,7 +407,7 @@ public Transform MixedRealityPlayspace // something else. We print a warning to call out the fact that we're // co-opting this object for use with teleporting and such, since that // might cause conflicts with the parent's intended purpose. - Debug.LogWarning($"The Mixed Reality Orchestrator expected the camera\'s parent to be named {MixedRealityPlayspaceName}. The existing parent will be renamed and used instead."); + Debug.LogWarning($"The Mixed Reality Toolkit expected the camera\'s parent to be named {MixedRealityPlayspaceName}. The existing parent will be renamed and used instead."); // If we rename it, we make it clearer that why it's being teleported around at runtime. CameraCache.Main.transform.parent.name = MixedRealityPlayspaceName; } @@ -443,7 +443,7 @@ private void Awake() Destroy(this); } - Debug.LogWarning("Trying to instantiate a second instance of the Mixed Reality Orchestrator. Additional Instance was destroyed"); + Debug.LogWarning("Trying to instantiate a second instance of the Mixed Reality Toolkit. Additional Instance was destroyed"); } else if (!IsInitialized) { @@ -485,7 +485,7 @@ private void OnDestroy() #region Individual Service Management /// - /// Add a new service to the Mixed Reality Orchestrator active service registry. + /// Add a new service to the Mixed Reality Toolkit active service registry. /// /// The interface type for the system to be managed. E.G. InputSystem, BoundarySystem /// The Instance of the service class to register @@ -493,7 +493,7 @@ public void RegisterService(Type type, IMixedRealityService service) { if (ActiveProfile == null) { - Debug.LogError($"Unable to add a new {type.Name} Service as the Mixed Reality Orchestrator has to Active Profile"); + Debug.LogError($"Unable to add a new {type.Name} Service as the Mixed Reality Toolkit has to Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } @@ -529,7 +529,7 @@ public void RegisterService(Type type, IMixedRealityService service) } /// - /// Generic function used to retrieve a service from the Mixed Reality Orchestrator active service registry + /// Generic function used to retrieve a service from the Mixed Reality Toolkit active service registry /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem. /// *Note type should be the Interface of the system to be retrieved and not the class itself @@ -540,20 +540,20 @@ public T GetService() where T : IMixedRealityService } /// - /// Retrieve a service from the Mixed Reality Orchestrator active service registry + /// Retrieve a service from the Mixed Reality Toolkit active service registry /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem - /// The Mixed Reality Orchestrator of the specified type + /// The Mixed Reality Toolkit of the specified type public IMixedRealityService GetService(Type type) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Orchestrator has no Active Profile."); + throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Toolkit has no Active Profile."); } if (!IsInitialized) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Orchestrator has not been initialized!"); + throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Toolkit has not been initialized!"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } @@ -577,16 +577,16 @@ public IMixedRealityService GetService(Type type) } /// - /// Retrieve a service from the Mixed Reality Orchestrator active service registry + /// Retrieve a service from the Mixed Reality Toolkit active service registry /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem /// Name of the specific service - /// The Mixed Reality Orchestrator of the specified type + /// The Mixed Reality Toolkit of the specified type public IMixedRealityService GetService(Type type, string serviceName) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {serviceName} Service as the Mixed Reality Orchestrator has no Active Profile"); + throw new ArgumentNullException($"Unable to get {serviceName} Service as the Mixed Reality Toolkit has no Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } @@ -611,14 +611,14 @@ public IMixedRealityService GetService(Type type, string serviceName) } /// - /// Remove all services from the Mixed Reality Orchestrator active service registry for a given type + /// Remove all services from the Mixed Reality Toolkit active service registry for a given type /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem public void UnregisterService(Type type) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to remove {nameof(type)} Service as the Mixed Reality Orchestrator has no Active Profile"); + throw new ArgumentNullException($"Unable to remove {nameof(type)} Service as the Mixed Reality Toolkit has no Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } @@ -639,7 +639,7 @@ public void UnregisterService(Type type) } /// - /// Remove services from the Mixed Reality Orchestrator active service registry for a given type and name + /// Remove services from the Mixed Reality Toolkit active service registry for a given type and name /// Name is only supported for Mixed Reality runtime components /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem @@ -648,7 +648,7 @@ public void UnregisterService(Type type, string serviceName) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to remove {nameof(type)} service as the Mixed Reality Orchestrator has no Active Profile"); + throw new ArgumentNullException($"Unable to remove {nameof(type)} service as the Mixed Reality Toolkit has no Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } @@ -670,7 +670,7 @@ public void UnregisterService(Type type, string serviceName) } /// - /// Disable all services in the Mixed Reality Orchestrator active service registry for a given type + /// Disable all services in the Mixed Reality Toolkit active service registry for a given type /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem public void DisableService(Type type) @@ -691,7 +691,7 @@ public void DisableService(Type type) } /// - /// Disable a specific service from the Mixed Reality Orchestrator active service registry + /// Disable a specific service from the Mixed Reality Toolkit active service registry /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem /// Name of the specific service @@ -714,7 +714,7 @@ public void DisableService(Type type, string serviceName) } /// - /// Enable all services in the Mixed Reality Orchestrator active service registry for a given type + /// Enable all services in the Mixed Reality Toolkit active service registry for a given type /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem public void EnableService(Type type) @@ -735,7 +735,7 @@ public void EnableService(Type type) } /// - /// Enable a specific service from the Mixed Reality Orchestrator active service registry + /// Enable a specific service from the Mixed Reality Toolkit active service registry /// /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem /// Name of the specific service @@ -762,7 +762,7 @@ public void EnableService(Type type, string serviceName) #region Multiple Service Management /// - /// Retrieve all services from the Mixed Reality Orchestrator active service registry for a given type and an optional name + /// Retrieve all services from the Mixed Reality Toolkit active service registry for a given type and an optional name /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem /// An array of services that meet the search criteria @@ -774,7 +774,7 @@ public List GetActiveServices(Type type) } /// - /// Retrieve all services from the Mixed Reality Orchestrator active service registry for a given type and an optional name + /// Retrieve all services from the Mixed Reality Toolkit active service registry for a given type and an optional name /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem /// Name of the specific service @@ -783,7 +783,7 @@ public List GetActiveServices(Type type, string serviceNam { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Orchestrator has no Active Profile"); + throw new ArgumentNullException($"Unable to get {nameof(type)} Service as the Mixed Reality Toolkit has no Active Profile"); } if (type == null) { throw new ArgumentNullException(nameof(type)); } @@ -818,7 +818,7 @@ public List GetActiveServices(Type type, string serviceNam private void InitializeAllServices() { - //If the Mixed Reality Orchestrator is not configured, stop. + //If the Mixed Reality Toolkit is not configured, stop. if (activeProfile == null) { return; } //Initialize all services @@ -836,7 +836,7 @@ private void InitializeAllServices() private void ResetAllServices() { - //If the Mixed Reality Orchestrator is not configured, stop. + //If the Mixed Reality Toolkit is not configured, stop. if (activeProfile == null) { return; } // Reset all active services in the registry @@ -854,7 +854,7 @@ private void ResetAllServices() private void EnableAllServices() { - //If the Mixed Reality Orchestrator is not configured, stop. + //If the Mixed Reality Toolkit is not configured, stop. if (activeProfile == null) { return; } // Enable all active services in the registry @@ -872,7 +872,7 @@ private void EnableAllServices() private void UpdateAllServices() { - //If the Mixed Reality Orchestrator is not configured, stop. + //If the Mixed Reality Toolkit is not configured, stop. if (activeProfile == null) { return; } // Update service registry @@ -890,7 +890,7 @@ private void UpdateAllServices() private void DisableAllServices() { - //If the Mixed Reality Orchestrator is not configured, stop. + //If the Mixed Reality Toolkit is not configured, stop. if (activeProfile == null) { return; } // Disable all active services in the registry @@ -908,7 +908,7 @@ private void DisableAllServices() private void DestroyAllServices() { - //If the Mixed Reality Orchestrator is not configured, stop. + //If the Mixed Reality Toolkit is not configured, stop. if (activeProfile == null) { return; } // Destroy all active services in the registry @@ -933,7 +933,7 @@ private void DestroyAllServices() #region Service Utilities /// - /// Generic function used to interrogate the Mixed Reality Orchestrator active service registry for the existence of a service + /// Generic function used to interrogate the Mixed Reality Toolkit active service registry for the existence of a service /// /// The interface type for the system to be retrieved. E.G. InputSystem, BoundarySystem. /// *Note type should be the Interface of the system to be retrieved and not the class itself @@ -1053,28 +1053,28 @@ private static bool CheckComponentMatch(Type type, string serviceName, Tuple - /// The current Input System registered with the Mixed Reality Orchestrator. + /// The current Input System registered with the Mixed Reality Toolkit. /// public static IMixedRealityInputSystem InputSystem => inputSystem ?? (inputSystem = Instance.GetService()); private static IMixedRealityBoundarySystem boundarySystem = null; /// - /// The current Boundary System registered with the Mixed Reality Orchestrator. + /// The current Boundary System registered with the Mixed Reality Toolkit. /// public static IMixedRealityBoundarySystem BoundarySystem => boundarySystem ?? (boundarySystem = Instance.GetService()); private static IMixedRealityTeleportSystem teleportSystem = null; /// - /// The current Teleport System registered with the Mixed Reality Orchestrator. + /// The current Teleport System registered with the Mixed Reality Toolkit. /// public static IMixedRealityTeleportSystem TeleportSystem => teleportSystem ?? (teleportSystem = Instance.GetService()); private static IMixedRealityDiagnosticsSystem diagnosticsSystem = null; /// - /// The current Diagnostics System registered with the Mixed Reality Orchestrator. + /// The current Diagnostics System registered with the Mixed Reality Toolkit. /// public static IMixedRealityDiagnosticsSystem DiagnosticsSystem => diagnosticsSystem ?? (diagnosticsSystem = Instance.GetService()); diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs.meta b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Services/MixedRealityOrchestrator.cs.meta rename to Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs b/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs index ce4865abc90..c2fa60be087 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/CanvasUtility.cs @@ -32,7 +32,7 @@ private void Start() if (Canvas.isRootCanvas && Canvas.renderMode == RenderMode.WorldSpace) { - Canvas.worldCamera = MixedRealityOrchestrator.InputSystem.FocusProvider.UIRaycastCamera; + Canvas.worldCamera = MixedRealityToolkit.InputSystem.FocusProvider.UIRaycastCamera; } } } From c918722985231365be25dd34ecb601fe17a281d8 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Thu, 18 Oct 2018 16:40:11 -0700 Subject: [PATCH 50/98] Updated editor version to 2018.2.13f1 --- ProjectSettings/ProjectSettings.asset | 22 +++++++++++----------- ProjectSettings/ProjectVersion.txt | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 536cac26f3d..42f55daca90 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -52,7 +52,6 @@ PlayerSettings: m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 - tizenShowActivityIndicatorOnLoading: -1 iosAppInBackgroundBehavior: 0 displayResolutionDialog: 2 iosAllowHTTPDownload: 1 @@ -111,6 +110,8 @@ PlayerSettings: videoMemoryForVertexBuffers: 0 psp2PowerMode: 0 psp2AcquireBGM: 1 + vulkanEnableSetSRGBWrite: 0 + vulkanUseSWCommandBuffers: 0 m_SupportedAspectRatios: 4:3: 1 5:4: 1 @@ -124,6 +125,7 @@ PlayerSettings: m_HolographicPauseOnTrackingLoss: 0 xboxOneDisableKinectGpuReservation: 0 xboxOneEnable7thCore: 0 + isWsaHolographicRemotingEnabled: 0 vrSettings: cardboard: depthFormat: 0 @@ -138,10 +140,10 @@ PlayerSettings: hololens: depthFormat: 1 depthBufferSharingEnabled: 0 - enable360StereoCapture: 0 oculus: sharedDepthBuffer: 0 dashSupport: 0 + enable360StereoCapture: 0 protectGraphicsMemory: 0 useHDRDisplay: 0 m_ColorGamuts: 00000000 @@ -239,6 +241,7 @@ PlayerSettings: appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 appleEnableProMotion: 0 + vulkanEditorSupport: 0 clonedFromGUID: 00000000000000000000000000000000 templatePackageId: templateDefaultScene: @@ -247,6 +250,7 @@ PlayerSettings: androidSplashScreen: {fileID: 0} AndroidKeystoreName: AndroidKeyaliasName: + AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 1 AndroidIsGame: 1 AndroidEnableTango: 0 @@ -339,6 +343,7 @@ PlayerSettings: m_EncodingQuality: 1 - m_BuildTarget: PS4 m_EncodingQuality: 1 + m_BuildTargetGroupLightmapSettings: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 @@ -460,8 +465,11 @@ PlayerSettings: switchAllowsVideoCapturing: 1 switchAllowsRuntimeAddOnContentInstall: 0 switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 switchSupportedNpadStyles: 3 switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 switchSocketConfigEnabled: 0 switchTcpInitialSendBufferSize: 32 switchTcpInitialReceiveBufferSize: 64 @@ -631,7 +639,6 @@ PlayerSettings: metroApplicationDescription: Microsoft.MixedReality.Toolkit wsaImages: {} metroTileShortName: MixedRealityToolkit - metroCommandLineArgsFile: metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0 @@ -673,14 +680,6 @@ PlayerSettings: metroFTAFileTypes: [] metroProtocolName: metroCompilationOverrides: 1 - tizenProductDescription: - tizenProductURL: - tizenSigningProfileName: - tizenGPSPermissions: 0 - tizenMicrophonePermissions: 0 - tizenDeploymentTarget: - tizenDeploymentTargetType: -522528772 - tizenMinOSVersion: 1 n3dsUseExtSaveData: 0 n3dsCompressStaticMem: 1 n3dsExtSaveDataNumber: 0x12345 @@ -701,6 +700,7 @@ PlayerSettings: XboxOneGameOsOverridePath: XboxOnePackagingOverridePath: XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 XboxOnePackageEncryption: 0 XboxOnePackageUpdateGranularity: 2 XboxOneDescription: diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 8f3d813c154..72e8e22d942 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1 +1 @@ -m_EditorVersion: 2018.1.9f2 +m_EditorVersion: 2018.2.13f1 From fe09804b569729b4025fcace4680332cc6153c08 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Thu, 18 Oct 2018 16:56:57 -0700 Subject: [PATCH 51/98] Remove stray ChaseSource from SwappingVolume prefab --- .../Prefabs/SolverSwappingVolume.prefab | 125 +----------------- 1 file changed, 2 insertions(+), 123 deletions(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab index 4d1d3909340..3ddd77dce7b 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Prefabs/SolverSwappingVolume.prefab @@ -64,25 +64,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!1 &1806980022041722 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4532111562577858} - - component: {fileID: 114537914091800886} - - component: {fileID: 114720463534382782} - - component: {fileID: 33793527096412838} - - component: {fileID: 23348121759550618} - m_Layer: 0 - m_Name: ChaseSource - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 --- !u!1 &1859447626459620 GameObject: m_ObjectHideFlags: 1 @@ -111,7 +92,6 @@ Transform: m_LocalPosition: {x: -0.5, y: 1.09, z: 1.4} m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} m_Children: - - {fileID: 4532111562577858} - {fileID: 4440517697149476} m_Father: {fileID: 0} m_RootOrder: 0 @@ -129,19 +109,6 @@ Transform: - {fileID: 224604559336910218} - {fileID: 4790300607699990} m_Father: {fileID: 4348569316050982} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4532111562577858 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1806980022041722} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_Children: [] - m_Father: {fileID: 4348569316050982} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &4790300607699990 @@ -227,41 +194,6 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 ---- !u!23 &23348121759550618 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1806980022041722} - 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_Materials: - - {fileID: 2100000, guid: c4a1b7475a654dd0acaa0cfdfba2e20c, 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 &33043184315017164 MeshFilter: m_ObjectHideFlags: 1 @@ -276,13 +208,6 @@ MeshFilter: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1687025458477342} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &33793527096412838 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1806980022041722} - m_Mesh: {fileID: 4300000, guid: 841b5755ac02dbc439bd347f414de999, type: 3} --- !u!54 &54233848105879872 Rigidbody: m_ObjectHideFlags: 1 @@ -354,55 +279,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: edea428b5e02f9144b45b9fbd5ba5278, type: 3} m_Name: m_EditorClassIdentifier: - hideThisObject: {fileID: 1806980022041722} - spawnThisPrefab: {fileID: 1307245229378308, guid: de99acdc648a6d945ba138103ed87328, - type: 2} + hideThisObject: {fileID: 0} + spawnThisPrefab: {fileID: 0} updateSolverTargetToClickSource: 1 ---- !u!114 &114537914091800886 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1806980022041722} - m_Enabled: 0 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b55691ad5b034fe6966763a6e23818d2, type: 3} - m_Name: - m_EditorClassIdentifier: - handedness: 1 - trackedObjectToReference: 2 - additionalOffset: {x: 0, y: 0, z: 0} - additionalRotation: {x: 0, y: 0, z: 0} - transformTarget: {fileID: 0} - updateSolvers: 1 ---- !u!114 &114720463534382782 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1806980022041722} - m_Enabled: 0 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4684083f6dff4a1d8a790bccc354fcf4, type: 3} - m_Name: - m_EditorClassIdentifier: - updateLinkedTransform: 0 - moveLerpTime: 0.1 - rotateLerpTime: 0.1 - scaleLerpTime: 0 - maintainScale: 1 - smoothing: 1 - lifetime: 0 - SolverHandler: {fileID: 114537914091800886} - referenceDirection: 0 - minDistance: 0.1 - maxDistance: 0.1 - minViewDegrees: 0 - maxViewDegrees: 0 - aspectV: 1 - ignoreAngleClamp: 0 - ignoreDistanceClamp: 0 - orientToReferenceDirection: 0 --- !u!135 &135082391517649018 SphereCollider: m_ObjectHideFlags: 1 From 409a8aa369001f1b0b82884889c6bd1d7db01706 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 19 Oct 2018 09:55:05 -0700 Subject: [PATCH 52/98] properly use the current pointer defined on line 135 --- .../Features/Input/Handlers/DragAndDropHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs index 368ac01febd..ed6eb41208c 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs @@ -135,7 +135,7 @@ void IMixedRealityPointerHandler.OnPointerDown(MixedRealityPointerEventData even currentPointer = eventData.Pointer; FocusDetails focusDetails; - Vector3 initialDraggingPosition = MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(eventData.Pointer, out focusDetails) + Vector3 initialDraggingPosition = MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(currentPointer, out focusDetails) ? focusDetails.Point : hostTransform.position; From 07971ff49ed8d038a82616051b1dddfdcaa9b75d Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 19 Oct 2018 11:50:36 -0700 Subject: [PATCH 53/98] Renamed IMixedRealityComponent to IMixedRealityServiceProvider --- ...aultMixedRealityConfigurationProfile.asset | 4 ++-- ...tyRegisteredServiceProvidersProfile.asset} | 4 ++-- ...isteredServiceProvidersProfile.asset.meta} | 0 .../MixedRealityConfigurationProfile.cs | 6 +++--- ...alityRegisteredServiceProvidersProfile.cs} | 8 ++++---- ...RegisteredServiceProvidersProfile.cs.meta} | 0 ...cs => MixedRealityServiceConfiguration.cs} | 8 ++++---- ... MixedRealityServiceConfiguration.cs.meta} | 0 .../Utilities/ProfileMenuItemIndices.cs | 2 +- .../WindowsMixedRealityDeviceManager.cs | 2 +- .../Devices/OpenVR/OpenVRDeviceManager.cs | 2 +- .../Devices/UnityInput/MouseDeviceManager.cs | 2 +- .../UnityInput/UnityJoystickManager.cs | 2 +- .../UnityInput/UnityTouchDeviceManager.cs | 2 +- ...xedRealityConfigurationProfileInspector.cs | 8 ++++---- ...ityRegisteredComponentsProfileInspector.cs | 12 +++++------ .../Devices/IMixedRealityDictationSystem.cs | 2 +- .../Devices/IMixedRealitySpeechSystem.cs | 2 +- ...ent.cs => IMixedRealityServiceProvider.cs} | 4 ++-- ...a => IMixedRealityServiceProvider.cs.meta} | 0 .../_Core/Services/MixedRealityToolkit.cs | 20 +++++++++---------- 21 files changed, 45 insertions(+), 45 deletions(-) rename Assets/MixedRealityToolkit-SDK/Profiles/{DefaultMixedRealityRegisteredComponentsProfile.asset => DefaultMixedRealityRegisteredServiceProvidersProfile.asset} (95%) rename Assets/MixedRealityToolkit-SDK/Profiles/{DefaultMixedRealityRegisteredComponentsProfile.asset.meta => DefaultMixedRealityRegisteredServiceProvidersProfile.asset.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Definitions/{MixedRealityRegisteredComponentsProfile.cs => MixedRealityRegisteredServiceProvidersProfile.cs} (55%) rename Assets/MixedRealityToolkit/_Core/Definitions/{MixedRealityRegisteredComponentsProfile.cs.meta => MixedRealityRegisteredServiceProvidersProfile.cs.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Definitions/{MixedRealityComponentConfiguration.cs => MixedRealityServiceConfiguration.cs} (87%) rename Assets/MixedRealityToolkit/_Core/Definitions/{MixedRealityComponentConfiguration.cs.meta => MixedRealityServiceConfiguration.cs.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Interfaces/{IMixedRealityComponent.cs => IMixedRealityServiceProvider.cs} (80%) rename Assets/MixedRealityToolkit/_Core/Interfaces/{IMixedRealityComponent.cs.meta => IMixedRealityServiceProvider.cs.meta} (100%) diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset index 2f63232a6a0..04b8cd708bd 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset @@ -3,7 +3,7 @@ --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 @@ -43,5 +43,5 @@ MonoBehaviour: diagnosticsSystemType: reference: Microsoft.MixedReality.Toolkit.SDK.DiagnosticsSystem.MixedRealityDiagnosticsManager, Microsoft.MixedReality.Toolkit.SDK - registeredComponentsProfile: {fileID: 11400000, guid: efbaf6ea540c69f4fb75415a5d145a53, + registeredServiceProvidersProfile: {fileID: 11400000, guid: efbaf6ea540c69f4fb75415a5d145a53, type: 2} diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredComponentsProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredServiceProvidersProfile.asset similarity index 95% rename from Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredComponentsProfile.asset rename to Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredServiceProvidersProfile.asset index 873e3af6cfc..b36874c707d 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredComponentsProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredServiceProvidersProfile.asset @@ -3,13 +3,13 @@ --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: eebbca41bb0b40d298ef201735d08616, type: 3} - m_Name: DefaultMixedRealityRegisteredComponentsProfile + m_Name: DefaultMixedRealityRegisteredServiceProvidersProfile m_EditorClassIdentifier: isCustomProfile: 0 configurations: diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredComponentsProfile.asset.meta b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredServiceProvidersProfile.asset.meta similarity index 100% rename from Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredComponentsProfile.asset.meta rename to Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityRegisteredServiceProvidersProfile.asset.meta diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs index db13c15169f..43be2535cbf 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs @@ -229,13 +229,13 @@ public SystemType DiagnosticsSystemSystemType } [SerializeField] - [Tooltip("All the additional non-required systems, features, and managers registered with the Mixed Reality Toolkit.")] - private MixedRealityRegisteredComponentsProfile registeredComponentsProfile = null; + [Tooltip("All the additional non-required services registered with the Mixed Reality Toolkit.")] + private MixedRealityRegisteredServiceProvidersProfile registeredServiceProvidersProfile = null; /// /// All the additional non-required systems, features, and managers registered with the Mixed Reality Toolkit. /// - public MixedRealityRegisteredComponentsProfile RegisteredComponentsProfile => registeredComponentsProfile; + public MixedRealityRegisteredServiceProvidersProfile RegisteredServiceProvidersProfile => registeredServiceProvidersProfile; #endregion Mixed Reality Toolkit configurable properties diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredComponentsProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredServiceProvidersProfile.cs similarity index 55% rename from Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredComponentsProfile.cs rename to Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredServiceProvidersProfile.cs index 9c398ecec48..90a2418ea5c 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredComponentsProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredServiceProvidersProfile.cs @@ -6,15 +6,15 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions { - [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Mixed Reality Registered Components Profile", fileName = "MixedRealityRegisteredComponentsProfile", order = (int)CreateProfileMenuItemIndices.RegisteredComponents)] - public class MixedRealityRegisteredComponentsProfile : BaseMixedRealityProfile + [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Mixed Reality Registered Service Providers Profile", fileName = "MixedRealityRegisteredServiceProvidersProfile", order = (int)CreateProfileMenuItemIndices.RegisteredServiceProviders)] + public class MixedRealityRegisteredServiceProvidersProfile : BaseMixedRealityProfile { [SerializeField] - private MixedRealityComponentConfiguration[] configurations = null; + private MixedRealityServiceConfiguration[] configurations = null; /// /// Currently registered system and manager configurations. /// - public MixedRealityComponentConfiguration[] Configurations => configurations; + public MixedRealityServiceConfiguration[] Configurations => configurations; } } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredComponentsProfile.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredServiceProvidersProfile.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredComponentsProfile.cs.meta rename to Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityRegisteredServiceProvidersProfile.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs similarity index 87% rename from Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs rename to Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs index 34e193067a7..bbafafc86f0 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs @@ -10,10 +10,10 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions { /// - /// Defines a system, feature, or manager to be registered with the on startup. + /// Defines a system, feature, or manager to be registered with as a on startup. /// [Serializable] - public struct MixedRealityComponentConfiguration + public struct MixedRealityServiceConfiguration { /// /// Constructor. @@ -23,7 +23,7 @@ public struct MixedRealityComponentConfiguration /// The priority this system, feature, or manager will be initialized in. /// The runtime platform(s) to run this system, feature, or manager on. /// The configuration profile for the system, feature, or manager. - public MixedRealityComponentConfiguration(SystemType componentType, string componentName, uint priority, SupportedPlatforms runtimePlatform, ScriptableObject configurationProfile) + public MixedRealityServiceConfiguration(SystemType componentType, string componentName, uint priority, SupportedPlatforms runtimePlatform, ScriptableObject configurationProfile) { this.componentType = componentType; this.componentName = componentName; @@ -33,7 +33,7 @@ public MixedRealityComponentConfiguration(SystemType componentType, string compo } [SerializeField] - [Implements(typeof(IMixedRealityComponent), TypeGrouping.ByNamespaceFlat)] + [Implements(typeof(IMixedRealityServiceProvider), TypeGrouping.ByNamespaceFlat)] private SystemType componentType; /// diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityComponentConfiguration.cs.meta rename to Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/ProfileMenuItemIndices.cs b/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/ProfileMenuItemIndices.cs index c32040db0d2..24ee7d3a5b3 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/ProfileMenuItemIndices.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/ProfileMenuItemIndices.cs @@ -22,7 +22,7 @@ public enum CreateProfileMenuItemIndices Gestures, TouchInput, Diagnostics, - RegisteredComponents, + RegisteredServiceProviders, Assembly = 99 } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs index 05fcc9bb0f5..16464f29de2 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs @@ -19,7 +19,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.WindowsMixedReality { - public class WindowsMixedRealityDeviceManager : BaseDeviceManager, IMixedRealityComponent + public class WindowsMixedRealityDeviceManager : BaseDeviceManager, IMixedRealityServiceProvider { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs index 48d1269c42a..c83a3f7533a 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs @@ -14,7 +14,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.OpenVR /// /// Manages Open VR Devices using unity's input system. /// - public class OpenVRDeviceManager : UnityJoystickManager, IMixedRealityComponent + public class OpenVRDeviceManager : UnityJoystickManager, IMixedRealityServiceProvider { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs index 36a0eb81cc1..eb19c878fc5 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs @@ -11,7 +11,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput { - public class MouseDeviceManager : BaseDeviceManager, IMixedRealityComponent + public class MouseDeviceManager : BaseDeviceManager, IMixedRealityServiceProvider { public MouseDeviceManager(string name, uint priority) : base(name, priority) { } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs index 03fc8a924b6..6c53faeaaa6 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs @@ -16,7 +16,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput /// /// Manages joysticks using unity input system. /// - public class UnityJoystickManager : BaseDeviceManager, IMixedRealityComponent + public class UnityJoystickManager : BaseDeviceManager, IMixedRealityServiceProvider { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs index 85d4cb5d999..4822988725c 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs @@ -15,7 +15,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput /// /// Manages Touch devices using unity input system. /// - public class UnityTouchDeviceManager : BaseDeviceManager, IMixedRealityComponent + public class UnityTouchDeviceManager : BaseDeviceManager, IMixedRealityServiceProvider { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs index 3fda6b608db..ef2e02de7bc 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs @@ -36,7 +36,7 @@ public class MixedRealityConfigurationProfileInspector : MixedRealityBaseConfigu private SerializedProperty diagnosticsSystemProfile; // Additional registered components profile - private SerializedProperty registeredComponentsProfile; + private SerializedProperty registeredServiceProvidersProfile; private MixedRealityConfigurationProfile configurationProfile; @@ -100,7 +100,7 @@ private void OnEnable() diagnosticsSystemProfile = serializedObject.FindProperty("diagnosticsSystemProfile"); // Additional registered components configuration - registeredComponentsProfile = serializedObject.FindProperty("registeredComponentsProfile"); + registeredServiceProvidersProfile = serializedObject.FindProperty("registeredServiceProvidersProfile"); } public override void OnInspectorGUI() @@ -203,8 +203,8 @@ public override void OnInspectorGUI() changed |= RenderProfile(diagnosticsSystemProfile); GUILayout.Space(12f); - EditorGUILayout.LabelField("Additional Components", EditorStyles.boldLabel); - changed |= RenderProfile(registeredComponentsProfile); + EditorGUILayout.LabelField("Additional Service Providers", EditorStyles.boldLabel); + changed |= RenderProfile(registeredServiceProvidersProfile); if (!changed) { diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs index c7271a5b5a0..ee1547704c0 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs @@ -8,11 +8,11 @@ namespace Microsoft.MixedReality.Toolkit.Core.Inspectors.Profiles { - [CustomEditor(typeof(MixedRealityRegisteredComponentsProfile))] + [CustomEditor(typeof(MixedRealityRegisteredServiceProvidersProfile))] public class MixedRealityRegisteredComponentsProfileInspector : MixedRealityBaseConfigurationProfileInspector { private static readonly GUIContent MinusButtonContent = new GUIContent("-", "Unregister"); - private static readonly GUIContent AddButtonContent = new GUIContent("+ Register a new configuration"); + private static readonly GUIContent AddButtonContent = new GUIContent("+ Register a new Service Provider"); private SerializedProperty configurations; private static bool[] configFoldouts; @@ -42,8 +42,8 @@ public override void OnInspectorGUI() } EditorGUILayout.Space(); - EditorGUILayout.LabelField("Registered Components Profile", EditorStyles.boldLabel); - EditorGUILayout.HelpBox("This profile defines any additional systems, features, and managers to register with the Mixed Reality Toolkit.", MessageType.Info); + EditorGUILayout.LabelField("Registered Service Providers Profile", EditorStyles.boldLabel); + EditorGUILayout.HelpBox("This profile defines any additional Services like systems, features, and managers to register with the Mixed Reality Toolkit.", MessageType.Info); if (MixedRealityPreferences.LockProfiles && !((BaseMixedRealityProfile)target).IsCustomProfile) { @@ -73,7 +73,7 @@ private void RenderList(SerializedProperty list) var configurationProfile = managerConfig.FindPropertyRelative("configurationProfile"); configurationProfile.objectReferenceValue = null; serializedObject.ApplyModifiedProperties(); - var componentType = ((MixedRealityRegisteredComponentsProfile)serializedObject.targetObject).Configurations[list.arraySize - 1].ComponentType; + var componentType = ((MixedRealityRegisteredServiceProvidersProfile)serializedObject.targetObject).Configurations[list.arraySize - 1].ComponentType; componentType.Type = null; configFoldouts = new bool[list.arraySize]; return; @@ -83,7 +83,7 @@ private void RenderList(SerializedProperty list) if (list == null || list.arraySize == 0) { - EditorGUILayout.HelpBox("Register a new configuration.", MessageType.Warning); + EditorGUILayout.HelpBox("Register a new Service Provider.", MessageType.Warning); GUILayout.EndVertical(); return; } diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs index 4d53c50ae56..381f426ac24 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs @@ -9,7 +9,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices /// /// Mixed Reality Toolkit controller definition, used to manage a specific controller type /// - public interface IMixedRealityDictationSystem : IMixedRealityDeviceManager, IMixedRealityComponent + public interface IMixedRealityDictationSystem : IMixedRealityDeviceManager, IMixedRealityServiceProvider { /// /// Is the system currently listing to dictation input? diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealitySpeechSystem.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealitySpeechSystem.cs index cefae1d1fa3..653abb161dc 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealitySpeechSystem.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealitySpeechSystem.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices /// /// Mixed Reality Toolkit controller definition, used to manage a specific controller type /// - public interface IMixedRealitySpeechSystem : IMixedRealityDeviceManager, IMixedRealityComponent + public interface IMixedRealitySpeechSystem : IMixedRealityDeviceManager, IMixedRealityServiceProvider { /// /// Make sure the keyword recognizer is on, then stop it. diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs similarity index 80% rename from Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs rename to Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs index 368f6ec6e28..5e867950a2a 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs @@ -4,9 +4,9 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces { /// - /// Generic interface for all optional Mixed Reality systems, components, or features that can be added to the + /// Generic interface for all optional Mixed Reality systems, components, or features that can be added to the /// - public interface IMixedRealityComponent : IMixedRealityService + public interface IMixedRealityServiceProvider : IMixedRealityService { // Empty for now, but it is used to filter out the valid class types in the inspector dropdown. } diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs.meta b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityComponent.cs.meta rename to Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index d79cfdc9b10..b42123ec23f 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -108,9 +108,9 @@ public void ResetConfiguration(MixedRealityConfigurationProfile profile) #region Mixed Reality runtime component registry /// - /// Local component registry for the Mixed Reality Toolkit, to allow runtime use of the . + /// Local component registry for the Mixed Reality Toolkit, to allow runtime use of the . /// - public List> MixedRealityComponents { get; } = new List>(); + public List> MixedRealityComponents { get; } = new List>(); private int mixedRealityComponentsCount = 0; @@ -218,11 +218,11 @@ private void Initialize() } } - if (ActiveProfile.RegisteredComponentsProfile != null) + if (ActiveProfile.RegisteredServiceProvidersProfile != null) { - for (int i = 0; i < ActiveProfile.RegisteredComponentsProfile.Configurations?.Length; i++) + for (int i = 0; i < ActiveProfile.RegisteredServiceProvidersProfile.Configurations?.Length; i++) { - var configuration = ActiveProfile.RegisteredComponentsProfile.Configurations[i]; + var configuration = ActiveProfile.RegisteredServiceProvidersProfile.Configurations[i]; #if UNITY_EDITOR if (UnityEditor.EditorUserBuildSettings.activeBuildTarget.IsPlatformSupported(configuration.RuntimePlatform)) #else @@ -231,7 +231,7 @@ private void Initialize() { if (configuration.ComponentType.Type != null) { - RegisterService(typeof(IMixedRealityComponent), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityComponent); + RegisterService(typeof(IMixedRealityServiceProvider), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityServiceProvider); } } } @@ -522,7 +522,7 @@ public void RegisterService(Type type, IMixedRealityService service) } else { - MixedRealityComponents.Add(new Tuple(type, (IMixedRealityComponent)service)); + MixedRealityComponents.Add(new Tuple(type, (IMixedRealityServiceProvider)service)); if (!isInitializing) { service.Initialize(); } mixedRealityComponentsCount = MixedRealityComponents.Count; } @@ -633,7 +633,7 @@ public void UnregisterService(Type type) GetService(type, out service); if (service != null) { - MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityComponent)service)); + MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityServiceProvider)service)); } } } @@ -664,7 +664,7 @@ public void UnregisterService(Type type, string serviceName) if (GetService(type, serviceName, out service)) { - MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityComponent)service)); + MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityServiceProvider)service)); } } } @@ -1022,7 +1022,7 @@ private void GetServices(Type type, string serviceName, ref List components) + private static bool CheckComponentMatch(Type type, string serviceName, Tuple components) { bool isValid = string.IsNullOrEmpty(serviceName) || components.Item2.Name == serviceName; From a4935d5267a97f69aff325e7a1e9a59fa2592189 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 19 Oct 2018 14:47:27 -0700 Subject: [PATCH 54/98] 2018.2.13f1 missing quality settings changes --- ProjectSettings/QualitySettings.asset | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset index 7ef343ac5b1..6a5b72683a8 100644 --- a/ProjectSettings/QualitySettings.asset +++ b/ProjectSettings/QualitySettings.asset @@ -29,6 +29,12 @@ QualitySettings: vSyncCount: 0 lodBias: 0.3 maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 4 @@ -57,6 +63,12 @@ QualitySettings: vSyncCount: 0 lodBias: 0.4 maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 16 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 4 @@ -85,6 +97,12 @@ QualitySettings: vSyncCount: 1 lodBias: 0.7 maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 64 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 4 @@ -113,6 +131,12 @@ QualitySettings: vSyncCount: 1 lodBias: 1 maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 256 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 4 @@ -141,6 +165,12 @@ QualitySettings: vSyncCount: 1 lodBias: 1.5 maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 1024 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 4 @@ -169,6 +199,12 @@ QualitySettings: vSyncCount: 1 lodBias: 2 maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4096 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 4 From 2378e85dace1489a516cedc779956b1378d15dea Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 19 Oct 2018 14:57:38 -0700 Subject: [PATCH 55/98] initialized rules to remove build warnings --- .../MixedRealityInputActionRulesProfile.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs index 53946c024c2..f72010dea9a 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/MixedRealityInputActionRulesProfile.cs @@ -10,7 +10,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem public class MixedRealityInputActionRulesProfile : BaseMixedRealityProfile { [SerializeField] - private InputActionRuleDigital[] inputActionRulesDigital; + private InputActionRuleDigital[] inputActionRulesDigital = null; /// /// All the Input Action Rules for based s @@ -18,7 +18,7 @@ public class MixedRealityInputActionRulesProfile : BaseMixedRealityProfile public InputActionRuleDigital[] InputActionRulesDigital => inputActionRulesDigital; [SerializeField] - private InputActionRuleSingleAxis[] inputActionRulesSingleAxis; + private InputActionRuleSingleAxis[] inputActionRulesSingleAxis = null; /// /// All the Input Action Rules for based s @@ -26,7 +26,7 @@ public class MixedRealityInputActionRulesProfile : BaseMixedRealityProfile public InputActionRuleSingleAxis[] InputActionRulesSingleAxis => inputActionRulesSingleAxis; [SerializeField] - private InputActionRuleDualAxis[] inputActionRulesDualAxis; + private InputActionRuleDualAxis[] inputActionRulesDualAxis = null; /// /// All the Input Action Rules for based s @@ -34,7 +34,7 @@ public class MixedRealityInputActionRulesProfile : BaseMixedRealityProfile public InputActionRuleDualAxis[] InputActionRulesDualAxis => inputActionRulesDualAxis; [SerializeField] - private InputActionRuleVectorAxis[] inputActionRulesVectorAxis; + private InputActionRuleVectorAxis[] inputActionRulesVectorAxis = null; /// /// All the Input Action Rules for based s @@ -42,7 +42,7 @@ public class MixedRealityInputActionRulesProfile : BaseMixedRealityProfile public InputActionRuleVectorAxis[] InputActionRulesVectorAxis => inputActionRulesVectorAxis; [SerializeField] - private InputActionRuleQuaternionAxis[] inputActionRulesQuaternionAxis; + private InputActionRuleQuaternionAxis[] inputActionRulesQuaternionAxis = null; /// /// All the Input Action Rules for based s @@ -50,7 +50,7 @@ public class MixedRealityInputActionRulesProfile : BaseMixedRealityProfile public InputActionRuleQuaternionAxis[] InputActionRulesQuaternionAxis => inputActionRulesQuaternionAxis; [SerializeField] - private InputActionRulePoseAxis[] inputActionRulesPoseAxis; + private InputActionRulePoseAxis[] inputActionRulesPoseAxis = null; /// /// All the Input Action Rules for based s From cdebeffb29c3108dd11f3622f26b0497ae8c8233 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 20 Oct 2018 10:56:58 -0700 Subject: [PATCH 56/98] Updated Base Pointer Controller Pointer Name Property with a backing field, in case the gameObject reference is destroyed when attempting to get the pointer name --- .../UX/Scripts/Pointers/BaseControllerPointer.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs index 8820abd3fa2..450f6b3d01a 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs @@ -190,11 +190,17 @@ public uint PointerId } } + private string pointerName = string.Empty; + /// public string PointerName { - get { return gameObject.name; } - set { gameObject.name = value; } + get { return pointerName; } + set + { + pointerName = value; + gameObject.name = value; + } } /// From 7edd58c01f64110bc79849e2b5ce840f01270825 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 20 Oct 2018 11:02:38 -0700 Subject: [PATCH 57/98] Updated SystemType deserialization method --- .../_Core/Definitions/Utilities/SystemType.cs | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SystemType.cs b/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SystemType.cs index 90b2a6a8f27..fea389c5fbf 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SystemType.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SystemType.cs @@ -59,19 +59,7 @@ public SystemType(Type type) void ISerializationCallbackReceiver.OnAfterDeserialize() { - if (!string.IsNullOrEmpty(reference)) - { - type = Type.GetType(reference); - - if (type == null) - { - Debug.LogWarning($"'{reference}' was referenced but class or struct type was not found."); - } - } - else - { - type = null; - } + type = !string.IsNullOrEmpty(reference) ? Type.GetType(reference) : null; } void ISerializationCallbackReceiver.OnBeforeSerialize() { } From c996b282a0e88c81bdfb67e0977b1d89dd92c4de Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 20 Oct 2018 11:32:27 -0700 Subject: [PATCH 58/98] removed a bunch of unused namespaces --- .../Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs | 1 - .../Audio/Influencers/AudioLoFiSourceQualityType.cs | 3 --- .../Features/Diagnostics/CpuUseTracker.cs | 7 +++++-- .../Features/Diagnostics/MemoryUseTracker.cs | 1 - .../Features/Diagnostics/MixedRealityDiagnosticsManager.cs | 5 +++-- .../Inspectors/Utilities/Solvers/SolverHandlerInspector.cs | 1 - .../MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs | 1 - Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs | 1 - .../MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs | 1 - .../Devices/MixedReality/WindowsMixedRealityController.cs | 1 - .../_Core/Devices/OpenVR/OpenVRDeviceManager.cs | 3 +-- .../Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs | 1 - .../_Core/EventDatum/Diagnostics/DiagnosticsEventData.cs | 1 - .../_Core/EventDatum/Input/SourcePoseEventData.cs | 1 - .../_Core/Extensions/CollectionsExtensions.cs | 1 - .../_Core/Inspectors/Utilities/CanvasEditorExtension.cs | 1 - .../InputSystem/Handlers/IMixedRealityFocusHandler.cs | 1 - 17 files changed, 9 insertions(+), 22 deletions(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs index c7964269c9d..24510095f0a 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs +++ b/Assets/MixedRealityToolkit-Examples/Demos/Boundary/Scripts/BoundaryVisualizationDemo.cs @@ -5,7 +5,6 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Boundary; using Microsoft.MixedReality.Toolkit.Core.Interfaces.BoundarySystem; using Microsoft.MixedReality.Toolkit.Core.Services; -using Microsoft.MixedReality.Toolkit.Core.Utilities; using System.Collections.Generic; using Microsoft.MixedReality.Toolkit.Core.Utilities.Async; using UnityEngine; diff --git a/Assets/MixedRealityToolkit-SDK/Features/Audio/Influencers/AudioLoFiSourceQualityType.cs b/Assets/MixedRealityToolkit-SDK/Features/Audio/Influencers/AudioLoFiSourceQualityType.cs index dedce23a725..a247f5d773c 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Audio/Influencers/AudioLoFiSourceQualityType.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Audio/Influencers/AudioLoFiSourceQualityType.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 System.Collections.Generic; -using UnityEngine; - namespace Microsoft.MixedReality.Toolkit.SDK.Audio.Influencers { /// diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/CpuUseTracker.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/CpuUseTracker.cs index 2565924d07d..8e9cc9095f3 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/CpuUseTracker.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/CpuUseTracker.cs @@ -2,8 +2,11 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using System; -using System.Linq; + +#if !WINDOWS_UWP || ENABLE_IL2CPP using System.Diagnostics; +using System.Linq; +#endif namespace Microsoft.MixedReality.Toolkit.SDK.DiagnosticsSystem { @@ -25,7 +28,7 @@ public void Reset() public double GetReadingInMs() { #if WINDOWS_UWP && !ENABLE_IL2CPP - // UWP doesn't support process with dotnet runtime, so we can't get CPU readings with the current pattern. + // UWP doesn't support process with .NET runtime, so we can't get CPU readings with the current pattern. return -1; #else if (!processorTime.HasValue) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MemoryUseTracker.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MemoryUseTracker.cs index 60d4dce9a97..497495f181a 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MemoryUseTracker.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MemoryUseTracker.cs @@ -3,7 +3,6 @@ using System; using System.Linq; -using System.Diagnostics; namespace Microsoft.MixedReality.Toolkit.SDK.DiagnosticsSystem { diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs index ee089517ce9..8d02a84c821 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/MixedRealityDiagnosticsManager.cs @@ -1,8 +1,9 @@ -using Microsoft.MixedReality.Toolkit.Core.Definitions.Diagnostics; +// 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.Core.EventDatum.Diagnostics; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Diagnostics; using Microsoft.MixedReality.Toolkit.Core.Services; -using Microsoft.MixedReality.Toolkit.Core.Utilities; using UnityEngine; using UnityEngine.EventSystems; diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Utilities/Solvers/SolverHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Utilities/Solvers/SolverHandlerInspector.cs index 0592f53339d..d4d097e1138 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Utilities/Solvers/SolverHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Utilities/Solvers/SolverHandlerInspector.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 Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.SDK.Utilities.Solvers; using UnityEditor; using UnityEngine; diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs index e8379378cba..80b2666f168 100644 --- a/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs +++ b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs @@ -8,7 +8,6 @@ using Microsoft.MixedReality.Toolkit.SDK.Input; using NUnit.Framework; using System; -using System.Linq; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.TestTools; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs b/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs index f065fec143b..e43851e1fe3 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/BaseController.cs @@ -6,7 +6,6 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Services; -using Microsoft.MixedReality.Toolkit.Core.Utilities; using System; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs index 5965629b7dc..db1f06b5b51 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/BaseDeviceManager.cs @@ -5,7 +5,6 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Services; -using Microsoft.MixedReality.Toolkit.Core.Utilities; using System.Collections.Generic; using UnityEngine; diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs index 4f44162e16d..002c9006470 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityController.cs @@ -7,7 +7,6 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Services; #if UNITY_WSA -using Microsoft.MixedReality.Toolkit.Core.Utilities; using UnityEngine; using UnityEngine.XR.WSA.Input; #endif diff --git a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs index c83a3f7533a..2ed68151d87 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/OpenVR/OpenVRDeviceManager.cs @@ -4,7 +4,6 @@ using Microsoft.MixedReality.Toolkit.Core.Definitions.Devices; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput; -using Microsoft.MixedReality.Toolkit.Core.Interfaces; using Microsoft.MixedReality.Toolkit.Core.Services; using System; using UnityEngine; @@ -14,7 +13,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.OpenVR /// /// Manages Open VR Devices using unity's input system. /// - public class OpenVRDeviceManager : UnityJoystickManager, IMixedRealityServiceProvider + public class OpenVRDeviceManager : UnityJoystickManager { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs index 3dcb37a911c..af14b90c94f 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsSpeechInputDeviceManager.cs @@ -7,7 +7,6 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Services; using System; -using System.Collections.Generic; using UnityEngine; #if UNITY_STANDALONE_WIN || UNITY_WSA || UNITY_EDITOR_WIN diff --git a/Assets/MixedRealityToolkit/_Core/EventDatum/Diagnostics/DiagnosticsEventData.cs b/Assets/MixedRealityToolkit/_Core/EventDatum/Diagnostics/DiagnosticsEventData.cs index 95b09ea0ad6..98162dde72a 100644 --- a/Assets/MixedRealityToolkit/_Core/EventDatum/Diagnostics/DiagnosticsEventData.cs +++ b/Assets/MixedRealityToolkit/_Core/EventDatum/Diagnostics/DiagnosticsEventData.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 Microsoft.MixedReality.Toolkit.Core.Definitions.Diagnostics; using Microsoft.MixedReality.Toolkit.Core.Interfaces.Diagnostics; using UnityEngine.EventSystems; diff --git a/Assets/MixedRealityToolkit/_Core/EventDatum/Input/SourcePoseEventData.cs b/Assets/MixedRealityToolkit/_Core/EventDatum/Input/SourcePoseEventData.cs index 6bca2a1e1a4..7b3baaf237c 100644 --- a/Assets/MixedRealityToolkit/_Core/EventDatum/Input/SourcePoseEventData.cs +++ b/Assets/MixedRealityToolkit/_Core/EventDatum/Input/SourcePoseEventData.cs @@ -3,7 +3,6 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using UnityEngine; using UnityEngine.EventSystems; namespace Microsoft.MixedReality.Toolkit.Core.EventDatum.Input diff --git a/Assets/MixedRealityToolkit/_Core/Extensions/CollectionsExtensions.cs b/Assets/MixedRealityToolkit/_Core/Extensions/CollectionsExtensions.cs index 03526a64c78..7d680f4cc77 100644 --- a/Assets/MixedRealityToolkit/_Core/Extensions/CollectionsExtensions.cs +++ b/Assets/MixedRealityToolkit/_Core/Extensions/CollectionsExtensions.cs @@ -6,7 +6,6 @@ using System.Collections.ObjectModel; using System.Linq; using Microsoft.MixedReality.Toolkit.Core.Definitions.Devices; -using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Core.Extensions diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs index 2d458c3ae69..4b96033bfc1 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Utilities/CanvasEditorExtension.cs @@ -2,7 +2,6 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.Extensions; -using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities; using UnityEditor; diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/Handlers/IMixedRealityFocusHandler.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/Handlers/IMixedRealityFocusHandler.cs index befecd19cc8..4c86aa92161 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/Handlers/IMixedRealityFocusHandler.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/InputSystem/Handlers/IMixedRealityFocusHandler.cs @@ -2,7 +2,6 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; -using System.Collections.Generic; namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers { From e927807c16f8701a8a06f5bc86cac4b51ca142ff Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 20 Oct 2018 11:40:33 -0700 Subject: [PATCH 59/98] updated WinGestSettings summary --- .../_Core/Definitions/InputSystem/WindowsGestureSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/WindowsGestureSettings.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/WindowsGestureSettings.cs index 5dbd66b1c7e..15968c1b502 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/WindowsGestureSettings.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/WindowsGestureSettings.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem { /// - /// Copy of Unity's XR.WSA.GestureSettings. + /// Copy of Unity's /// [Flags] public enum WindowsGestureSettings From a9759f60c42d2abc373798aad102159452ebfd55 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 20 Oct 2018 12:59:02 -0700 Subject: [PATCH 60/98] fixed Build Window layout in 2018.2+ --- ...eployWindow.cs => UwpBuildDeployWindow.cs} | 145 ++++++++---------- ...w.cs.meta => UwpBuildDeployWindow.cs.meta} | 0 2 files changed, 61 insertions(+), 84 deletions(-) rename Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/{BuildDeployWindow.cs => UwpBuildDeployWindow.cs} (95%) rename Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/{BuildDeployWindow.cs.meta => UwpBuildDeployWindow.cs.meta} (100%) diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/BuildDeployWindow.cs b/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs similarity index 95% rename from Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/BuildDeployWindow.cs rename to Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs index f5a6a8ca6f4..1bdb6130cc0 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/BuildDeployWindow.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs @@ -24,7 +24,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Utilities.Build /// Build window - supports SLN creation, APPX from SLN, Deploy on device, and misc helper utilities associated with the build/deploy/test iteration loop /// Requires the device to be set in developer mode and to have secure connections disabled (in the security tab in the device portal) /// - public class BuildDeployWindow : EditorWindow + public class UwpBuildDeployWindow : EditorWindow { #region Internal Types @@ -77,7 +77,7 @@ private enum BuildPlatformEnum private readonly GUIContent buildDirectoryLabel = new GUIContent("Build Directory", "It's recommended to use 'UWP'"); - private readonly GUIContent useCSharpProjectsLabel = new GUIContent("Unity C# Projects", "Generate C# Project References for debugging"); + private readonly GUIContent useCSharpProjectsLabel = new GUIContent("Generate C# Debug", "Generate C# Project References for debugging.\nOnly availible in .NET Scripting runtime."); private readonly GUIContent autoIncrementLabel = new GUIContent("Auto Increment", "Increases Version Build Number"); @@ -161,8 +161,7 @@ private static bool IsHoloLensConnectedUsb #region Fields - private int halfWidth; - private int quarterWidth; + private const float HalfWidth = 256f; private float timeLastUpdatedBuilds; @@ -189,7 +188,7 @@ private static bool IsHoloLensConnectedUsb public static void OpenWindow() { // Dock it next to the Scene View. - var window = GetWindow(typeof(SceneView)); + var window = GetWindow(typeof(SceneView)); window.titleContent = new GUIContent("Build Window"); window.Show(); } @@ -225,9 +224,6 @@ private void Setup() private void OnGUI() { - quarterWidth = Screen.width / 4; - halfWidth = Screen.width / 2; - #region Quick Options if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.WSAPlayer) @@ -249,14 +245,14 @@ private void OnGUI() GUI.enabled = Directory.Exists(BuildDeployPreferences.AbsoluteBuildDirectory); - if (GUILayout.Button("Open Build Directory", GUILayout.Width(quarterWidth))) + if (GUILayout.Button("Open Build Directory")) { EditorApplication.delayCall += () => Process.Start(BuildDeployPreferences.AbsoluteBuildDirectory); } GUI.enabled = true; - if (GUILayout.Button("Open Player Settings", GUILayout.Width(quarterWidth))) + if (GUILayout.Button("Open Player Settings")) { EditorApplication.ExecuteMenuItem("Edit/Project Settings/Player"); } @@ -283,14 +279,14 @@ private void OnGUI() GUI.enabled = ShouldBuildSLNBeEnabled; // Build & Run button... - if (GUILayout.Button(CanInstall ? buildAllThenInstallLabel : buildAllLabel, GUILayout.Width(halfWidth - 20))) + if (GUILayout.Button(CanInstall ? buildAllThenInstallLabel : buildAllLabel, GUILayout.Width(HalfWidth), GUILayout.ExpandWidth(true))) { EditorApplication.delayCall += () => BuildAll(canInstall); } GUI.enabled = true; - if (GUILayout.Button("Open Player Settings", GUILayout.Width(quarterWidth))) + if (GUILayout.Button("Open Player Settings")) { EditorApplication.ExecuteMenuItem("Edit/Project Settings/Player"); } @@ -349,7 +345,7 @@ private void UnityBuildGUI() GUI.enabled = Directory.Exists(BuildDeployPreferences.AbsoluteBuildDirectory); - if (GUILayout.Button("Open Build Directory", GUILayout.Width(halfWidth))) + if (GUILayout.Button("Open Build Directory", GUILayout.Width(HalfWidth))) { EditorApplication.delayCall += () => Process.Start(BuildDeployPreferences.AbsoluteBuildDirectory); } @@ -358,11 +354,26 @@ private void UnityBuildGUI() EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); + + // Generate C# Project References for debugging + bool generateReferenceProjects = EditorUserBuildSettings.wsaGenerateReferenceProjects; + + var curScriptingBackend = PlayerSettings.GetScriptingBackend(BuildTargetGroup.WSA); + + GUI.enabled = curScriptingBackend == ScriptingImplementation.WinRTDotNET; + bool shouldGenerateProjects = EditorGUILayout.Toggle(useCSharpProjectsLabel, generateReferenceProjects); + GUI.enabled = true; + + if (shouldGenerateProjects != generateReferenceProjects) + { + EditorUserBuildSettings.wsaGenerateReferenceProjects = shouldGenerateProjects; + } + GUILayout.FlexibleSpace(); GUI.enabled = ShouldOpenSLNBeEnabled; - if (GUILayout.Button("Open in Visual Studio", GUILayout.Width(halfWidth))) + if (GUILayout.Button("Open in Visual Studio", GUILayout.Width(HalfWidth))) { // Open SLN string slnFilename = Path.Combine(BuildDeployPreferences.BuildDirectory, $"{PlayerSettings.productName}.sln"); @@ -381,40 +392,24 @@ private void UnityBuildGUI() } EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - - // Generate C# Project References for debugging - GUILayout.FlexibleSpace(); - var previousLabelWidth = EditorGUIUtility.labelWidth; - EditorGUIUtility.labelWidth = 105; - bool generateReferenceProjects = EditorUserBuildSettings.wsaGenerateReferenceProjects; - bool shouldGenerateProjects = EditorGUILayout.Toggle(useCSharpProjectsLabel, generateReferenceProjects); - - if (shouldGenerateProjects != generateReferenceProjects) - { - EditorUserBuildSettings.wsaGenerateReferenceProjects = shouldGenerateProjects; - } - - EditorGUIUtility.labelWidth = previousLabelWidth; + EditorGUILayout.Space(); // Build Unity Player GUI.enabled = ShouldBuildSLNBeEnabled; - if (GUILayout.Button("Build Unity Project", GUILayout.Width(halfWidth))) + if (GUILayout.Button("Build Unity Project")) { EditorApplication.delayCall += BuildUnityProject; } GUI.enabled = true; - EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } private void AppxBuildGUI() { GUILayout.BeginVertical(); - GUILayout.BeginHorizontal(); // SDK and MS Build Version(and save setting, if it's changed) string currentSDKVersion = EditorUserBuildSettings.wsaUWPSDK; @@ -436,7 +431,7 @@ private void AppxBuildGUI() } } - EditorGUILayout.LabelField("Required SDK Version: " + SdkVersion, GUILayout.Width(halfWidth - 16)); + EditorGUILayout.HelpBox("Required SDK Version: " + SdkVersion, MessageType.Info); // Throw exception if user has no Windows 10 SDK installed if (currentSDKVersionIndex < 0) @@ -446,7 +441,6 @@ private void AppxBuildGUI() Debug.LogError($"Unable to find the required Windows 10 SDK Target!\nPlease be sure to install the {SdkVersion} SDK from Visual Studio Installer."); } - GUILayout.EndHorizontal(); EditorGUILayout.HelpBox($"Unable to find the required Windows 10 SDK Target!\nPlease be sure to install the {SdkVersion} SDK from Visual Studio Installer.", MessageType.Error); GUILayout.EndVertical(); IsValidSdkInstalled = false; @@ -460,17 +454,9 @@ private void AppxBuildGUI() if (curScriptingBackend == ScriptingImplementation.WinRTDotNET) { EditorGUILayout.HelpBox(".NET Scripting backend is depreciated, please use IL2CPP.", MessageType.Warning); - GUILayout.EndHorizontal(); - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); } - var newScriptingBackend = (ScriptingImplementation)EditorGUILayout.IntPopup( - "Scripting Backend", - (int)curScriptingBackend, - scriptingBackendNames, - scriptingBackendEnum, - GUILayout.Width(halfWidth)); + var newScriptingBackend = (ScriptingImplementation)EditorGUILayout.IntPopup("Scripting Backend", (int)curScriptingBackend, scriptingBackendNames, scriptingBackendEnum, GUILayout.Width(HalfWidth)); if (newScriptingBackend != curScriptingBackend) { @@ -498,10 +484,6 @@ private void AppxBuildGUI() EditorUserBuildSettings.wsaUWPSDK = newSDKVersion; } - GUILayout.EndHorizontal(); - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - // Build config (and save setting, if it's changed) string curBuildConfigString = BuildDeployPreferences.BuildConfig; @@ -520,7 +502,7 @@ private void AppxBuildGUI() } EditorUserBuildSettings.GetWSADotNetNative(buildConfigOption); - buildConfigOption = (WSABuildType)EditorGUILayout.EnumPopup("Build Configuration", buildConfigOption, GUILayout.Width(halfWidth)); + buildConfigOption = (WSABuildType)EditorGUILayout.EnumPopup("Build Configuration", buildConfigOption, GUILayout.Width(HalfWidth)); string buildConfigString = buildConfigOption.ToString(); @@ -529,10 +511,6 @@ private void AppxBuildGUI() BuildDeployPreferences.BuildConfig = buildConfigString; } - GUILayout.EndHorizontal(); - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - // Build Platform (and save setting, if it's changed) string curBuildPlatformString = BuildDeployPreferences.BuildPlatform; var buildPlatformOption = BuildPlatformEnum.x86; @@ -546,7 +524,7 @@ private void AppxBuildGUI() buildPlatformOption = BuildPlatformEnum.x64; } - buildPlatformOption = (BuildPlatformEnum)EditorGUILayout.EnumPopup("Build Platform", buildPlatformOption, GUILayout.Width(halfWidth)); + buildPlatformOption = (BuildPlatformEnum)EditorGUILayout.EnumPopup("Build Platform", buildPlatformOption, GUILayout.Width(HalfWidth)); string newBuildPlatformString; @@ -565,9 +543,7 @@ private void AppxBuildGUI() BuildDeployPreferences.BuildPlatform = newBuildPlatformString; } - GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); var previousLabelWidth = EditorGUIUtility.labelWidth; @@ -589,9 +565,9 @@ private void AppxBuildGUI() EditorGUI.BeginChangeCheck(); - newVersion.x = EditorGUILayout.IntField(PlayerSettings.WSA.packageVersion.Major, GUILayout.Width(quarterWidth / 2 - 3)); - newVersion.y = EditorGUILayout.IntField(PlayerSettings.WSA.packageVersion.Minor, GUILayout.Width(quarterWidth / 2 - 3)); - newVersion.z = EditorGUILayout.IntField(PlayerSettings.WSA.packageVersion.Build, GUILayout.Width(quarterWidth / 2 - 3)); + newVersion.x = EditorGUILayout.IntField(PlayerSettings.WSA.packageVersion.Major); + newVersion.y = EditorGUILayout.IntField(PlayerSettings.WSA.packageVersion.Minor); + newVersion.z = EditorGUILayout.IntField(PlayerSettings.WSA.packageVersion.Build); if (EditorGUI.EndChangeCheck()) { @@ -599,7 +575,23 @@ private void AppxBuildGUI() } GUI.enabled = false; - EditorGUILayout.IntField(PlayerSettings.WSA.packageVersion.Revision, GUILayout.Width(quarterWidth / 2 - 3)); + EditorGUILayout.IntField(PlayerSettings.WSA.packageVersion.Revision); + GUI.enabled = true; + + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + + // Open AppX packages location + string appxDirectory = curScriptingBackend == ScriptingImplementation.IL2CPP ? $"/AppPackages/{PlayerSettings.productName}" : $"/{PlayerSettings.productName}/AppPackages"; + string appxBuildPath = Path.GetFullPath($"{BuildDeployPreferences.BuildDirectory}{appxDirectory}"); + GUI.enabled = builds.Count > 0 && !string.IsNullOrEmpty(appxBuildPath); + + if (GUILayout.Button("Open APPX Packages Location", GUILayout.Width(HalfWidth))) + { + EditorApplication.delayCall += () => Process.Start("explorer.exe", $"/f /open,{appxBuildPath}"); + } + GUI.enabled = true; GUILayout.EndHorizontal(); @@ -623,7 +615,7 @@ private void AppxBuildGUI() // Build APPX GUI.enabled = ShouldBuildAppxBeEnabled; - if (GUILayout.Button("Build APPX", GUILayout.Width(halfWidth))) + if (GUILayout.Button("Build APPX", GUILayout.Width(HalfWidth))) { // Check if solution exists string slnFilename = Path.Combine(BuildDeployPreferences.BuildDirectory, $"{PlayerSettings.productName}.sln"); @@ -640,22 +632,6 @@ private void AppxBuildGUI() GUI.enabled = true; } - GUILayout.EndHorizontal(); - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - - // Open AppX packages location - string appxDirectory = curScriptingBackend == ScriptingImplementation.IL2CPP ? $"/AppPackages/{PlayerSettings.productName}" : $"/{PlayerSettings.productName}/AppPackages"; - string appxBuildPath = Path.GetFullPath($"{BuildDeployPreferences.BuildDirectory}{appxDirectory}"); - GUI.enabled = builds.Count > 0 && !string.IsNullOrEmpty(appxBuildPath); - - if (GUILayout.Button("Open APPX Packages Location", GUILayout.Width(halfWidth))) - { - EditorApplication.delayCall += () => Process.Start("explorer.exe", $"/f /open,{appxBuildPath}"); - } - - GUI.enabled = true; - GUILayout.EndHorizontal(); GUILayout.EndVertical(); } @@ -664,6 +640,7 @@ private void DeployGUI() { Debug.Assert(portalConnections.Connections.Count != 0); Debug.Assert(currentConnectionInfoIndex >= 0); + if (currentConnectionInfoIndex > portalConnections.Connections.Count - 1) { currentConnectionInfoIndex = 0; @@ -675,7 +652,7 @@ private void DeployGUI() GUI.enabled = IsHoloLensConnectedUsb; - if (GUILayout.Button(pairHoloLensUsbLabel, GUILayout.Width(quarterWidth))) + if (GUILayout.Button(pairHoloLensUsbLabel, GUILayout.Width(128f))) { EditorApplication.delayCall += PairDevice; } @@ -689,7 +666,7 @@ private void DeployGUI() bool useSSL = EditorGUILayout.Toggle(useSSLLabel, BuildDeployPreferences.UseSSL); EditorGUIUtility.labelWidth = previousLabelWidth; - currentConnectionInfoIndex = EditorGUILayout.Popup(currentConnectionInfoIndex, targetIps, GUILayout.Width(halfWidth - 48)); + currentConnectionInfoIndex = EditorGUILayout.Popup(currentConnectionInfoIndex, targetIps); var currentConnection = portalConnections.Connections[currentConnectionInfoIndex]; bool currentConnectionIsLocal = IsLocalConnection(currentConnection); @@ -726,7 +703,7 @@ private void DeployGUI() GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); - GUILayout.Label(currentConnection.MachineName, GUILayout.Width(halfWidth)); + GUILayout.Label(currentConnection.MachineName, GUILayout.Width(HalfWidth)); GUILayout.EndHorizontal(); @@ -736,17 +713,17 @@ private void DeployGUI() GUILayout.FlexibleSpace(); GUI.enabled = !currentConnectionIsLocal; - currentConnection.IP = EditorGUILayout.TextField(ipAddressLabel, currentConnection.IP, GUILayout.Width(halfWidth)); + currentConnection.IP = EditorGUILayout.TextField(ipAddressLabel, currentConnection.IP, GUILayout.Width(HalfWidth)); GUI.enabled = true; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); - currentConnection.User = EditorGUILayout.TextField("Username", currentConnection.User, GUILayout.Width(halfWidth)); + currentConnection.User = EditorGUILayout.TextField("Username", currentConnection.User, GUILayout.Width(HalfWidth)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); - currentConnection.Password = EditorGUILayout.PasswordField("Password", currentConnection.Password, GUILayout.Width(halfWidth)); + currentConnection.Password = EditorGUILayout.PasswordField("Password", currentConnection.Password, GUILayout.Width(HalfWidth)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); @@ -784,7 +761,7 @@ private void DeployGUI() { GUI.enabled = IsValidIpAddress(currentConnection.IP) && IsCredentialsValid(currentConnection); - if (GUILayout.Button("Connect", GUILayout.Width(quarterWidth))) + if (GUILayout.Button("Connect")) { EditorApplication.delayCall += () => { @@ -798,7 +775,7 @@ private void DeployGUI() GUI.enabled = DevicePortalConnectionEnabled && CanInstall; // Open web portal - if (GUILayout.Button("Open Device Portal", GUILayout.Width(quarterWidth))) + if (GUILayout.Button("Open Device Portal", GUILayout.Width(128f))) { EditorApplication.delayCall += () => OpenDevicePortal(portalConnections, currentConnection); } diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/BuildDeployWindow.cs.meta b/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/BuildDeployWindow.cs.meta rename to Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs.meta From 28774f89ee5ff35bbfa5c64de2480d507f34c5da Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sat, 20 Oct 2018 16:10:16 -0700 Subject: [PATCH 61/98] updated some missing MRTK icons on some scripts --- .../Demos/Solvers/Scripts/SwapVolume.cs.meta | 2 +- .../UX/Pointers/MousePointerInspector.cs.meta | 12 ++++++++++-- .../Utilities/SolverOrientationType.cs.meta | 2 +- .../Profiles/BaseMixedRealityInspector.cs.meta | 12 ++++++++++-- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs.meta b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs.meta index 6f2b31dd1ab..622e58d84e9 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs.meta +++ b/Assets/MixedRealityToolkit-Examples/Demos/Solvers/Scripts/SwapVolume.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/UX/Pointers/MousePointerInspector.cs.meta b/Assets/MixedRealityToolkit-SDK/Inspectors/UX/Pointers/MousePointerInspector.cs.meta index 76081975657..00949a55ac1 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/UX/Pointers/MousePointerInspector.cs.meta +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/UX/Pointers/MousePointerInspector.cs.meta @@ -1,3 +1,11 @@ -fileFormatVersion: 2 +fileFormatVersion: 2 guid: d9fa402228f346469ec300be7430b5aa -timeCreated: 1536539658 \ No newline at end of file +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SolverOrientationType.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SolverOrientationType.cs.meta index 4a8f6d7c87b..5d4dc481332 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SolverOrientationType.cs.meta +++ b/Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SolverOrientationType.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs.meta b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs.meta index d561a6c6f12..1bc4d9e40a5 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs.meta +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/BaseMixedRealityInspector.cs.meta @@ -1,3 +1,11 @@ -fileFormatVersion: 2 +fileFormatVersion: 2 guid: 695870a3b55a4b5ca6885049aea1921f -timeCreated: 1537908794 \ No newline at end of file +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 961230b29c294bb780054c5d02eb6180, type: 3} + userData: + assetBundleName: + assetBundleVariant: From 35c03ea27ec78e82468be97388e3818f2f70721b Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 21 Oct 2018 03:38:23 -0700 Subject: [PATCH 62/98] MixedRealityConfigurationProfile -> MixedRealityToolkitConfigurationProfile --- ... DefaultMixedRealityToolkitConfigurationProfile.asset} | 2 +- ...ultMixedRealityToolkitConfigurationProfile.asset.meta} | 0 ...file.cs => MixedRealityToolkitConfigurationProfile.cs} | 4 ++-- ...ta => MixedRealityToolkitConfigurationProfile.cs.meta} | 0 ...> MixedRealityToolkitConfigurationProfileInspector.cs} | 8 ++++---- ...edRealityToolkitConfigurationProfileInspector.cs.meta} | 0 6 files changed, 7 insertions(+), 7 deletions(-) rename Assets/MixedRealityToolkit-SDK/Profiles/{DefaultMixedRealityConfigurationProfile.asset => DefaultMixedRealityToolkitConfigurationProfile.asset} (97%) rename Assets/MixedRealityToolkit-SDK/Profiles/{DefaultMixedRealityConfigurationProfile.asset.meta => DefaultMixedRealityToolkitConfigurationProfile.asset.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Definitions/{MixedRealityConfigurationProfile.cs => MixedRealityToolkitConfigurationProfile.cs} (97%) rename Assets/MixedRealityToolkit/_Core/Definitions/{MixedRealityConfigurationProfile.cs.meta => MixedRealityToolkitConfigurationProfile.cs.meta} (100%) rename Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/{MixedRealityConfigurationProfileInspector.cs => MixedRealityToolkitConfigurationProfileInspector.cs} (96%) rename Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/{MixedRealityConfigurationProfileInspector.cs.meta => MixedRealityToolkitConfigurationProfileInspector.cs.meta} (100%) diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset similarity index 97% rename from Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset rename to Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset index 04b8cd708bd..0e22017a299 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset @@ -9,7 +9,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 7612acbc1a4a4ed0afa5f4ccbe42bee4, type: 3} - m_Name: DefaultMixedRealityConfigurationProfile + m_Name: DefaultMixedRealityToolkitConfigurationProfile m_EditorClassIdentifier: isCustomProfile: 0 initialServiceTypes: diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset.meta b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset.meta similarity index 100% rename from Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityConfigurationProfile.asset.meta rename to Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset.meta diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs similarity index 97% rename from Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs rename to Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs index 43be2535cbf..2711347eee7 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs @@ -20,8 +20,8 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions /// /// Configuration profile settings for the Mixed Reality Toolkit. /// - [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Mixed Reality Configuration Profile", fileName = "MixedRealityConfigurationProfile", order = (int)CreateProfileMenuItemIndices.Configuration)] - public class MixedRealityConfigurationProfile : BaseMixedRealityProfile, ISerializationCallbackReceiver + [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Mixed Reality Toolkit Configuration Profile", fileName = "MixedRealityToolkitConfigurationProfile", order = (int)CreateProfileMenuItemIndices.Configuration)] + public class MixedRealityToolkitConfigurationProfile : BaseMixedRealityProfile, ISerializationCallbackReceiver { #region Service Registry properties diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs.meta b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityConfigurationProfile.cs.meta rename to Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs similarity index 96% rename from Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs rename to Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs index ef2e02de7bc..76d7119077a 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs @@ -9,8 +9,8 @@ namespace Microsoft.MixedReality.Toolkit.Core.Inspectors.Profiles { - [CustomEditor(typeof(MixedRealityConfigurationProfile))] - public class MixedRealityConfigurationProfileInspector : MixedRealityBaseConfigurationProfileInspector + [CustomEditor(typeof(MixedRealityToolkitConfigurationProfile))] + public class MixedRealityToolkitConfigurationProfileInspector : MixedRealityBaseConfigurationProfileInspector { private static readonly GUIContent TargetScaleContent = new GUIContent("Target Scale:"); @@ -38,11 +38,11 @@ public class MixedRealityConfigurationProfileInspector : MixedRealityBaseConfigu // Additional registered components profile private SerializedProperty registeredServiceProvidersProfile; - private MixedRealityConfigurationProfile configurationProfile; + private MixedRealityToolkitConfigurationProfile configurationProfile; private void OnEnable() { - configurationProfile = target as MixedRealityConfigurationProfile; + configurationProfile = target as MixedRealityToolkitConfigurationProfile; // Create The MR Manager if none exists. if (!MixedRealityToolkit.IsInitialized) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs.meta b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityConfigurationProfileInspector.cs.meta rename to Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs.meta From 9638d495112fcc331d224fa5771ca199c0b909da Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Sun, 21 Oct 2018 11:08:10 -0700 Subject: [PATCH 63/98] Forgotten to add a few files for the last commit --- .../MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs | 2 +- .../_Core/Inspectors/MixedRealityToolkitInspector.cs | 8 ++++---- .../_Core/Services/MixedRealityToolkit.cs | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs index 80b2666f168..4ab5676b0ef 100644 --- a/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs +++ b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs @@ -324,7 +324,7 @@ private static void InitializeMixedRealityToolkitScene() // Tests Assert.IsNotNull(MixedRealityToolkit.Instance); - var configuration = ScriptableObject.CreateInstance(); + var configuration = ScriptableObject.CreateInstance(); MixedRealityToolkit.Instance.ActiveProfile = configuration; Assert.NotNull(MixedRealityToolkit.Instance.ActiveProfile); } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs index c543afc26a6..9f5b1d20e5c 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs @@ -30,7 +30,7 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(activeProfile); bool changed = EditorGUI.EndChangeCheck(); string commandName = Event.current.commandName; - var allConfigProfiles = ScriptableObjectExtensions.GetAllInstances(); + var allConfigProfiles = ScriptableObjectExtensions.GetAllInstances(); if (activeProfile.objectReferenceValue == null && currentPickerWindow == -1 && checkChange) { @@ -38,7 +38,7 @@ public override void OnInspectorGUI() { EditorUtility.DisplayDialog("Attention!", "You must choose a profile for the Mixed Reality Toolkit.", "OK"); currentPickerWindow = GUIUtility.GetControlID(FocusType.Passive); - EditorGUIUtility.ShowObjectPicker(null, false, string.Empty, currentPickerWindow); + EditorGUIUtility.ShowObjectPicker(null, false, string.Empty, currentPickerWindow); } else if (allConfigProfiles.Length == 1) { @@ -52,7 +52,7 @@ public override void OnInspectorGUI() if (EditorUtility.DisplayDialog("Attention!", "No profiles were found for the Mixed Reality Toolkit.\n\n" + "Would you like to create one now?", "OK", "Later")) { - ScriptableObject profile = CreateInstance(nameof(MixedRealityConfigurationProfile)); + ScriptableObject profile = CreateInstance(nameof(MixedRealityToolkitConfigurationProfile)); profile.CreateAsset(); activeProfile.objectReferenceValue = profile; Selection.activeObject = profile; @@ -85,7 +85,7 @@ public override void OnInspectorGUI() if (changed) { - MixedRealityToolkit.Instance.ResetConfiguration((MixedRealityConfigurationProfile)activeProfile.objectReferenceValue); + MixedRealityToolkit.Instance.ResetConfiguration((MixedRealityToolkitConfigurationProfile)activeProfile.objectReferenceValue); } } diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index b42123ec23f..b53607d09db 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -56,12 +56,12 @@ public static bool HasActiveProfile /// [SerializeField] [Tooltip("The current active configuration for the Mixed Reality project")] - private MixedRealityConfigurationProfile activeProfile = null; + private MixedRealityToolkitConfigurationProfile activeProfile = null; /// /// The public property of the Active Profile, ensuring events are raised on the change of the configuration /// - public MixedRealityConfigurationProfile ActiveProfile + public MixedRealityToolkitConfigurationProfile ActiveProfile { get { @@ -84,7 +84,7 @@ public MixedRealityConfigurationProfile ActiveProfile /// When a configuration Profile is replaced with a new configuration, force all services to reset and read the new values /// /// - public void ResetConfiguration(MixedRealityConfigurationProfile profile) + public void ResetConfiguration(MixedRealityToolkitConfigurationProfile profile) { if (activeProfile != null) { From 8510a2f7eb9fa4b73a635f878e86da412fee5f36 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 22 Oct 2018 09:12:44 -0700 Subject: [PATCH 64/98] renamed a profile inspector class --- ...=> MixedRealityRegisteredServiceProviderProfileInspector.cs} | 2 +- ...xedRealityRegisteredServiceProviderProfileInspector.cs.meta} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/{MixedRealityRegisteredComponentsProfileInspector.cs => MixedRealityRegisteredServiceProviderProfileInspector.cs} (98%) rename Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/{MixedRealityRegisteredComponentsProfileInspector.cs.meta => MixedRealityRegisteredServiceProviderProfileInspector.cs.meta} (100%) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredServiceProviderProfileInspector.cs similarity index 98% rename from Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs rename to Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredServiceProviderProfileInspector.cs index ee1547704c0..791d074e742 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredServiceProviderProfileInspector.cs @@ -9,7 +9,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Inspectors.Profiles { [CustomEditor(typeof(MixedRealityRegisteredServiceProvidersProfile))] - public class MixedRealityRegisteredComponentsProfileInspector : MixedRealityBaseConfigurationProfileInspector + public class MixedRealityRegisteredServiceProviderProfileInspector : MixedRealityBaseConfigurationProfileInspector { private static readonly GUIContent MinusButtonContent = new GUIContent("-", "Unregister"); private static readonly GUIContent AddButtonContent = new GUIContent("+ Register a new Service Provider"); diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs.meta b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredServiceProviderProfileInspector.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredComponentsProfileInspector.cs.meta rename to Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityRegisteredServiceProviderProfileInspector.cs.meta From d4a4c7538da662b682aa19147be8e539a0bf8d24 Mon Sep 17 00:00:00 2001 From: Kurtis Date: Mon, 22 Oct 2018 10:50:15 -0700 Subject: [PATCH 65/98] spelling Co-Authored-By: StephenHodgson --- .../_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs b/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs index 1bdb6130cc0..2257160b203 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs @@ -77,7 +77,7 @@ private enum BuildPlatformEnum private readonly GUIContent buildDirectoryLabel = new GUIContent("Build Directory", "It's recommended to use 'UWP'"); - private readonly GUIContent useCSharpProjectsLabel = new GUIContent("Generate C# Debug", "Generate C# Project References for debugging.\nOnly availible in .NET Scripting runtime."); + private readonly GUIContent useCSharpProjectsLabel = new GUIContent("Generate C# Debug", "Generate C# Project References for debugging.\nOnly available in .NET Scripting runtime."); private readonly GUIContent autoIncrementLabel = new GUIContent("Auto Increment", "Increases Version Build Number"); From 09f312465525c0012b0cf3ed0def4ee4e092edf2 Mon Sep 17 00:00:00 2001 From: Kurtis Date: Mon, 22 Oct 2018 10:52:11 -0700 Subject: [PATCH 66/98] added space Co-Authored-By: StephenHodgson --- .../_Core/Definitions/InputSystem/WindowsGestureSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/WindowsGestureSettings.cs b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/WindowsGestureSettings.cs index 15968c1b502..9a6de0117fd 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/WindowsGestureSettings.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/InputSystem/WindowsGestureSettings.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions.InputSystem { /// - /// Copy of Unity's + /// Copy of Unity's /// [Flags] public enum WindowsGestureSettings From 39a61bfa7b68c1f1a45c3d023fec26e2728ceb62 Mon Sep 17 00:00:00 2001 From: "David Kline (ANALOG)" Date: Mon, 22 Oct 2018 12:07:47 -0700 Subject: [PATCH 67/98] replace manager exceptions with debug.logerror and return --- .../_Core/Managers/MixedRealityManager.cs | 153 ++++++++++++++---- 1 file changed, 123 insertions(+), 30 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs b/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs index b0090bc6e32..1e9dba321d6 100644 --- a/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs @@ -271,7 +271,7 @@ private void EnsureMixedRealityRequirements() /// /// Returns the Singleton instance of the classes type. /// If no instance is found, then we search for an instance in the scene. - /// If more than one instance is found, we throw an error and no instance is returned. + /// If more than one instance is found, we log an error and no instance is returned. /// public static MixedRealityManager Instance { @@ -514,8 +514,16 @@ public void AddManager(Type type, IMixedRealityManager manager) Debug.LogError($"Unable to add a new {type.Name} Manager as the Mixed Reality manager has to Active Profile"); } - if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (manager == null) { throw new ArgumentNullException(nameof(manager)); } + if (type == null) + { + Debug.LogWarning("Unable to add a manager of type null."); + return; + } + if (manager == null) + { + Debug.LogWarning("Unable to add a manager with a null instance."); + return; + } if (IsCoreManagerType(type)) { @@ -566,15 +574,21 @@ public IMixedRealityManager GetManager(Type type) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile."); + Debug.LogError($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile."); + return null; } if (!IsInitialized) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has not been initialized!"); + Debug.LogError($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has not been initialized!"); + return null; } - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogError("Unable to get null manager type."); + return null; + } IMixedRealityManager manager; if (IsCoreManagerType(type)) @@ -588,7 +602,7 @@ public IMixedRealityManager GetManager(Type type) if (manager == null) { - throw new NullReferenceException($"Unable to find {type.Name}."); + Debug.Log($"Unable to find {type.Name}."); } return manager; @@ -604,11 +618,20 @@ public IMixedRealityManager GetManager(Type type, string managerName) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {managerName} Manager as the Mixed Reality Manager has no Active Profile"); + Debug.LogError($"Unable to get {managerName} Manager as the Mixed Reality Manager has no Active Profile."); + return null; } - if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); } + if (type == null) + { + Debug.LogError("Unable to get null manager type."); + return null; + } + if (string.IsNullOrEmpty(managerName)) + { + Debug.LogError("Unable to get manager by name without the name being specified."); + return null; + } IMixedRealityManager manager; if (IsCoreManagerType(type)) @@ -622,7 +645,7 @@ public IMixedRealityManager GetManager(Type type, string managerName) if (manager == null) { - throw new NullReferenceException($"Unable to find {managerName} Manager."); + Debug.LogError($"Unable to find {managerName} Manager."); } return manager; @@ -636,10 +659,15 @@ public void RemoveManager(Type type) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to remove {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile"); + Debug.LogError($"Unable to remove {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile."); + return; } - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogError("Unable to remove null manager type."); + return; + } if (IsCoreManagerType(type)) { @@ -666,11 +694,21 @@ public void RemoveManager(Type type, string managerName) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to remove {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile"); + Debug.LogError($"Unable to remove {managerName} Manager as the Mixed Reality Manager has no Active Profile."); + return; } - if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); } + if (type == null) + { + Debug.LogError("Unable to remove null manager type."); + return; + } + + if (string.IsNullOrEmpty(managerName)) + { + Debug.LogError("Unable to remove manager by name without the name being specified."); + return; + } if (IsCoreManagerType(type)) { @@ -693,7 +731,11 @@ public void RemoveManager(Type type, string managerName) /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem public void DisableManager(Type type) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogError("Unable to disable null manager type."); + return; + } if (IsCoreManagerType(type)) { @@ -715,8 +757,16 @@ public void DisableManager(Type type) /// Name of the specific manager public void DisableManager(Type type, string managerName) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); } + if (type == null) + { + Debug.LogError("Unable to disable null manager type."); + return; + } + if (string.IsNullOrEmpty(managerName)) + { + Debug.LogError("Unable to disable manager by name without the name being specified."); + return; + } if (IsCoreManagerType(type)) { @@ -737,7 +787,11 @@ public void DisableManager(Type type, string managerName) /// The interface type for the system to be removed. E.G. InputSystem, BoundarySystem public void EnableManager(Type type) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogError("Unable to enable null manager type."); + return; + } if (IsCoreManagerType(type)) { @@ -759,8 +813,16 @@ public void EnableManager(Type type) /// Name of the specific manager public void EnableManager(Type type, string managerName) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } - if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); } + if (type == null) + { + Debug.LogError("Unable to enable null manager type."); + return; + } + if (string.IsNullOrEmpty(managerName)) + { + Debug.LogError("Unable to enable manager by name without the name being specified."); + return; + } if (IsCoreManagerType(type)) { @@ -786,7 +848,11 @@ public void EnableManager(Type type, string managerName) /// An array of Managers that meet the search criteria public IEnumerable GetManagers(Type type) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogWarning("Unable to get managers with a type of null."); + return new List(); + } return GetManagers(type, string.Empty); } @@ -801,10 +867,15 @@ public List GetManagers(Type type, string managerName) { if (ActiveProfile == null) { - throw new ArgumentNullException($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile"); + Debug.LogWarning($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile"); + return new List(); } - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogWarning("Unable to get managers with a type of null."); + return new List(); + } var managers = new List(); @@ -965,7 +1036,11 @@ public bool ManagerExists() where T : class private bool IsCoreManagerType(Type type) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogWarning($"Null cannot be a core manager."); + return false; + } return type == typeof(IMixedRealityInputSystem) || type == typeof(IMixedRealityTeleportSystem) || @@ -980,7 +1055,12 @@ private bool IsCoreManagerType(Type type) /// return parameter of the function private void GetComponentByType(Type type, out IMixedRealityManager manager) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogWarning("Unable to get a component with a type of null."); + manager = null; + return; + } GetComponentByTypeAndName(type, string.Empty, out manager); } @@ -993,7 +1073,12 @@ private void GetComponentByType(Type type, out IMixedRealityManager manager) /// return parameter of the function private void GetComponentByTypeAndName(Type type, string managerName, out IMixedRealityManager manager) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogWarning("Unable to get a component with a type of null."); + manager = null; + return; + } manager = null; @@ -1020,14 +1105,22 @@ private void GetComponentByTypeAndName(Type type, string managerName, out IMixed private void GetComponentsByType(Type type, ref List managers) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogWarning("Unable to get components with a type of null."); + return; + } GetComponentsByTypeAndName(type, string.Empty, ref managers); } private void GetComponentsByTypeAndName(Type type, string managerName, ref List managers) { - if (type == null) { throw new ArgumentNullException(nameof(type)); } + if (type == null) + { + Debug.LogWarning("Unable to get components with a type of null."); + return; + } for (int i = 0; i < mixedRealityComponentsCount; i++) { From d7f523d5bb91c9c0d6f6a4543eb03ffe31a2561c Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 22 Oct 2018 13:37:38 -0700 Subject: [PATCH 68/98] Updated ModalInput to only fire once --- .../Input/MixedRealityInputManager.cs | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index f874dd8e1bb..c15fea10eb5 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -275,8 +275,9 @@ public override void HandleEvent(BaseEventData eventData, ExecuteEvents.Event if (baseInputEventData.used) { - // All global listeners get a chance to see the event, but if any of them marked it used, we stop - // the event from going any further. + // All global listeners get a chance to see the event, + // but if any of them marked it used, + // we stop the event from going any further. return; } @@ -286,31 +287,41 @@ public override void HandleEvent(BaseEventData eventData, ExecuteEvents.Event return; } + var modalEventHandled = false; + // Get the focused object for each pointer of the event source for (int i = 0; i < baseInputEventData.InputSource.Pointers.Length; i++) { GameObject focusedObject = FocusProvider?.GetFocusedObject(baseInputEventData.InputSource.Pointers[i]); // Handle modal input if one exists - if (modalInputStack.Count > 0) + if (modalInputStack.Count > 0 && !modalEventHandled) { GameObject modalInput = modalInputStack.Peek(); - // If there is a focused object in the hierarchy of the modal handler, start the event bubble there - if (focusedObject != null && modalInput != null && focusedObject.transform.IsChildOf(modalInput.transform)) + if (modalInput != null) { - if (ExecuteEvents.ExecuteHierarchy(focusedObject, baseInputEventData, eventHandler) && baseInputEventData.used) + modalEventHandled = true; + // If there is a focused object in the hierarchy of the modal handler, start the event bubble there + if (focusedObject != null && focusedObject.transform.IsChildOf(modalInput.transform)) + { + if (ExecuteEvents.ExecuteHierarchy(focusedObject, baseInputEventData, eventHandler) && baseInputEventData.used) + { + return; + } + } + // Otherwise, just invoke the event on the modal handler itself + else { - return; + if (ExecuteEvents.ExecuteHierarchy(modalInput, baseInputEventData, eventHandler) && baseInputEventData.used) + { + return; + } } } - // Otherwise, just invoke the event on the modal handler itself else { - if (ExecuteEvents.ExecuteHierarchy(modalInput, baseInputEventData, eventHandler) && baseInputEventData.used) - { - return; - } + Debug.LogError("ModalInput GameObject reference was null!\nDid this GameObject get destroyed?"); } } From 38f5a20f2fa85edbebbe1b844dc5378397b402d4 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 22 Oct 2018 13:42:52 -0700 Subject: [PATCH 69/98] added some space --- .../Features/Input/MixedRealityInputManager.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs index c15fea10eb5..85fee2cdac5 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/MixedRealityInputManager.cs @@ -302,6 +302,7 @@ public override void HandleEvent(BaseEventData eventData, ExecuteEvents.Event if (modalInput != null) { modalEventHandled = true; + // If there is a focused object in the hierarchy of the modal handler, start the event bubble there if (focusedObject != null && focusedObject.transform.IsChildOf(modalInput.transform)) { From cc29b675a66c8761b83182ad4a1bc00ed20bb446 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Tue, 23 Oct 2018 12:37:39 -0700 Subject: [PATCH 70/98] Minor SolverHandler refactor --- .../Utilities/Solvers/SolverHandler.cs | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/SolverHandler.cs b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/SolverHandler.cs index af602d2f479..201471b1a4b 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/SolverHandler.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Utilities/Solvers/SolverHandler.cs @@ -134,7 +134,10 @@ private void Awake() DeltaTime = 0.0f; solvers.AddRange(GetComponents()); + } + private void Start() + { // TransformTarget overrides TrackedObjectToReference if (!transformTarget) { @@ -166,10 +169,7 @@ private void LateUpdate() protected void OnDestroy() { - if (transformWithOffset != null) - { - Destroy(transformWithOffset); - } + DetachFromCurrentTrackedObject(); } #endregion MonoBehaviour Implementation @@ -184,19 +184,19 @@ protected override void OnControllerFound() protected override void OnControllerLost() { - transformTarget = null; - - if (transformWithOffset != null) - { - Destroy(transformWithOffset); - transformWithOffset = null; - } + DetachFromCurrentTrackedObject(); } /// /// Clears the transform target and attaches to the current . /// public void RefreshTrackedObject() + { + DetachFromCurrentTrackedObject(); + AttachToNewTrackedObject(); + } + + protected virtual void DetachFromCurrentTrackedObject() { transformTarget = null; @@ -205,8 +205,6 @@ public void RefreshTrackedObject() Destroy(transformWithOffset); transformWithOffset = null; } - - AttachToNewTrackedObject(); } protected virtual void AttachToNewTrackedObject() From 4f7af51199cfeaadea3ba743925a7b3f84dea571 Mon Sep 17 00:00:00 2001 From: Andrew Hall Date: Tue, 23 Oct 2018 15:13:51 -0700 Subject: [PATCH 71/98] Add update to serializedObject in diagnostic inspector so changes actually apply --- .../Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs index cedff2dbdcd..c014eaf9cfa 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityDiagnosticsSystemProfileInspector.cs @@ -48,6 +48,8 @@ public override void OnInspectorGUI() GUI.enabled = false; } + serializedObject.Update(); + EditorGUILayout.Space(); EditorGUILayout.LabelField("Diagnostic Visualization Options", EditorStyles.boldLabel); EditorGUILayout.HelpBox("Diagnostic visualizations can help monitor system resources and performance inside an application.", MessageType.Info); @@ -59,6 +61,8 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(showCpu); EditorGUILayout.PropertyField(showFps); EditorGUILayout.PropertyField(showMemory); + + serializedObject.ApplyModifiedProperties(); } } } From 8e84d053174eb35865c863453784faa6813ce04a Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 23 Oct 2018 15:27:31 -0700 Subject: [PATCH 72/98] updated merged items --- .../WindowsDictationInputDeviceManager.cs | 28 +++++++++---------- .../_Core/Services/MixedRealityToolkit.cs | 28 +++++++++---------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs index 2d14268c9d0..8a88a9e047d 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/VoiceInput/WindowsDictationInputDeviceManager.cs @@ -3,7 +3,7 @@ using Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; -using Microsoft.MixedReality.Toolkit.Core.Managers; +using Microsoft.MixedReality.Toolkit.Core.Services; using Microsoft.MixedReality.Toolkit.Core.Utilities.Async; using System.Text; using System.Threading.Tasks; @@ -16,7 +16,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.VoiceInput { #if UNITY_STANDALONE_WIN || UNITY_WSA || UNITY_EDITOR_WIN - public class WindowsDictationInputDeviceManager : BaseDeviceManager, IMixedRealityDictationManager + public class WindowsDictationInputDeviceManager : BaseDeviceManager, IMixedRealityDictationSystem { /// /// Constructor. @@ -72,13 +72,13 @@ public override void Enable() { if (!Application.isPlaying) { return; } - if (MixedRealityManager.InputSystem == null) + if (MixedRealityToolkit.InputSystem == null) { Debug.LogWarning("Unable to start Windows Dictation Device Manager. An Input System is required for this feature."); return; } - inputSource = MixedRealityManager.InputSystem.RequestNewGenericInputSource("Dictation Recognizer"); + inputSource = MixedRealityToolkit.InputSystem.RequestNewGenericInputSource("Dictation Recognizer"); dictationResult = string.Empty; if (dictationRecognizer == null) @@ -95,7 +95,7 @@ public override void Enable() /// public override void Update() { - if (!Application.isPlaying || MixedRealityManager.InputSystem == null) { return; } + if (!Application.isPlaying || MixedRealityToolkit.InputSystem == null) { return; } if (!isTransitioning && IsListening && !Microphone.IsRecording(deviceName) && dictationRecognizer.Status == SpeechSystemStatus.Running) { @@ -106,7 +106,7 @@ public override void Update() if (!hasFailed && dictationRecognizer.Status == SpeechSystemStatus.Failed) { hasFailed = true; - MixedRealityManager.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer has failed!"); + MixedRealityToolkit.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer has failed!"); } } @@ -141,7 +141,7 @@ public async void StartRecording(GameObject listener, float initialSilenceTimeou /// public async Task StartRecordingAsync(GameObject listener = null, float initialSilenceTimeout = 5f, float autoSilenceTimeout = 20f, int recordingTime = 10, string micDeviceName = "") { - if (IsListening || isTransitioning || MixedRealityManager.InputSystem == null || !Application.isPlaying) + if (IsListening || isTransitioning || MixedRealityToolkit.InputSystem == null || !Application.isPlaying) { Debug.LogWarning("Unable to start recording"); return; @@ -154,7 +154,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS if (listener != null) { hasListener = true; - MixedRealityManager.InputSystem.PushModalInputHandler(listener); + MixedRealityToolkit.InputSystem.PushModalInputHandler(listener); } if (PhraseRecognitionSystem.Status == SpeechSystemStatus.Running) @@ -179,7 +179,7 @@ public async Task StartRecordingAsync(GameObject listener = null, float initialS if (dictationRecognizer.Status == SpeechSystemStatus.Failed) { - MixedRealityManager.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer failed to start!"); + MixedRealityToolkit.InputSystem.RaiseDictationError(inputSource, "Dictation recognizer failed to start!"); return; } @@ -209,7 +209,7 @@ public async Task StopRecordingAsync() if (hasListener) { - MixedRealityManager.InputSystem.PopModalInputHandler(); + MixedRealityToolkit.InputSystem.PopModalInputHandler(); hasListener = false; } @@ -241,7 +241,7 @@ private void DictationRecognizer_DictationHypothesis(string text) // We don't want to append to textSoFar yet, because the hypothesis may have changed on the next event. dictationResult = $"{textSoFar} {text}..."; - MixedRealityManager.InputSystem.RaiseDictationHypothesis(inputSource, dictationResult); + MixedRealityToolkit.InputSystem.RaiseDictationHypothesis(inputSource, dictationResult); } /// @@ -255,7 +255,7 @@ private void DictationRecognizer_DictationResult(string text, ConfidenceLevel co dictationResult = textSoFar.ToString(); - MixedRealityManager.InputSystem.RaiseDictationResult(inputSource, dictationResult); + MixedRealityToolkit.InputSystem.RaiseDictationResult(inputSource, dictationResult); } /// @@ -273,7 +273,7 @@ private void DictationRecognizer_DictationComplete(DictationCompletionCause caus dictationResult = "Dictation has timed out. Please try again."; } - MixedRealityManager.InputSystem.RaiseDictationComplete(inputSource, dictationResult, dictationAudioClip); + MixedRealityToolkit.InputSystem.RaiseDictationComplete(inputSource, dictationResult, dictationAudioClip); textSoFar = null; dictationResult = string.Empty; } @@ -287,7 +287,7 @@ private void DictationRecognizer_DictationError(string error, int hresult) { dictationResult = $"{error}\nHRESULT: {hresult}"; - MixedRealityManager.InputSystem.RaiseDictationError(inputSource, dictationResult); + MixedRealityToolkit.InputSystem.RaiseDictationError(inputSource, dictationResult); textSoFar = null; dictationResult = string.Empty; } diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index f53a346e554..ff39bbe913a 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -501,7 +501,7 @@ public void RegisterService(Type type, IMixedRealityService service) Debug.LogWarning("Unable to add a manager of type null."); return; } - if (manager == null) + if (service == null) { Debug.LogWarning("Unable to add a manager with a null instance."); return; @@ -600,7 +600,7 @@ public IMixedRealityService GetService(Type type, string serviceName) { if (ActiveProfile == null) { - Debug.LogError($"Unable to get {managerName} Manager as the Mixed Reality Manager has no Active Profile."); + Debug.LogError($"Unable to get {serviceName} Manager as the Mixed Reality Manager has no Active Profile."); return null; } @@ -609,7 +609,7 @@ public IMixedRealityService GetService(Type type, string serviceName) Debug.LogError("Unable to get null manager type."); return null; } - if (string.IsNullOrEmpty(managerName)) + if (string.IsNullOrEmpty(serviceName)) { Debug.LogError("Unable to get manager by name without the name being specified."); return null; @@ -627,7 +627,7 @@ public IMixedRealityService GetService(Type type, string serviceName) if (service == null) { - Debug.LogError($"Unable to find {managerName} Manager."); + Debug.LogError($"Unable to find {serviceName} Manager."); } return service; @@ -676,7 +676,7 @@ public void UnregisterService(Type type, string serviceName) { if (ActiveProfile == null) { - Debug.LogError($"Unable to remove {managerName} Manager as the Mixed Reality Manager has no Active Profile."); + Debug.LogError($"Unable to remove {serviceName} Manager as the Mixed Reality Manager has no Active Profile."); return; } @@ -686,7 +686,7 @@ public void UnregisterService(Type type, string serviceName) return; } - if (string.IsNullOrEmpty(managerName)) + if (string.IsNullOrEmpty(serviceName)) { Debug.LogError("Unable to remove manager by name without the name being specified."); return; @@ -744,7 +744,7 @@ public void DisableService(Type type, string serviceName) Debug.LogError("Unable to disable null manager type."); return; } - if (string.IsNullOrEmpty(managerName)) + if (string.IsNullOrEmpty(serviceName)) { Debug.LogError("Unable to disable manager by name without the name being specified."); return; @@ -800,7 +800,7 @@ public void EnableService(Type type, string serviceName) Debug.LogError("Unable to enable null manager type."); return; } - if (string.IsNullOrEmpty(managerName)) + if (string.IsNullOrEmpty(serviceName)) { Debug.LogError("Unable to enable manager by name without the name being specified."); return; @@ -833,7 +833,7 @@ public List GetActiveServices(Type type) if (type == null) { Debug.LogWarning("Unable to get managers with a type of null."); - return new List(); + return new List(); } return GetActiveServices(type, string.Empty); @@ -850,13 +850,13 @@ public List GetActiveServices(Type type, string serviceNam if (ActiveProfile == null) { Debug.LogWarning($"Unable to get {nameof(type)} Manager as the Mixed Reality Manager has no Active Profile"); - return new List(); + return new List(); } if (type == null) { Debug.LogWarning("Unable to get managers with a type of null."); - return new List(); + return new List(); } var services = new List(); @@ -1040,7 +1040,7 @@ private void GetService(Type type, out IMixedRealityService service) if (type == null) { Debug.LogWarning("Unable to get a component with a type of null."); - manager = null; + service = null; return; } @@ -1058,8 +1058,8 @@ private bool GetService(Type type, string serviceName, out IMixedRealityService if (type == null) { Debug.LogWarning("Unable to get a component with a type of null."); - manager = null; - return; + service = null; + return false; } service = null; From ad1886e3191fcfb64c8f36309dd1e31733b6a241 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 23 Oct 2018 15:53:59 -0700 Subject: [PATCH 73/98] updated merge changes --- .../Features/Input/Handlers/DragAndDropHandler.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs index 55029cf6b84..544a871df2a 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Input/Handlers/DragAndDropHandler.cs @@ -135,7 +135,7 @@ void IMixedRealityPointerHandler.OnPointerDown(MixedRealityPointerEventData even currentPointer = eventData.Pointer; FocusDetails focusDetails; - Vector3 initialDraggingPosition = MixedRealityManager.InputSystem.FocusProvider.TryGetFocusDetails(currentPointer, out focusDetails) + Vector3 initialDraggingPosition = MixedRealityToolkit.InputSystem.FocusProvider.TryGetFocusDetails(currentPointer, out focusDetails) ? focusDetails.Point : hostTransform.position; @@ -201,7 +201,7 @@ private void StartDragging(Vector3 initialDraggingPosition) // TODO: robertes: Fix push/pop and single-handler model so that multiple HandDraggable components can be active at once. // Add self as a modal input handler, to get all inputs during the manipulation - MixedRealityManager.InputSystem.PushModalInputHandler(gameObject); + MixedRealityToolkit.InputSystem.PushModalInputHandler(gameObject); isDragging = true; @@ -327,7 +327,7 @@ private void StopDragging() } // Remove self as a modal input handler - MixedRealityManager.InputSystem.PopModalInputHandler(); + MixedRealityToolkit.InputSystem.PopModalInputHandler(); isDragging = false; From b0eb6a17f445d8bc168361b7260437800ed5b26d Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 23 Oct 2018 16:38:12 -0700 Subject: [PATCH 74/98] cleaned up USBListener a bit --- .../Utilities/Editor/USB/USBDeviceListener.cs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/Editor/USB/USBDeviceListener.cs b/Assets/MixedRealityToolkit/_Core/Utilities/Editor/USB/USBDeviceListener.cs index 6f3b138778a..a83b0203255 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/Editor/USB/USBDeviceListener.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/Editor/USB/USBDeviceListener.cs @@ -4,21 +4,19 @@ using System.Collections.Generic; using UnityEditor; using UnityEditor.Hardware; -using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Core.Utilities.Editor.Usb { [InitializeOnLoad] public class USBDeviceListener { - [SerializeField] public static USBDeviceInfo[] USBDevices; public delegate void OnUsbDevicesChanged(UsbDevice[] usbDevices); public static event OnUsbDevicesChanged UsbDevicesChanged; - private static List usbDevicesList = new List(0); + private static readonly List USBDevicesList = new List(0); static USBDeviceListener() { @@ -27,19 +25,16 @@ static USBDeviceListener() private static void NotifyUsbDevicesChanged(UsbDevice[] devices) { - if (UsbDevicesChanged != null) - { - UsbDevicesChanged.Invoke(devices); - } + UsbDevicesChanged?.Invoke(devices); - usbDevicesList.Clear(); + USBDevicesList.Clear(); foreach (UsbDevice device in devices) { - usbDevicesList.Add(new USBDeviceInfo(device.vendorId, device.udid, device.productId, device.name, device.revision)); + USBDevicesList.Add(new USBDeviceInfo(device.vendorId, device.udid, device.productId, device.name, device.revision)); } - USBDevices = usbDevicesList.ToArray(); + USBDevices = USBDevicesList.ToArray(); } } } \ No newline at end of file From 100889b35807858d9ef22f1293e28842c24d201f Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 24 Oct 2018 13:05:13 -0700 Subject: [PATCH 75/98] IMixedRealityServiceProvider -> IMixedRealityExtensionService --- .../MixedRealityServiceConfiguration.cs | 4 ++-- .../WindowsMixedRealityDeviceManager.cs | 2 +- .../_Core/Devices/UnityInput/MouseDeviceManager.cs | 2 +- .../Devices/UnityInput/UnityJoystickManager.cs | 2 +- .../Devices/UnityInput/UnityTouchDeviceManager.cs | 2 +- .../Devices/IMixedRealityDictationSystem.cs | 2 +- .../Devices/IMixedRealitySpeechSystem.cs | 2 +- ...rovider.cs => IMixedRealityExtensionService.cs} | 2 +- ....meta => IMixedRealityExtensionService.cs.meta} | 0 .../_Core/Interfaces/IMixedRealityService.cs | 2 +- .../_Core/Services/MixedRealityToolkit.cs | 14 +++++++------- 11 files changed, 17 insertions(+), 17 deletions(-) rename Assets/MixedRealityToolkit/_Core/Interfaces/{IMixedRealityServiceProvider.cs => IMixedRealityExtensionService.cs} (84%) rename Assets/MixedRealityToolkit/_Core/Interfaces/{IMixedRealityServiceProvider.cs.meta => IMixedRealityExtensionService.cs.meta} (100%) diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs index bbafafc86f0..2e5a451c69b 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityServiceConfiguration.cs @@ -10,7 +10,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions { /// - /// Defines a system, feature, or manager to be registered with as a on startup. + /// Defines a system, feature, or manager to be registered with as a on startup. /// [Serializable] public struct MixedRealityServiceConfiguration @@ -33,7 +33,7 @@ public MixedRealityServiceConfiguration(SystemType componentType, string compone } [SerializeField] - [Implements(typeof(IMixedRealityServiceProvider), TypeGrouping.ByNamespaceFlat)] + [Implements(typeof(IMixedRealityExtensionService), TypeGrouping.ByNamespaceFlat)] private SystemType componentType; /// diff --git a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs index 16464f29de2..1a3e30e45c5 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/MixedReality/WindowsMixedRealityDeviceManager.cs @@ -19,7 +19,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.WindowsMixedReality { - public class WindowsMixedRealityDeviceManager : BaseDeviceManager, IMixedRealityServiceProvider + public class WindowsMixedRealityDeviceManager : BaseDeviceManager, IMixedRealityExtensionService { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs index eb19c878fc5..5ddd73a14f7 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/MouseDeviceManager.cs @@ -11,7 +11,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput { - public class MouseDeviceManager : BaseDeviceManager, IMixedRealityServiceProvider + public class MouseDeviceManager : BaseDeviceManager, IMixedRealityExtensionService { public MouseDeviceManager(string name, uint priority) : base(name, priority) { } diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs index 6c53faeaaa6..645f937dd28 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityJoystickManager.cs @@ -16,7 +16,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput /// /// Manages joysticks using unity input system. /// - public class UnityJoystickManager : BaseDeviceManager, IMixedRealityServiceProvider + public class UnityJoystickManager : BaseDeviceManager, IMixedRealityExtensionService { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs index 4822988725c..89094b38eb4 100644 --- a/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs +++ b/Assets/MixedRealityToolkit/_Core/Devices/UnityInput/UnityTouchDeviceManager.cs @@ -15,7 +15,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Devices.UnityInput /// /// Manages Touch devices using unity input system. /// - public class UnityTouchDeviceManager : BaseDeviceManager, IMixedRealityServiceProvider + public class UnityTouchDeviceManager : BaseDeviceManager, IMixedRealityExtensionService { /// /// Constructor. diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs index 381f426ac24..db9a9ecb57b 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealityDictationSystem.cs @@ -9,7 +9,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices /// /// Mixed Reality Toolkit controller definition, used to manage a specific controller type /// - public interface IMixedRealityDictationSystem : IMixedRealityDeviceManager, IMixedRealityServiceProvider + public interface IMixedRealityDictationSystem : IMixedRealityDeviceManager, IMixedRealityExtensionService { /// /// Is the system currently listing to dictation input? diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealitySpeechSystem.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealitySpeechSystem.cs index 653abb161dc..6dc10c71001 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealitySpeechSystem.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/Devices/IMixedRealitySpeechSystem.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces.Devices /// /// Mixed Reality Toolkit controller definition, used to manage a specific controller type /// - public interface IMixedRealitySpeechSystem : IMixedRealityDeviceManager, IMixedRealityServiceProvider + public interface IMixedRealitySpeechSystem : IMixedRealityDeviceManager, IMixedRealityExtensionService { /// /// Make sure the keyword recognizer is on, then stop it. diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs similarity index 84% rename from Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs rename to Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs index 5e867950a2a..82ccc8b9e77 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces /// /// Generic interface for all optional Mixed Reality systems, components, or features that can be added to the /// - public interface IMixedRealityServiceProvider : IMixedRealityService + public interface IMixedRealityExtensionService : IMixedRealityService // IMixedRealityComponent { // Empty for now, but it is used to filter out the valid class types in the inspector dropdown. } diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs.meta b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityServiceProvider.cs.meta rename to Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs.meta diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs index b8cb1889614..f14ab224632 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces /// /// Generic interface for all Mixed Reality Services /// - public interface IMixedRealityService + public interface IMixedRealityService // IMixedRealityManager { /// /// Optional Priority attribute if multiple services of the same type are required, enables targeting a service for action. diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index ff39bbe913a..55318909ac7 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -108,9 +108,9 @@ public void ResetConfiguration(MixedRealityToolkitConfigurationProfile profile) #region Mixed Reality runtime component registry /// - /// Local component registry for the Mixed Reality Toolkit, to allow runtime use of the . + /// Local component registry for the Mixed Reality Toolkit, to allow runtime use of the . /// - public List> MixedRealityComponents { get; } = new List>(); + public List> MixedRealityComponents { get; } = new List>(); private int mixedRealityComponentsCount = 0; @@ -231,7 +231,7 @@ private void Initialize() { if (configuration.ComponentType.Type != null) { - RegisterService(typeof(IMixedRealityServiceProvider), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityServiceProvider); + RegisterService(typeof(IMixedRealityExtensionService), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityExtensionService); } } } @@ -530,7 +530,7 @@ public void RegisterService(Type type, IMixedRealityService service) } else { - MixedRealityComponents.Add(new Tuple(type, (IMixedRealityServiceProvider)service)); + MixedRealityComponents.Add(new Tuple(type, (IMixedRealityExtensionService)service)); if (!isInitializing) { service.Initialize(); } mixedRealityComponentsCount = MixedRealityComponents.Count; } @@ -661,7 +661,7 @@ public void UnregisterService(Type type) GetService(type, out service); if (service != null) { - MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityServiceProvider)service)); + MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityExtensionService)service)); } } } @@ -702,7 +702,7 @@ public void UnregisterService(Type type, string serviceName) if (GetService(type, serviceName, out service)) { - MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityServiceProvider)service)); + MixedRealityComponents.Remove(new Tuple(type, (IMixedRealityExtensionService)service)); } } } @@ -1115,7 +1115,7 @@ private void GetServices(Type type, string serviceName, ref List components) + private static bool CheckComponentMatch(Type type, string serviceName, Tuple components) { bool isValid = string.IsNullOrEmpty(serviceName) || components.Item2.Name == serviceName; From 9ed442a881880e6cccde33b2ce706776dda2fe87 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 24 Oct 2018 13:06:58 -0700 Subject: [PATCH 76/98] removed comments --- .../_Core/Interfaces/IMixedRealityExtensionService.cs | 2 +- .../_Core/Interfaces/IMixedRealityService.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs index 82ccc8b9e77..df617be0a4b 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityExtensionService.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces /// /// Generic interface for all optional Mixed Reality systems, components, or features that can be added to the /// - public interface IMixedRealityExtensionService : IMixedRealityService // IMixedRealityComponent + public interface IMixedRealityExtensionService : IMixedRealityService { // Empty for now, but it is used to filter out the valid class types in the inspector dropdown. } diff --git a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs index f14ab224632..b8cb1889614 100644 --- a/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs +++ b/Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityService.cs @@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Interfaces /// /// Generic interface for all Mixed Reality Services /// - public interface IMixedRealityService // IMixedRealityManager + public interface IMixedRealityService { /// /// Optional Priority attribute if multiple services of the same type are required, enables targeting a service for action. From b55cb7227f632ef7ea631d729a211139a74b834e Mon Sep 17 00:00:00 2001 From: "David Kline (ANALOG)" Date: Wed, 24 Oct 2018 14:15:11 -0700 Subject: [PATCH 77/98] fix nullreferenceexception in diagnostics handler --- .../Diagnostics/DiagnosticsHandler.cs | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/DiagnosticsHandler.cs b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/DiagnosticsHandler.cs index 0831215aef8..64e8233b05f 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/DiagnosticsHandler.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Diagnostics/DiagnosticsHandler.cs @@ -42,17 +42,22 @@ private bool ShowCpu private FpsUseTracker fpsUseTracker = new FpsUseTracker(); StringBuilder displayText = new StringBuilder(); - private GUIStyle style = new GUIStyle() - { - alignment = TextAnchor.UpperLeft, - normal = new GUIStyleState() - { - textColor = new Color(0, 0, 0.5f, 1) - } - }; + private GUIStyle style = null; private Rect rect = new Rect(); + private void Awake() + { + style = new GUIStyle() + { + alignment = TextAnchor.UpperLeft, + normal = new GUIStyleState() + { + textColor = new Color(0, 0, 0.5f, 1) + } + }; + } + /// /// Updates the diagnostic settings /// From 0cd757971b1ce4d75950424cf8ba1fba32cbcd05 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 24 Oct 2018 14:15:14 -0700 Subject: [PATCH 78/98] updated name --- .../Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs index ebe924b04ac..f3ba76eda54 100644 --- a/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs +++ b/Assets/MixedRealityToolkit-SDK/Inspectors/Input/Handlers/SpeechInputHandlerInspector.cs @@ -49,7 +49,7 @@ public override void OnInspectorGUI() return; } - if (MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile == null) + if (MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.SpeechCommandsProfile == null) { EditorGUILayout.HelpBox("No Speech Commands Profile Found, be sure to specify a profile in the Input System's configuration profile.", MessageType.Error); return; From b2e97b0550717763a4743828334e28182bbe1a57 Mon Sep 17 00:00:00 2001 From: "Jonathan Palmer [MSoft Work]" Date: Wed, 24 Oct 2018 14:33:41 -0700 Subject: [PATCH 79/98] Moved models out of UX/Tooltips and into Example StandardAssets. Added a few other models used in other sample scenes. --- .../Demos/UX/Tooltips.meta | 8 - .../Demos/UX/Tooltips/Meshes.meta | 8 - .../UX/Tooltips/Meshes/Model_Tetra.prefab | 143 --------- .../Tooltips/Meshes/Model_Tetra.prefab.meta | 8 - .../UX/Tooltips/Meshes/TheModule.fbx.meta | 205 ------------ .../StandardAssets/Models/CoffeeCup.fbx | Bin 0 -> 87840 bytes .../StandardAssets/Models/CoffeeCup.fbx.meta | 90 ++++++ .../Models}/Model_Bucky.fbx | Bin .../Models}/Model_Bucky.fbx.meta | 30 +- .../Models}/Model_Icosa.fbx | Bin .../Models}/Model_Icosa.fbx.meta | 30 +- .../Models}/Model_Octa.fbx | Bin .../Models}/Model_Octa.fbx.meta | 30 +- .../Models}/Model_Platonic.fbx | Bin .../Models}/Model_Platonic.fbx.meta | 26 +- .../Models/Model_PushButton.fbx | Bin 0 -> 77840 bytes .../Models/Model_PushButton.fbx.meta | 89 ++++++ .../StandardAssets/Models/MouseandCheese.fbx | Bin 0 -> 115888 bytes .../Models/MouseandCheese.fbx.meta | 96 ++++++ .../Models}/TheModule.fbx | Bin .../StandardAssets/Models/TheModule.fbx.meta | 295 ++++++++++++++++++ .../StandardAssets/Models/balloon.fbx | Bin 0 -> 197632 bytes .../StandardAssets/Models/balloon.fbx.meta | 102 ++++++ 23 files changed, 710 insertions(+), 450 deletions(-) delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips.meta delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes.meta delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab.meta delete mode 100644 Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx.meta create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/CoffeeCup.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/CoffeeCup.fbx.meta rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/Model_Bucky.fbx (100%) rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/Model_Bucky.fbx.meta (78%) rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/Model_Icosa.fbx (100%) rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/Model_Icosa.fbx.meta (78%) rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/Model_Octa.fbx (100%) rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/Model_Octa.fbx.meta (78%) rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/Model_Platonic.fbx (100%) rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/Model_Platonic.fbx.meta (80%) create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_PushButton.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_PushButton.fbx.meta create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/MouseandCheese.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/MouseandCheese.fbx.meta rename Assets/MixedRealityToolkit-Examples/{Demos/UX/Tooltips/Meshes => StandardAssets/Models}/TheModule.fbx (100%) create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/TheModule.fbx.meta create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/balloon.fbx create mode 100644 Assets/MixedRealityToolkit-Examples/StandardAssets/Models/balloon.fbx.meta diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips.meta deleted file mode 100644 index 7ca8bb8d761..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 8d8c59bbdd8117e4283960275e8934be -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes.meta deleted file mode 100644 index c08b271cc84..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 03487502e560c0e48ad72a663954aa85 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab deleted file mode 100644 index 81a1b177870..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab +++ /dev/null @@ -1,143 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 1518205972025162} - m_IsPrefabParent: 1 ---- !u!1 &1370976729975188 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4993226159038490} - - component: {fileID: 33872725522972866} - - component: {fileID: 23438222969575584} - m_Layer: 0 - m_Name: Platonic - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1518205972025162 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4479957502932928} - m_Layer: 0 - m_Name: Model_Tetra - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1627669683963282 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4953339597329370} - m_Layer: 0 - m_Name: CINEMA_4D_Editor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4479957502932928 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1518205972025162} - m_LocalRotation: {x: -0, y: -0.19536461, z: -0, w: 0.98073065} - m_LocalPosition: {x: -0.29837453, y: -0.43106988, z: 0.71920186} - m_LocalScale: {x: 0.1, y: 0.15, z: 0.1} - m_Children: - - {fileID: 4953339597329370} - - {fileID: 4993226159038490} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4953339597329370 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1627669683963282} - m_LocalRotation: {x: -0.14040467, y: -0.7287883, z: 0.12678394, w: 0.6580881} - m_LocalPosition: {x: -0.849495, y: 3.3469186, z: 8.316336} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 4479957502932928} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4993226159038490 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1370976729975188} - 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: 4479957502932928} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23438222969575584 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1370976729975188} - 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_Materials: - - {fileID: 2100000, guid: b0fcdc3322e34d9ea83e8399bd9f4031, 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 &33872725522972866 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1370976729975188} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab.meta deleted file mode 100644 index a9fd6e0121e..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Tetra.prefab.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5eeec4e04f41bff4cbd5cbaf0e01596f -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx.meta b/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx.meta deleted file mode 100644 index 81d9b488533..00000000000 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/TheModule.fbx.meta +++ /dev/null @@ -1,205 +0,0 @@ -fileFormatVersion: 2 -guid: fdae284de03155b40944017e87efab21 -ModelImporter: - serializedVersion: 22 - fileIDToRecycleName: - 100000: BackBody - 100002: Backpack - 100004: BottomLeftBody - 100006: BottomRightBody - 100008: Camera - 100010: Directional Light - 100012: Face - 100014: FrontAntenna - 100016: Gas - 100018: GasTank - 100020: GasTankGlass - 100022: GoldBase - 100024: LeftTwirler - 100026: Legs1 - 100028: Legs2 - 100030: Legs3 - 100032: Legs4 - 100034: Light - 100036: Nose - 100038: //RootNode - 100040: ThrustCylinder - 100042: TopGoldDial - 100044: TopLeftBody - 400000: BackBody - 400002: Backpack - 400004: BottomLeftBody - 400006: BottomRightBody - 400008: Camera - 400010: Directional Light - 400012: Face - 400014: FrontAntenna - 400016: Gas - 400018: GasTank - 400020: GasTankGlass - 400022: GoldBase - 400024: LeftTwirler - 400026: Legs1 - 400028: Legs2 - 400030: Legs3 - 400032: Legs4 - 400034: Light - 400036: Nose - 400038: //RootNode - 400040: ThrustCylinder - 400042: TopGoldDial - 400044: TopLeftBody - 2000000: Camera - 2100000: White - 2100002: WhiteLight - 2100004: GreenGas - 2100006: ClearWindow - 2100008: Black - 2100010: BlackWindow - 2100012: Default - 2100014: RedLight - 2100016: Gold - 2300000: BackBody - 2300002: Backpack - 2300004: BottomLeftBody - 2300006: BottomRightBody - 2300008: Face - 2300010: FrontAntenna - 2300012: Gas - 2300014: GasTank - 2300016: GasTankGlass - 2300018: GoldBase - 2300020: LeftTwirler - 2300022: Legs1 - 2300024: Legs2 - 2300026: Legs3 - 2300028: Legs4 - 2300030: Light - 2300032: Nose - 2300034: ThrustCylinder - 2300036: TopGoldDial - 2300038: TopLeftBody - 3300000: BackBody - 3300002: Backpack - 3300004: BottomLeftBody - 3300006: BottomRightBody - 3300008: Face - 3300010: FrontAntenna - 3300012: Gas - 3300014: GasTank - 3300016: GasTankGlass - 3300018: GoldBase - 3300020: LeftTwirler - 3300022: Legs1 - 3300024: Legs2 - 3300026: Legs3 - 3300028: Legs4 - 3300030: Light - 3300032: Nose - 3300034: ThrustCylinder - 3300036: TopGoldDial - 3300038: TopLeftBody - 4300000: Light - 4300002: Backpack - 4300004: LeftTwirler - 4300006: GasTank - 4300008: Gas - 4300010: GasTankGlass - 4300012: BottomRightBody - 4300014: TopLeftBody - 4300016: Nose - 4300018: Face - 4300020: BackBody - 4300022: FrontAntenna - 4300024: BottomLeftBody - 4300026: GoldBase - 4300028: ThrustCylinder - 4300030: TopGoldDial - 4300032: Legs1 - 4300034: Legs2 - 4300036: Legs3 - 4300038: Legs4 - 7400000: Take 001 - 9500000: //RootNode - 10800000: Directional Light - 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 - 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 - tangentSpace: - normalSmoothAngle: 60 - normalImportMode: 0 - tangentImportMode: 3 - normalCalculationMode: 4 - 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: - rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} - hasTranslationDoF: 0 - hasExtraRoot: 0 - skeletonHasParents: 1 - lastHumanDescriptionAvatarSource: {instanceID: 0} - animationType: 2 - humanoidOversampling: 1 - additionalBone: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/CoffeeCup.fbx b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/CoffeeCup.fbx new file mode 100644 index 0000000000000000000000000000000000000000..33223e0becbb5284e15ad6cadfd45770b2ff6c0c GIT binary patch literal 87840 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%0A8T(O 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 AbpQYW literal 0 HcmV?d00001 diff --git a/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/CoffeeCup.fbx.meta b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/CoffeeCup.fbx.meta new file mode 100644 index 00000000000..48b71425f96 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/CoffeeCup.fbx.meta @@ -0,0 +1,90 @@ +fileFormatVersion: 2 +guid: aa39033344b08ce4bab10cc11dc6d6b8 +timeCreated: 1493052376 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: Coffee + 100002: //RootNode + 100004: CoffeeCup + 400000: Coffee + 400002: //RootNode + 400004: CoffeeCup + 2300000: Coffee + 2300002: CoffeeCup + 3300000: Coffee + 3300002: CoffeeCup + 4300000: CoffeeCup + 4300002: Coffee + 9500000: //RootNode + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 100 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 0 + 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: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Bucky.fbx similarity index 100% rename from Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx rename to Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Bucky.fbx diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx.meta b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Bucky.fbx.meta similarity index 78% rename from Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx.meta rename to Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Bucky.fbx.meta index 62a0035740c..93d20d76fce 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Bucky.fbx.meta +++ b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Bucky.fbx.meta @@ -1,7 +1,9 @@ fileFormatVersion: 2 -guid: c185ec90f910abc4fbf0c1ef8a5c8a66 +guid: 5838ea95659d32943afec95550ac1ce1 +timeCreated: 1493153463 +licenseType: Free ModelImporter: - serializedVersion: 22 + serializedVersion: 19 fileIDToRecycleName: 100000: CINEMA_4D_Editor 100002: //RootNode @@ -9,17 +11,14 @@ ModelImporter: 400000: CINEMA_4D_Editor 400002: //RootNode 400004: Platonic - 2000000: CINEMA_4D_Editor - 2100000: No Name 2300000: Platonic 3300000: Platonic 4300000: Platonic - externalObjects: {} + 9500000: //RootNode materials: - importMaterials: 1 + importMaterials: 0 materialName: 0 materialSearch: 1 - materialLocation: 1 animations: legacyGenerateAnimations: 4 bakeSimulation: 0 @@ -32,15 +31,12 @@ ModelImporter: 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: @@ -48,18 +44,13 @@ ModelImporter: globalScale: 1 meshCompression: 0 addColliders: 0 - importVisibility: 1 - importBlendShapes: 1 - importCameras: 1 - importLights: 1 + importBlendShapes: 0 swapUVChannels: 0 generateSecondaryUV: 0 useFileUnits: 1 optimizeMeshForGPU: 1 keepQuads: 0 - weldVertices: 1 - preserveHierarchy: 0 - indexFormat: 0 + weldVertices: 0 secondaryUVAngleDistortion: 8 secondaryUVAreaDistortion: 15.000001 secondaryUVHardAngle: 88 @@ -69,8 +60,7 @@ ModelImporter: normalSmoothAngle: 60 normalImportMode: 0 tangentImportMode: 3 - normalCalculationMode: 4 - importAnimation: 1 + importAnimation: 0 copyAvatar: 0 humanDescription: serializedVersion: 2 @@ -86,7 +76,7 @@ ModelImporter: rootMotionBoneName: rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} hasTranslationDoF: 0 - hasExtraRoot: 0 + hasExtraRoot: 1 skeletonHasParents: 1 lastHumanDescriptionAvatarSource: {instanceID: 0} animationType: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Icosa.fbx similarity index 100% rename from Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx rename to Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Icosa.fbx diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx.meta b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Icosa.fbx.meta similarity index 78% rename from Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx.meta rename to Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Icosa.fbx.meta index bcd29be34df..680d4bd8f8e 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Icosa.fbx.meta +++ b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Icosa.fbx.meta @@ -1,7 +1,9 @@ fileFormatVersion: 2 -guid: 76a90a8ee3079bc4b839ceed941ecda0 +guid: 284d5c2c421022e4f9056fb0a21ff91c +timeCreated: 1493153463 +licenseType: Free ModelImporter: - serializedVersion: 22 + serializedVersion: 19 fileIDToRecycleName: 100000: CINEMA_4D_Editor 100002: //RootNode @@ -9,17 +11,14 @@ ModelImporter: 400000: CINEMA_4D_Editor 400002: //RootNode 400004: Platonic - 2000000: CINEMA_4D_Editor - 2100000: No Name 2300000: Platonic 3300000: Platonic 4300000: Platonic - externalObjects: {} + 9500000: //RootNode materials: - importMaterials: 1 + importMaterials: 0 materialName: 0 materialSearch: 1 - materialLocation: 1 animations: legacyGenerateAnimations: 4 bakeSimulation: 0 @@ -32,15 +31,12 @@ ModelImporter: 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: @@ -48,18 +44,13 @@ ModelImporter: globalScale: 1 meshCompression: 0 addColliders: 0 - importVisibility: 1 - importBlendShapes: 1 - importCameras: 1 - importLights: 1 + importBlendShapes: 0 swapUVChannels: 0 generateSecondaryUV: 0 useFileUnits: 1 optimizeMeshForGPU: 1 keepQuads: 0 - weldVertices: 1 - preserveHierarchy: 0 - indexFormat: 0 + weldVertices: 0 secondaryUVAngleDistortion: 8 secondaryUVAreaDistortion: 15.000001 secondaryUVHardAngle: 88 @@ -69,8 +60,7 @@ ModelImporter: normalSmoothAngle: 60 normalImportMode: 0 tangentImportMode: 3 - normalCalculationMode: 4 - importAnimation: 1 + importAnimation: 0 copyAvatar: 0 humanDescription: serializedVersion: 2 @@ -86,7 +76,7 @@ ModelImporter: rootMotionBoneName: rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} hasTranslationDoF: 0 - hasExtraRoot: 0 + hasExtraRoot: 1 skeletonHasParents: 1 lastHumanDescriptionAvatarSource: {instanceID: 0} animationType: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Octa.fbx similarity index 100% rename from Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx rename to Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Octa.fbx diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx.meta b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Octa.fbx.meta similarity index 78% rename from Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx.meta rename to Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Octa.fbx.meta index c15b9b06fc9..fbb07323bc0 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Octa.fbx.meta +++ b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Octa.fbx.meta @@ -1,7 +1,9 @@ fileFormatVersion: 2 -guid: 1aaa9d3bbddd05947a42a42c3e627154 +guid: 1e23ec24c22068b4cbf47737c35e277b +timeCreated: 1493153463 +licenseType: Free ModelImporter: - serializedVersion: 22 + serializedVersion: 19 fileIDToRecycleName: 100000: CINEMA_4D_Editor 100002: //RootNode @@ -9,17 +11,14 @@ ModelImporter: 400000: CINEMA_4D_Editor 400002: //RootNode 400004: Platonic - 2000000: CINEMA_4D_Editor - 2100000: No Name 2300000: Platonic 3300000: Platonic 4300000: Platonic - externalObjects: {} + 9500000: //RootNode materials: - importMaterials: 1 + importMaterials: 0 materialName: 0 materialSearch: 1 - materialLocation: 1 animations: legacyGenerateAnimations: 4 bakeSimulation: 0 @@ -32,15 +31,12 @@ ModelImporter: 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: @@ -48,18 +44,13 @@ ModelImporter: globalScale: 1 meshCompression: 0 addColliders: 0 - importVisibility: 1 - importBlendShapes: 1 - importCameras: 1 - importLights: 1 + importBlendShapes: 0 swapUVChannels: 0 generateSecondaryUV: 0 useFileUnits: 1 optimizeMeshForGPU: 1 keepQuads: 0 - weldVertices: 1 - preserveHierarchy: 0 - indexFormat: 0 + weldVertices: 0 secondaryUVAngleDistortion: 8 secondaryUVAreaDistortion: 15.000001 secondaryUVHardAngle: 88 @@ -69,8 +60,7 @@ ModelImporter: normalSmoothAngle: 60 normalImportMode: 0 tangentImportMode: 3 - normalCalculationMode: 4 - importAnimation: 1 + importAnimation: 0 copyAvatar: 0 humanDescription: serializedVersion: 2 @@ -86,7 +76,7 @@ ModelImporter: rootMotionBoneName: rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} hasTranslationDoF: 0 - hasExtraRoot: 0 + hasExtraRoot: 1 skeletonHasParents: 1 lastHumanDescriptionAvatarSource: {instanceID: 0} animationType: 0 diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Platonic.fbx similarity index 100% rename from Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx rename to Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Platonic.fbx diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx.meta b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Platonic.fbx.meta similarity index 80% rename from Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx.meta rename to Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Platonic.fbx.meta index 839d5228393..ebaac730bb5 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Tooltips/Meshes/Model_Platonic.fbx.meta +++ b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_Platonic.fbx.meta @@ -1,20 +1,19 @@ fileFormatVersion: 2 -guid: 034bfc9f4fc03c7488059a9b3e7e0db7 +guid: 5942fa356be284c4a8d1d231519a7581 +timeCreated: 1486081727 +licenseType: Free ModelImporter: - serializedVersion: 22 + serializedVersion: 19 fileIDToRecycleName: 100000: //RootNode 400000: //RootNode - 2100000: Mat 2300000: //RootNode 3300000: //RootNode 4300000: Platonic_1 - externalObjects: {} materials: - importMaterials: 1 + importMaterials: 0 materialName: 0 materialSearch: 1 - materialLocation: 1 animations: legacyGenerateAnimations: 4 bakeSimulation: 0 @@ -27,15 +26,12 @@ ModelImporter: 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: @@ -43,18 +39,13 @@ ModelImporter: globalScale: 1 meshCompression: 0 addColliders: 0 - importVisibility: 1 - importBlendShapes: 1 - importCameras: 1 - importLights: 1 + importBlendShapes: 0 swapUVChannels: 0 generateSecondaryUV: 0 useFileUnits: 1 optimizeMeshForGPU: 1 keepQuads: 0 - weldVertices: 1 - preserveHierarchy: 0 - indexFormat: 0 + weldVertices: 0 secondaryUVAngleDistortion: 8 secondaryUVAreaDistortion: 15.000001 secondaryUVHardAngle: 88 @@ -64,8 +55,7 @@ ModelImporter: normalSmoothAngle: 60 normalImportMode: 0 tangentImportMode: 3 - normalCalculationMode: 4 - importAnimation: 1 + importAnimation: 0 copyAvatar: 0 humanDescription: serializedVersion: 2 diff --git a/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_PushButton.fbx b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_PushButton.fbx new file mode 100644 index 0000000000000000000000000000000000000000..3440c69fbac580edfb5d2f111a1f740419c1d29f GIT binary patch literal 77840 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 W^@jc18vE+mk2)r_L~!Sf|9=3i9Ln(k literal 0 HcmV?d00001 diff --git a/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_PushButton.fbx.meta b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_PushButton.fbx.meta new file mode 100644 index 00000000000..9cb3256d3a3 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/Model_PushButton.fbx.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: 5308c0eb5c6ed4647b3797671dc2e5f3 +timeCreated: 1486081427 +licenseType: Free +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: Cylinder + 100002: //RootNode + 100004: Tube + 400000: Cylinder + 400002: //RootNode + 400004: Tube + 2300000: Cylinder + 2300002: Tube + 3300000: Cylinder + 3300002: Tube + 4300000: Cylinder + 4300002: Tube + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 0 + 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: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/MouseandCheese.fbx b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/MouseandCheese.fbx new file mode 100644 index 0000000000000000000000000000000000000000..c49c5497c67e2649ba1d3e45ee65883edb7cff9e GIT binary patch literal 115888 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 T{p`$v2TmMo_C?7bdN%zp=Y|k8 literal 0 HcmV?d00001 diff --git a/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/balloon.fbx.meta b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/balloon.fbx.meta new file mode 100644 index 00000000000..d90f718b517 --- /dev/null +++ b/Assets/MixedRealityToolkit-Examples/StandardAssets/Models/balloon.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 54f72652009c7574a96c8d088d1c78ef +timeCreated: 1486079922 +licenseType: Free +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 100002: pCone1 + 100004: pCylinder1 + 100006: pSphere1 + 100008: ballon + 100010: Camera + 100012: Directional Light + 400000: //RootNode + 400002: pCone1 + 400004: pCylinder1 + 400006: pSphere1 + 400008: ballon + 400010: Camera + 400012: Directional Light + 2300000: pCone1 + 2300002: pCylinder1 + 2300004: pSphere1 + 3300000: pCone1 + 3300002: pCylinder1 + 3300004: pSphere1 + 4300000: pSphere1 + 4300002: pCone1 + 4300004: pCylinder1 + 7400000: Take 001 + 9500000: //RootNode + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 0 + 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: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: From 68bfcc5b4a559f414dd6e73bc15c71a773530671 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Wed, 24 Oct 2018 23:09:26 +0100 Subject: [PATCH 80/98] Fixing playspace instantiation --- .../_Core/Inspectors/MixedRealityToolkitInspector.cs | 1 + .../Profiles/MixedRealityToolkitConfigurationProfileInspector.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs index 9f5b1d20e5c..cbbf30758c3 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/MixedRealityToolkitInspector.cs @@ -93,6 +93,7 @@ public override void OnInspectorGUI() public static void CreateMixedRealityOrchestratorObject() { Selection.activeObject = MixedRealityToolkit.Instance; + var playspace = MixedRealityToolkit.Instance.MixedRealityPlayspace; EditorGUIUtility.PingObject(MixedRealityToolkit.Instance); } } diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs index 76d7119077a..a3bc1391fcc 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityToolkitConfigurationProfileInspector.cs @@ -58,6 +58,7 @@ private void OnEnable() "Yes", "Later")) { + var playspace = MixedRealityToolkit.Instance.MixedRealityPlayspace; MixedRealityToolkit.Instance.ActiveProfile = configurationProfile; } else From bb478a06645d9e93ce18879aa82e3985929ef7e3 Mon Sep 17 00:00:00 2001 From: "Jonathan Palmer [MSoft Work]" Date: Wed, 24 Oct 2018 16:03:04 -0700 Subject: [PATCH 81/98] Added tooltip backgrounds and default line material. --- .../StandardAssets/Materials/TooltipLines.mat | 141 +++++++++++++++++ .../Materials/TooltipLines.mat.meta | 10 ++ .../Materials/TooltipWithBorder.mat | 143 ++++++++++++++++++ .../Materials/TooltipWithBorder.mat.meta | 8 + .../Materials/TooltipWithoutBorder.mat | 143 ++++++++++++++++++ .../Materials/TooltipWithoutBorder.mat.meta | 8 + 6 files changed, 453 insertions(+) create mode 100644 Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipLines.mat create mode 100644 Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipLines.mat.meta create mode 100644 Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithBorder.mat create mode 100644 Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithBorder.mat.meta create mode 100644 Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithoutBorder.mat create mode 100644 Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithoutBorder.mat.meta diff --git a/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipLines.mat b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipLines.mat new file mode 100644 index 00000000000..0b547cc04ef --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipLines.mat @@ -0,0 +1,141 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TooltipLines + m_Shader: {fileID: 207, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _BORDER_LIGHT_USES_HOVER_COLOR _DIRECTIONAL_LIGHT _DISABLE_ALBEDO_MAP + _EMISSION _HOVER_LIGHT _REFLECTIONS _SPECULAR_HIGHLIGHTS + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _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: 0 + - _BlendOp: 0 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightUsesHoverColor: 1 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 1 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.002 + - _EnableChannelMap: 0 + - _EnableEmission: 1 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableNormalMap: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _HoverLight: 1 + - _HoverLightOpaque: 0 + - _InnerGlow: 0 + - _InstancedColor: 0 + - _InvFade: 1 + - _Metallic: 0 + - _Mode: 0 + - _NearPlaneFade: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Reflections: 1 + - _Refraction: 0 + - _RefractiveIndex: 0 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _UVSec: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _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} + - _EmissiveColor: {r: 0.7941176, g: 0.7941176, b: 0.7941176, 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: 1, g: 1, b: 1, a: 0.75} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipLines.mat.meta b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipLines.mat.meta new file mode 100644 index 00000000000..44b5208c001 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipLines.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3c8f5655de1232549bc616142c6119d7 +timeCreated: 1520965306 +licenseType: Pro +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithBorder.mat b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithBorder.mat new file mode 100644 index 00000000000..408b65ef8ff --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithBorder.mat @@ -0,0 +1,143 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TooltipWithBorder + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _BORDER_LIGHT _BORDER_LIGHT_USES_HOVER_COLOR _DIRECTIONAL_LIGHT + _DISABLE_ALBEDO_MAP _LIGHTMAPPING_REALTIME _SPECULAR_HIGHLIGHTS + m_LightmapFlags: 1 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _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: 0 + - _BlendOp: 0 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightUsesHoverColor: 1 + - _BorderMinValue: 0.108 + - _BorderWidth: 0.132 + - _BumpScale: 1 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 1 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.002 + - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableNormalMap: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _InnerGlow: 0 + - _InstancedColor: 0 + - _Lightmapping: 1 + - _Metallic: 0 + - _Mode: 0 + - _NearPlaneFade: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _UVSec: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _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} + - _EmissionColorUI: {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} + - _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} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithBorder.mat.meta b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithBorder.mat.meta new file mode 100644 index 00000000000..67321387f55 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithBorder.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 151c96065fff785478dd7e3d33953d55 +timeCreated: 1435687483 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithoutBorder.mat b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithoutBorder.mat new file mode 100644 index 00000000000..8199a5298a0 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithoutBorder.mat @@ -0,0 +1,143 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TooltipWithoutBorder + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _BORDER_LIGHT _BORDER_LIGHT_USES_HOVER_COLOR _DIRECTIONAL_LIGHT + _DISABLE_ALBEDO_MAP _LIGHTMAPPING_REALTIME _SPECULAR_HIGHLIGHTS + m_LightmapFlags: 1 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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} + - _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: 0 + - _BlendOp: 0 + - _BorderLight: 1 + - _BorderLightOpaque: 0 + - _BorderLightUsesHoverColor: 1 + - _BorderMinValue: 0.108 + - _BorderWidth: 0 + - _BumpScale: 1 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 1 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.002 + - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableNormalMap: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _InnerGlow: 0 + - _InstancedColor: 0 + - _Lightmapping: 1 + - _Metallic: 0 + - _Mode: 0 + - _NearPlaneFade: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _UVSec: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _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} + - _EmissionColorUI: {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} + - _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} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithoutBorder.mat.meta b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithoutBorder.mat.meta new file mode 100644 index 00000000000..442be0da6fc --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/TooltipWithoutBorder.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d32de94858bee047bb11ab4714b6d9e +timeCreated: 1435687483 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: From e86d7f9c22f2f586d9efd5c2a718fb4f11834ce8 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Thu, 25 Oct 2018 17:55:41 -0700 Subject: [PATCH 82/98] Better editor logging for device portal --- .../Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs | 2 ++ .../Utilities/WindowsDevicePortal/DevicePortal.cs | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs b/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs index 2257160b203..1d5edcbef5c 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/BuildAndDeploy/UwpBuildDeployWindow.cs @@ -1292,6 +1292,7 @@ private static async Task InstallOnTargetDeviceAsync(string buildPath, DeviceInf if (string.IsNullOrEmpty(PackageName)) { + Debug.LogWarning("No Package Name Found"); return; } @@ -1347,6 +1348,7 @@ private static async Task InstallAppOnDevicesListAsync(string buildPath, DeviceP { if (string.IsNullOrEmpty(PackageName)) { + Debug.LogWarning("No Package Name Found"); return; } diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs b/Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs index 878e27c6f0d..d1db5d78cb4 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs @@ -360,6 +360,8 @@ public static async Task InstallAppAsync(string appFullPath, DeviceInfo ta var isAuth = await EnsureAuthenticationAsync(targetDevice); if (!isAuth) { return false; } + Debug.Log($"Starting install on {targetDevice.MachineName}..."); + // Calculate the cert and dependency paths string fileName = Path.GetFileName(appFullPath); string certFullPath = Path.ChangeExtension(appFullPath, ".cer"); @@ -497,12 +499,14 @@ public static async Task UninstallAppAsync(string packageName, DeviceInfo return false; } + Debug.Log($"Attempting to uninstall {packageName} on {targetDevice.MachineName}"); + string query = $"{string.Format(InstallQuery, FinalizeUrl(targetDevice.IP))}?package={UnityWebRequest.EscapeURL(appInfo.PackageFullName)}"; var response = await Rest.DeleteAsync(query, targetDevice.Authorization); if (response.Successful) { - Debug.LogFormat("Successfully uninstalled {0} on {1}.", packageName, targetDevice.MachineName); + Debug.Log($"Successfully uninstalled {packageName} on {targetDevice.MachineName}."); } else if (!response.Successful) @@ -630,7 +634,7 @@ public static async Task DownloadLogFileAsync(string packageName, Device return string.Empty; } - string logFile = $"{Application.temporaryCachePath}/{targetDevice.MachineName}_{DateTime.Now.Year}{DateTime.Now.Month}{DateTime.Now.Day}{DateTime.Now.Hour}{DateTime.Now.Minute}{DateTime.Now.Second}_deviceLog.txt"; + string logFile = $"{Application.temporaryCachePath}/{targetDevice.MachineName}_{DateTime.Now.Year}{DateTime.Now.Month}{DateTime.Now.Day}{DateTime.Now.Hour}{DateTime.Now.Minute}{DateTime.Now.Second}_player.txt"; var response = await Rest.GetAsync(string.Format(FileQuery, FinalizeUrl(targetDevice.IP), appInfo.PackageFullName), targetDevice.Authorization); if (!response.Successful) @@ -820,6 +824,10 @@ public static async Task EnsureAuthenticationAsync(DeviceInfo targetDevice // Strip the beginning of the cookie header targetDevice.CsrfToken = targetDevice.CsrfToken.Replace("CSRF-Token=", string.Empty); } + else + { + Debug.LogError($"Authentication failed! {response.ResponseBody}"); + } if (!string.IsNullOrEmpty(targetDevice.CsrfToken)) { From 0c39e159bdf6a2938f17a8b10166ea46b1b7799e Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Thu, 25 Oct 2018 17:57:09 -0700 Subject: [PATCH 83/98] dots --- .../_Core/Utilities/WindowsDevicePortal/DevicePortal.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs b/Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs index d1db5d78cb4..25a8c88c45c 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs @@ -499,7 +499,7 @@ public static async Task UninstallAppAsync(string packageName, DeviceInfo return false; } - Debug.Log($"Attempting to uninstall {packageName} on {targetDevice.MachineName}"); + Debug.Log($"Attempting to uninstall {packageName} on {targetDevice.MachineName}..."); string query = $"{string.Format(InstallQuery, FinalizeUrl(targetDevice.IP))}?package={UnityWebRequest.EscapeURL(appInfo.PackageFullName)}"; var response = await Rest.DeleteAsync(query, targetDevice.Authorization); From 16786868a0a0f6e95d2687e115ed846f3423e099 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Fri, 26 Oct 2018 12:45:17 +0100 Subject: [PATCH 84/98] Fixes to resolve #2979 1: Cleared out invalid serialised "services" from the DefaultMixedRealityToolkitConfigurationProfile.asset 2: Removed serialization functions from the MixedRealityToolkitConfigurationProfile script Continuing to address other comments noted in the issue, including the double use of "IsCoreSystem" --- ...edRealityToolkitConfigurationProfile.asset | 6 ---- ...MixedRealityToolkitConfigurationProfile.cs | 30 +------------------ 2 files changed, 1 insertion(+), 35 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset index 0e22017a299..73e538a0c70 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset @@ -13,12 +13,6 @@ MonoBehaviour: m_EditorClassIdentifier: isCustomProfile: 0 initialServiceTypes: - - reference: Microsoft.MixedReality.Toolkit.SDK.Teleportation.MixedRealityTeleportManager, - Microsoft.MixedReality.Toolkit.SDK - - reference: Microsoft.MixedReality.Toolkit.SDK.BoundarySystem.MixedRealityBoundaryManager, - Microsoft.MixedReality.Toolkit.SDK - - reference: Microsoft.MixedReality.Toolkit.SDK.Input.MixedRealityInputManager, - Microsoft.MixedReality.Toolkit.SDK targetExperienceScale: 3 enableCameraProfile: 1 cameraProfile: {fileID: 11400000, guid: 8089ccfdd4494cd38f676f9fc1f46a04, type: 2} diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs index 2711347eee7..7e1353954ba 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs @@ -21,7 +21,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Definitions /// Configuration profile settings for the Mixed Reality Toolkit. /// [CreateAssetMenu(menuName = "Mixed Reality Toolkit/Mixed Reality Toolkit Configuration Profile", fileName = "MixedRealityToolkitConfigurationProfile", order = (int)CreateProfileMenuItemIndices.Configuration)] - public class MixedRealityToolkitConfigurationProfile : BaseMixedRealityProfile, ISerializationCallbackReceiver + public class MixedRealityToolkitConfigurationProfile : BaseMixedRealityProfile { #region Service Registry properties @@ -238,33 +238,5 @@ public SystemType DiagnosticsSystemSystemType public MixedRealityRegisteredServiceProvidersProfile RegisteredServiceProvidersProfile => registeredServiceProvidersProfile; #endregion Mixed Reality Toolkit configurable properties - - #region ISerializationCallbackReceiver Implementation - - /// - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - var count = ActiveServices.Count; - initialServiceTypes = new SystemType[count]; - - foreach (var service in ActiveServices) - { - --count; - initialServiceTypes[count] = new SystemType(service.Value.GetType()); - } - } - - /// - void ISerializationCallbackReceiver.OnAfterDeserialize() - { - if (ActiveServices.Count == 0) - { - for (int i = 0; i < initialServiceTypes?.Length; i++) - { - ActiveServices.Add(initialServiceTypes[i], Activator.CreateInstance(initialServiceTypes[i]) as IMixedRealityService); - } - } - } } - #endregion ISerializationCallbackReceiver Implementation } From 7ac93cc9ba73aa228fd4e05fbf6fcf8d72f68131 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Fri, 26 Oct 2018 13:01:00 +0100 Subject: [PATCH 85/98] Removed unneeded field --- .../Definitions/MixedRealityToolkitConfigurationProfile.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs index 7e1353954ba..43a6a841faf 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/MixedRealityToolkitConfigurationProfile.cs @@ -25,9 +25,6 @@ public class MixedRealityToolkitConfigurationProfile : BaseMixedRealityProfile { #region Service Registry properties - [SerializeField] - private SystemType[] initialServiceTypes = null; - /// /// Dictionary list of active Systems used by the Mixed Reality Toolkit at runtime /// From 045f8edf82189a57fd5dcd0d9a36cc4cf2595f76 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Fri, 26 Oct 2018 13:04:05 +0100 Subject: [PATCH 86/98] * Resolved double calling of "IsSystemType" * Added success / fail return to RegisterService call * Updated Internal use of RegisterService to capture success / Fail response --- .../_Core/Services/MixedRealityToolkit.cs | 58 ++++++++++--------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index 55318909ac7..eda542a2289 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -177,9 +177,8 @@ private void Initialize() Utilities.Editor.InputMappingAxisUtility.CheckUnityInputManagerMappings(Definitions.Devices.ControllerMappingLibrary.UnityInputManagerAxes); #endif - RegisterService(typeof(IMixedRealityInputSystem), Activator.CreateInstance(ActiveProfile.InputSystemType) as IMixedRealityInputSystem); - - if (InputSystem == null) + if (!RegisterService(typeof(IMixedRealityInputSystem), Activator.CreateInstance(ActiveProfile.InputSystemType) as IMixedRealityInputSystem) || + InputSystem == null) { Debug.LogError("Failed to start the Input System!"); } @@ -188,9 +187,8 @@ private void Initialize() // If the Boundary system has been selected for initialization in the Active profile, enable it in the project if (ActiveProfile.IsBoundarySystemEnabled) { - RegisterService(typeof(IMixedRealityBoundarySystem), Activator.CreateInstance(ActiveProfile.BoundarySystemSystemType) as IMixedRealityBoundarySystem); - - if (BoundarySystem == null) + if (!RegisterService(typeof(IMixedRealityBoundarySystem), Activator.CreateInstance(ActiveProfile.BoundarySystemSystemType) as IMixedRealityBoundarySystem) || + BoundarySystem == null) { Debug.LogError("Failed to start the Boundary System!"); } @@ -200,9 +198,8 @@ private void Initialize() // If the Teleport system has been selected for initialization in the Active profile, enable it in the project if (ActiveProfile.IsTeleportSystemEnabled) { - RegisterService(typeof(IMixedRealityTeleportSystem), Activator.CreateInstance(ActiveProfile.TeleportSystemSystemType) as IMixedRealityTeleportSystem); - - if (TeleportSystem == null) + if (!RegisterService(typeof(IMixedRealityTeleportSystem), Activator.CreateInstance(ActiveProfile.TeleportSystemSystemType) as IMixedRealityTeleportSystem) || + TeleportSystem == null) { Debug.LogError("Failed to start the Teleport System!"); } @@ -210,9 +207,8 @@ private void Initialize() if (ActiveProfile.IsDiagnosticsSystemEnabled) { - RegisterService(typeof(IMixedRealityDiagnosticsSystem), Activator.CreateInstance(ActiveProfile.DiagnosticsSystemSystemType) as IMixedRealityDiagnosticsSystem); - - if (DiagnosticsSystem == null) + if (!RegisterService(typeof(IMixedRealityDiagnosticsSystem), Activator.CreateInstance(ActiveProfile.DiagnosticsSystemSystemType) as IMixedRealityDiagnosticsSystem) || + DiagnosticsSystem == null) { Debug.LogError("Failed to start the Diagnostics System!"); } @@ -231,7 +227,10 @@ private void Initialize() { if (configuration.ComponentType.Type != null) { - RegisterService(typeof(IMixedRealityExtensionService), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityExtensionService); + if(!RegisterService(typeof(IMixedRealityExtensionService), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityExtensionService)) + { + Debug.LogError($"Failed to register the {configuration.ComponentType.Type} Extension Service!"); + } } } } @@ -489,50 +488,55 @@ private void OnDestroy() /// /// The interface type for the system to be managed. E.G. InputSystem, BoundarySystem /// The Instance of the service class to register - public void RegisterService(Type type, IMixedRealityService service) + public bool RegisterService(Type type, IMixedRealityService service) { if (ActiveProfile == null) { Debug.LogError($"Unable to add a new {type.Name} Service as the Mixed Reality Toolkit has to Active Profile"); + return false; } if (type == null) { Debug.LogWarning("Unable to add a manager of type null."); - return; + return false; } if (service == null) { Debug.LogWarning("Unable to add a manager with a null instance."); - return; + return false; } if (IsCoreSystem(type)) { IMixedRealityService preExistingService; - if (IsCoreSystem(type)) - { - ActiveProfile.ActiveServices.TryGetValue(type, out preExistingService); - } - else - { - GetService(type, out preExistingService); - } + + ActiveProfile.ActiveServices.TryGetValue(type, out preExistingService); if (preExistingService == null) { ActiveProfile.ActiveServices.Add(type, service); + return true; } else { Debug.LogError($"There's already a {type.Name} registered."); + return false; } } else { - MixedRealityComponents.Add(new Tuple(type, (IMixedRealityExtensionService)service)); - if (!isInitializing) { service.Initialize(); } - mixedRealityComponentsCount = MixedRealityComponents.Count; + try + { + MixedRealityComponents.Add(new Tuple(type, (IMixedRealityExtensionService)service)); + if (!isInitializing) { service.Initialize(); } + mixedRealityComponentsCount = MixedRealityComponents.Count; + return true; + } + catch (Exception) + { + return false; + } } } From 0f7331b70f83ff93e1f8c15d7cad4d0b38b80f84 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Fri, 26 Oct 2018 15:04:44 +0100 Subject: [PATCH 87/98] Incorporated @StephenHodgson 's IsAssignableFrom fix --- .../_Core/Services/MixedRealityToolkit.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index eda542a2289..df7afa4c712 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -1028,10 +1028,10 @@ private bool IsCoreSystem(Type type) return false; } - return type == typeof(IMixedRealityInputSystem) || - type == typeof(IMixedRealityTeleportSystem) || - type == typeof(IMixedRealityBoundarySystem) || - type == typeof(IMixedRealityDiagnosticsSystem); + return typeof(IMixedRealityInputSystem).IsAssignableFrom(type) || + typeof(IMixedRealityTeleportSystem).IsAssignableFrom(type) || + typeof(IMixedRealityBoundarySystem).IsAssignableFrom(type) || + typeof(IMixedRealityDiagnosticsSystem).IsAssignableFrom(type); } /// From 985be0d0bb42233e9329a95f25fc35cc4a7c9523 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 26 Oct 2018 15:54:58 +0100 Subject: [PATCH 88/98] Update Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset Co-Authored-By: SimonDarksideJ --- .../DefaultMixedRealityToolkitConfigurationProfile.asset | 1 - 1 file changed, 1 deletion(-) diff --git a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset index 73e538a0c70..ab91cdb05fb 100644 --- a/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset +++ b/Assets/MixedRealityToolkit-SDK/Profiles/DefaultMixedRealityToolkitConfigurationProfile.asset @@ -12,7 +12,6 @@ MonoBehaviour: m_Name: DefaultMixedRealityToolkitConfigurationProfile m_EditorClassIdentifier: isCustomProfile: 0 - initialServiceTypes: targetExperienceScale: 3 enableCameraProfile: 1 cameraProfile: {fileID: 11400000, guid: 8089ccfdd4494cd38f676f9fc1f46a04, type: 2} From 7d829ec22bffe516473c1ce2e135e6f991daeaf4 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Fri, 26 Oct 2018 16:07:03 +0100 Subject: [PATCH 89/98] Replaced Try/Catch with if (typeof(IMixedRealityExtensionService).IsAssignableFrom(type)) --- .../_Core/Services/MixedRealityToolkit.cs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index df7afa4c712..09402d79f62 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -526,17 +526,16 @@ public bool RegisterService(Type type, IMixedRealityService service) } else { - try - { - MixedRealityComponents.Add(new Tuple(type, (IMixedRealityExtensionService)service)); - if (!isInitializing) { service.Initialize(); } - mixedRealityComponentsCount = MixedRealityComponents.Count; - return true; - } - catch (Exception) + if (typeof(IMixedRealityExtensionService).IsAssignableFrom(type)) { + Debug.LogError($"Unable to register {service}. Concrete type does not implement the IMixedRealityExtensionService implementation."); return false; } + + MixedRealityComponents.Add(new Tuple(type, (IMixedRealityExtensionService)service)); + if (!isInitializing) { service.Initialize(); } + mixedRealityComponentsCount = MixedRealityComponents.Count; + return true; } } From bc1510077ff0937cefdc81d5f0a37c87faa56fa2 Mon Sep 17 00:00:00 2001 From: "Simon (Darkside) Jackson" Date: Fri, 26 Oct 2018 16:11:00 +0100 Subject: [PATCH 90/98] Inverted the impossible --- .../MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index 09402d79f62..124d113e05d 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -526,7 +526,7 @@ public bool RegisterService(Type type, IMixedRealityService service) } else { - if (typeof(IMixedRealityExtensionService).IsAssignableFrom(type)) + if (!typeof(IMixedRealityExtensionService).IsAssignableFrom(type)) { Debug.LogError($"Unable to register {service}. Concrete type does not implement the IMixedRealityExtensionService implementation."); return false; From 95e12ce05ec77b7f38fc838ecf04cddfcd31923f Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 26 Oct 2018 11:14:41 -0700 Subject: [PATCH 91/98] Updated MixedRealityToolkit Unit Tests --- .../MixedRealityToolkitTests.cs | 92 ++++--------------- .../_Core/Services/MixedRealityToolkit.cs | 31 +++---- 2 files changed, 34 insertions(+), 89 deletions(-) diff --git a/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs index 4ab5676b0ef..006cc11a235 100644 --- a/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs +++ b/Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs @@ -51,7 +51,7 @@ public void Test03_CreateMixedRealityOrchestrator() // Create Test Configuration Assert.AreEqual(0, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count); - Assert.AreEqual(3, MixedRealityToolkit.Instance.MixedRealityComponents.Count); + Assert.AreEqual(0, MixedRealityToolkit.Instance.MixedRealityComponents.Count); } [Test] @@ -66,7 +66,7 @@ public void Test04_CreateMixedRealityInputSystem() Assert.IsNotNull(MixedRealityToolkit.Instance.ActiveProfile); Assert.IsNotEmpty(MixedRealityToolkit.Instance.ActiveProfile.ActiveServices); Assert.AreEqual(1, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count); - Assert.AreEqual(3, MixedRealityToolkit.Instance.MixedRealityComponents.Count); + Assert.AreEqual(0, MixedRealityToolkit.Instance.MixedRealityComponents.Count); } [Test] @@ -117,16 +117,14 @@ public void Test08_CreateMixedRealityComponent() { InitializeMixedRealityToolkitScene(); - var component = new TestComponent1(); - // Add Input System MixedRealityToolkit.Instance.RegisterService(typeof(IMixedRealityInputSystem), new MixedRealityInputManager()); // Add test component - MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), component); + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); // Tests - Assert.AreEqual(4, MixedRealityToolkit.Instance.MixedRealityComponents.Count); + Assert.AreEqual(1, MixedRealityToolkit.Instance.MixedRealityComponents.Count); } [Test] @@ -157,14 +155,15 @@ public void Test10_TestMixedRealityComponents() // Add test component MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); + MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2()); + MixedRealityToolkit.Instance.RegisterService(typeof(IFailComponent), new TestFailComponent()); + LogAssert.Expect(LogType.Error, $"Unable to register {typeof(IFailComponent)}. Concrete type does not implement the IMixedRealityExtensionService implementation."); - // Retrieve Component1 - var components = MixedRealityToolkit.Instance.GetActiveServices(typeof(ITestComponent1)); + // Retrieve all registered IMixedRealityExtensionServices + var components = MixedRealityToolkit.Instance.GetActiveServices(typeof(IMixedRealityExtensionService)); // Tests - Assert.AreEqual(3, components.Count); + Assert.AreEqual(2, components.Count); } [Test] @@ -178,16 +177,9 @@ public void Test11_TestMixedRealityComponent2DoesNotReturn() // Add test component MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1()); - try - { - // Validate non-existent component - MixedRealityToolkit.Instance.GetService(typeof(ITestComponent2), "Test2"); - Assert.Fail(); - } - catch (Exception) - { - // ignored - } + // Validate non-existent component + MixedRealityToolkit.Instance.GetService(typeof(ITestComponent2), "Test2"); + LogAssert.Expect(LogType.Error, "Unable to find Test2 Manager."); } [Test] @@ -226,7 +218,7 @@ public void Test13_CreateMixedRealityComponentNameWithInput() Assert.IsNotNull(MixedRealityToolkit.Instance.ActiveProfile); Assert.IsNotEmpty(MixedRealityToolkit.Instance.ActiveProfile.ActiveServices); Assert.AreEqual(1, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count); - Assert.AreEqual(5, MixedRealityToolkit.Instance.MixedRealityComponents.Count); + Assert.AreEqual(2, MixedRealityToolkit.Instance.MixedRealityComponents.Count); } [Test] @@ -300,7 +292,7 @@ public void Test16_GetAllMixedRealityComponents() var allComponents = MixedRealityToolkit.Instance.MixedRealityComponents; // Tests - Assert.AreEqual(7, allComponents.Count); + Assert.AreEqual(4, allComponents.Count); } [Test] @@ -334,9 +326,9 @@ private static void InitializeMixedRealityToolkitScene() #region Test Components - public interface ITestComponent1 : IMixedRealityService { } + public interface ITestComponent1 : IMixedRealityExtensionService { } - public interface ITestComponent2 : IMixedRealityService { } + public interface ITestComponent2 : IMixedRealityExtensionService { } internal class TestComponent1 : BaseService, ITestComponent1 { @@ -350,30 +342,6 @@ public override void Initialize() { InputSystem = MixedRealityToolkit.Instance.GetService(); } - - /// - /// Optional Update function to perform per-frame updates of the service - /// - public override void Update() - { - // TODO Update stuff - } - - /// - /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Toolkit is replaced - /// - public override void Reset() - { - // TODO React to profile change - } - - /// - /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Toolkit is destroyed - /// - public override void Destroy() - { - // TODO Destroy stuff - } } internal class TestComponent2 : BaseService, ITestComponent2 @@ -388,31 +356,11 @@ public override void Initialize() { InputSystem = MixedRealityToolkit.Instance.GetService(); } + } - /// - /// Optional Update function to perform per-frame updates of the service - /// - public override void Update() - { - // TODO Update stuff - } - - /// - /// Optional ProfileUpdate function to allow reconfiguration when the active configuration profile of the Mixed Reality Toolkit is replaced - /// - public override void Reset() - { - // TODO React to profile change - } + internal interface IFailComponent : IMixedRealityService { } - /// - /// Optional Destroy function to perform cleanup of the service before the Mixed Reality Toolkit is destroyed - /// - public override void Destroy() - { - // TODO Destroy stuff - } - } + internal class TestFailComponent : BaseService, IFailComponent { } #endregion Test Components } \ No newline at end of file diff --git a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs index 124d113e05d..16aee17d48d 100644 --- a/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs +++ b/Assets/MixedRealityToolkit/_Core/Services/MixedRealityToolkit.cs @@ -227,7 +227,7 @@ private void Initialize() { if (configuration.ComponentType.Type != null) { - if(!RegisterService(typeof(IMixedRealityExtensionService), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityExtensionService)) + if (!RegisterService(typeof(IMixedRealityExtensionService), Activator.CreateInstance(configuration.ComponentType, configuration.ComponentName, configuration.Priority) as IMixedRealityExtensionService)) { Debug.LogError($"Failed to register the {configuration.ComponentType.Type} Extension Service!"); } @@ -501,6 +501,7 @@ public bool RegisterService(Type type, IMixedRealityService service) Debug.LogWarning("Unable to add a manager of type null."); return false; } + if (service == null) { Debug.LogWarning("Unable to add a manager with a null instance."); @@ -518,25 +519,21 @@ public bool RegisterService(Type type, IMixedRealityService service) ActiveProfile.ActiveServices.Add(type, service); return true; } - else - { - Debug.LogError($"There's already a {type.Name} registered."); - return false; - } + + Debug.LogError($"There's already a {type.Name} registered."); + return false; } - else - { - if (!typeof(IMixedRealityExtensionService).IsAssignableFrom(type)) - { - Debug.LogError($"Unable to register {service}. Concrete type does not implement the IMixedRealityExtensionService implementation."); - return false; - } - MixedRealityComponents.Add(new Tuple(type, (IMixedRealityExtensionService)service)); - if (!isInitializing) { service.Initialize(); } - mixedRealityComponentsCount = MixedRealityComponents.Count; - return true; + if (!typeof(IMixedRealityExtensionService).IsAssignableFrom(type)) + { + Debug.LogError($"Unable to register {type}. Concrete type does not implement the IMixedRealityExtensionService implementation."); + return false; } + + MixedRealityComponents.Add(new Tuple(type, (IMixedRealityExtensionService)service)); + if (!isInitializing) { service.Initialize(); } + mixedRealityComponentsCount = MixedRealityComponents.Count; + return true; } /// From 6a13a7b53c36f7d35e8d58f34361a248904eb4b5 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 26 Oct 2018 13:57:38 -0700 Subject: [PATCH 92/98] Renamed `EnforceEditorSettings.cs` -> `MixedRealityEditorSettings.cs` --- ...EnforceEditorSettings.cs => MixedRealityEditorSettings.cs} | 4 ++-- ...torSettings.cs.meta => MixedRealityEditorSettings.cs.meta} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/{EnforceEditorSettings.cs => MixedRealityEditorSettings.cs} (99%) rename Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/{EnforceEditorSettings.cs.meta => MixedRealityEditorSettings.cs.meta} (100%) diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/EnforceEditorSettings.cs b/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs similarity index 99% rename from Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/EnforceEditorSettings.cs rename to Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs index 5e7d7c32829..4175b1582a5 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/EnforceEditorSettings.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs @@ -11,7 +11,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Utilities.Editor.Setup /// Sets Force Text Serialization and visible meta files in all projects that use the Mixed Reality Toolkit. /// [InitializeOnLoad] - public class EnforceEditorSettings + public class MixedRealityEditorSettings { private const string SessionKey = "_MixedRealityToolkit_Editor_ShownSettingsPrompts"; private const string BuildTargetKey = "_MixedRealityToolkit_Editor_Settings_CurrentBuildTarget"; @@ -36,7 +36,7 @@ public static string MixedRealityToolkit_RelativeFolderPath } } - static EnforceEditorSettings() + static MixedRealityEditorSettings() { SetIconTheme(); diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/EnforceEditorSettings.cs.meta b/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs.meta similarity index 100% rename from Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/EnforceEditorSettings.cs.meta rename to Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs.meta From 8bf189d1bb0f4f16e02b0b542be7036e113eb545 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 26 Oct 2018 14:37:27 -0700 Subject: [PATCH 93/98] Updated relative icon paths --- .../MixedRealityToolkit.asmdef | 3 +- .../Devices/ControllerMappingLibrary.cs | 69 ++++++++++--------- ...ealityBaseConfigurationProfileInspector.cs | 5 +- .../Setup/MixedRealityEditorSettings.cs | 8 ++- 4 files changed, 45 insertions(+), 40 deletions(-) diff --git a/Assets/MixedRealityToolkit/MixedRealityToolkit.asmdef b/Assets/MixedRealityToolkit/MixedRealityToolkit.asmdef index 1c9662bae83..080b4226805 100644 --- a/Assets/MixedRealityToolkit/MixedRealityToolkit.asmdef +++ b/Assets/MixedRealityToolkit/MixedRealityToolkit.asmdef @@ -2,7 +2,8 @@ "name": "Microsoft.MixedReality.Toolkit", "references": [ "Microsoft.MixedReality.Toolkit.Core.Utilities.Editor", - "Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities.Editor" + "Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities.Editor", + "Microsoft.MixedReality.Toolkit.Core.Utilities.Editor.Setup" ], "optionalUnityReferences": [], "includePlatforms": [], diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/Devices/ControllerMappingLibrary.cs b/Assets/MixedRealityToolkit/_Core/Definitions/Devices/ControllerMappingLibrary.cs index 419d538ae14..b66b17e1e5f 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/Devices/ControllerMappingLibrary.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/Devices/ControllerMappingLibrary.cs @@ -4,6 +4,7 @@ #if UNITY_EDITOR using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities; using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities.Editor; +using Microsoft.MixedReality.Toolkit.Core.Utilities.Editor.Setup; using UnityEditor; using UnityEngine; #endif @@ -237,7 +238,7 @@ public static Texture2D GenericControllerWhiteScaled { if (genericControllerWhiteScaled == null) { - genericControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/Generic_controller_white_scaled.png", typeof(Texture2D)); + genericControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/Generic_controller_white_scaled.png", typeof(Texture2D)); } return genericControllerWhiteScaled; @@ -252,7 +253,7 @@ public static Texture2D GenericControllerBlackScaled { if (genericControllerBlackScaled == null) { - genericControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/Generic_controller_black_scaled.png", typeof(Texture2D)); + genericControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/Generic_controller_black_scaled.png", typeof(Texture2D)); } return genericControllerBlackScaled; @@ -267,7 +268,7 @@ public static Texture2D XboxControllerWhite { if (xboxControllerWhite == null) { - xboxControllerWhite = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/XboxController_white.png", typeof(Texture2D)); + xboxControllerWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/XboxController_white.png", typeof(Texture2D)); } return xboxControllerWhite; @@ -282,7 +283,7 @@ public static Texture2D XboxControllerWhiteScaled { if (xboxControllerWhiteScaled == null) { - xboxControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/XboxController_white_scaled.png", typeof(Texture2D)); + xboxControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/XboxController_white_scaled.png", typeof(Texture2D)); } return xboxControllerWhiteScaled; @@ -297,7 +298,7 @@ public static Texture2D XboxControllerBlack { if (xboxControllerBlack == null) { - xboxControllerBlack = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/XboxController_black.png", typeof(Texture2D)); + xboxControllerBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/XboxController_black.png", typeof(Texture2D)); } return xboxControllerBlack; @@ -312,7 +313,7 @@ public static Texture2D XboxControllerBlackScaled { if (xboxControllerBlackScaled == null) { - xboxControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/XboxController_black_scaled.png", typeof(Texture2D)); + xboxControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/XboxController_black_scaled.png", typeof(Texture2D)); } return xboxControllerBlackScaled; @@ -327,7 +328,7 @@ public static Texture2D OculusRemoteControllerWhite { if (oculusRemoteControllerWhite == null) { - oculusRemoteControllerWhite = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_white.png", typeof(Texture2D)); + oculusRemoteControllerWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_white.png", typeof(Texture2D)); } return oculusRemoteControllerWhite; @@ -342,7 +343,7 @@ public static Texture2D OculusRemoteControllerWhiteScaled { if (oculusRemoteControllerWhiteScaled == null) { - oculusRemoteControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_white_scaled.png", typeof(Texture2D)); + oculusRemoteControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_white_scaled.png", typeof(Texture2D)); } return oculusRemoteControllerWhiteScaled; @@ -357,7 +358,7 @@ public static Texture2D OculusRemoteControllerBlack { if (oculusRemoteControllerBlack == null) { - oculusRemoteControllerBlack = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_black.png", typeof(Texture2D)); + oculusRemoteControllerBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_black.png", typeof(Texture2D)); } return oculusRemoteControllerBlack; @@ -372,7 +373,7 @@ public static Texture2D OculusRemoteControllerBlackScaled { if (oculusRemoteControllerBlackScaled == null) { - oculusRemoteControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_black_scaled.png", typeof(Texture2D)); + oculusRemoteControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_black_scaled.png", typeof(Texture2D)); } return oculusRemoteControllerBlackScaled; @@ -387,7 +388,7 @@ public static Texture2D WmrControllerLeftWhite { if (wmrControllerLeftWhite == null) { - wmrControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_white.png", typeof(Texture2D)); + wmrControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_white.png", typeof(Texture2D)); } return wmrControllerLeftWhite; @@ -402,7 +403,7 @@ public static Texture2D WmrControllerLeftWhiteScaled { if (wmrControllerLeftWhiteScaled == null) { - wmrControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_white_scaled.png", typeof(Texture2D)); + wmrControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_white_scaled.png", typeof(Texture2D)); } return wmrControllerLeftWhiteScaled; @@ -417,7 +418,7 @@ public static Texture2D WmrControllerLeftBlack { if (wmrControllerLeftBlack == null) { - wmrControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_black.png", typeof(Texture2D)); + wmrControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_black.png", typeof(Texture2D)); } return wmrControllerLeftBlack; @@ -432,7 +433,7 @@ public static Texture2D WmrControllerLeftBlackScaled { if (wmrControllerLeftBlackScaled == null) { - wmrControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_black_scaled.png", typeof(Texture2D)); + wmrControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_black_scaled.png", typeof(Texture2D)); } return wmrControllerLeftBlackScaled; @@ -447,7 +448,7 @@ public static Texture2D WmrControllerRightWhite { if (wmrControllerRightWhite == null) { - wmrControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_white.png", typeof(Texture2D)); + wmrControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_white.png", typeof(Texture2D)); } return wmrControllerRightWhite; @@ -462,7 +463,7 @@ public static Texture2D WmrControllerRightWhiteScaled { if (wmrControllerRightWhiteScaled == null) { - wmrControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_white_scaled.png", typeof(Texture2D)); + wmrControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_white_scaled.png", typeof(Texture2D)); } return wmrControllerRightWhiteScaled; @@ -477,7 +478,7 @@ public static Texture2D WmrControllerRightBlack { if (wmrControllerRightBlack == null) { - wmrControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_black.png", typeof(Texture2D)); + wmrControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_black.png", typeof(Texture2D)); } return wmrControllerRightBlack; @@ -492,7 +493,7 @@ public static Texture2D WmrControllerRightBlackScaled { if (wmrControllerRightBlackScaled == null) { - wmrControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_black_scaled.png", typeof(Texture2D)); + wmrControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_black_scaled.png", typeof(Texture2D)); } return wmrControllerRightBlackScaled; @@ -507,7 +508,7 @@ public static Texture2D TouchControllerLeftWhite { if (touchControllerLeftWhite == null) { - touchControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_white.png", typeof(Texture2D)); + touchControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_white.png", typeof(Texture2D)); } return touchControllerLeftWhite; @@ -522,7 +523,7 @@ public static Texture2D TouchControllerLeftWhiteScaled { if (touchControllerLeftWhiteScaled == null) { - touchControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_white_scaled.png", typeof(Texture2D)); + touchControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_white_scaled.png", typeof(Texture2D)); } return touchControllerLeftWhiteScaled; @@ -537,7 +538,7 @@ public static Texture2D TouchControllerLeftBlack { if (touchControllerLeftBlack == null) { - touchControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_black.png", typeof(Texture2D)); + touchControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_black.png", typeof(Texture2D)); } return touchControllerLeftBlack; @@ -552,7 +553,7 @@ public static Texture2D TouchControllerLeftBlackScaled { if (touchControllerLeftBlackScaled == null) { - touchControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_black_scaled.png", typeof(Texture2D)); + touchControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_black_scaled.png", typeof(Texture2D)); } return touchControllerLeftBlackScaled; @@ -567,7 +568,7 @@ public static Texture2D TouchControllerRightWhite { if (touchControllerRightWhite == null) { - touchControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_white.png", typeof(Texture2D)); + touchControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_white.png", typeof(Texture2D)); } return touchControllerRightWhite; @@ -582,7 +583,7 @@ public static Texture2D TouchControllerRightWhiteScaled { if (touchControllerRightWhiteScaled == null) { - touchControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_white_scaled.png", typeof(Texture2D)); + touchControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_white_scaled.png", typeof(Texture2D)); } return touchControllerRightWhiteScaled; @@ -597,7 +598,7 @@ public static Texture2D TouchControllerRightBlack { if (touchControllerRightBlack == null) { - touchControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_black.png", typeof(Texture2D)); + touchControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_black.png", typeof(Texture2D)); } return touchControllerRightBlack; @@ -612,7 +613,7 @@ public static Texture2D TouchControllerRightBlackScaled { if (touchControllerRightBlackScaled == null) { - touchControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_black_scaled.png", typeof(Texture2D)); + touchControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_black_scaled.png", typeof(Texture2D)); } return touchControllerRightBlackScaled; @@ -627,7 +628,7 @@ public static Texture2D ViveWandControllerLeftWhite { if (viveWandControllerLeftWhite == null) { - viveWandControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_white.png", typeof(Texture2D)); + viveWandControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_white.png", typeof(Texture2D)); } return viveWandControllerLeftWhite; @@ -642,7 +643,7 @@ public static Texture2D ViveWandControllerLeftWhiteScaled { if (viveWandControllerLeftWhiteScaled == null) { - viveWandControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_white_scaled.png", typeof(Texture2D)); + viveWandControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_white_scaled.png", typeof(Texture2D)); } return viveWandControllerLeftWhiteScaled; @@ -657,7 +658,7 @@ public static Texture2D ViveWandControllerLeftBlack { if (viveWandControllerLeftBlack == null) { - viveWandControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_black.png", typeof(Texture2D)); + viveWandControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_black.png", typeof(Texture2D)); } return viveWandControllerLeftBlack; @@ -672,7 +673,7 @@ public static Texture2D ViveWandControllerLeftBlackScaled { if (viveWandControllerLeftBlackScaled == null) { - viveWandControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_black_scaled.png", typeof(Texture2D)); + viveWandControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_black_scaled.png", typeof(Texture2D)); } return viveWandControllerLeftBlackScaled; @@ -687,7 +688,7 @@ public static Texture2D ViveWandControllerRightWhite { if (viveWandControllerRightWhite == null) { - viveWandControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_white.png", typeof(Texture2D)); + viveWandControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_white.png", typeof(Texture2D)); } return viveWandControllerRightWhite; @@ -702,7 +703,7 @@ public static Texture2D ViveWandControllerRightWhiteScaled { if (viveWandControllerRightWhiteScaled == null) { - viveWandControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_white_scaled.png", typeof(Texture2D)); + viveWandControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_white_scaled.png", typeof(Texture2D)); } return viveWandControllerRightWhiteScaled; @@ -717,7 +718,7 @@ public static Texture2D ViveWandControllerRightBlack { if (viveWandControllerRightBlack == null) { - viveWandControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_black.png", typeof(Texture2D)); + viveWandControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_black.png", typeof(Texture2D)); } return viveWandControllerRightBlack; @@ -732,7 +733,7 @@ public static Texture2D ViveWandControllerRightBlackScaled { if (viveWandControllerRightBlackScaled == null) { - viveWandControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_black_scaled.png", typeof(Texture2D)); + viveWandControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_black_scaled.png", typeof(Texture2D)); } return viveWandControllerRightBlackScaled; diff --git a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs index d0b7f8bedf0..747e5393695 100644 --- a/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs +++ b/Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Microsoft.MixedReality.Toolkit.Core.Extensions.EditorClassExtensions; +using Microsoft.MixedReality.Toolkit.Core.Utilities.Editor.Setup; using UnityEditor; using UnityEngine; @@ -21,12 +22,12 @@ protected virtual void Awake() { if (logoLightTheme == null) { - logoLightTheme = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MRTK_Logo_Black.png", typeof(Texture2D)); + logoLightTheme = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MRTK_Logo_Black.png", typeof(Texture2D)); } if (logoDarkTheme == null) { - logoDarkTheme = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/MixedRealityToolkit/_Core/Resources/Textures/MRTK_Logo_White.png", typeof(Texture2D)); + logoDarkTheme = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MRTK_Logo_White.png", typeof(Texture2D)); } } diff --git a/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs b/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs index 4175b1582a5..65882bb7928 100644 --- a/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs +++ b/Assets/MixedRealityToolkit/_Core/Utilities/Editor/Setup/MixedRealityEditorSettings.cs @@ -20,7 +20,7 @@ public class MixedRealityEditorSettings private static string mixedRealityToolkit_RelativeFolderPath = string.Empty; - public static string MixedRealityToolkit_RelativeFolderPath + public static string MixedRealityToolkit_AbsoluteFolderPath { get { @@ -36,6 +36,8 @@ public static string MixedRealityToolkit_RelativeFolderPath } } + public static string MixedRealityToolkit_RelativeFolderPath => MixedRealityToolkit_AbsoluteFolderPath.Replace(Application.dataPath + "\\", "Assets/"); + static MixedRealityEditorSettings() { SetIconTheme(); @@ -193,13 +195,13 @@ private static bool FindDirectory(string directoryPathToSearch, string directory private static void SetIconTheme() { - if (string.IsNullOrEmpty(MixedRealityToolkit_RelativeFolderPath)) + if (string.IsNullOrEmpty(MixedRealityToolkit_AbsoluteFolderPath)) { Debug.LogError("Unable to find the Mixed Reality Toolkit's directory!"); return; } - var icons = Directory.GetFiles($"{MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Icons"); + var icons = Directory.GetFiles($"{MixedRealityToolkit_AbsoluteFolderPath}/_Core/Resources/Icons"); var icon = new Texture2D(2, 2); for (int i = 0; i < icons.Length; i++) From 73ac6c10351330dd33df50f7a05c8081364aa136 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Fri, 26 Oct 2018 14:54:55 -0700 Subject: [PATCH 94/98] fixed path for controller icons --- .../Devices/ControllerMappingLibrary.cs | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/Devices/ControllerMappingLibrary.cs b/Assets/MixedRealityToolkit/_Core/Definitions/Devices/ControllerMappingLibrary.cs index b66b17e1e5f..1146c9c3426 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/Devices/ControllerMappingLibrary.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/Devices/ControllerMappingLibrary.cs @@ -238,7 +238,7 @@ public static Texture2D GenericControllerWhiteScaled { if (genericControllerWhiteScaled == null) { - genericControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/Generic_controller_white_scaled.png", typeof(Texture2D)); + genericControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/Generic_controller_white_scaled.png", typeof(Texture2D)); } return genericControllerWhiteScaled; @@ -253,7 +253,7 @@ public static Texture2D GenericControllerBlackScaled { if (genericControllerBlackScaled == null) { - genericControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/Generic_controller_black_scaled.png", typeof(Texture2D)); + genericControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/Generic_controller_black_scaled.png", typeof(Texture2D)); } return genericControllerBlackScaled; @@ -268,7 +268,7 @@ public static Texture2D XboxControllerWhite { if (xboxControllerWhite == null) { - xboxControllerWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/XboxController_white.png", typeof(Texture2D)); + xboxControllerWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/XboxController_white.png", typeof(Texture2D)); } return xboxControllerWhite; @@ -283,7 +283,7 @@ public static Texture2D XboxControllerWhiteScaled { if (xboxControllerWhiteScaled == null) { - xboxControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/XboxController_white_scaled.png", typeof(Texture2D)); + xboxControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/XboxController_white_scaled.png", typeof(Texture2D)); } return xboxControllerWhiteScaled; @@ -298,7 +298,7 @@ public static Texture2D XboxControllerBlack { if (xboxControllerBlack == null) { - xboxControllerBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/XboxController_black.png", typeof(Texture2D)); + xboxControllerBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/XboxController_black.png", typeof(Texture2D)); } return xboxControllerBlack; @@ -313,7 +313,7 @@ public static Texture2D XboxControllerBlackScaled { if (xboxControllerBlackScaled == null) { - xboxControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/XboxController_black_scaled.png", typeof(Texture2D)); + xboxControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/XboxController_black_scaled.png", typeof(Texture2D)); } return xboxControllerBlackScaled; @@ -328,7 +328,7 @@ public static Texture2D OculusRemoteControllerWhite { if (oculusRemoteControllerWhite == null) { - oculusRemoteControllerWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_white.png", typeof(Texture2D)); + oculusRemoteControllerWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusRemoteController_white.png", typeof(Texture2D)); } return oculusRemoteControllerWhite; @@ -343,7 +343,7 @@ public static Texture2D OculusRemoteControllerWhiteScaled { if (oculusRemoteControllerWhiteScaled == null) { - oculusRemoteControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_white_scaled.png", typeof(Texture2D)); + oculusRemoteControllerWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusRemoteController_white_scaled.png", typeof(Texture2D)); } return oculusRemoteControllerWhiteScaled; @@ -358,7 +358,7 @@ public static Texture2D OculusRemoteControllerBlack { if (oculusRemoteControllerBlack == null) { - oculusRemoteControllerBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_black.png", typeof(Texture2D)); + oculusRemoteControllerBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusRemoteController_black.png", typeof(Texture2D)); } return oculusRemoteControllerBlack; @@ -373,7 +373,7 @@ public static Texture2D OculusRemoteControllerBlackScaled { if (oculusRemoteControllerBlackScaled == null) { - oculusRemoteControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusRemoteController_black_scaled.png", typeof(Texture2D)); + oculusRemoteControllerBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusRemoteController_black_scaled.png", typeof(Texture2D)); } return oculusRemoteControllerBlackScaled; @@ -388,7 +388,7 @@ public static Texture2D WmrControllerLeftWhite { if (wmrControllerLeftWhite == null) { - wmrControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_white.png", typeof(Texture2D)); + wmrControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MotionController_left_white.png", typeof(Texture2D)); } return wmrControllerLeftWhite; @@ -403,7 +403,7 @@ public static Texture2D WmrControllerLeftWhiteScaled { if (wmrControllerLeftWhiteScaled == null) { - wmrControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_white_scaled.png", typeof(Texture2D)); + wmrControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MotionController_left_white_scaled.png", typeof(Texture2D)); } return wmrControllerLeftWhiteScaled; @@ -418,7 +418,7 @@ public static Texture2D WmrControllerLeftBlack { if (wmrControllerLeftBlack == null) { - wmrControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_black.png", typeof(Texture2D)); + wmrControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MotionController_left_black.png", typeof(Texture2D)); } return wmrControllerLeftBlack; @@ -433,7 +433,7 @@ public static Texture2D WmrControllerLeftBlackScaled { if (wmrControllerLeftBlackScaled == null) { - wmrControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_left_black_scaled.png", typeof(Texture2D)); + wmrControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MotionController_left_black_scaled.png", typeof(Texture2D)); } return wmrControllerLeftBlackScaled; @@ -448,7 +448,7 @@ public static Texture2D WmrControllerRightWhite { if (wmrControllerRightWhite == null) { - wmrControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_white.png", typeof(Texture2D)); + wmrControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MotionController_right_white.png", typeof(Texture2D)); } return wmrControllerRightWhite; @@ -463,7 +463,7 @@ public static Texture2D WmrControllerRightWhiteScaled { if (wmrControllerRightWhiteScaled == null) { - wmrControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_white_scaled.png", typeof(Texture2D)); + wmrControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MotionController_right_white_scaled.png", typeof(Texture2D)); } return wmrControllerRightWhiteScaled; @@ -478,7 +478,7 @@ public static Texture2D WmrControllerRightBlack { if (wmrControllerRightBlack == null) { - wmrControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_black.png", typeof(Texture2D)); + wmrControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MotionController_right_black.png", typeof(Texture2D)); } return wmrControllerRightBlack; @@ -493,7 +493,7 @@ public static Texture2D WmrControllerRightBlackScaled { if (wmrControllerRightBlackScaled == null) { - wmrControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/MotionController_right_black_scaled.png", typeof(Texture2D)); + wmrControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/MotionController_right_black_scaled.png", typeof(Texture2D)); } return wmrControllerRightBlackScaled; @@ -508,7 +508,7 @@ public static Texture2D TouchControllerLeftWhite { if (touchControllerLeftWhite == null) { - touchControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_white.png", typeof(Texture2D)); + touchControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusControllersTouch_left_white.png", typeof(Texture2D)); } return touchControllerLeftWhite; @@ -523,7 +523,7 @@ public static Texture2D TouchControllerLeftWhiteScaled { if (touchControllerLeftWhiteScaled == null) { - touchControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_white_scaled.png", typeof(Texture2D)); + touchControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusControllersTouch_left_white_scaled.png", typeof(Texture2D)); } return touchControllerLeftWhiteScaled; @@ -538,7 +538,7 @@ public static Texture2D TouchControllerLeftBlack { if (touchControllerLeftBlack == null) { - touchControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_black.png", typeof(Texture2D)); + touchControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusControllersTouch_left_black.png", typeof(Texture2D)); } return touchControllerLeftBlack; @@ -553,7 +553,7 @@ public static Texture2D TouchControllerLeftBlackScaled { if (touchControllerLeftBlackScaled == null) { - touchControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_left_black_scaled.png", typeof(Texture2D)); + touchControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusControllersTouch_left_black_scaled.png", typeof(Texture2D)); } return touchControllerLeftBlackScaled; @@ -568,7 +568,7 @@ public static Texture2D TouchControllerRightWhite { if (touchControllerRightWhite == null) { - touchControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_white.png", typeof(Texture2D)); + touchControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusControllersTouch_right_white.png", typeof(Texture2D)); } return touchControllerRightWhite; @@ -583,7 +583,7 @@ public static Texture2D TouchControllerRightWhiteScaled { if (touchControllerRightWhiteScaled == null) { - touchControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_white_scaled.png", typeof(Texture2D)); + touchControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusControllersTouch_right_white_scaled.png", typeof(Texture2D)); } return touchControllerRightWhiteScaled; @@ -598,7 +598,7 @@ public static Texture2D TouchControllerRightBlack { if (touchControllerRightBlack == null) { - touchControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_black.png", typeof(Texture2D)); + touchControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusControllersTouch_right_black.png", typeof(Texture2D)); } return touchControllerRightBlack; @@ -613,7 +613,7 @@ public static Texture2D TouchControllerRightBlackScaled { if (touchControllerRightBlackScaled == null) { - touchControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/OculusControllersTouch_right_black_scaled.png", typeof(Texture2D)); + touchControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/OculusControllersTouch_right_black_scaled.png", typeof(Texture2D)); } return touchControllerRightBlackScaled; @@ -628,7 +628,7 @@ public static Texture2D ViveWandControllerLeftWhite { if (viveWandControllerLeftWhite == null) { - viveWandControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_white.png", typeof(Texture2D)); + viveWandControllerLeftWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/ViveWandController_left_white.png", typeof(Texture2D)); } return viveWandControllerLeftWhite; @@ -643,7 +643,7 @@ public static Texture2D ViveWandControllerLeftWhiteScaled { if (viveWandControllerLeftWhiteScaled == null) { - viveWandControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_white_scaled.png", typeof(Texture2D)); + viveWandControllerLeftWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/ViveWandController_left_white_scaled.png", typeof(Texture2D)); } return viveWandControllerLeftWhiteScaled; @@ -658,7 +658,7 @@ public static Texture2D ViveWandControllerLeftBlack { if (viveWandControllerLeftBlack == null) { - viveWandControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_black.png", typeof(Texture2D)); + viveWandControllerLeftBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/ViveWandController_left_black.png", typeof(Texture2D)); } return viveWandControllerLeftBlack; @@ -673,7 +673,7 @@ public static Texture2D ViveWandControllerLeftBlackScaled { if (viveWandControllerLeftBlackScaled == null) { - viveWandControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_left_black_scaled.png", typeof(Texture2D)); + viveWandControllerLeftBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/ViveWandController_left_black_scaled.png", typeof(Texture2D)); } return viveWandControllerLeftBlackScaled; @@ -688,7 +688,7 @@ public static Texture2D ViveWandControllerRightWhite { if (viveWandControllerRightWhite == null) { - viveWandControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_white.png", typeof(Texture2D)); + viveWandControllerRightWhite = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/ViveWandController_right_white.png", typeof(Texture2D)); } return viveWandControllerRightWhite; @@ -703,7 +703,7 @@ public static Texture2D ViveWandControllerRightWhiteScaled { if (viveWandControllerRightWhiteScaled == null) { - viveWandControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_white_scaled.png", typeof(Texture2D)); + viveWandControllerRightWhiteScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/ViveWandController_right_white_scaled.png", typeof(Texture2D)); } return viveWandControllerRightWhiteScaled; @@ -718,7 +718,7 @@ public static Texture2D ViveWandControllerRightBlack { if (viveWandControllerRightBlack == null) { - viveWandControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_black.png", typeof(Texture2D)); + viveWandControllerRightBlack = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/ViveWandController_right_black.png", typeof(Texture2D)); } return viveWandControllerRightBlack; @@ -733,7 +733,7 @@ public static Texture2D ViveWandControllerRightBlackScaled { if (viveWandControllerRightBlackScaled == null) { - viveWandControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/MixedRealityToolkit/_Core/Resources/Textures/ViveWandController_right_black_scaled.png", typeof(Texture2D)); + viveWandControllerRightBlackScaled = (Texture2D)AssetDatabase.LoadAssetAtPath($"{MixedRealityEditorSettings.MixedRealityToolkit_RelativeFolderPath}/_Core/Resources/Textures/ViveWandController_right_black_scaled.png", typeof(Texture2D)); } return viveWandControllerRightBlackScaled; From 19805cb9d1967d48a0697106a0ef61ee25e6da05 Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Fri, 26 Oct 2018 14:59:53 -0700 Subject: [PATCH 95/98] Make FloorScale's type match floorScale's type Vector3 -> Vector2 --- .../Features/Boundary/MixedRealityBoundaryManager.cs | 2 +- .../BoundarySystem/MixedRealityBoundaryVisualizationProfile.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs index 558f3c446ae..856c2ec1863 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/Boundary/MixedRealityBoundaryManager.cs @@ -523,7 +523,7 @@ public GameObject GetFloorVisualization() return null; } - Vector3 floorScale = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorScale; + Vector2 floorScale = MixedRealityToolkit.Instance.ActiveProfile.BoundaryVisualizationProfile.FloorScale; // Render the floor. currentFloorObject = GameObject.CreatePrimitive(PrimitiveType.Cube); diff --git a/Assets/MixedRealityToolkit/_Core/Definitions/BoundarySystem/MixedRealityBoundaryVisualizationProfile.cs b/Assets/MixedRealityToolkit/_Core/Definitions/BoundarySystem/MixedRealityBoundaryVisualizationProfile.cs index 5292d83ee76..75c4bf4bea6 100644 --- a/Assets/MixedRealityToolkit/_Core/Definitions/BoundarySystem/MixedRealityBoundaryVisualizationProfile.cs +++ b/Assets/MixedRealityToolkit/_Core/Definitions/BoundarySystem/MixedRealityBoundaryVisualizationProfile.cs @@ -53,7 +53,7 @@ public class MixedRealityBoundaryVisualizationProfile : BaseMixedRealityProfile /// /// The size at which to display the rectangular floor plane . /// - public Vector3 FloorScale => floorScale; + public Vector2 FloorScale => floorScale; #endregion Floor settings From 883f4d7c617f00852a46daf4112606beac272b4a Mon Sep 17 00:00:00 2001 From: Kurtis Eveleigh Date: Fri, 26 Oct 2018 15:44:14 -0700 Subject: [PATCH 96/98] Add platform-dependent compilation section to CodingGuidelines --- CodingGuidelines.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CodingGuidelines.md b/CodingGuidelines.md index 2cd5f5c68b3..16c49f0ff7c 100644 --- a/CodingGuidelines.md +++ b/CodingGuidelines.md @@ -582,3 +582,19 @@ public class MyClass ``` >Alternatively, use Unity's "SharedMaterial" property which does not create a new material each time it is referenced. + +## Use [platform dependent compilation](https://docs.unity3d.com/Manual/PlatformDependentCompilation.html) to ensure the Toolkit won't break the build on another platform + +* Use `WINDOWS_UWP` in order to use UWP-specific, non-Unity APIs. This will prevent them from trying to run in the Editor or on unsupported platforms. This is equivalent to `UNITY_WSA && !UNITY_EDITOR` and should be used in favor of. +* Use `UNITY_WSA` to use UWP-specific Unity APIs, such as the `UnityEngine.XR.WSA` namespace. This will run in the Editor when the platform is set to UWP, as well as in built UWP apps. + +This chart can help you decide which `#if` to use, depending on your use cases and the build settings you expect. + +| | UWP IL2CPP | UWP .NET | Editor | +| --- | --- | --- | --- | +| `UNITY_EDITOR` | False | False | True | +| `UNITY_WSA` | True | True | True | +| `WINDOWS_UWP` | True | True | False | +| `UNITY_WSA && !UNITY_EDITOR` | True | True | False | +| `ENABLE_WINMD_SUPPORT` | True | True | False | +| `NETFX_CORE` | False | True | False | \ No newline at end of file From bc0c7473e8c1520cc975f13550933b0a39b67186 Mon Sep 17 00:00:00 2001 From: Yoon Park Date: Mon, 29 Oct 2018 10:04:22 -0700 Subject: [PATCH 97/98] Merged mrtk_development. Added Toggle HolographicButton example. --- .../Scenes/InteractablesGallery.unity | 1245 ++++++++++++++++- .../UX/Interactable/Scripts/Interactable.cs | 14 +- ...graphicButtonBackPlateToggleSelected.asset | 489 +++++++ ...icButtonBackPlateToggleSelected.asset.meta | 10 + 4 files changed, 1696 insertions(+), 62 deletions(-) create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset.meta diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Interactables/Scenes/InteractablesGallery.unity b/Assets/MixedRealityToolkit-Examples/Demos/UX/Interactables/Scenes/InteractablesGallery.unity index fc22b8f3ee7..324afb7a918 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Interactables/Scenes/InteractablesGallery.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Interactables/Scenes/InteractablesGallery.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 1428268608} - m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -661,6 +661,573 @@ Prefab: m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} m_IsPrefabParent: 0 +--- !u!1001 &587980796 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1229001242} + m_Modifications: + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.size + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[0].Themes.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[1].Themes.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[2].Themes.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalPosition.x + value: 0.241 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalPosition.y + value: -0.232 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalPosition.z + value: 0.3032 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_RootOrder + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 33206966778645120, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: InputActionId + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114575116837749478, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114575116837749478, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: VoiceCommand + value: Click Button + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: RequiresGaze + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Name + value: OnFocus + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].ClassName + value: InteractableOnFocusReceiver + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].Type + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].Label + value: On Focus Off + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].Name + value: OnFocusOff + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].Tooltip + value: Focus has left the object + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Name + value: OnHold + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + 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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].ClassName + value: InteractableOnHoldReceiver + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Label + value: Hold Time + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Name + value: HoldTime + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Tooltip + value: The amount of time to press before triggering event + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + 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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].FloatValue + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Name + value: OnPress + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].ClassName + value: InteractableOnPressReceiver + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].Label + value: On Release + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].Name + value: OnRelease + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].Tooltip + value: The button is released + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].FloatValue + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].Type + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Name + value: OnSelect + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].ClassName + value: InteractableOnToggleReceiver + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].Type + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].Label + value: On Deselect + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].Name + value: OnDeselect + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].Tooltip + value: The toggle is deselected + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Dimensions + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[0].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: 29b20ecfcc16eef4dad8989c360f2988, + type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[1].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: cbde7890146c3024d928b7afc2e16065, + type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[2].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: 0c4c73f326f602744bdcfff481fd6f20, + type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: 53ea63593b32415faf734536616f5fb3, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: d5334c45caee46be937b095a1e977dc6, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: d5334c45caee46be937b095a1e977dc6, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: d5334c45caee46be937b095a1e977dc6, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: 00665e2a669d4b0fab1965843b4c914b, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: b0fcdc3322e34d9ea83e8399bd9f4031, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: 71d573ea4cb045cdadc98e56044f6d2c, type: 2} + - target: {fileID: 1210820392543280, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_Name + value: HolographicButtonToggle + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &587980797 stripped +Transform: + m_PrefabParentObject: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + m_PrefabInternal: {fileID: 587980796} --- !u!1 &619923188 GameObject: m_ObjectHideFlags: 0 @@ -691,7 +1258,7 @@ Transform: m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} m_Children: [] m_Father: {fileID: 1229001242} - m_RootOrder: 16 + m_RootOrder: 15 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &619923190 MonoBehaviour: @@ -770,68 +1337,554 @@ Prefab: m_Modification: m_TransformParent: {fileID: 1229001242} m_Modifications: + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.size + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[0].Themes.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[1].Themes.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[2].Themes.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalPosition.x value: 0.241 objectReference: {fileID: 0} - - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_LocalPosition.y - value: -0.082 + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalPosition.y + value: -0.082 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalPosition.z + value: 0.3032 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} + propertyPath: m_RootOrder + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 33206966778645120, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: InputActionId + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114575116837749478, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: m_havePropertiesChanged + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114575116837749478, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: m_isInputParsingRequired + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: VoiceCommand + value: Click Button + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: RequiresGaze + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Name + value: OnFocus + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].ClassName + value: InteractableOnFocusReceiver + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].Type + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].Label + value: On Focus Off + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].Name + value: OnFocusOff + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].Tooltip + value: Focus has left the object + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Name + value: OnHold + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + 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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].ClassName + value: InteractableOnHoldReceiver + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Label + value: Hold Time + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Name + value: HoldTime + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].Tooltip + value: The amount of time to press before triggering event + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + 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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Settings.Array.data[0].FloatValue + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Name + value: OnPress + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].ClassName + value: InteractableOnPressReceiver + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].Label + value: On Release + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].Name + value: OnRelease + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].Tooltip + value: The button is released + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].FloatValue + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].Type + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Name + value: OnSelect + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_TypeName + value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].ClassName + value: InteractableOnToggleReceiver + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].Type + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].Label + value: On Deselect + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].Name + value: OnDeselect + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].Tooltip + value: The toggle is deselected + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].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: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Dimensions + value: 1 objectReference: {fileID: 0} - - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_LocalPosition.z - value: 0.3032 + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[0].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: 29b20ecfcc16eef4dad8989c360f2988, + type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[1].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: cbde7890146c3024d928b7afc2e16065, + type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Profiles.Array.data[2].Themes.Array.data[1] + value: + objectReference: {fileID: 11400000, guid: 0c4c73f326f602744bdcfff481fd6f20, + type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 objectReference: {fileID: 0} - - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_LocalRotation.x - value: -0 + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_LocalRotation.y - value: -0 + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 objectReference: {fileID: 0} - - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_LocalRotation.z - value: -0 + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_LocalRotation.w - value: 1 + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 objectReference: {fileID: 0} - - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_RootOrder - value: 10 + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 objectReference: {fileID: 0} - - target: {fileID: 33206966778645120, guid: 40da8a1b3b26ba743b892d890b95a9f9, + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_Mesh + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1727927206} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material objectReference: {fileID: 0} - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: InputActionId - value: 0 + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine objectReference: {fileID: 0} - - target: {fileID: 114575116837749478, guid: 40da8a1b3b26ba743b892d890b95a9f9, + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_havePropertiesChanged - value: 1 + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material objectReference: {fileID: 0} - - target: {fileID: 114575116837749478, guid: 40da8a1b3b26ba743b892d890b95a9f9, + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: m_isInputParsingRequired - value: 1 + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine objectReference: {fileID: 0} - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: VoiceCommand - value: Button + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material objectReference: {fileID: 0} - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} - propertyPath: RequiresGaze - value: 1 + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: set_material + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Material, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: 53ea63593b32415faf734536616f5fb3, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[0].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: d5334c45caee46be937b095a1e977dc6, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: d5334c45caee46be937b095a1e977dc6, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Settings.Array.data[0].EventValue.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: d5334c45caee46be937b095a1e977dc6, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[3].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: 00665e2a669d4b0fab1965843b4c914b, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[2].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: b0fcdc3322e34d9ea83e8399bd9f4031, type: 2} + - target: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + propertyPath: Events.Array.data[1].Event.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2100000, guid: 71d573ea4cb045cdadc98e56044f6d2c, type: 2} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} m_IsPrefabParent: 0 @@ -1119,7 +2172,7 @@ Transform: m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} m_Children: [] m_Father: {fileID: 1229001242} - m_RootOrder: 12 + m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &829029745 MonoBehaviour: @@ -1244,7 +2297,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4894033903586032, guid: 8b83134143223104c9bc3865a565cab3, type: 2} propertyPath: m_RootOrder - value: 18 + value: 17 objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 8b83134143223104c9bc3865a565cab3, type: 2} @@ -1286,23 +2339,24 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 386272942} - - {fileID: 712471522} - {fileID: 1871725553} - - {fileID: 1269640614} + - {fileID: 712471522} - {fileID: 1968495723} - - {fileID: 1030722024} + - {fileID: 1269640614} - {fileID: 1597681836} - - {fileID: 1409481479} + - {fileID: 1030722024} - {fileID: 1978927276} - - {fileID: 1790629158} + - {fileID: 1409481479} - {fileID: 1784858703} - - {fileID: 1202078010} + - {fileID: 1790629158} - {fileID: 829029744} - - {fileID: 937929079} + - {fileID: 1202078010} - {fileID: 1948370886} - - {fileID: 472391883} + - {fileID: 937929079} - {fileID: 619923189} + - {fileID: 472391883} - {fileID: 1587308670} + - {fileID: 587980797} m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1932,7 +2986,7 @@ Transform: m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} m_Children: [] m_Father: {fileID: 1229001242} - m_RootOrder: 6 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1597681837 MonoBehaviour: @@ -2200,6 +3254,91 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 47.395, z: 0} +--- !u!1 &1727927204 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1727927208} + - component: {fileID: 1727927207} + - component: {fileID: 1727927206} + - component: {fileID: 1727927205} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1727927205 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1727927204} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1727927206 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1727927204} + 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_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + 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 &1727927207 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1727927204} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1727927208 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1727927204} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.284, y: 2.181, z: 1.969} + m_LocalScale: {x: 0.3147925, y: 0.3147925, z: 0.3147925} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1784858702 GameObject: m_ObjectHideFlags: 0 @@ -2230,7 +3369,7 @@ Transform: m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} m_Children: [] m_Father: {fileID: 1229001242} - m_RootOrder: 10 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1784858704 MonoBehaviour: @@ -2337,7 +3476,7 @@ Transform: m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} m_Children: [] m_Father: {fileID: 1229001242} - m_RootOrder: 2 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1871725554 MonoBehaviour: @@ -2504,7 +3643,7 @@ Transform: m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} m_Children: [] m_Father: {fileID: 1229001242} - m_RootOrder: 14 + m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1948370887 MonoBehaviour: @@ -2653,7 +3792,7 @@ Transform: m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} m_Children: [] m_Father: {fileID: 1229001242} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1968495724 MonoBehaviour: @@ -2755,7 +3894,7 @@ Transform: m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} m_Children: [] m_Father: {fileID: 1229001242} - m_RootOrder: 8 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1978927277 MonoBehaviour: diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Scripts/Interactable.cs b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Scripts/Interactable.cs index dfca8418c99..001ec50b2eb 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Scripts/Interactable.cs +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Scripts/Interactable.cs @@ -5,12 +5,8 @@ using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem; using Microsoft.MixedReality.Toolkit.Core.Interfaces.InputSystem.Handlers; -using Microsoft.MixedReality.Toolkit.Core.Managers; -using Microsoft.MixedReality.Toolkit.SDK.Input.Handlers; -using System; -using System.Collections; +using Microsoft.MixedReality.Toolkit.Core.Services; using System.Collections.Generic; -using System.Reflection; using UnityEngine; using UnityEngine.Events; @@ -21,7 +17,7 @@ namespace Microsoft.MixedReality.Toolkit.SDK.UX /// Maintains a collection of themes that react to state changes and provide scensory feedback /// Passes state information and input data on to receivers that detect patterns and does stuff. /// - + // TODO: How to handle cycle buttons // TODO: plumb for gestures // TODO: Add way to protect the defaultTheme from being edited and encourage users to create a new theme, maybe include a create/duplicate button @@ -39,7 +35,7 @@ public class Interactable : MonoBehaviour, IMixedRealityInputHandler, IMixedReal /// Setup the input system /// private static IMixedRealityInputSystem inputSystem = null; - protected static IMixedRealityInputSystem InputSystem => inputSystem ?? (inputSystem = MixedRealityManager.Instance.GetManager()); + protected static IMixedRealityInputSystem InputSystem => inputSystem ?? (inputSystem = MixedRealityToolkit.Instance.GetService()); // list of pointers protected List pointers = new List(); @@ -125,7 +121,7 @@ public class Interactable : MonoBehaviour, IMixedRealityInputHandler, IMixedReal /// public static string[] GetInputActions() { - MixedRealityInputAction[] actions = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions; + MixedRealityInputAction[] actions = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions; List list = new List(); for (int i = 0; i < actions.Length; i++) @@ -714,7 +710,7 @@ protected void IncreaseDimensionIndex() /// public static MixedRealityInputAction ResolveInputAction(int index) { - MixedRealityInputAction[] actions = MixedRealityManager.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions; + MixedRealityInputAction[] actions = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.InputActionsProfile.InputActions; index = Mathf.Clamp(index, 0, actions.Length - 1); return actions[index]; } diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset new file mode 100644 index 00000000000..f200e40b2f4 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset @@ -0,0 +1,489 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: HolographicButtonBackPlateToggleSelected + m_EditorClassIdentifier: + Name: + Settings: + - Name: InteractableColorTheme + 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.54080504, b: 0.9811321, 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, g: 0.5411765, b: 0.9843137, 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, g: 0.6973052, b: 1, 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.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: + - 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: + Name: + String: + Bool: 0 + Int: 0 + Float: 0 + Texture: {fileID: 0} + Material: {fileID: 0} + GameObject: {fileID: 0} + Vector2: {x: 0, y: 0} + Vector3: {x: 0, y: 0, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + 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: + Easing: + EaseValues: 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.1 + NoEasing: 0 + IsValid: 1 + ThemeTarget: + Properties: [] + Target: {fileID: 0} + States: [] + CustomSettings: [] + States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset.meta b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset.meta new file mode 100644 index 00000000000..663966852b6 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/HolographicButtonBackPlateToggleSelected.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 29b20ecfcc16eef4dad8989c360f2988 +timeCreated: 1531192099 +licenseType: Pro +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: From 3a0a386f5efb9b96e84c81901e41ee95a21d06c9 Mon Sep 17 00:00:00 2001 From: Yoon Park Date: Mon, 29 Oct 2018 11:32:38 -0700 Subject: [PATCH 98/98] Polished example sceens with MRTK Standard example assets - coffee cup, balloon, cheese. --- .../Scenes/InteractablesGallery.unity | 2514 ++++++++--------- .../Materials/ButtonBackground.mat | 2 +- .../UX/Interactable/Materials/Foreground.mat | 2 +- .../UX/Interactable/Themes/CheeseTheme.asset | 390 +++ .../Themes/CheeseTheme.asset.meta | 8 + .../UX/Interactable/Themes/CoffeeTheme.asset | 390 +++ .../Themes/CoffeeTheme.asset.meta | 8 + .../Interactable/Themes/CylinderTheme.asset | 390 +++ .../Themes/CylinderTheme.asset.meta | 8 + .../Themes/Model_BuckyTheme.asset | 647 +++++ .../Themes/Model_BuckyTheme.asset.meta | 8 + .../Themes/Model_IcosaTheme.asset | 1733 ++++++++++++ .../Themes/Model_IcosaTheme.asset.meta | 8 + .../UX/Interactable/Themes/ballonTheme.asset | 350 +++ .../Themes/ballonTheme.asset.meta | 8 + .../Materials/MRTK_Standard_DarkBrown.mat | 144 + .../MRTK_Standard_DarkBrown.mat.meta | 8 + 17 files changed, 5327 insertions(+), 1291 deletions(-) create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CheeseTheme.asset create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CheeseTheme.asset.meta create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset.meta create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CylinderTheme.asset create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CylinderTheme.asset.meta create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset.meta create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset.meta create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/ballonTheme.asset create mode 100644 Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/ballonTheme.asset.meta create mode 100644 Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/MRTK_Standard_DarkBrown.mat create mode 100644 Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/MRTK_Standard_DarkBrown.mat.meta diff --git a/Assets/MixedRealityToolkit-Examples/Demos/UX/Interactables/Scenes/InteractablesGallery.unity b/Assets/MixedRealityToolkit-Examples/Demos/UX/Interactables/Scenes/InteractablesGallery.unity index 324afb7a918..50c18bd4459 100644 --- a/Assets/MixedRealityToolkit-Examples/Demos/UX/Interactables/Scenes/InteractablesGallery.unity +++ b/Assets/MixedRealityToolkit-Examples/Demos/UX/Interactables/Scenes/InteractablesGallery.unity @@ -113,30 +113,77 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!114 &2456771 stripped +--- !u!1 &21188991 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 21188992} + - component: {fileID: 21188993} + m_Layer: 0 + m_Name: CheckBoxCollection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &21188992 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 21188991} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.04000002, y: 0.083, z: 0.47179997} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 286874863} + - {fileID: 480049309} + - {fileID: 1202078010} + m_Father: {fileID: 1229001242} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &21188993 MonoBehaviour: - m_PrefabParentObject: {fileID: 114750426120364918, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, - type: 2} - m_PrefabInternal: {fileID: 361655617} - m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 21188991} + 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: 3 + layout: 0 + radius: 2 + radialRange: 180 + rows: 3 + cellWidth: 0.07 + cellHeight: 0.07 --- !u!1001 &33385085 Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 1229001242} + m_TransformParent: {fileID: 21188992} m_Modifications: - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} propertyPath: m_LocalPosition.x - value: 0.41 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} propertyPath: m_LocalPosition.y - value: 0.057999954 + value: -0.06999999 objectReference: {fileID: 0} - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} propertyPath: m_LocalPosition.z - value: 0.287 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} propertyPath: m_LocalRotation.x @@ -156,7 +203,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} propertyPath: m_RootOrder - value: 12 + value: 2 objectReference: {fileID: 0} - target: {fileID: 114359879210576386, guid: abb2df850d68f894d830c95c299cf10f, type: 2} @@ -166,6 +213,57 @@ Prefab: m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: abb2df850d68f894d830c95c299cf10f, type: 2} m_IsPrefabParent: 0 +--- !u!1 &45724040 stripped +GameObject: + m_PrefabParentObject: {fileID: 100002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + m_PrefabInternal: {fileID: 1158669537} +--- !u!114 &45724041 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 45724040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} + m_Name: + m_EditorClassIdentifier: + Enabled: 1 + States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + InputAction: + id: 0 + description: + axisConstraint: 0 + InputActionId: 0 + IsGlobal: 0 + Dimensions: 1 + CanSelect: 1 + CanDeselect: 1 + VoiceCommand: + RequiresGaze: 1 + Profiles: + - Target: {fileID: 1357803576} + Themes: + - {fileID: 11400000, guid: 747264624b7f3934b8b507fdb1a20e51, type: 2} + HadDefaultTheme: 1 + OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Events: [] +--- !u!65 &45724042 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 45724040} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.2413986, y: 0.8657716, z: 1.244081} + m_Center: {x: 0.00000016995789, y: -0.067114204, z: -0.004023243} --- !u!1 &282983768 GameObject: m_ObjectHideFlags: 0 @@ -243,6 +341,118 @@ SpriteRenderer: m_SpriteTileMode: 0 m_WasSpriteAssigned: 1 m_MaskInteraction: 0 +--- !u!1001 &286874862 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 21188992} + m_Modifications: + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalPosition.y + value: 0.07000001 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114359879210576386, guid: abb2df850d68f894d830c95c299cf10f, + type: 2} + propertyPath: VoiceCommand + value: Check Box + objectReference: {fileID: 0} + - target: {fileID: 1775492867674862, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_Name + value: CheckBox (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &286874863 stripped +Transform: + m_PrefabParentObject: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, + type: 2} + m_PrefabInternal: {fileID: 286874862} +--- !u!1001 &306669060 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2053119672} + m_Modifications: + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalPosition.y + value: 0.0000000037252903 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114402419347283100, guid: ce4801a284bc5c3488c631dcdba665df, + type: 2} + propertyPath: VoiceCommand + value: Toggle + objectReference: {fileID: 0} + - target: {fileID: 1850867357197028, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_Name + value: Toggle (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &306669061 stripped +Transform: + m_PrefabParentObject: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, + type: 2} + m_PrefabInternal: {fileID: 306669060} --- !u!1 &312509569 GameObject: m_ObjectHideFlags: 0 @@ -358,15 +568,15 @@ Prefab: m_Modifications: - target: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} propertyPath: m_LocalPosition.x - value: 0 + value: -0.157 objectReference: {fileID: 0} - target: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} propertyPath: m_LocalPosition.y - value: -0.10119998 + value: 0.01 objectReference: {fileID: 0} - target: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} propertyPath: m_LocalPosition.z - value: 0.3 + value: 0.48480004 objectReference: {fileID: 0} - target: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} propertyPath: m_LocalRotation.x @@ -386,281 +596,155 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} propertyPath: m_RootOrder - value: 6 + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} + propertyPath: m_LocalScale.x + value: 1.0441421 + objectReference: {fileID: 0} + - target: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} + propertyPath: m_LocalScale.y + value: 1.0441422 + objectReference: {fileID: 0} + - target: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} + propertyPath: m_LocalScale.z + value: 1.0441422 + objectReference: {fileID: 0} + - target: {fileID: 102006639917048896, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, + type: 2} + propertyPath: m_Text + value: Animator Button + objectReference: {fileID: 0} + - target: {fileID: 102006639917048896, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, + type: 2} + propertyPath: m_Color.rgba + value: 4294967295 objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, type: 2} m_IsPrefabParent: 0 ---- !u!1 &386272941 -GameObject: +--- !u!1001 &480049308 +Prefab: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 386272942} - - component: {fileID: 386272945} - - component: {fileID: 386272944} - - component: {fileID: 386272943} - - component: {fileID: 386272946} - m_Layer: 0 - m_Name: Finger - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &386272942 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 21188992} + m_Modifications: + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalPosition.y + value: 0.0000000037252903 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114359879210576386, guid: abb2df850d68f894d830c95c299cf10f, + type: 2} + propertyPath: VoiceCommand + value: Check Box + objectReference: {fileID: 0} + - target: {fileID: 1775492867674862, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + propertyPath: m_Name + value: CheckBox (2) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: abb2df850d68f894d830c95c299cf10f, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &480049309 stripped Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 386272941} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.187, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_Children: [] - m_Father: {fileID: 1229001242} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!65 &386272943 -BoxCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 386272941} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &386272944 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 386272941} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &386272945 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 386272941} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &386272946 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 386272941} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} - m_Name: - m_EditorClassIdentifier: - Button: {fileID: 712471527} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!1 &409268359 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 409268360} - - component: {fileID: 409268363} - - component: {fileID: 409268362} - - component: {fileID: 409268361} - m_Layer: 0 - m_Name: UIRaycastCamera - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &409268360 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409268359} - 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: 1428889684} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &409268361 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409268359} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &409268362 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409268359} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!20 &409268363 -Camera: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 409268359} - m_Enabled: 0 - serializedVersion: 2 - m_ClearFlags: 3 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.1 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 0.5 - m_Depth: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 1 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 0 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 0 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &472391883 stripped -Transform: - m_PrefabParentObject: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, - type: 2} - m_PrefabInternal: {fileID: 516760600} ---- !u!114 &472391884 stripped -MonoBehaviour: - m_PrefabParentObject: {fileID: 114690070015698324, guid: 7a09758e059eb59468ca9b69ac560cd9, - type: 2} - m_PrefabInternal: {fileID: 516760600} - m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} ---- !u!1001 &516760600 -Prefab: + m_PrefabParentObject: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, + type: 2} + m_PrefabInternal: {fileID: 480049308} +--- !u!1001 &490974901 +Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 1229001242} m_Modifications: - - target: {fileID: 114690070015698324, guid: 7a09758e059eb59468ca9b69ac560cd9, - type: 2} - propertyPath: Events.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} propertyPath: m_LocalPosition.x - value: 0.413 + value: 0.18600002 objectReference: {fileID: 0} - - target: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} propertyPath: m_LocalPosition.y - value: -0.111000046 + value: -0.318968 objectReference: {fileID: 0} - - target: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} propertyPath: m_LocalPosition.z - value: 0.287 + value: 0.26 objectReference: {fileID: 0} - - target: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} propertyPath: m_LocalRotation.x value: -0 objectReference: {fileID: 0} - - target: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} propertyPath: m_LocalRotation.y value: -0 objectReference: {fileID: 0} - - target: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} propertyPath: m_LocalRotation.z value: -0 objectReference: {fileID: 0} - - target: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4441371295092974, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} propertyPath: m_RootOrder - value: 16 + value: 12 objectReference: {fileID: 0} - - target: {fileID: 114690070015698324, guid: 7a09758e059eb59468ca9b69ac560cd9, - type: 2} - propertyPath: Events.Array.data[0].Event.m_TypeName - value: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} + propertyPath: m_LocalScale.x + value: 5.144715 objectReference: {fileID: 0} - - target: {fileID: 114690070015698324, guid: 7a09758e059eb59468ca9b69ac560cd9, - type: 2} - propertyPath: VoiceCommand - value: Radial Button + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} + propertyPath: m_LocalScale.y + value: 5.1447153 objectReference: {fileID: 0} + - target: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} + propertyPath: m_LocalScale.z + value: 5.1447153 + objectReference: {fileID: 0} + - target: {fileID: 2300004, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 71d573ea4cb045cdadc98e56044f6d2c, type: 2} + - target: {fileID: 2300000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 71d573ea4cb045cdadc98e56044f6d2c, type: 2} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 7a09758e059eb59468ca9b69ac560cd9, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} m_IsPrefabParent: 0 +--- !u!4 &490974902 stripped +Transform: + m_PrefabParentObject: {fileID: 400000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} + m_PrefabInternal: {fileID: 490974901} --- !u!1001 &587980796 Prefab: m_ObjectHideFlags: 0 @@ -745,15 +829,15 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalPosition.x - value: 0.241 + value: -0.409 objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalPosition.y - value: -0.232 + value: 0.076 objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalPosition.z - value: 0.3032 + value: 0.488 objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalRotation.x @@ -773,7 +857,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_RootOrder - value: 18 + value: 5 objectReference: {fileID: 0} - target: {fileID: 33206966778645120, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} @@ -1228,108 +1312,6 @@ Transform: m_PrefabParentObject: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} m_PrefabInternal: {fileID: 587980796} ---- !u!1 &619923188 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 619923189} - - component: {fileID: 619923193} - - component: {fileID: 619923192} - - component: {fileID: 619923191} - - component: {fileID: 619923190} - m_Layer: 0 - m_Name: RadialSetFinger - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &619923189 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 619923188} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_Children: [] - m_Father: {fileID: 1229001242} - m_RootOrder: 15 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &619923190 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 619923188} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} - m_Name: - m_EditorClassIdentifier: - Button: {fileID: 1616599429} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!65 &619923191 -BoxCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 619923188} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &619923192 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 619923188} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &619923193 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 619923188} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &662393010 Prefab: m_ObjectHideFlags: 0 @@ -1414,15 +1396,15 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalPosition.x - value: 0.241 + value: -0.57 objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalPosition.y - value: -0.082 + value: 0.07599999 objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalPosition.z - value: 0.3032 + value: 0.48800004 objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_LocalRotation.x @@ -1442,7 +1424,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} propertyPath: m_RootOrder - value: 10 + value: 4 objectReference: {fileID: 0} - target: {fileID: 33206966778645120, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} @@ -1888,67 +1870,132 @@ Prefab: m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 40da8a1b3b26ba743b892d890b95a9f9, type: 2} m_IsPrefabParent: 0 ---- !u!114 &662393011 stripped -MonoBehaviour: - m_PrefabParentObject: {fileID: 114809329666163580, guid: 40da8a1b3b26ba743b892d890b95a9f9, - type: 2} - m_PrefabInternal: {fileID: 662393010} - m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} ---- !u!1001 &696056463 +--- !u!1 &677770018 stripped +GameObject: + m_PrefabParentObject: {fileID: 100004, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} + m_PrefabInternal: {fileID: 683527375} +--- !u!1001 &683527375 Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 1229001242} m_Modifications: - - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} propertyPath: m_LocalPosition.x - value: 0 + value: -0.056 objectReference: {fileID: 0} - - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} propertyPath: m_LocalPosition.y - value: -0.028999977 + value: -0.17 objectReference: {fileID: 0} - - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} propertyPath: m_LocalPosition.z - value: 0.3 + value: 0.26699996 objectReference: {fileID: 0} - - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} propertyPath: m_LocalRotation.x - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} propertyPath: m_LocalRotation.y - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} propertyPath: m_RootOrder - value: 4 + value: 11 objectReference: {fileID: 0} - - target: {fileID: 114718788154663760, guid: 51cc6641d88b49d46bd38572540efe6c, - type: 2} - propertyPath: VoiceCommand - value: Toggle Button + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} + propertyPath: m_LocalScale.x + value: 0.087223016 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} + propertyPath: m_LocalScale.y + value: 0.087223046 objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} + propertyPath: m_LocalScale.z + value: 0.087223046 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 53ea63593b32415faf734536616f5fb3, type: 2} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} m_IsPrefabParent: 0 ---- !u!1001 &712471521 +--- !u!4 &683527376 stripped +Transform: + m_PrefabParentObject: {fileID: 400002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} + m_PrefabInternal: {fileID: 683527375} +--- !u!1001 &696056463 Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 1229001242} m_Modifications: - - target: {fileID: 114818926546564510, guid: 02c524b22137b5449904f5395141cc73, + - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + propertyPath: m_LocalPosition.x + value: -0.157 + objectReference: {fileID: 0} + - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + propertyPath: m_LocalPosition.y + value: 0.07900002 + objectReference: {fileID: 0} + - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + propertyPath: m_LocalPosition.z + value: 0.48480004 + objectReference: {fileID: 0} + - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114718788154663760, guid: 51cc6641d88b49d46bd38572540efe6c, + type: 2} + propertyPath: VoiceCommand + value: Toggle Button + objectReference: {fileID: 0} + - target: {fileID: 102859053046776500, guid: 51cc6641d88b49d46bd38572540efe6c, + type: 2} + propertyPath: m_Color.rgba + value: 4294967295 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &712471521 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1229001242} + m_Modifications: + - target: {fileID: 114818926546564510, guid: 02c524b22137b5449904f5395141cc73, type: 2} propertyPath: Events.Array.size value: 0 @@ -1965,15 +2012,15 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4899954742063566, guid: 02c524b22137b5449904f5395141cc73, type: 2} propertyPath: m_LocalPosition.x - value: 0 + value: -0.157 objectReference: {fileID: 0} - target: {fileID: 4899954742063566, guid: 02c524b22137b5449904f5395141cc73, type: 2} propertyPath: m_LocalPosition.y - value: 0.044 + value: 0.152 objectReference: {fileID: 0} - target: {fileID: 4899954742063566, guid: 02c524b22137b5449904f5395141cc73, type: 2} propertyPath: m_LocalPosition.z - value: 0.3 + value: 0.48480004 objectReference: {fileID: 0} - target: {fileID: 4899954742063566, guid: 02c524b22137b5449904f5395141cc73, type: 2} propertyPath: m_LocalRotation.x @@ -1993,7 +2040,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4899954742063566, guid: 02c524b22137b5449904f5395141cc73, type: 2} propertyPath: m_RootOrder - value: 2 + value: 1 objectReference: {fileID: 0} - target: {fileID: 114818926546564510, guid: 02c524b22137b5449904f5395141cc73, type: 2} @@ -2052,6 +2099,11 @@ Prefab: propertyPath: Events.Array.data[0].Settings.Array.data[0].FloatValue value: 0.5 objectReference: {fileID: 0} + - target: {fileID: 102556874199586456, guid: 02c524b22137b5449904f5395141cc73, + type: 2} + propertyPath: m_Color.rgba + value: 4294967295 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 02c524b22137b5449904f5395141cc73, type: 2} m_IsPrefabParent: 0 @@ -2060,12 +2112,6 @@ Transform: m_PrefabParentObject: {fileID: 4899954742063566, guid: 02c524b22137b5449904f5395141cc73, type: 2} m_PrefabInternal: {fileID: 712471521} ---- !u!114 &712471527 stripped -MonoBehaviour: - m_PrefabParentObject: {fileID: 114818926546564510, guid: 02c524b22137b5449904f5395141cc73, - type: 2} - m_PrefabInternal: {fileID: 712471521} - m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} --- !u!1 &817150417 GameObject: m_ObjectHideFlags: 0 @@ -2142,124 +2188,85 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 817150417} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &829029743 +--- !u!1 &902458143 stripped GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 829029744} - - component: {fileID: 829029748} - - component: {fileID: 829029747} - - component: {fileID: 829029746} - - component: {fileID: 829029745} - m_Layer: 0 - m_Name: ToggleFinger - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &829029744 + m_PrefabParentObject: {fileID: 100000, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + m_PrefabInternal: {fileID: 1396581778} +--- !u!4 &937929079 stripped +Transform: + m_PrefabParentObject: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, + type: 2} + m_PrefabInternal: {fileID: 1949083805} +--- !u!4 &949799843 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 400006, guid: 3f8a3164171bcba42b1e2b051b994a3c, type: 3} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829029743} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_Children: [] + m_GameObject: {fileID: 1598708714} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.25300002, y: -0.235, z: 0.297} + m_LocalScale: {x: 0.047473792, y: 0.047473792, z: 0.047473792} + m_Children: + - {fileID: 1416817888} m_Father: {fileID: 1229001242} - m_RootOrder: 11 + m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &829029745 +--- !u!4 &1030722024 stripped +Transform: + m_PrefabParentObject: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, + type: 2} + m_PrefabInternal: {fileID: 361655617} +--- !u!1 &1079301367 stripped +GameObject: + m_PrefabParentObject: {fileID: 100002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + m_PrefabInternal: {fileID: 1396581778} +--- !u!114 &1079301368 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829029743} + m_GameObject: {fileID: 1079301367} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} + m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} m_Name: m_EditorClassIdentifier: - Button: {fileID: 937929076} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!65 &829029746 + Enabled: 1 + States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + InputAction: + id: 0 + description: + axisConstraint: 0 + InputActionId: 0 + IsGlobal: 0 + Dimensions: 1 + CanSelect: 1 + CanDeselect: 1 + VoiceCommand: + RequiresGaze: 1 + Profiles: + - Target: {fileID: 902458143} + Themes: + - {fileID: 11400000, guid: db76f3ab99da0ec48ba3c57db801718d, type: 2} + HadDefaultTheme: 1 + OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Events: [] +--- !u!65 &1079301369 BoxCollider: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829029743} + m_GameObject: {fileID: 1079301367} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &829029747 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829029743} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &829029748 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 829029743} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &937929076 stripped -MonoBehaviour: - m_PrefabParentObject: {fileID: 114402419347283100, guid: ce4801a284bc5c3488c631dcdba665df, - type: 2} - m_PrefabInternal: {fileID: 1949083805} - m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} ---- !u!4 &937929079 stripped -Transform: - m_PrefabParentObject: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, - type: 2} - m_PrefabInternal: {fileID: 1949083805} ---- !u!4 &1030722024 stripped -Transform: - m_PrefabParentObject: {fileID: 4607159678781596, guid: d5e0e8cc740eb134789fd1f6bb5bb80a, - type: 2} - m_PrefabInternal: {fileID: 361655617} + m_Size: {x: 2.4839308, y: 2.231661, z: 1.9899502} + m_Center: {x: 0.23742922, y: 1.0758489, z: 0.015254656} --- !u!1001 &1141591799 Prefab: m_ObjectHideFlags: 0 @@ -2269,15 +2276,15 @@ Prefab: m_Modifications: - target: {fileID: 4894033903586032, guid: 8b83134143223104c9bc3865a565cab3, type: 2} propertyPath: m_LocalPosition.x - value: 0.64 + value: 0.44950002 objectReference: {fileID: 0} - target: {fileID: 4894033903586032, guid: 8b83134143223104c9bc3865a565cab3, type: 2} propertyPath: m_LocalPosition.y - value: 0.035 + value: 0.1539 objectReference: {fileID: 0} - target: {fileID: 4894033903586032, guid: 8b83134143223104c9bc3865a565cab3, type: 2} propertyPath: m_LocalPosition.z - value: 0.287 + value: 0.47180003 objectReference: {fileID: 0} - target: {fileID: 4894033903586032, guid: 8b83134143223104c9bc3865a565cab3, type: 2} propertyPath: m_LocalRotation.x @@ -2297,22 +2304,90 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4894033903586032, guid: 8b83134143223104c9bc3865a565cab3, type: 2} propertyPath: m_RootOrder - value: 17 + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 4153068939576982, guid: 8b83134143223104c9bc3865a565cab3, type: 2} + propertyPath: m_LocalPosition.y + value: -0.072 + objectReference: {fileID: 0} + - target: {fileID: 4670100275137830, guid: 8b83134143223104c9bc3865a565cab3, type: 2} + propertyPath: m_LocalPosition.y + value: -0.1406 objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 8b83134143223104c9bc3865a565cab3, type: 2} m_IsPrefabParent: 0 +--- !u!1001 &1158669537 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1229001242} + m_Modifications: + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalPosition.x + value: -0.25899997 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalPosition.y + value: -0.168 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalPosition.z + value: 0.269 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_RootOrder + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalScale.x + value: 0.08767561 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalScale.y + value: 0.08767561 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalScale.z + value: 0.08767561 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: b0fcdc3322e34d9ea83e8399bd9f4031, type: 2} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + m_IsPrefabParent: 0 +--- !u!4 &1158669538 stripped +Transform: + m_PrefabParentObject: {fileID: 400002, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + m_PrefabInternal: {fileID: 1158669537} --- !u!4 &1202078010 stripped Transform: m_PrefabParentObject: {fileID: 4165280830115576, guid: abb2df850d68f894d830c95c299cf10f, type: 2} m_PrefabInternal: {fileID: 33385085} ---- !u!114 &1202078011 stripped -MonoBehaviour: - m_PrefabParentObject: {fileID: 114359879210576386, guid: abb2df850d68f894d830c95c299cf10f, - type: 2} - m_PrefabInternal: {fileID: 33385085} - m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} --- !u!1 &1229001241 GameObject: m_ObjectHideFlags: 0 @@ -2335,28 +2410,23 @@ Transform: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1229001241} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1.937413, z: 1} + m_LocalPosition: {x: 0, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 386272942} - - {fileID: 1871725553} + - {fileID: 1727927208} - {fileID: 712471522} - - {fileID: 1968495723} - {fileID: 1269640614} - - {fileID: 1597681836} - {fileID: 1030722024} - - {fileID: 1978927276} - - {fileID: 1409481479} - - {fileID: 1784858703} - {fileID: 1790629158} - - {fileID: 829029744} - - {fileID: 1202078010} - - {fileID: 1948370886} - - {fileID: 937929079} - - {fileID: 619923189} - - {fileID: 472391883} - - {fileID: 1587308670} - {fileID: 587980797} + - {fileID: 1587308670} + - {fileID: 21188992} + - {fileID: 2053119672} + - {fileID: 1396581779} + - {fileID: 1158669538} + - {fileID: 683527376} + - {fileID: 490974902} + - {fileID: 949799843} m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2365,92 +2435,255 @@ Transform: m_PrefabParentObject: {fileID: 4582855949261192, guid: 51cc6641d88b49d46bd38572540efe6c, type: 2} m_PrefabInternal: {fileID: 696056463} ---- !u!114 &1269640615 stripped -MonoBehaviour: - m_PrefabParentObject: {fileID: 114718788154663760, guid: 51cc6641d88b49d46bd38572540efe6c, - type: 2} - m_PrefabInternal: {fileID: 696056463} - m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} ---- !u!1 &1386039202 +--- !u!1 &1289414259 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 1602438171044188, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 1386039203} + - component: {fileID: 1289414260} m_Layer: 0 - m_Name: MixedRealityPlayspace + m_Name: MixedRealiityPlayspace m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1386039203 +--- !u!4 &1289414260 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 4167648966508384, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1386039202} + m_GameObject: {fileID: 1289414259} 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: 1428889684} + - {fileID: 1491404204} m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &1409481479 stripped -Transform: - m_PrefabParentObject: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, - type: 2} - m_PrefabInternal: {fileID: 1555856353} ---- !u!1 &1411847873 +--- !u!1 &1303878269 stripped GameObject: + m_PrefabParentObject: {fileID: 100000, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} + m_PrefabInternal: {fileID: 490974901} +--- !u!114 &1303878270 +MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1617302903321292, guid: da6cb4b5656af404ca2740df7f360792, - type: 2} + m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1411847874} - - component: {fileID: 1411847878} - - component: {fileID: 1411847877} - - component: {fileID: 1411847876} - - component: {fileID: 1411847875} - m_Layer: 0 - m_Name: Backpanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1411847874 -Transform: + m_GameObject: {fileID: 1303878269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} + m_Name: + m_EditorClassIdentifier: + Enabled: 1 + States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + InputAction: + id: 0 + description: + axisConstraint: 0 + InputActionId: 0 + IsGlobal: 0 + Dimensions: 1 + CanSelect: 1 + CanDeselect: 1 + VoiceCommand: + RequiresGaze: 1 + Profiles: + - Target: {fileID: 1519674641} + Themes: + - {fileID: 11400000, guid: ce58007a668e3214abb10622861eb3aa, type: 2} + HadDefaultTheme: 1 + OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Events: [] +--- !u!65 &1303878271 +BoxCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4121299678842376, guid: da6cb4b5656af404ca2740df7f360792, - type: 2} + m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1411847873} - 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.75, z: 0.01} - m_Children: [] - m_Father: {fileID: 1677932525} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!54 &1411847875 -Rigidbody: + m_GameObject: {fileID: 1303878269} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.02366005, y: 0.036535963, z: 0.023770884} + m_Center: {x: -0.00009767608, y: 0.039525505, z: 0.000788192} +--- !u!1 &1326834557 stripped +GameObject: + m_PrefabParentObject: {fileID: 100002, guid: 5838ea95659d32943afec95550ac1ce1, type: 3} + m_PrefabInternal: {fileID: 683527375} +--- !u!114 &1326834558 +MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 54445563858238718, guid: da6cb4b5656af404ca2740df7f360792, - type: 2} + m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1411847873} - serializedVersion: 2 - m_Mass: 100 - m_Drag: 0 - m_AngularDrag: 0.05 - m_UseGravity: 0 + m_GameObject: {fileID: 1326834557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} + m_Name: + m_EditorClassIdentifier: + Enabled: 1 + States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + InputAction: + id: 0 + description: + axisConstraint: 0 + InputActionId: 0 + IsGlobal: 0 + Dimensions: 1 + CanSelect: 1 + CanDeselect: 1 + VoiceCommand: + RequiresGaze: 1 + Profiles: + - Target: {fileID: 677770018} + Themes: + - {fileID: 11400000, guid: fac50a31c0d7baa438665cd4892903c0, type: 2} + HadDefaultTheme: 1 + OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Events: [] +--- !u!65 &1326834559 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1326834557} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.9739887, y: 1.9647117, z: 2.2133298} + m_Center: {x: -0.013914302, y: 0.0092758285, z: 0.04833329} +--- !u!1 &1357803576 stripped +GameObject: + m_PrefabParentObject: {fileID: 100000, guid: 5308c0eb5c6ed4647b3797671dc2e5f3, type: 3} + m_PrefabInternal: {fileID: 1158669537} +--- !u!1001 &1396581778 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1229001242} + m_Modifications: + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalPosition.x + value: -0.516 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalPosition.y + value: -0.279 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalPosition.z + value: 0.25499994 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalScale.x + value: 0.09836525 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalScale.y + value: 0.09836526 + objectReference: {fileID: 0} + - target: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalScale.z + value: 0.09836526 + objectReference: {fileID: 0} + - target: {fileID: 2300000, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: a7448698c15706f48905e44d8e76f2b5, type: 2} + - target: {fileID: 400000, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + propertyPath: m_LocalPosition.y + value: 1.99 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + m_IsPrefabParent: 0 +--- !u!4 &1396581779 stripped +Transform: + m_PrefabParentObject: {fileID: 400002, guid: aa39033344b08ce4bab10cc11dc6d6b8, type: 3} + m_PrefabInternal: {fileID: 1396581778} +--- !u!1 &1411847873 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1617302903321292, guid: da6cb4b5656af404ca2740df7f360792, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1411847874} + - component: {fileID: 1411847878} + - component: {fileID: 1411847877} + - component: {fileID: 1411847876} + - component: {fileID: 1411847875} + m_Layer: 0 + m_Name: Backpanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1411847874 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4121299678842376, guid: da6cb4b5656af404ca2740df7f360792, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1411847873} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.0812, z: 0} + m_LocalScale: {x: 0.5, y: 0.587617, z: 0.01} + m_Children: [] + m_Father: {fileID: 1677932525} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &1411847875 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 54445563858238718, guid: da6cb4b5656af404ca2740df7f360792, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1411847873} + serializedVersion: 2 + m_Mass: 100 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 m_IsKinematic: 1 m_Interpolate: 0 m_Constraints: 126 @@ -2512,6 +2745,81 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1411847873} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1416817887 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100002, guid: 3f8a3164171bcba42b1e2b051b994a3c, type: 3} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1416817888} + - component: {fileID: 1416817890} + - component: {fileID: 1416817889} + m_Layer: 0 + m_Name: Cheese + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1416817888 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400002, guid: 3f8a3164171bcba42b1e2b051b994a3c, type: 3} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1416817887} + 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: 949799843} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1416817889 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2300002, guid: 3f8a3164171bcba42b1e2b051b994a3c, + type: 3} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1416817887} + 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_Materials: + - {fileID: 2100000, guid: 71d471797c0e430783230146721c3fcb, type: 2} + - {fileID: 2100000, guid: 71d471797c0e430783230146721c3fcb, 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 &1416817890 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3300002, guid: 3f8a3164171bcba42b1e2b051b994a3c, + type: 3} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1416817887} + m_Mesh: {fileID: 4300000, guid: 3f8a3164171bcba42b1e2b051b994a3c, type: 3} --- !u!1 &1428268607 GameObject: m_ObjectHideFlags: 0 @@ -2575,21 +2883,63 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &1428889683 +--- !u!1 &1485507611 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 1428889684} - - component: {fileID: 1428889689} - - component: {fileID: 1428889688} - - component: {fileID: 1428889687} - - component: {fileID: 1428889686} - - component: {fileID: 1428889685} + - component: {fileID: 1485507613} + - component: {fileID: 1485507612} + m_Layer: 0 + m_Name: MixedRealityToolkit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1485507612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1485507611} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83d9acc7968244a8886f3af591305bcb, type: 3} + m_Name: + m_EditorClassIdentifier: + activeProfile: {fileID: 11400000, guid: 31a611a779d3499e8e35f1a2018ca841, type: 2} +--- !u!4 &1485507613 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1485507611} + 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: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1491404203 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1642518919968782, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1491404204} + - component: {fileID: 1491404209} + - component: {fileID: 1491404208} + - component: {fileID: 1491404207} + - component: {fileID: 1491404206} + - component: {fileID: 1491404205} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -2597,26 +2947,28 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1428889684 +--- !u!4 &1491404204 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 4415459938865198, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1428889683} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 1491404203} + 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: 409268360} - m_Father: {fileID: 1386039203} + - {fileID: 1944927946} + m_Father: {fileID: 1289414260} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1428889685 +--- !u!114 &1491404205 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 114508633870072526, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1428889683} + m_GameObject: {fileID: 1491404203} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: bf98dd1206224111a38765365e98e207, type: 3} @@ -2634,44 +2986,48 @@ MonoBehaviour: minHeadVelocityThreshold: 0.5 maxHeadVelocityThreshold: 2 debugDrawRay: 0 ---- !u!114 &1428889686 +--- !u!114 &1491404206 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 114893101135001648, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1428889683} + m_GameObject: {fileID: 1491404203} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 6d8ddcf767354d5f90704bb40ddec60a, type: 3} m_Name: m_EditorClassIdentifier: pointingExtent: 10 - uiRaycastCamera: {fileID: 409268363} + uiRaycastCamera: {fileID: 1944927949} pointingRaycastLayerMasks: - serializedVersion: 2 m_Bits: 4294967291 debugDrawPointingRays: 0 debugDrawPointingRayColors: [] ---- !u!81 &1428889687 +--- !u!81 &1491404207 AudioListener: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 81316153687041124, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1428889683} + m_GameObject: {fileID: 1491404203} m_Enabled: 1 ---- !u!124 &1428889688 +--- !u!124 &1491404208 Behaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 124038919867758994, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1428889683} + m_GameObject: {fileID: 1491404203} m_Enabled: 1 ---- !u!20 &1428889689 +--- !u!20 &1491404209 Camera: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 20083293653351938, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1428889683} + m_GameObject: {fileID: 1491404203} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 @@ -2687,7 +3043,7 @@ Camera: field of view: 60 orthographic: 0 orthographic size: 5 - m_Depth: 0 + m_Depth: -1 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 @@ -2702,48 +3058,67 @@ Camera: m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 ---- !u!1 &1485507611 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1485507613} - - component: {fileID: 1485507612} - m_Layer: 0 - m_Name: MixedRealityManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1485507612 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1485507611} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 83d9acc7968244a8886f3af591305bcb, type: 3} - m_Name: - m_EditorClassIdentifier: - activeProfile: {fileID: 11400000, guid: 31a611a779d3499e8e35f1a2018ca841, type: 2} ---- !u!4 &1485507613 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1485507611} - 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: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1553718425 +--- !u!1 &1519674641 stripped +GameObject: + m_PrefabParentObject: {fileID: 100006, guid: 54f72652009c7574a96c8d088d1c78ef, type: 3} + m_PrefabInternal: {fileID: 490974901} +--- !u!1001 &1523779281 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2053119672} + m_Modifications: + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalPosition.y + value: -0.06999999 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114402419347283100, guid: ce4801a284bc5c3488c631dcdba665df, + type: 2} + propertyPath: VoiceCommand + value: Toggle + objectReference: {fileID: 0} + - target: {fileID: 1850867357197028, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + propertyPath: m_Name + value: Toggle (2) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &1523779282 stripped +Transform: + m_PrefabParentObject: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, + type: 2} + m_PrefabInternal: {fileID: 1523779281} +--- !u!1 &1553718425 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} @@ -2909,161 +3284,75 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1553718425} ---- !u!1001 &1555856353 -Prefab: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1229001242} - m_Modifications: - - target: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - propertyPath: m_LocalPosition.x - value: 0.238 - objectReference: {fileID: 0} - - target: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - propertyPath: m_LocalPosition.y - value: 0.046 - objectReference: {fileID: 0} - - target: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - propertyPath: m_LocalPosition.z - value: 0.302 - objectReference: {fileID: 0} - - target: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4951315836615182, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - propertyPath: m_RootOrder - value: 8 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: f75829242875c1c4ca4ea5a5e7a6a742, type: 2} - m_IsPrefabParent: 0 --- !u!4 &1587308670 stripped Transform: m_PrefabParentObject: {fileID: 4894033903586032, guid: 8b83134143223104c9bc3865a565cab3, type: 2} m_PrefabInternal: {fileID: 1141591799} ---- !u!1 &1597681835 +--- !u!1 &1598708714 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 100006, guid: 3f8a3164171bcba42b1e2b051b994a3c, type: 3} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 1597681836} - - component: {fileID: 1597681840} - - component: {fileID: 1597681839} - - component: {fileID: 1597681838} - - component: {fileID: 1597681837} + - component: {fileID: 949799843} + - component: {fileID: 1598708716} + - component: {fileID: 1598708715} m_Layer: 0 - m_Name: SimpleButtonFinger + m_Name: Cheese m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1597681836 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1597681835} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_Children: [] - m_Father: {fileID: 1229001242} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1597681837 + m_IsActive: 1 +--- !u!114 &1598708715 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1597681835} + m_GameObject: {fileID: 1598708714} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} + m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} m_Name: m_EditorClassIdentifier: - Button: {fileID: 0} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!65 &1597681838 + Enabled: 1 + States: {fileID: 11400000, guid: 5eac1712038236e4b8ffdb3893804fe1, type: 2} + InputAction: + id: 0 + description: + axisConstraint: 0 + InputActionId: 0 + IsGlobal: 0 + Dimensions: 1 + CanSelect: 1 + CanDeselect: 1 + VoiceCommand: + RequiresGaze: 1 + Profiles: + - Target: {fileID: 1416817887} + Themes: + - {fileID: 11400000, guid: 1872be27ce323c54f93896976d90d5c4, type: 2} + HadDefaultTheme: 1 + OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Events: [] +--- !u!65 &1598708716 BoxCollider: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1597681835} + m_GameObject: {fileID: 1598708714} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1597681839 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1597681835} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1597681840 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1597681835} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &1616599429 stripped -MonoBehaviour: - m_PrefabParentObject: {fileID: 114200093395354822, guid: 8b83134143223104c9bc3865a565cab3, - type: 2} - m_PrefabInternal: {fileID: 1141591799} - m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} + m_Size: {x: 4.1451945, y: 2.7606258, z: 3.7189484} + m_Center: {x: 3.3503172, y: 1.2563689, z: -1.3594743} --- !u!1 &1665462085 GameObject: m_ObjectHideFlags: 0 @@ -3243,8 +3532,8 @@ Transform: type: 2} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1677932524} - m_LocalRotation: {x: -0, y: 0.40190813, z: -0, w: 0.91568005} - m_LocalPosition: {x: 1.401, y: 1.865, z: 1.36} + m_LocalRotation: {x: 0, y: 0.38268343, z: 0, w: 0.92387956} + m_LocalPosition: {x: 1.218, y: 0.331, z: 1.729} m_LocalScale: {x: 2.0953145, y: 2.0953145, z: 2.0953145} m_Children: - {fileID: 817150418} @@ -3252,8 +3541,8 @@ Transform: - {fileID: 282983769} - {fileID: 312509570} m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 47.395, z: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 45, z: 0} --- !u!1 &1727927204 GameObject: m_ObjectHideFlags: 0 @@ -3266,7 +3555,7 @@ GameObject: - component: {fileID: 1727927206} - component: {fileID: 1727927205} m_Layer: 0 - m_Name: Sphere + m_Name: DebugTargetObject m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -3332,407 +3621,205 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1727927204} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.284, y: 2.181, z: 1.969} - m_LocalScale: {x: 0.3147925, y: 0.3147925, z: 0.3147925} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.492, y: -0.06, z: 0.43799996} + m_LocalScale: {x: 0.031612422, y: 0.031612422, z: 0.031612422} m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 5 + m_Father: {fileID: 1229001242} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1784858702 +--- !u!4 &1790629158 stripped +Transform: + m_PrefabParentObject: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, + type: 2} + m_PrefabInternal: {fileID: 662393010} +--- !u!1 &1877041862 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 1784858703} - - component: {fileID: 1784858707} - - component: {fileID: 1784858706} - - component: {fileID: 1784858705} - - component: {fileID: 1784858704} + - component: {fileID: 1877041863} + - component: {fileID: 1877041865} + - component: {fileID: 1877041864} m_Layer: 0 - m_Name: CheckboxFinger + m_Name: TextPanel m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1784858703 -Transform: + m_IsActive: 1 +--- !u!224 &1877041863 +RectTransform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1784858702} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 1877041862} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_Children: [] - m_Father: {fileID: 1229001242} - m_RootOrder: 9 + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1665462086} + - {fileID: 1553718426} + m_Father: {fileID: 312509570} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1784858704 + 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 &1877041864 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1784858702} + m_GameObject: {fileID: 1877041862} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} + m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: m_EditorClassIdentifier: - Button: {fileID: 1202078011} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!65 &1784858705 -BoxCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1784858702} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1784858706 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1784858702} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1784858707 -MeshFilter: + m_Padding: + m_Left: 20 + m_Right: 20 + m_Top: 20 + m_Bottom: 20 + m_ChildAlignment: 1 + m_Spacing: 50 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 +--- !u!222 &1877041865 +CanvasRenderer: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1784858702} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1790629158 stripped -Transform: - m_PrefabParentObject: {fileID: 4249060311757736, guid: 40da8a1b3b26ba743b892d890b95a9f9, - type: 2} - m_PrefabInternal: {fileID: 662393010} ---- !u!1 &1871725552 + m_GameObject: {fileID: 1877041862} +--- !u!1 &1944927945 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 1386653657810408, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 1871725553} - - component: {fileID: 1871725557} - - component: {fileID: 1871725556} - - component: {fileID: 1871725555} - - component: {fileID: 1871725554} + - component: {fileID: 1944927946} + - component: {fileID: 1944927949} + - component: {fileID: 1944927948} + - component: {fileID: 1944927947} m_Layer: 0 - m_Name: ToggleButtonFinger + m_Name: UIRaycastCamera m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1871725553 + m_IsActive: 1 +--- !u!4 &1944927946 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 4534477953653268, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1871725552} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 1944927945} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 1229001242} - m_RootOrder: 1 + m_Father: {fileID: 1491404204} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1871725554 +--- !u!114 &1944927947 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 114577618389656682, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1871725552} + m_GameObject: {fileID: 1944927945} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: m_EditorClassIdentifier: - Button: {fileID: 1269640615} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!65 &1871725555 -BoxCollider: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1944927948 +MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 114898526756992990, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1871725552} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1871725556 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1871725552} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1871725557 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1871725552} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1877041862 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1877041863} - - component: {fileID: 1877041865} - - component: {fileID: 1877041864} - m_Layer: 0 - m_Name: TextPanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1877041863 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1877041862} - 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: 1665462086} - - {fileID: 1553718426} - m_Father: {fileID: 312509570} - 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 &1877041864 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1877041862} + m_GameObject: {fileID: 1944927945} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 20 - m_Right: 20 - m_Top: 20 - m_Bottom: 20 - m_ChildAlignment: 1 - m_Spacing: 50 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 0 ---- !u!222 &1877041865 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1877041862} ---- !u!1 &1948370885 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1948370886} - - component: {fileID: 1948370890} - - component: {fileID: 1948370889} - - component: {fileID: 1948370888} - - component: {fileID: 1948370887} - m_Layer: 0 - m_Name: RadialFinger - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1948370886 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1948370885} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_Children: [] - m_Father: {fileID: 1229001242} - m_RootOrder: 13 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1948370887 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1948370885} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: m_EditorClassIdentifier: - Button: {fileID: 472391884} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!65 &1948370888 -BoxCollider: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!20 &1944927949 +Camera: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_PrefabParentObject: {fileID: 20089925551936286, guid: 03e1a152a7ef93e479c9e1135a1b02b1, + type: 2} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1948370885} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 + m_GameObject: {fileID: 1944927945} + m_Enabled: 0 serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1948370889 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1948370885} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1948370890 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1948370885} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + m_ClearFlags: 3 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 0.5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 1 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 --- !u!1001 &1949083805 Prefab: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 1229001242} + m_TransformParent: {fileID: 2053119672} m_Modifications: - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} propertyPath: m_LocalPosition.x - value: 0.423 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} propertyPath: m_LocalPosition.y - value: -0.024 + value: 0.07000001 objectReference: {fileID: 0} - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} propertyPath: m_LocalPosition.z - value: 0.282 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} propertyPath: m_LocalRotation.x @@ -3752,7 +3839,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4938574377845388, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} propertyPath: m_RootOrder - value: 14 + value: 0 objectReference: {fileID: 0} - target: {fileID: 114402419347283100, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} @@ -3762,207 +3849,56 @@ Prefab: m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: ce4801a284bc5c3488c631dcdba665df, type: 2} m_IsPrefabParent: 0 ---- !u!1 &1968495722 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 - m_Component: - - component: {fileID: 1968495723} - - component: {fileID: 1968495727} - - component: {fileID: 1968495726} - - component: {fileID: 1968495725} - - component: {fileID: 1968495724} - m_Layer: 0 - m_Name: AnimationFinger - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1968495723 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1968495722} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_Children: [] - m_Father: {fileID: 1229001242} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1968495724 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1968495722} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} - m_Name: - m_EditorClassIdentifier: - Button: {fileID: 2456771} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!65 &1968495725 -BoxCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1968495722} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1968495726 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1968495722} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1968495727 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1968495722} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1978927275 +--- !u!1 &2053119671 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 5 m_Component: - - component: {fileID: 1978927276} - - component: {fileID: 1978927280} - - component: {fileID: 1978927279} - - component: {fileID: 1978927278} - - component: {fileID: 1978927277} + - component: {fileID: 2053119672} + - component: {fileID: 2053119673} m_Layer: 0 - m_Name: HolographicFinger + m_Name: ToggleCollection m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1978927276 + m_IsActive: 1 +--- !u!4 &2053119672 Transform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1978927275} + m_GameObject: {fileID: 2053119671} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.18700004, z: 0} - m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} - m_Children: [] + m_LocalPosition: {x: 0.25800002, y: 0.083, z: 0.47179997} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 937929079} + - {fileID: 306669061} + - {fileID: 1523779282} m_Father: {fileID: 1229001242} - m_RootOrder: 7 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1978927277 +--- !u!114 &2053119673 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1978927275} + m_GameObject: {fileID: 2053119671} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: afb3d203ea3ffed4dba2fddd2771cc64, type: 3} + m_Script: {fileID: 11500000, guid: cf12ee76e7e00a44a9a84256760020e6, type: 3} m_Name: m_EditorClassIdentifier: - Button: {fileID: 662393011} - Focus: 0 - Down: 0 - Disabled: 0 - Clicked: 0 ---- !u!65 &1978927278 -BoxCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1978927275} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &1978927279 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1978927275} - 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_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - 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 &1978927280 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1978927275} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + ignoreInactiveTransforms: 1 + sortType: 0 + surfaceType: 1 + orientType: 3 + layout: 0 + radius: 2 + radialRange: 180 + rows: 3 + cellWidth: 0.07 + cellHeight: 0.07 diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Materials/ButtonBackground.mat b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Materials/ButtonBackground.mat index 8244f196197..e0e2ee59263 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Materials/ButtonBackground.mat +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Materials/ButtonBackground.mat @@ -164,7 +164,7 @@ Material: m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - - _Color: {r: 0.7058824, g: 0.7058824, b: 0.7058824, 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} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Materials/Foreground.mat b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Materials/Foreground.mat index 07f45e0d233..8a100cd1986 100644 --- a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Materials/Foreground.mat +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Materials/Foreground.mat @@ -164,7 +164,7 @@ Material: m_Colors: - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} - - _Color: {r: 0.7058824, g: 0.7058824, b: 0.7058824, a: 1} + - _Color: {r: 0.105882354, g: 0.6313726, b: 0.8867924, 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} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CheeseTheme.asset b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CheeseTheme.asset new file mode 100644 index 00000000000..03894f1f77b --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CheeseTheme.asset @@ -0,0 +1,390 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: CheeseTheme + m_EditorClassIdentifier: + Name: + Settings: + - Name: ScaleOffsetColorTheme + Properties: + - Name: Scale + Type: 6 + 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: 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: Focus + 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: 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.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: Disabled + 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: Offset + Type: 6 + 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: + - 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: 1, g: 0.7647059, 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: 1, g: 0.61922556, b: 0, 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: 1, g: 0.44043308, b: 0, 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: 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: + - 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: [] + Easing: + EaseValues: 1 + Curve: + 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 + LerpTime: 0.1 + NoEasing: 0 + IsValid: 1 + ThemeTarget: + Properties: [] + Target: {fileID: 0} + States: [] + CustomSettings: [] + States: {fileID: 0} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CheeseTheme.asset.meta b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CheeseTheme.asset.meta new file mode 100644 index 00000000000..b1287c62117 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CheeseTheme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1872be27ce323c54f93896976d90d5c4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset new file mode 100644 index 00000000000..a50e9dbb509 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset @@ -0,0 +1,390 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: CoffeeTheme + m_EditorClassIdentifier: + Name: + Settings: + - Name: ScaleOffsetColorTheme + Properties: + - Name: Scale + Type: 6 + 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: 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: Focus + 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: Pressed + 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: Disabled + 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: Offset + Type: 6 + 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.4, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {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: + - 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.21568628, g: 0.10980392, b: 0.039215688, 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.41509432, g: 0.21420433, b: 0.08027767, 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.6509434, g: 0.40960306, b: 0.24870951, 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: 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: + - 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: [] + Easing: + EaseValues: 1 + Curve: + 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 + LerpTime: 0.2 + NoEasing: 0 + IsValid: 1 + ThemeTarget: + Properties: [] + Target: {fileID: 0} + States: [] + CustomSettings: [] + States: {fileID: 0} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset.meta b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset.meta new file mode 100644 index 00000000000..668a7e4abc2 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CoffeeTheme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db76f3ab99da0ec48ba3c57db801718d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CylinderTheme.asset b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CylinderTheme.asset new file mode 100644 index 00000000000..095d05688c7 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CylinderTheme.asset @@ -0,0 +1,390 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: CylinderTheme + m_EditorClassIdentifier: + Name: + Settings: + - Name: ScaleOffsetColorTheme + Properties: + - Name: Scale + Type: 6 + 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: 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: Focus + 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: Pressed + 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: Disabled + 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: Offset + Type: 6 + 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.32, z: 0} + Vector4: {x: 0, y: 0, z: 0, w: 0} + Color: {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: + - 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.75686276, b: 0.75686276, 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.012415428, g: 0.8773585, b: 0.8773585, 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.013349946, g: 0.3498023, b: 0.5660378, 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: 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: + - 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: [] + Easing: + EaseValues: 1 + Curve: + 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 + LerpTime: 0.1 + NoEasing: 0 + IsValid: 1 + ThemeTarget: + Properties: [] + Target: {fileID: 0} + States: [] + CustomSettings: [] + States: {fileID: 0} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CylinderTheme.asset.meta b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CylinderTheme.asset.meta new file mode 100644 index 00000000000..8315d4e5f30 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/CylinderTheme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 747264624b7f3934b8b507fdb1a20e51 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset new file mode 100644 index 00000000000..c61057cec71 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset @@ -0,0 +1,647 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: Model_BuckyTheme + m_EditorClassIdentifier: + Name: + Settings: + - Name: ScaleOffsetColorTheme + Properties: + - Name: Scale + Type: 6 + 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: 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: Focus + 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: 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.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: Disabled + 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: Offset + Type: 6 + 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: + - 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.7529412, b: 1, 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: 1, g: 0.62734854, b: 0, 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.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: 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: 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: + 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: + Easing: + EaseValues: 1 + Curve: + 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 + LerpTime: 0.2 + NoEasing: 0 + IsValid: 0 + ThemeTarget: + Properties: [] + Target: {fileID: 0} + States: [] + CustomSettings: [] + States: {fileID: 0} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset.meta b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset.meta new file mode 100644 index 00000000000..e78f77dc21f --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_BuckyTheme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fac50a31c0d7baa438665cd4892903c0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset new file mode 100644 index 00000000000..1a833ae14a9 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset @@ -0,0 +1,1733 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: Model_IcosaTheme + m_EditorClassIdentifier: + Name: + Settings: + - Name: InteractableShaderTheme + 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: 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: 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: 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: 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} + ShaderOptionNames: + - _AlbedoAlphaMode + - _Cutoff + - _Metallic + - _Smoothness + - _EnableChannelMap + - _EnableNormalMap + - _EnableEmission + - _DirectionalLight + - _SpecularHighlights + - _Reflections + - _Refraction + - _RefractiveIndex + - _RimLight + - _RimPower + - _ClippingPlane + - _ClippingPlaneBorder + - _ClippingPlaneBorderWidth + - _NearPlaneFade + - _FadeBeginDistance + - _FadeCompleteDistance + - _HoverLight + - _EnableHoverColorOverride + - _HoverLightOpaque + - _EnableHoverColorOpaqueOverride + - _RoundCorners + - _RoundCornerRadius + - _RoundCornerMargin + - _BorderLight + - _BorderLightUsesHoverColor + - _BorderLightOpaque + - _BorderWidth + - _BorderMinValue + - _EdgeSmoothingValue + - _InnerGlow + - _EnvironmentColoring + - _EnvironmentColorThreshold + - _EnvironmentColorIntensity + - _Mode + - _CustomMode + - _SrcBlend + - _DstBlend + - _BlendOp + - _ZTest + - _ZWrite + - _ColorWriteMask + - _CullMode + - _RenderQueueOverride + - _InstancedColor + - _Stencil + - _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: + Easing: + EaseValues: 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.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 + 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 + - _Metallic + - _Smoothness + - _EnableChannelMap + - _EnableNormalMap + - _EnableEmission + - _DirectionalLight + - _SpecularHighlights + - _Reflections + - _Refraction + - _RefractiveIndex + - _RimLight + - _RimPower + - _ClippingPlane + - _ClippingPlaneBorder + - _ClippingPlaneBorderWidth + - _NearPlaneFade + - _FadeBeginDistance + - _FadeCompleteDistance + - _HoverLight + - _EnableHoverColorOverride + - _HoverLightOpaque + - _EnableHoverColorOpaqueOverride + - _RoundCorners + - _RoundCornerRadius + - _RoundCornerMargin + - _BorderLight + - _BorderLightUsesHoverColor + - _BorderLightOpaque + - _BorderWidth + - _BorderMinValue + - _EdgeSmoothingValue + - _InnerGlow + - _EnvironmentColoring + - _EnvironmentColorThreshold + - _EnvironmentColorIntensity + - _Mode + - _CustomMode + - _SrcBlend + - _DstBlend + - _BlendOp + - _ZTest + - _ZWrite + - _ColorWriteMask + - _CullMode + - _RenderQueueOverride + - _InstancedColor + - _Stencil + - _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: + Easing: + EaseValues: 1 + Curve: + 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 + 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: 0} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset.meta b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset.meta new file mode 100644 index 00000000000..daebd32028e --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/Model_IcosaTheme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e450e5bf251b5e641a3cc9e6d1022531 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/ballonTheme.asset b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/ballonTheme.asset new file mode 100644 index 00000000000..b0e97707f43 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/ballonTheme.asset @@ -0,0 +1,350 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7e7db9a2688ed540af9819c456ba2e2, type: 3} + m_Name: ballonTheme + m_EditorClassIdentifier: + Name: + Settings: + - Name: ScaleOffsetColorTheme + Properties: + - Name: Scale + Type: 6 + 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: 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: Focus + 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: 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.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: Disabled + 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: Offset + Type: 6 + 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: + - 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: 1, g: 0, b: 0.84705883, 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: 1, g: 0.76344615, b: 0.33490568, 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.45590416, g: 0, b: 0.7647059, 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: 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: + History: [] + Easing: + EaseValues: 1 + Curve: + 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 + LerpTime: 0.1 + NoEasing: 0 + IsValid: 0 + ThemeTarget: + Properties: [] + Target: {fileID: 0} + States: [] + CustomSettings: [] + States: {fileID: 0} diff --git a/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/ballonTheme.asset.meta b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/ballonTheme.asset.meta new file mode 100644 index 00000000000..64efee36d5e --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/Features/UX/Interactable/Themes/ballonTheme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce58007a668e3214abb10622861eb3aa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/MRTK_Standard_DarkBrown.mat b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/MRTK_Standard_DarkBrown.mat new file mode 100644 index 00000000000..0ec608faf15 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/MRTK_Standard_DarkBrown.mat @@ -0,0 +1,144 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: MRTK_Standard_DarkBrown + m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3} + m_ShaderKeywords: _BORDER_LIGHT_USES_HOVER_COLOR _DIRECTIONAL_LIGHT _DISABLE_ALBEDO_MAP + _LIGHTMAPPING_REALTIME _SPECULAR_HIGHLIGHTS + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + 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} + - _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: 0 + - _BlendOp: 0 + - _BorderLight: 0 + - _BorderLightOpaque: 0 + - _BorderLightUsesHoverColor: 1 + - _BorderMinValue: 0.1 + - _BorderWidth: 0.1 + - _BumpScale: 1 + - _ClippingPlane: 0 + - _ClippingPlaneBorder: 0 + - _ClippingPlaneBorderWidth: 0.025 + - _ColorWriteMask: 15 + - _CullMode: 2 + - _CustomMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DirectionalLight: 1 + - _DstBlend: 0 + - _EdgeSmoothingValue: 0.002 + - _EmissionScaleUI: 0 + - _EnableChannelMap: 0 + - _EnableEmission: 0 + - _EnableHoverColorOpaqueOverride: 0 + - _EnableHoverColorOverride: 0 + - _EnableNormalMap: 0 + - _EnvironmentColorIntensity: 0.5 + - _EnvironmentColorThreshold: 1.5 + - _EnvironmentColoring: 0 + - _FadeBeginDistance: 0.85 + - _FadeCompleteDistance: 0.5 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _HoverLight: 0 + - _HoverLightOpaque: 0 + - _InnerGlow: 0 + - _InstancedColor: 0 + - _Lightmapping: 1 + - _Metallic: 0 + - _Mode: 0 + - _NearPlaneFade: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Reflections: 0 + - _Refraction: 0 + - _RefractiveIndex: 1.1 + - _RenderQueueOverride: -1 + - _RimLight: 0 + - _RimPower: 0.25 + - _RoundCornerMargin: 0 + - _RoundCornerRadius: 0.25 + - _RoundCorners: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComparison: 0 + - _StencilOperation: 0 + - _StencilReference: 0 + - _UVSec: 0 + - _ZTest: 4 + - _ZWrite: 1 + m_Colors: + - _ClipPlane: {r: 0, g: 1, b: 0, a: 0} + - _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1} + - _Color: {r: 0.21698111, g: 0.11120721, b: 0.037869345, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColorUI: {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} + - _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} + - _RimColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/MRTK_Standard_DarkBrown.mat.meta b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/MRTK_Standard_DarkBrown.mat.meta new file mode 100644 index 00000000000..4b5e0594493 --- /dev/null +++ b/Assets/MixedRealityToolkit-SDK/StandardAssets/Materials/MRTK_Standard_DarkBrown.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a7448698c15706f48905e44d8e76f2b5 +timeCreated: 1435687483 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: