91 lines
2.7 KiB
C#
91 lines
2.7 KiB
C#
|
using System;
|
|||
|
using System.Reflection;
|
|||
|
|
|||
|
using UnityEditor;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
using Codice.Client.Common.Threading;
|
|||
|
using Codice.CM.Common;
|
|||
|
using Codice.LogWrapper;
|
|||
|
using PlasticGui;
|
|||
|
|
|||
|
namespace Unity.PlasticSCM.Editor
|
|||
|
{
|
|||
|
static class SetupCloudProjectId
|
|||
|
{
|
|||
|
internal static bool HasCloudProjectId()
|
|||
|
{
|
|||
|
if (PlasticPlugin.IsUnitTesting)
|
|||
|
return false;
|
|||
|
|
|||
|
return !string.IsNullOrEmpty(GetCloudProjectId());
|
|||
|
}
|
|||
|
|
|||
|
internal static string GetCloudProjectId()
|
|||
|
{
|
|||
|
//disable Warning CS0618 'PlayerSettings.cloudProjectId' is obsolete: 'cloudProjectId is deprecated
|
|||
|
#pragma warning disable 0618
|
|||
|
return PlayerSettings.cloudProjectId;
|
|||
|
}
|
|||
|
|
|||
|
internal static void ForWorkspace(
|
|||
|
WorkspaceInfo wkInfo,
|
|||
|
IPlasticAPI plasticApi)
|
|||
|
{
|
|||
|
RepositoryInfo repInfo = null;
|
|||
|
|
|||
|
IThreadWaiter waiter = ThreadWaiter.GetWaiter(10);
|
|||
|
waiter.Execute(
|
|||
|
/*threadOperationDelegate*/ delegate
|
|||
|
{
|
|||
|
RepositorySpec repSpec = plasticApi.GetRepositorySpec(wkInfo);
|
|||
|
|
|||
|
repInfo = plasticApi.GetRepositoryInfo(repSpec);
|
|||
|
},
|
|||
|
/*afterOperationDelegate*/ delegate
|
|||
|
{
|
|||
|
if (waiter.Exception != null)
|
|||
|
{
|
|||
|
ExceptionsHandler.LogException(
|
|||
|
"SetupCloudProjectId",
|
|||
|
waiter.Exception);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
SetupCloudProjectId.ForRepository(repInfo);
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
internal static void ForRepository(RepositoryInfo repInfo)
|
|||
|
{
|
|||
|
string projectId = repInfo.GUID.ToString();
|
|||
|
|
|||
|
// Invokes PlayerSettings.SetCloudProjectId(projectId)
|
|||
|
SetCloudProjectId(projectId);
|
|||
|
|
|||
|
AssetDatabase.SaveAssets();
|
|||
|
}
|
|||
|
|
|||
|
internal static void SetCloudProjectId(string projectId)
|
|||
|
{
|
|||
|
MethodInfo InternalSetCloudProjectId = PlayerSettingsType.GetMethod(
|
|||
|
"SetCloudProjectId",
|
|||
|
BindingFlags.NonPublic | BindingFlags.Static);
|
|||
|
|
|||
|
if (InternalSetCloudProjectId == null)
|
|||
|
{
|
|||
|
Debug.LogWarning(PlasticLocalization.GetString(
|
|||
|
PlasticLocalization.Name.CannotWriteCloudProjectId));
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
InternalSetCloudProjectId.Invoke(
|
|||
|
null, new object[] { projectId });
|
|||
|
}
|
|||
|
|
|||
|
static readonly Type PlayerSettingsType =
|
|||
|
typeof(UnityEditor.PlayerSettings);
|
|||
|
|
|||
|
static readonly ILog mLog = LogManager.GetLogger("SetupCloudProjectId");
|
|||
|
}
|
|||
|
}
|