Initial commit

This commit is contained in:
Thorbjoern
2025-05-26 00:46:28 +02:00
commit e5bca03433
3896 changed files with 1434297 additions and 0 deletions
@@ -0,0 +1,120 @@
using UnityEngine;
using XRMultiplayer;
#if UNITY_EDITOR
using UnityEditor;
using Unity.Tutorials.Core.Editor;
using UnityEditor.SceneManagement;
/// <summary>
/// Implement your Tutorial callbacks here.
/// </summary>
[CreateAssetMenu(fileName = DefaultFileName, menuName = "Tutorials/" + DefaultFileName + " Instance")]
public class TutorialCallbacks : ScriptableObject
{
/// <summary>
/// The default file name used to create asset of this class type.
/// </summary>
public const string DefaultFileName = "TutorialCallbacks";
[SerializeField] string m_GUID;
[SerializeField] Tutorial m_SetupTutorial;
/// <summary>
/// Creates a TutorialCallbacks asset and shows it in the Project window.
/// </summary>
/// <param name="assetPath">
/// A relative path to the project's root. If not provided, the Project window's currently active folder path is used.
/// </param>
/// <returns>The created asset</returns>
public static ScriptableObject CreateAndShowAsset(string assetPath = null)
{
assetPath = assetPath ?? $"{TutorialEditorUtils.GetActiveFolderPath()}/{DefaultFileName}.asset";
var asset = CreateInstance<TutorialCallbacks>();
AssetDatabase.CreateAsset(asset, AssetDatabase.GenerateUniqueAssetPath(assetPath));
EditorUtility.FocusProjectWindow(); // needed in order to make the selection of newly created asset to really work
Selection.activeObject = asset;
return asset;
}
[ContextMenu("Select Object By GUID")]
public void SelectSceneObjectByGUID()
{
var path = AssetDatabase.GUIDToAssetPath(m_GUID);
var obj = AssetDatabase.LoadAssetAtPath<GameObject>(path);
if(obj != null)
Selection.activeObject = obj;
else
Debug.LogError($"Object with GUID {m_GUID} not found in scene.");
}
public void ShowUGSTutorial()
{
TutorialWindowUtils.StartTutorial(m_SetupTutorial);
}
public bool IsConnected()
{
return XRINetworkGameManager.Connected.Value;
}
public void ToggleEditorPause(bool toggle)
{
EditorApplication.isPaused = toggle;
}
public void SelectNetworkManager()
{
Selection.activeObject = FindFirstObjectByType<NetworkManagerVRMultiplayer>();
}
public void SelectOfflineMenuAppearancePanel()
{
var appearanceMenus = FindObjectsByType<PlayerAppearanceMenu>(FindObjectsSortMode.None);
foreach(var menu in appearanceMenus)
{
if(menu.transform.parent.name != "Offline Menu UI")
continue;
Selection.activeObject = menu;
break;
}
}
public void SelectObjectInHeirarchyByName(string name)
{
var obj = GameObject.Find(name);
if(obj != null)
Selection.activeObject = obj;
else
Debug.LogError($"Object with name {name} not found in scene.");
}
public void OpenPrefabView(GameObject prefab)
{
AssetDatabase.OpenAsset(prefab);
SceneView.FrameLastActiveSceneView();
}
public void ExitPrefabView()
{
StageUtility.GoToMainStage();
}
public bool IsConnectedToUGS()
{
return CloudProjectSettings.projectBound;
}
public void ShowServicesSettings()
{
SettingsService.OpenProjectSettings("Project/Services");
}
[ContextMenu("Show Vivox Settings")]
public void ShowVivoxSettings()
{
SettingsService.OpenProjectSettings("Project/Services/Vivox");
}
}
#endif