VR4RoboticArm2/VR4RoboticArm/Library/PackageCache/com.meta.xr.simulator/Editor/Utils/ToolbarItem.cs
IonutMocanu 48cccc22ad Main2
2025-09-08 11:13:29 +03:00

151 lines
5.3 KiB
C#

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* Licensed under the Oculus SDK License Agreement (the "License");
* you may not use the Oculus SDK except in compliance with the License,
* which is provided at the time of installation or download, or which
* otherwise accompanies this software in either electronic or hard copy form.
*
* You may obtain a copy of the License at
*
* https://developer.oculus.com/licenses/oculussdk/
*
* Unless required by applicable law or agreed to in writing, the Oculus SDK
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Meta.XR.Simulator.Editor;
using UnityEditor;
using System.Text.RegularExpressions;
using System.Text;
using Utils = Meta.XR.Simulator.Editor.Utils;
#if META_XR_SDK_CORE_SUPPORTS_TOOLBAR
using Meta.XR.Editor.PlayCompanion;
using Meta.XR.Editor.StatusMenu;
using Styles = Meta.XR.Editor.PlayCompanion.Styles;
using Meta.XR.Simulator.Editor.SyntheticEnvironments;
#if META_XR_SDK_CORE_74_OR_NEWER
using Meta.XR.Editor.ToolingSupport;
#endif
#endif
namespace Meta.XR.Simulator
{
[InitializeOnLoad]
internal static class ToolbarItem
{
private const string ToolbarItemTooltip =
#if UNITY_2022_2_OR_NEWER
"Set Play mode to use Meta XR Simulator\n<i>Simulates Meta Quest headset and features on desktop</i>";
#else
"Set Play mode to use Meta XR Simulator\nSimulates Meta Quest headset and features on desktop";
#endif
#if META_XR_SDK_CORE_SUPPORTS_TOOLBAR
#if META_XR_SDK_CORE_74_OR_NEWER
internal static readonly ToolDescriptor ToolDescriptor = new()
#else
internal static readonly Meta.XR.Editor.StatusMenu.Item ToolDescriptor = new()
#endif
{
Name = XRSimConstants.PublicName,
#if META_XR_SDK_CORE_77_OR_NEWER
MenuDescription = "Iterate faster in Editor",
#endif
Color = Meta.XR.Editor.UserInterface.Styles.Colors.Meta,
Icon = Styles.Contents.MetaXRSimulator,
#if META_XR_SDK_CORE_74_OR_NEWER
MqdhCategoryId = "857564592791179",
AddToStatusMenu = true,
AddToMenu = false,
#endif
#if META_XR_SDK_CORE_68_OR_NEWER
PillIcon = () =>
Utils.XRSimUtils.IsSimulatorActivated()
? (Meta.XR.Editor.UserInterface.Styles.Contents.CheckIcon,
Meta.XR.Editor.UserInterface.Styles.Colors.Meta,
false)
: (null, null, false),
#else
PillIcon = () =>
Utils.XRSimUtils.IsSimulatorActivated()
? (Meta.XR.Editor.UserInterface.Styles.Contents.CheckIcon,
Meta.XR.Editor.UserInterface.Styles.Colors.Meta)
: (null, null),
#endif
InfoTextDelegate = () => Utils.XRSimUtils.IsSimulatorActivated() ?
("Enabled", Meta.XR.Editor.UserInterface.Styles.Colors.SuccessColor) :
#if META_XR_SDK_CORE_77_OR_NEWER
("Disabled", Meta.XR.Editor.UserInterface.Styles.Colors.DisabledColor) ,
#else
("Disabled", Meta.XR.Editor.UserInterface.Styles.Colors.LightGray) ,
#endif
OnClickDelegate = async origin => await Utils.XRSimUtils.ToggleSimulator(true, origin.ToString().ToSimulatorOrigin()),
Order = 10,
CloseOnClick = false
};
#endif
static ToolbarItem()
{
#if META_XR_SDK_CORE_SUPPORTS_TOOLBAR
#if !META_XR_SDK_CORE_74_OR_NEWER
StatusMenu.RegisterItem(ToolDescriptor);
#endif
void MaybeStopServers()
{
if (Settings.AutomaticServers)
{
SyntheticEnvironmentServer.Stop();
}
}
var xrSimulatorItem = new Meta.XR.Editor.PlayCompanion.Item()
{
Order = 10,
Name = XRSimConstants.PublicName,
Tooltip = ToolbarItemTooltip,
Icon = Styles.Contents.MetaXRSimulator,
Color = Meta.XR.Editor.UserInterface.Styles.Colors.Meta,
Show = true,
ShouldBeSelected = () => Utils.XRSimUtils.IsSimulatorActivated(),
ShouldBeUnselected = () => !Utils.XRSimUtils.IsSimulatorActivated(),
OnSelect = async () => { await Utils.XRSimUtils.ActivateSimulator(true, Origin.Toolbar); },
OnUnselect = () =>
{
Utils.XRSimUtils.DeactivateSimulator(true, Origin.Toolbar);
MaybeStopServers();
},
OnEnteringPlayMode = () =>
{
if (Settings.AutomaticServers)
{
Registry.GetByInternalName(Settings.LastEnvironment)?
.Launch(true, Settings.DisplayServers);
}
},
OnExitingPlayMode = MaybeStopServers,
#if META_XR_SDK_CORE_69_OR_NEWER
OnEditorQuitting = MaybeStopServers,
#endif
};
Manager.RegisterItem(xrSimulatorItem);
#endif
}
}
}