Brak opisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BuildProviderHelpers.cs 2.4KB

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