protected bool DrawBacktrackProfileButton(BackProfileType returnProfileTarget = BackProfileType.Configuration) { string backText = string.Empty; BaseMixedRealityProfile backProfile = null; switch (returnProfileTarget) { case BackProfileType.Configuration: backText = "Back to Configuration Profile"; backProfile = MixedRealityToolkit.Instance.ActiveProfile; break; case BackProfileType.Input: backText = "Back to Input Profile"; backProfile = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; break; case BackProfileType.RegisteredServices: backText = "Back to Registered Service Providers Profile"; backProfile = MixedRealityToolkit.Instance.ActiveProfile.RegisteredServiceProvidersProfile; break; } return(DrawBacktrackProfileButton(backText, backProfile)); }
protected bool DrawBacktrackProfileButton(BackProfileType returnProfileTarget = BackProfileType.Configuration) { // We cannot select the correct profile if there is no instance if (!MixedRealityToolkit.IsInitialized) { return(false); } string backText = BackProfileDescriptions[(int)returnProfileTarget]; BaseMixedRealityProfile backProfile = null; switch (returnProfileTarget) { case BackProfileType.Configuration: backProfile = MixedRealityToolkit.Instance.ActiveProfile; break; case BackProfileType.Input: backProfile = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile; break; case BackProfileType.SpatialAwareness: backProfile = MixedRealityToolkit.Instance.ActiveProfile.SpatialAwarenessSystemProfile; break; case BackProfileType.RegisteredServices: backProfile = MixedRealityToolkit.Instance.ActiveProfile.RegisteredServiceProvidersProfile; break; } return(DrawBacktrackProfileButton(backText, backProfile)); }
/// <summary> /// Helper function to render header correctly for all profiles /// </summary> /// <param name="title">Title of profile</param> /// <param name="description">profile tooltip describing purpose</param> /// <param name="backText">Text for back button if not rendering as sub-profile</param> /// <param name="backProfile">Target profile to return to if not rendering as sub-profile</param> /// <returns>true to render rest of profile as-is or false if profile/MRTK is in a state to not render rest of profile contents</returns> protected bool RenderProfileHeader(string title, string description, BackProfileType returnProfileTarget = BackProfileType.Configuration) { RenderMixedRealityToolkitLogo(); if (!MixedRealityInspectorUtility.CheckMixedRealityConfigured()) { return(false); } if (DrawBacktrackProfileButton(returnProfileTarget)) { return(false); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(new GUIContent(title, description), EditorStyles.boldLabel, GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); EditorGUILayout.LabelField(string.Empty, GUI.skin.horizontalSlider); return(true); }
/// <summary> /// Helper function to render header correctly for all profiles /// </summary> /// <param name="title">Title of profile</param> /// <param name="description">profile tooltip describing purpose</param> /// <param name="selectionObject">The profile object. Used to re-select the object after MRTK instance is created.</param> /// <param name="isProfileInitialized">profile properties are full initialized for rendering</param> /// <param name="backText">Text for back button if not rendering as sub-profile</param> /// <param name="backProfile">Target profile to return to if not rendering as sub-profile</param> /// <returns>True if the rest of the profile should be rendered.</returns> protected bool RenderProfileHeader(string title, string description, Object selectionObject, bool isProfileInitialized = true, BackProfileType returnProfileTarget = BackProfileType.Configuration) { if (!RenderMRTKLogoAndSearch()) { CheckEditorPlayMode(); return(false); } var profile = target as BaseMixedRealityProfile; if (!RenderAsSubProfile) { CheckEditorPlayMode(); if (!profile.IsCustomProfile) { EditorGUILayout.HelpBox("Default MRTK profiles cannot be edited. Create a clone of this profile to modify settings.", MessageType.Warning); if (GUILayout.Button(new GUIContent("Clone"))) { MixedRealityProfileCloneWindow.OpenWindow(null, (BaseMixedRealityProfile)target, null); } } if (IsProfileInActiveInstance()) { DrawBacktrackProfileButton(returnProfileTarget); } if (!isProfileInitialized) { if (!MixedRealityToolkit.IsInitialized) { EditorGUILayout.HelpBox("There is not a MRTK instance in your scene. Some properties may not be editable", MessageType.Error); if (InspectorUIUtility.RenderIndentedButton(new GUIContent("Add Mixed Reality Toolkit instance to scene"), EditorStyles.miniButton)) { MixedRealityInspectorUtility.AddMixedRealityToolkitToScene(MixedRealityInspectorUtility.GetDefaultConfigProfile()); // After the toolkit has been created, set the selection back to this item so the user doesn't get lost Selection.activeObject = selectionObject; } } else if (!MixedRealityToolkit.Instance.HasActiveProfile) { EditorGUILayout.HelpBox("There is no active profile assigned in the current MRTK instance. Some properties may not be editable.", MessageType.Error); } } } else { if (!isProfileInitialized && profile.IsCustomProfile) { EditorGUILayout.HelpBox("Some properties may not be editable in this profile. Please refer to the error messages below to resolve editing.", MessageType.Warning); } } using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.LabelField(new GUIContent(title, description), EditorStyles.boldLabel, GUILayout.ExpandWidth(true)); RenderDocumentation(selectionObject); } EditorGUILayout.LabelField(string.Empty, GUI.skin.horizontalSlider); return(true); }