A game about forced loneliness, made by TACStudios
1using System;
2using System.IO;
3using UnityEngine;
4
5namespace UnityEditor.U2D.Animation.SpriteLibraryEditor
6{
7 internal class SpriteLibraryAssetPostprocessor : AssetPostprocessor
8 {
9 public static event Action<string> OnImported;
10 public static event Action<string> OnDeleted;
11 public static event Action<string, string> OnMovedAssetFromTo;
12
13 const string k_SpriteLibExtension = ".spriteLib";
14
15 static bool IsPathSpriteLibrary(string assetPath) => string.Equals(Path.GetExtension(assetPath), k_SpriteLibExtension);
16
17 static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
18 {
19 if (movedAssets.Length == movedFromAssetPaths.Length)
20 {
21 if (OnMovedAssetFromTo != null)
22 {
23 for (var i = 0; i < movedAssets.Length; i++)
24 {
25 var fromPath = movedFromAssetPaths[i];
26 if (IsPathSpriteLibrary(fromPath))
27 {
28 var toPath = IsPathSpriteLibrary(movedAssets[i]) ? movedAssets[i] : null;
29 OnMovedAssetFromTo.Invoke(fromPath, toPath);
30 }
31 }
32 }
33 }
34
35 if (OnImported != null)
36 {
37 for (var i = 0; i < importedAssets.Length; i++)
38 {
39 var assetPath = importedAssets[i];
40 if (IsPathSpriteLibrary(assetPath))
41 OnImported.Invoke(assetPath);
42 }
43 }
44
45 if (OnDeleted != null)
46 {
47 for (var i = 0; i < deletedAssets.Length; i++)
48 {
49 var assetPath = deletedAssets[i];
50 if (IsPathSpriteLibrary(assetPath))
51 OnDeleted.Invoke(assetPath);
52 }
53 }
54 }
55 }
56}