1
- #define INCLUDE_INSTALLER
2
- #if INCLUDE_INSTALLER
1
+ #if INCLUDE_INSTALLER
3
2
using System ;
4
3
using System . Collections ;
5
4
using System . Collections . Generic ;
@@ -258,6 +257,12 @@ private bool canRefetch
258
257
private float progressTarget = 0f ;
259
258
private float progress = 0f ;
260
259
260
+ [ SerializeField ]
261
+ private bool PendingPackageLock = false ;
262
+ [ SerializeField ]
263
+ private List < string > PendingPackages = new List < string > ( ) ;
264
+
265
+
261
266
[ MenuItem ( "Window/MLAPI" ) ]
262
267
public static void ShowWindow ( )
263
268
{
@@ -276,6 +281,19 @@ private void OnGUI()
276
281
EditorUtility . ClearProgressBar ( ) ;
277
282
}
278
283
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
+
279
297
GUILayout . BeginArea ( new Rect ( 5 , 0 , position . width - 5 , position . height - ( 40 + ( ( string . IsNullOrEmpty ( statusMessage ) ? 0 : 20 ) + ( canRefetch ? 20 : 0 ) ) ) ) ) ;
280
298
scrollPos = GUILayout . BeginScrollView ( scrollPos ) ;
281
299
tab = GUILayout . Toolbar ( tab , new string [ ] { "GitHub" , "Commits" } ) ;
@@ -356,6 +374,18 @@ private void OnGUI()
356
374
Repaint ( ) ;
357
375
}
358
376
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
+
359
389
private List < MLAPIVersion > GetMajorVersionsBetween ( MLAPIVersion currentVersion , MLAPIVersion targetVersion )
360
390
{
361
391
List < MLAPIVersion > versionsBetween = new List < MLAPIVersion > ( ) ;
@@ -396,6 +426,8 @@ private GithubRelease[] GetReleasesFromVersions(List<MLAPIVersion> versions)
396
426
397
427
private IEnumerator InstallRelease ( int index )
398
428
{
429
+ PendingPackages . Clear ( ) ;
430
+ PendingPackageLock = true ;
399
431
bool waiting = true ;
400
432
bool accepted = false ;
401
433
MLAPIVersion currentMLAPIVersion = MLAPIVersion . Parse ( currentVersion ) ;
@@ -435,11 +467,7 @@ private IEnumerator InstallRelease(int index)
435
467
if ( Directory . Exists ( Application . dataPath + "/MLAPI/Lib/" ) )
436
468
Directory . Delete ( Application . dataPath + "/MLAPI/Lib/" , true ) ;
437
469
438
- if ( Directory . Exists ( Application . dataPath + "/Editor/" ) )
439
- Directory . Delete ( Application . dataPath + "/Editor/MLAPI/" , false ) ;
440
-
441
470
Directory . CreateDirectory ( Application . dataPath + "/MLAPI/Lib/" ) ;
442
- Directory . CreateDirectory ( Application . dataPath + "/Editor/MLAPI/" ) ;
443
471
444
472
bool downloadFail = false ;
445
473
for ( int i = 0 ; i < releases [ index ] . assets . Length ; i ++ )
@@ -467,15 +495,12 @@ private IEnumerator InstallRelease(int index)
467
495
statusMessage = "Writing " + releases [ index ] . assets [ i ] . name + " to disk" ;
468
496
yield return null ;
469
497
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" ) )
475
501
{
476
- File . WriteAllBytes ( Application . dataPath + "/Editor/MLAPI/" + releases [ index ] . assets [ i ] . name , www . bytes ) ;
502
+ PendingPackages . Add ( releases [ index ] . assets [ i ] . name ) ;
477
503
}
478
-
479
504
yield return null ;
480
505
}
481
506
progress = i ;
@@ -489,6 +514,7 @@ private IEnumerator InstallRelease(int index)
489
514
}
490
515
showProgressBar = false ;
491
516
statusMessage = "" ;
517
+ PendingPackageLock = false ;
492
518
}
493
519
494
520
private IEnumerator GetReleases ( )
0 commit comments