UnityGame/Library/PackageCache/com.unity.inputsystem/InputSystem/Editor/Internal/BuildProviderHelpers.cs
2024-10-27 10:53:47 +03:00

63 lines
2.4 KiB
C#

#if UNITY_EDITOR
using System;
using UnityEditor;
using UnityEngine.InputSystem.Utilities;
namespace UnityEngine.InputSystem.Editor
{
internal static class BuildProviderHelpers
{
// Adds the given object to the list of preloaded asset if not already present and
// returns the argument given if the object was added to the list or null if already present.
public static Object PreProcessSinglePreloadedAsset(Object assetToPreload)
{
// Avoid including any null asset
if (assetToPreload == null)
return null;
// If we operate on temporary object instead of a properly persisted asset, adding that temporary asset
// would result in preloadedAssets containing null object "{fileID: 0}". Hence we ignore these.
if (EditorUtility.IsPersistent(assetToPreload))
{
// Add asset object, if it's not in there already.
var preloadedAssets = PlayerSettings.GetPreloadedAssets();
if (preloadedAssets != null && preloadedAssets.IndexOf(assetToPreload) == -1)
{
ArrayHelpers.Append(ref preloadedAssets, assetToPreload);
PlayerSettings.SetPreloadedAssets(preloadedAssets);
return assetToPreload;
}
}
return null;
}
// Removes the given object from preloaded assets if present.
// The object passed as argument if set to null by this function regardless if existing in preloaded
// assets or not.
public static void PostProcessSinglePreloadedAsset(ref Object assetAddedByThisProvider)
{
if (assetAddedByThisProvider == null)
return;
// Revert back to original state by removing all object(s) from preloaded assets that was added by this processor.
var preloadedAssets = PlayerSettings.GetPreloadedAssets();
while (preloadedAssets != null && preloadedAssets.Length > 0)
{
var index = Array.IndexOf(preloadedAssets, assetAddedByThisProvider);
if (index != -1)
{
ArrayHelpers.EraseAt(ref preloadedAssets, index);
PlayerSettings.SetPreloadedAssets(preloadedAssets);
break;
}
}
assetAddedByThisProvider = null;
}
}
}
#endif // UNITY_EDITOR