You've already forked Commercialization.topon
149 lines
5.6 KiB
C#
149 lines
5.6 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Text.RegularExpressions;
|
|||
|
|
using UnityEditor;
|
|||
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.Serialization;
|
|||
|
|
using AnyThink.Scripts.IntegrationManager.Editor;
|
|||
|
|
using Network = AnyThink.Scripts.IntegrationManager.Editor.Network;
|
|||
|
|
using IntegrationManager = AnyThink.Scripts.IntegrationManager.Editor.ATIntegrationManager;
|
|||
|
|
|
|||
|
|
public class ATAssetDatabaseManager : ScriptableObject
|
|||
|
|
{
|
|||
|
|
public const string SettingsExportPath = "Assets/AnyThinkPlugin/Resources/Assets/ATAssetDatabaseManager.asset";
|
|||
|
|
|
|||
|
|
private static ATAssetDatabaseManager instance;
|
|||
|
|
public Network importingNetwork = null;
|
|||
|
|
|
|||
|
|
public delegate void DownloadPluginProgressCallback(string pluginName, float progress, bool done);
|
|||
|
|
public delegate void ImportPackageCompletedCallback(Network network);
|
|||
|
|
|
|||
|
|
public DownloadPluginProgressCallback downloadPluginProgressCallback;
|
|||
|
|
public ImportPackageCompletedCallback importPackageCompletedCallback;
|
|||
|
|
|
|||
|
|
// public Network importingNetwork;
|
|||
|
|
|
|||
|
|
public static ATAssetDatabaseManager Instance
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (instance == null)
|
|||
|
|
{
|
|||
|
|
var settingsDir = Path.GetDirectoryName(SettingsExportPath);
|
|||
|
|
if (!Directory.Exists(settingsDir))
|
|||
|
|
{
|
|||
|
|
Directory.CreateDirectory(settingsDir);
|
|||
|
|
}
|
|||
|
|
string settingsFilePath = SettingsExportPath;
|
|||
|
|
|
|||
|
|
instance = AssetDatabase.LoadAssetAtPath<ATAssetDatabaseManager>(settingsFilePath);
|
|||
|
|
if (instance != null) return instance;
|
|||
|
|
|
|||
|
|
instance = CreateInstance<ATAssetDatabaseManager>();
|
|||
|
|
AssetDatabase.CreateAsset(instance, settingsFilePath);
|
|||
|
|
// init();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return instance;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private ATAssetDatabaseManager()
|
|||
|
|
{
|
|||
|
|
init();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void init()
|
|||
|
|
{
|
|||
|
|
ATLog.log("ATAssetDatabaseManager inited");
|
|||
|
|
|
|||
|
|
AssetDatabase.importPackageCompleted += packageName =>
|
|||
|
|
{
|
|||
|
|
ATLog.logFormat("importPackageCompleted() >>> packageName: {0} importingNetwork: {1}", new object[] { packageName, importingNetwork });
|
|||
|
|
if (!IsImportingNetwork(packageName)) return;
|
|||
|
|
ATLog.log("importPackageCompleted() >>> import succeed.");
|
|||
|
|
// ATConfig.saveInstalledNetworkVersion(packageName, )
|
|||
|
|
// var pluginParentDir = PluginParentDirectory;
|
|||
|
|
// var isPluginOutsideAssetsDir = IsPluginOutsideAssetsDirectory;
|
|||
|
|
// MovePluginFilesIfNeeded(pluginParentDir, isPluginOutsideAssetsDir);
|
|||
|
|
// AddLabelsToAssetsIfNeeded(pluginParentDir, isPluginOutsideAssetsDir);
|
|||
|
|
AssetDatabase.Refresh();
|
|||
|
|
|
|||
|
|
CallImportPackageCompletedCallback(importingNetwork);
|
|||
|
|
// importingNetwork = null;
|
|||
|
|
setImportingNetworkNull();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
AssetDatabase.importPackageCancelled += packageName =>
|
|||
|
|
{
|
|||
|
|
ATLog.logFormat("importPackageCancelled() >>> packageName: {0}", new object[] { packageName });
|
|||
|
|
if (!IsImportingNetwork(packageName)) return;
|
|||
|
|
|
|||
|
|
// MaxSdkLogger.UserDebug("Package import cancelled.");
|
|||
|
|
// importingNetwork = null;
|
|||
|
|
setImportingNetworkNull();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
AssetDatabase.importPackageFailed += (packageName, errorMessage) =>
|
|||
|
|
{
|
|||
|
|
ATLog.logFormat("importPackageFailed() >>> packageName: {0}, errorMsg: {1}", new object[] { packageName, errorMessage });
|
|||
|
|
if (!IsImportingNetwork(packageName)) return;
|
|||
|
|
|
|||
|
|
// MaxSdkLogger.UserError(errorMessage);
|
|||
|
|
// importingNetwork = null;
|
|||
|
|
setImportingNetworkNull();
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void setImportingNetworkNull()
|
|||
|
|
{
|
|||
|
|
// ATPluginSetting.Instance.ImportingNetwork = null;
|
|||
|
|
importingNetwork = null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void CallDownloadPluginProgressCallback(string pluginName, float progress, bool isDone)
|
|||
|
|
{
|
|||
|
|
if (downloadPluginProgressCallback == null) return;
|
|||
|
|
|
|||
|
|
downloadPluginProgressCallback(pluginName, progress, isDone);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void CallImportPackageCompletedCallback(Network network)
|
|||
|
|
{
|
|||
|
|
ATLog.log("CallImportPackageCompletedCallback() >>> network: " + network + " importPackageCompletedCallback: " + importPackageCompletedCallback);
|
|||
|
|
if (network != null)
|
|||
|
|
{
|
|||
|
|
ATConfig.saveInstalledNetworkVersion(network.Name, network.LatestVersions);
|
|||
|
|
// ATIntegrationManager.Instance.UpdateCurrentVersions(network);
|
|||
|
|
}
|
|||
|
|
if (importPackageCompletedCallback == null) return;
|
|||
|
|
importPackageCompletedCallback(network);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string GetPluginFileName(Network network)
|
|||
|
|
{
|
|||
|
|
// return network.Name.ToLowerInvariant() + "_" + network.LatestVersions.Unity + ".unitypackage";
|
|||
|
|
return network.PluginFileName;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private bool IsImportingNetwork(string packageName)
|
|||
|
|
{
|
|||
|
|
// Note: The pluginName doesn't have the '.unitypacakge' extension included in its name but the pluginFileName does. So using Contains instead of Equals.
|
|||
|
|
//window系统packageName是:项目路径/AnyThinkCore,Mac系统是: AnyThinkCore
|
|||
|
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
|||
|
|
if (packageName.Contains("\\"))
|
|||
|
|
{
|
|||
|
|
string[] packageNameArray = packageName.Split('\\');
|
|||
|
|
if (packageNameArray != null && packageNameArray.Length > 0)
|
|||
|
|
{
|
|||
|
|
packageName = packageNameArray[packageNameArray.Length -1];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
return importingNetwork != null && GetPluginFileName(importingNetwork).Contains(packageName);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|