avatar/Assets/VRCSDK/Dependencies/VRChat/Editor/ControlPanel/VRCSdkControlPanelSettings.cs
2022-09-27 20:47:45 -07:00

261 lines
10 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using VRC.Core;
using VRC.SDKBase.Editor;
public partial class VRCSdkControlPanel : EditorWindow
{
bool UseDevApi
{
get
{
return VRC.Core.API.GetApiUrl() == VRC.Core.API.devApiUrl;
}
}
string clientVersionDate;
string sdkVersionDate;
Vector2 settingsScroll;
private void Awake()
{
GetClientSdkVersionInformation();
}
public void GetClientSdkVersionInformation()
{
clientVersionDate = VRC.Core.SDKClientUtilities.GetTestClientVersionDate();
sdkVersionDate = VRC.Core.SDKClientUtilities.GetSDKVersionDate();
}
public void OnConfigurationChanged()
{
GetClientSdkVersionInformation();
}
void ShowSettings()
{
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
GUILayout.BeginVertical();
settingsScroll = EditorGUILayout.BeginScrollView(settingsScroll, GUILayout.Width(SdkWindowWidth));
EditorGUILayout.BeginVertical(boxGuiStyle);
EditorGUILayout.LabelField("Developer", EditorStyles.boldLabel);
VRCSettings.DisplayAdvancedSettings = EditorGUILayout.ToggleLeft("Show Extra Options on build page and account page", VRCSettings.DisplayAdvancedSettings);
bool prevDisplayHelpBoxes = VRCSettings.DisplayHelpBoxes;
VRCSettings.DisplayHelpBoxes = EditorGUILayout.ToggleLeft("Show Help Boxes on SDK components", VRCSettings.DisplayHelpBoxes);
if (VRCSettings.DisplayHelpBoxes != prevDisplayHelpBoxes)
{
Editor[] editors = (Editor[])Resources.FindObjectsOfTypeAll<Editor>();
for (int i = 0; i < editors.Length; i++)
{
editors[i].Repaint();
}
}
EditorGUILayout.EndVertical();
EditorGUILayout.Separator();
ShowSdk23CompatibilitySettings();
EditorGUILayout.Separator();
ShowSettingsOptionsForBuilders();
// debugging
if (APIUser.CurrentUser != null && APIUser.CurrentUser.hasSuperPowers)
{
EditorGUILayout.Separator();
EditorGUILayout.BeginVertical(boxGuiStyle);
EditorGUILayout.LabelField("Logging", EditorStyles.boldLabel);
// API logging
{
bool isLoggingEnabled = UnityEditor.EditorPrefs.GetBool("apiLoggingEnabled");
bool enableLogging = EditorGUILayout.ToggleLeft("API Logging Enabled", isLoggingEnabled);
if (enableLogging != isLoggingEnabled)
{
if (enableLogging)
VRC.Core.Logger.AddDebugLevel(DebugLevel.API);
else
VRC.Core.Logger.RemoveDebugLevel(DebugLevel.API);
UnityEditor.EditorPrefs.SetBool("apiLoggingEnabled", enableLogging);
}
}
// All logging
{
bool isLoggingEnabled = UnityEditor.EditorPrefs.GetBool("allLoggingEnabled");
bool enableLogging = EditorGUILayout.ToggleLeft("All Logging Enabled", isLoggingEnabled);
if (enableLogging != isLoggingEnabled)
{
if (enableLogging)
VRC.Core.Logger.AddDebugLevel(DebugLevel.All);
else
VRC.Core.Logger.RemoveDebugLevel(DebugLevel.All);
UnityEditor.EditorPrefs.SetBool("allLoggingEnabled", enableLogging);
}
}
EditorGUILayout.EndVertical();
}
else
{
if (UnityEditor.EditorPrefs.GetBool("apiLoggingEnabled"))
UnityEditor.EditorPrefs.SetBool("apiLoggingEnabled", false);
if (UnityEditor.EditorPrefs.GetBool("allLoggingEnabled"))
UnityEditor.EditorPrefs.SetBool("allLoggingEnabled", false);
}
// Future proof upload
{
EditorGUILayout.Separator();
EditorGUILayout.BeginVertical(boxGuiStyle);
EditorGUILayout.LabelField("Publish", EditorStyles.boldLabel);
bool futureProofPublish = UnityEditor.EditorPrefs.GetBool("futureProofPublish", DefaultFutureProofPublishEnabled);
futureProofPublish = EditorGUILayout.ToggleLeft("Future Proof Publish", futureProofPublish);
if (UnityEditor.EditorPrefs.GetBool("futureProofPublish", DefaultFutureProofPublishEnabled) != futureProofPublish)
{
UnityEditor.EditorPrefs.SetBool("futureProofPublish", futureProofPublish);
}
EditorGUILayout.LabelField("Client Version Date", clientVersionDate);
EditorGUILayout.LabelField("SDK Version Date", sdkVersionDate);
EditorGUILayout.EndVertical();
}
if (APIUser.CurrentUser != null)
{
EditorGUILayout.Separator();
EditorGUILayout.BeginVertical(boxGuiStyle);
// custom vrchat install location
OnVRCInstallPathGUI();
EditorGUILayout.EndVertical();
}
EditorGUILayout.EndScrollView();
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
}
static void OnVRCInstallPathGUI()
{
EditorGUILayout.LabelField("VRChat Client", EditorStyles.boldLabel);
EditorGUILayout.LabelField("Installed Client Path: ", clientInstallPath);
EditorGUILayout.BeginHorizontal();
GUILayout.Label("");
if (GUILayout.Button("Edit"))
{
string initPath = "";
if (!string.IsNullOrEmpty(clientInstallPath))
initPath = clientInstallPath;
clientInstallPath = EditorUtility.OpenFilePanel("Choose VRC Client Exe", initPath, "exe");
SDKClientUtilities.SetVRCInstallPath(clientInstallPath);
window.OnConfigurationChanged();
}
if (GUILayout.Button("Revert to Default"))
{
clientInstallPath = SDKClientUtilities.LoadRegistryVRCInstallPath();
window.OnConfigurationChanged();
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.Separator();
}
static void ShowSdk23CompatibilitySettings()
{
return;
// EditorGUILayout.BeginVertical(boxGuiStyle);
// EditorGUILayout.LabelField("VRCSDK2 & VRCSDK3 Compatibility", EditorStyles.boldLabel);
//#if !VRC_CLIENT
// bool sdk2Present = VRCSdk3Analysis.GetSDKInScene(VRCSdk3Analysis.SdkVersion.VRCSDK2).Count > 0;
// bool sdk3Present = VRCSdk3Analysis.GetSDKInScene(VRCSdk3Analysis.SdkVersion.VRCSDK3).Count > 0;
// bool sdk2DllActive = VRCSdk3Analysis.IsSdkDllActive(VRCSdk3Analysis.SdkVersion.VRCSDK2);
// bool sdk3DllActive = VRCSdk3Analysis.IsSdkDllActive(VRCSdk3Analysis.SdkVersion.VRCSDK3);
// if ( sdk2DllActive && sdk3DllActive)
// {
// GUILayout.TextArea("You have not yet configured this project for development with VRCSDK2 and Triggers or VRCSDK3 and Udon. ");
// if (sdk2Present && sdk3Present)
// {
// GUILayout.TextArea("This scene contains both SDK2 and SDK3 elements. " +
// "Please modify this scene to contain only one type or the other before completing your configuration.");
// }
// else if (sdk2Present)
// {
// GUILayout.TextArea("This scene contains SDK2 scripts. " +
// "Check below to configure this project for use with VRCSDK2 or remove your VRCSDK2 scripts to upgrade to VRCSDK3");
// bool downgrade = EditorGUILayout.ToggleLeft("Configure for use with VRCSDK2 and Triggers", false);
// if (downgrade)
// VRCSdk3Analysis.SetSdkVersionActive(VRCSdk3Analysis.SdkVersion.VRCSDK2);
// }
// else if (sdk3Present)
// {
// GUILayout.TextArea("This scene contains only SDK3 scripts and it ready to upgrade. " +
// "Click below to get started.");
// bool upgrade = EditorGUILayout.ToggleLeft("Configure for use with VRCSDK3 and Udon - Let's Rock!", false);
// if (upgrade)
// VRCSdk3Analysis.SetSdkVersionActive(VRCSdk3Analysis.SdkVersion.VRCSDK3);
// }
// else
// {
// GUILayout.TextArea("This scene is a blank slate. " +
// "Click below to get started.");
// bool upgrade = EditorGUILayout.ToggleLeft("Configure for use with VRCSDK3 and Udon - Let's Rock!", false);
// if (upgrade)
// VRCSdk3Analysis.SetSdkVersionActive(VRCSdk3Analysis.SdkVersion.VRCSDK3);
// }
// }
// else if (sdk2DllActive)
// {
// GUILayout.TextArea("This project has been configured to be built with VRCSDK2. " +
// "To upgrade, VRCSDK3 must be enabled here.");
// bool upgrade = EditorGUILayout.ToggleLeft("VRCSDK3 Scripts can be used", false);
// if (upgrade)
// VRCSdk3Analysis.SetSdkVersionActive(VRCSdk3Analysis.SdkVersion.VRCSDK3);
// }
// else if (sdk3DllActive)
// {
// GUILayout.TextArea("This project has been configured to be built with VRCSDK3. " +
// "Congratulations, you're ready to go. " +
// "You can still downgrade by activating VRCSDK2 here.");
// bool downgrade = EditorGUILayout.ToggleLeft("VRCSDK2 Scripts can be used", false);
// if (downgrade)
// VRCSdk3Analysis.SetSdkVersionActive(VRCSdk3Analysis.SdkVersion.VRCSDK2);
// }
// else
// {
// GUILayout.TextArea("Somehow you have disabled both VRCSDK2 and VRCSDK3. Oops. " +
// "Click here to begin development with VRCSDK3.");
// bool begin = EditorGUILayout.ToggleLeft("VRCSDK3 Scripts can be used", false);
// if (begin)
// VRCSdk3Analysis.SetSdkVersionActive(VRCSdk3Analysis.SdkVersion.VRCSDK3);
// }
//#else
// GUILayout.TextArea("I think you're in the main VRChat project. " +
// "You should not be enabling or disabling SDKs from here.");
//#endif
// EditorGUILayout.EndVertical();
}
}