Skip to content

Commit b497fe7

Browse files
committed
Added UnityPackage functionality
1 parent 4d50b70 commit b497fe7

File tree

1 file changed

+39
-13
lines changed

1 file changed

+39
-13
lines changed

MLAPI-Editor/MLAPIEditor.cs

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
#define INCLUDE_INSTALLER
2-
#if INCLUDE_INSTALLER
1+
#if INCLUDE_INSTALLER
32
using System;
43
using System.Collections;
54
using System.Collections.Generic;
@@ -258,6 +257,12 @@ private bool canRefetch
258257
private float progressTarget = 0f;
259258
private float progress = 0f;
260259

260+
[SerializeField]
261+
private bool PendingPackageLock = false;
262+
[SerializeField]
263+
private List<string> PendingPackages = new List<string>();
264+
265+
261266
[MenuItem("Window/MLAPI")]
262267
public static void ShowWindow()
263268
{
@@ -276,6 +281,19 @@ private void OnGUI()
276281
EditorUtility.ClearProgressBar();
277282
}
278283

284+
if (PendingPackages.Count > 0 && !EditorApplication.isCompiling && !EditorApplication.isUpdating && !PendingPackageLock)
285+
{
286+
PendingPackageLock = true;
287+
288+
string packageName = PendingPackages[PendingPackages.Count - 1];
289+
PendingPackages.RemoveAt(PendingPackages.Count - 1);
290+
291+
AssetDatabase.importPackageCompleted += OnPackageImported;
292+
AssetDatabase.importPackageFailed += OnPackageImportFailed;
293+
294+
AssetDatabase.ImportPackage(Application.dataPath + "/MLAPI/Lib/" + packageName, false);
295+
}
296+
279297
GUILayout.BeginArea(new Rect(5, 0, position.width - 5, position.height - (40 + ((string.IsNullOrEmpty(statusMessage) ? 0 : 20) + (canRefetch ? 20 : 0)))));
280298
scrollPos = GUILayout.BeginScrollView(scrollPos);
281299
tab = GUILayout.Toolbar(tab, new string[] { "GitHub", "Commits" });
@@ -356,6 +374,18 @@ private void OnGUI()
356374
Repaint();
357375
}
358376

377+
private void OnPackageImported(string packageName)
378+
{
379+
AssetDatabase.importPackageCompleted -= OnPackageImported;
380+
PendingPackageLock = false;
381+
}
382+
383+
private void OnPackageImportFailed(string packageName, string errorMessage)
384+
{
385+
AssetDatabase.importPackageFailed -= OnPackageImportFailed;
386+
PendingPackageLock = false;
387+
}
388+
359389
private List<MLAPIVersion> GetMajorVersionsBetween(MLAPIVersion currentVersion, MLAPIVersion targetVersion)
360390
{
361391
List<MLAPIVersion> versionsBetween = new List<MLAPIVersion>();
@@ -396,6 +426,8 @@ private GithubRelease[] GetReleasesFromVersions(List<MLAPIVersion> versions)
396426

397427
private IEnumerator InstallRelease(int index)
398428
{
429+
PendingPackages.Clear();
430+
PendingPackageLock = true;
399431
bool waiting = true;
400432
bool accepted = false;
401433
MLAPIVersion currentMLAPIVersion = MLAPIVersion.Parse(currentVersion);
@@ -435,11 +467,7 @@ private IEnumerator InstallRelease(int index)
435467
if (Directory.Exists(Application.dataPath + "/MLAPI/Lib/"))
436468
Directory.Delete(Application.dataPath + "/MLAPI/Lib/", true);
437469

438-
if (Directory.Exists(Application.dataPath + "/Editor/"))
439-
Directory.Delete(Application.dataPath + "/Editor/MLAPI/", false);
440-
441470
Directory.CreateDirectory(Application.dataPath + "/MLAPI/Lib/");
442-
Directory.CreateDirectory(Application.dataPath + "/Editor/MLAPI/");
443471

444472
bool downloadFail = false;
445473
for (int i = 0; i < releases[index].assets.Length; i++)
@@ -467,15 +495,12 @@ private IEnumerator InstallRelease(int index)
467495
statusMessage = "Writing " + releases[index].assets[i].name + " to disk";
468496
yield return null;
469497

470-
if (!releases[index].assets[i].name.ToLower().Contains("editor"))
471-
{
472-
File.WriteAllBytes(Application.dataPath + "/MLAPI/Lib/" + releases[index].assets[i].name, www.bytes);
473-
}
474-
else
498+
File.WriteAllBytes(Application.dataPath + "/MLAPI/Lib/" + releases[index].assets[i].name, www.bytes);
499+
500+
if (releases[index].assets[i].name.EndsWith(".unitypackage"))
475501
{
476-
File.WriteAllBytes(Application.dataPath + "/Editor/MLAPI/" + releases[index].assets[i].name, www.bytes);
502+
PendingPackages.Add(releases[index].assets[i].name);
477503
}
478-
479504
yield return null;
480505
}
481506
progress = i;
@@ -489,6 +514,7 @@ private IEnumerator InstallRelease(int index)
489514
}
490515
showProgressBar = false;
491516
statusMessage = "";
517+
PendingPackageLock = false;
492518
}
493519

494520
private IEnumerator GetReleases()

0 commit comments

Comments
 (0)