97 lines
3.2 KiB
C#
97 lines
3.2 KiB
C#
|
|
using System.Collections.Generic;
|
||
|
|
using UnityEditor.PackageManager.Requests;
|
||
|
|
using UnityEngine;
|
||
|
|
|
||
|
|
namespace UnityEditor.U2D.Sprites.AIIntegration
|
||
|
|
{
|
||
|
|
#if UNITY_AI_ENABLED
|
||
|
|
[InitializeOnLoad]
|
||
|
|
#endif
|
||
|
|
class AIIntegration
|
||
|
|
{
|
||
|
|
private static List<string> s_InjectPackage = new()
|
||
|
|
{
|
||
|
|
"com.unity.2d.enhancers"
|
||
|
|
};
|
||
|
|
|
||
|
|
#if UNITY_AI_ENABLED
|
||
|
|
static AIIntegration()
|
||
|
|
{
|
||
|
|
Install2DEnhancerPackage();
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
static void Install2DEnhancerPackage()
|
||
|
|
{
|
||
|
|
var listRequest = PackageManager.Client.List(true);
|
||
|
|
while (!listRequest.IsCompleted)
|
||
|
|
System.Threading.Thread.Sleep(10);
|
||
|
|
if (listRequest.Status == PackageManager.StatusCode.Failure)
|
||
|
|
{
|
||
|
|
// Failed to load package list.
|
||
|
|
// This could be due to package manager not available in a virtual player.
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
var existingPackages = new List<PackageManager.PackageInfo>(listRequest.Result);
|
||
|
|
foreach (var requiredPackage in s_InjectPackage)
|
||
|
|
{
|
||
|
|
bool existed = false;
|
||
|
|
foreach(var package in existingPackages)
|
||
|
|
{
|
||
|
|
if (package.name == requiredPackage)
|
||
|
|
{
|
||
|
|
existed = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (existed)
|
||
|
|
continue;
|
||
|
|
|
||
|
|
existed = false;
|
||
|
|
var version = "";
|
||
|
|
var findRequest = PackageManager.Client.Search(requiredPackage);
|
||
|
|
while (!findRequest.IsCompleted)
|
||
|
|
System.Threading.Thread.Sleep(10);
|
||
|
|
if (findRequest.Status == PackageManager.StatusCode.Success)
|
||
|
|
{
|
||
|
|
foreach(var package in findRequest.Result)
|
||
|
|
{
|
||
|
|
if (package.name == requiredPackage)
|
||
|
|
{
|
||
|
|
version = package.versions.recommended;
|
||
|
|
if (string.IsNullOrEmpty(version))
|
||
|
|
version = package.versions.latestCompatible;
|
||
|
|
existed = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (existed)
|
||
|
|
{
|
||
|
|
AddRequest addRequest;
|
||
|
|
if (string.IsNullOrEmpty(version))
|
||
|
|
addRequest = PackageManager.Client.Add(requiredPackage);
|
||
|
|
else
|
||
|
|
addRequest = PackageManager.Client.Add(string.Format("{0}@{1}", requiredPackage, version));
|
||
|
|
|
||
|
|
while (!addRequest.IsCompleted)
|
||
|
|
System.Threading.Thread.Sleep(10);
|
||
|
|
if (addRequest.Status == PackageManager.StatusCode.Failure)
|
||
|
|
Debug.LogError($"Failed to add required package {requiredPackage}");
|
||
|
|
}
|
||
|
|
else
|
||
|
|
Debug.LogError($"{requiredPackage} not found!");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
[MenuItem("internal:2D/2D Enhancer/Install Package")]
|
||
|
|
static void InstallPackage()
|
||
|
|
{
|
||
|
|
Install2DEnhancerPackage();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|