static UnityEngine.Object[] MM_Detour(AssetBundleRequest self)
        {
            if (ResourceRedirection.TryGetAssetBundleLoadInfo(self, out var info))
            {
                UnityEngine.Object[] result;

                if (info.ResolveType == AsyncAssetLoadingResolve.ThroughAssets)
                {
                    result = info.Assets;
                }
                else
                {
                    result = _original(self);
                }

                if (!info.SkipAllPostfixes)
                {
                    ResourceRedirection.Hook_AssetLoaded_Postfix(info.Parameters, info.Bundle, ref result);
                }

                return(result);
            }
            else
            {
                return(_original(self));
            }
        }
Ejemplo n.º 2
0
        static UnityEngine.Object MM_Detour(AssetBundleRequest self)
        {
            if (ResourceRedirection.TryGetAssetBundleLoadInfo(self, out var info))
            {
                UnityEngine.Object result = null;

                if (info.ResolveType == AsyncAssetLoadingResolve.ThroughAssets)
                {
                    var assets = info.Assets;
                    if (assets != null && assets.Length > 0)
                    {
                        result = assets[0];
                    }
                }
                else
                {
                    result = _original(self);
                }

                if (!info.SkipAllPostfixes)
                {
                    ResourceRedirection.Hook_AssetLoaded_Postfix(null, null, 0, null, self, ref result);
                }

                return(result);
            }
            else
            {
                return(_original(self));
            }
        }
Ejemplo n.º 3
0
        static UnityEngine.Object MM_Detour(AssetBundle self)
        {
            UnityEngine.Object result = null;

            var context = ResourceRedirection.Hook_AssetLoading_Prefix(null, null, AssetLoadType.LoadMainAsset, self, ref result);

            if (!context.SkipOriginalCall)
            {
                result = _original(self);
            }

            if (!context.SkipAllPostfixes)
            {
                ResourceRedirection.Hook_AssetLoaded_Postfix(null, null, AssetLoadType.LoadMainAsset, self, null, ref result);
            }

            return(result);
        }
Ejemplo n.º 4
0
        static UnityEngine.Object MM_Detour(AssetBundle self, string name, Type type)
        {
            UnityEngine.Object result = null;

            var context = ResourceRedirection.Hook_AssetLoading_Prefix(name, type, AssetLoadType.LoadNamed, self, ref result);

            var p = context.Parameters;

            if (!context.SkipOriginalCall)
            {
                result = _original(self, p.Name, p.Type);
            }

            if (!context.SkipAllPostfixes)
            {
                ResourceRedirection.Hook_AssetLoaded_Postfix(p.Name, p.Type, AssetLoadType.LoadNamed, self, null, ref result);
            }

            return(result);
        }
        static UnityEngine.Object[] MM_Detour(AssetBundle self, Type type)
        {
            UnityEngine.Object[] result = null;

            var parameters = new AssetLoadingParameters(null, type, AssetLoadType.LoadByType);
            var context    = ResourceRedirection.Hook_AssetLoading_Prefix(parameters, self, ref result);

            var p = context.Parameters;

            if (!context.SkipOriginalCall)
            {
                result = _original(self, p.Type);
            }

            if (!context.SkipAllPostfixes)
            {
                ResourceRedirection.Hook_AssetLoaded_Postfix(context.Parameters, self, ref result);
            }

            return(result);
        }