test
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
using UnityEditor;
|
||||
|
||||
namespace Unity.PlasticSCM.Editor
|
||||
{
|
||||
public static class CollabPlugin
|
||||
{
|
||||
public static bool IsEnabled()
|
||||
{
|
||||
return IsCollabInstanceEnabled();
|
||||
}
|
||||
|
||||
internal static void Disable()
|
||||
{
|
||||
SetCollabEnabledInstanceAs(false);
|
||||
|
||||
SetCollabEnabledInProjectSettingsAs(false);
|
||||
}
|
||||
|
||||
internal static void Enable()
|
||||
{
|
||||
SetCollabEnabledInstanceAs(true);
|
||||
|
||||
SetCollabEnabledInProjectSettingsAs(true);
|
||||
}
|
||||
|
||||
static void SetCollabEnabledInstanceAs(bool value)
|
||||
{
|
||||
object collabInstance = GetCollabInstance();
|
||||
|
||||
if (collabInstance == null)
|
||||
return;
|
||||
|
||||
// Invokes Collab.instance.SetCollabEnabledForCurrentProject(false)
|
||||
SetCollabEnabledForCurrentProject(collabInstance, value);
|
||||
}
|
||||
|
||||
static void SetCollabEnabledInProjectSettingsAs(bool value)
|
||||
{
|
||||
// Invokes PlayerSettings.SetCloudServiceEnabled("Collab", false)
|
||||
SetCloudServiceEnabled("Collab", value);
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
}
|
||||
|
||||
static bool IsCollabInstanceEnabled()
|
||||
{
|
||||
object collabInstance = GetCollabInstance();
|
||||
|
||||
if (collabInstance == null)
|
||||
return false;
|
||||
|
||||
// Invokes Collab.instance.IsCollabEnabledForCurrentProject()
|
||||
return IsCollabEnabledForCurrentProject(collabInstance);
|
||||
}
|
||||
|
||||
static void SetCollabEnabledForCurrentProject(object collabInstance, bool enable)
|
||||
{
|
||||
MethodInfo InternalSetCollabEnabledForCurrentProject =
|
||||
CollabType.GetMethod("SetCollabEnabledForCurrentProject");
|
||||
|
||||
if (InternalSetCollabEnabledForCurrentProject == null)
|
||||
return;
|
||||
|
||||
InternalSetCollabEnabledForCurrentProject.
|
||||
Invoke(collabInstance, new object[] { enable });
|
||||
}
|
||||
|
||||
static void SetCloudServiceEnabled(string setting, bool enable)
|
||||
{
|
||||
MethodInfo InternalSetCloudServiceEnabled = PlayerSettingsType.GetMethod(
|
||||
"SetCloudServiceEnabled",
|
||||
BindingFlags.NonPublic | BindingFlags.Static);
|
||||
|
||||
if (InternalSetCloudServiceEnabled == null)
|
||||
return;
|
||||
|
||||
InternalSetCloudServiceEnabled.
|
||||
Invoke(null, new object[] { setting, enable });
|
||||
}
|
||||
|
||||
static object GetCollabInstance()
|
||||
{
|
||||
if (CollabType == null)
|
||||
return null;
|
||||
|
||||
PropertyInfo InternalInstance =
|
||||
CollabType.GetProperty("instance");
|
||||
|
||||
if (InternalInstance == null)
|
||||
return null;
|
||||
|
||||
return InternalInstance.GetValue(null, null);
|
||||
}
|
||||
|
||||
static bool IsCollabEnabledForCurrentProject(object collabInstance)
|
||||
{
|
||||
MethodInfo InternalIsCollabEnabledForCurrentProject =
|
||||
CollabType.GetMethod("IsCollabEnabledForCurrentProject");
|
||||
|
||||
if (InternalIsCollabEnabledForCurrentProject == null)
|
||||
return false;
|
||||
|
||||
return (bool)InternalIsCollabEnabledForCurrentProject.
|
||||
Invoke(collabInstance, null);
|
||||
}
|
||||
|
||||
static readonly Type CollabType =
|
||||
typeof(UnityEditor.Editor).Assembly.
|
||||
GetType("UnityEditor.Collaboration.Collab");
|
||||
|
||||
static readonly Type PlayerSettingsType =
|
||||
typeof(UnityEditor.PlayerSettings);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user