version 2.5.0
This commit is contained in:
166
com.htc.upm.vive.openxr/Editor/PackageManagerHelper.cs
Normal file
166
com.htc.upm.vive.openxr/Editor/PackageManagerHelper.cs
Normal file
@@ -0,0 +1,166 @@
|
||||
// Copyright HTC Corporation All Rights Reserved.
|
||||
|
||||
using UnityEditor.PackageManager;
|
||||
using UnityEditor.PackageManager.Requests;
|
||||
using UnityEngine;
|
||||
|
||||
public static class PackageManagerHelper
|
||||
{
|
||||
private static bool s_wasPreparing;
|
||||
private static bool m_wasAdded;
|
||||
private static bool s_wasRemoved;
|
||||
private static ListRequest m_listRequest;
|
||||
private static AddRequest m_addRequest;
|
||||
private static RemoveRequest m_removeRequest;
|
||||
private static string s_fallbackIdentifier;
|
||||
|
||||
public static bool isPreparingList
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_listRequest == null) { return s_wasPreparing = true; }
|
||||
|
||||
switch (m_listRequest.Status)
|
||||
{
|
||||
case StatusCode.InProgress:
|
||||
return s_wasPreparing = true;
|
||||
case StatusCode.Failure:
|
||||
if (!s_wasPreparing)
|
||||
{
|
||||
Debug.LogError("Something wrong when adding package to list. error:" + m_listRequest.Error.errorCode + "(" + m_listRequest.Error.message + ")");
|
||||
}
|
||||
break;
|
||||
case StatusCode.Success:
|
||||
break;
|
||||
}
|
||||
|
||||
return s_wasPreparing = false;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool isAddingToList
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_addRequest == null) { return m_wasAdded = false; }
|
||||
|
||||
switch (m_addRequest.Status)
|
||||
{
|
||||
case StatusCode.InProgress:
|
||||
return m_wasAdded = true;
|
||||
case StatusCode.Failure:
|
||||
if (!m_wasAdded)
|
||||
{
|
||||
AddRequest request = m_addRequest;
|
||||
m_addRequest = null;
|
||||
if (string.IsNullOrEmpty(s_fallbackIdentifier))
|
||||
{
|
||||
Debug.LogError("Something wrong when adding package to list. error:" + request.Error.errorCode + "(" + request.Error.message + ")");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Failed to install package: \"" + request.Error.message + "\". Retry with fallback identifier \"" + s_fallbackIdentifier + "\"");
|
||||
AddToPackageList(s_fallbackIdentifier);
|
||||
}
|
||||
|
||||
s_fallbackIdentifier = null;
|
||||
}
|
||||
break;
|
||||
case StatusCode.Success:
|
||||
if (!m_wasAdded)
|
||||
{
|
||||
m_addRequest = null;
|
||||
s_fallbackIdentifier = null;
|
||||
ResetPackageList();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return m_wasAdded = false;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool isRemovingFromList
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_removeRequest == null) { return s_wasRemoved = false; }
|
||||
|
||||
switch (m_removeRequest.Status)
|
||||
{
|
||||
case StatusCode.InProgress:
|
||||
return s_wasRemoved = true;
|
||||
case StatusCode.Failure:
|
||||
if (!s_wasRemoved)
|
||||
{
|
||||
var request = m_removeRequest;
|
||||
m_removeRequest = null;
|
||||
Debug.LogError("Something wrong when removing package from list. error:" + m_removeRequest.Error.errorCode + "(" + m_removeRequest.Error.message + ")");
|
||||
}
|
||||
break;
|
||||
case StatusCode.Success:
|
||||
if (!s_wasRemoved)
|
||||
{
|
||||
m_removeRequest = null;
|
||||
ResetPackageList();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return s_wasRemoved = false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void PreparePackageList()
|
||||
{
|
||||
if (m_listRequest != null) { return; }
|
||||
m_listRequest = Client.List(true, true);
|
||||
}
|
||||
|
||||
public static void ResetPackageList()
|
||||
{
|
||||
s_wasPreparing = false;
|
||||
m_listRequest = null;
|
||||
}
|
||||
|
||||
public static bool IsPackageInList(string name, out UnityEditor.PackageManager.PackageInfo packageInfo)
|
||||
{
|
||||
packageInfo = null;
|
||||
if (m_listRequest == null || m_listRequest.Result == null) return false;
|
||||
|
||||
foreach (var package in m_listRequest.Result)
|
||||
{
|
||||
if (package.name.Equals(name))
|
||||
{
|
||||
packageInfo = package;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void AddToPackageList(string identifier, string fallbackIdentifier = null)
|
||||
{
|
||||
Debug.Assert(m_addRequest == null);
|
||||
|
||||
m_addRequest = Client.Add(identifier);
|
||||
s_fallbackIdentifier = fallbackIdentifier;
|
||||
}
|
||||
|
||||
public static void RemovePackage(string identifier)
|
||||
{
|
||||
Debug.Assert(m_removeRequest == null);
|
||||
|
||||
m_removeRequest = Client.Remove(identifier);
|
||||
}
|
||||
|
||||
public static PackageCollection GetPackageList()
|
||||
{
|
||||
if (m_listRequest == null || m_listRequest.Result == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return m_listRequest.Result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user