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

85 lines
3.2 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.IO;
using UnityEditor;
namespace Meta.XR.Simulator.Editor.SyntheticEnvironments
{
internal static class LocalSharingServer
{
private const string Name = "Local Sharing Server";
private const string MenuPath = XRSimConstants.MenuPath + "/" + Name;
private const string Port = "33793";
#if UNITY_EDITOR_OSX
private static readonly string FullPath =
Path.GetFullPath(Path.Join(XRSimConstants.XrSimDataFolderPath ,"local_sharing_server~","local_sharing_server"));
private static readonly string FullPathWithDot =
Path.GetFullPath(Path.Join(XRSimConstants.XrSimDataFolderPath ,".local_sharing_server","local_sharing_server"));
#else
private static readonly string FullPath =
Path.GetFullPath(Path.Join(XRSimConstants.XrSimDataFolderPath, "local_sharing_server~", "local_sharing_server.exe"));
private static readonly string FullPathWithDot =
Path.GetFullPath(Path.Join(XRSimConstants.XrSimDataFolderPath, ".local_sharing_server", "local_sharing_server.exe"));
#endif
[MenuItem(MenuPath + "/Launch Sharing Server")]
private static void StartFromMenu()
{
Start(true, true);
}
public static void Start(bool stopExisting, bool createWindow)
{
Utils.LogUtils.ReportInfo(Name, "Launching local sharing server");
var binaryPath = FullPath;
if (!Utils.SystemUtils.FileExists(binaryPath))
{
Utils.LogUtils.ReportWarning(Name, "failed to find " + binaryPath);
// NOTE: this is a deprecated path, but we still need to support it for existing users
binaryPath = FullPathWithDot;
if (!Utils.SystemUtils.FileExists(binaryPath))
{
Utils.LogUtils.DisplayDialogOrError(Name, "failed to find " + binaryPath);
return;
}
}
var existingProcess = Utils.ProcessUtils.GetProcessesByPort(Port).Count > 0;
if (existingProcess)
{
if (!stopExisting) return;
Stop();
}
// launch the binary
Utils.ProcessUtils.LaunchProcess(binaryPath, "", Name, createWindow);
}
[MenuItem(MenuPath + "/Stop Sharing Server")]
public static void Stop()
{
Utils.ProcessUtils.StopProcess(Port, Name);
}
}
}