A game about forced loneliness, made by TACStudios
1#if UNITY_EDITOR
2
3using System;
4using UnityEditor;
5using UnityEngine.InputSystem.Utilities;
6
7namespace UnityEngine.InputSystem.Editor
8{
9 internal static class BuildProviderHelpers
10 {
11 // Adds the given object to the list of preloaded asset if not already present and
12 // returns the argument given if the object was added to the list or null if already present.
13 public static Object PreProcessSinglePreloadedAsset(Object assetToPreload)
14 {
15 // Avoid including any null asset
16 if (assetToPreload == null)
17 return null;
18
19 // If we operate on temporary object instead of a properly persisted asset, adding that temporary asset
20 // would result in preloadedAssets containing null object "{fileID: 0}". Hence we ignore these.
21 if (EditorUtility.IsPersistent(assetToPreload))
22 {
23 // Add asset object, if it's not in there already.
24 var preloadedAssets = PlayerSettings.GetPreloadedAssets();
25 if (preloadedAssets != null && preloadedAssets.IndexOf(assetToPreload) == -1)
26 {
27 ArrayHelpers.Append(ref preloadedAssets, assetToPreload);
28 PlayerSettings.SetPreloadedAssets(preloadedAssets);
29 return assetToPreload;
30 }
31 }
32
33 return null;
34 }
35
36 // Removes the given object from preloaded assets if present.
37 // The object passed as argument if set to null by this function regardless if existing in preloaded
38 // assets or not.
39 public static void PostProcessSinglePreloadedAsset(ref Object assetAddedByThisProvider)
40 {
41 if (assetAddedByThisProvider == null)
42 return;
43
44 // Revert back to original state by removing all object(s) from preloaded assets that was added by this processor.
45 var preloadedAssets = PlayerSettings.GetPreloadedAssets();
46 while (preloadedAssets != null && preloadedAssets.Length > 0)
47 {
48 var index = Array.IndexOf(preloadedAssets, assetAddedByThisProvider);
49 if (index != -1)
50 {
51 ArrayHelpers.EraseAt(ref preloadedAssets, index);
52 PlayerSettings.SetPreloadedAssets(preloadedAssets);
53 break;
54 }
55 }
56
57 assetAddedByThisProvider = null;
58 }
59 }
60}
61
62#endif // UNITY_EDITOR