static AssetBundle MM_Detour(byte[] binary, uint crc)
        {
            AssetBundle result;

            var parameters = new AssetBundleLoadingParameters(binary, null, crc, 0, AssetBundleLoadType.LoadFromMemory);
            var context    = ResourceRedirection.Hook_AssetBundleLoading_Prefix(parameters, out result);

            var p = context.Parameters;

            if (!context.SkipOriginalCall)
            {
                result = _original(p.Binary, p.Crc);
            }

            if (!context.SkipAllPostfixes)
            {
                ResourceRedirection.Hook_AssetBundleLoaded_Postfix(parameters, ref result);
            }

            if (result != null && p.Path != null) // should only be null if loaded through non-hooked methods
            {
                var ext = result.GetOrCreateExtensionData <AssetBundleExtensionData>();
                ext.Path = p.Path;
            }

            return(result);
        }
        static AssetBundleCreateRequest MM_Detour(string path, uint crc, ulong offset)
        {
            AssetBundleCreateRequest result;

            var parameters = new AssetBundleLoadingParameters(null, path, crc, offset, AssetBundleLoadType.LoadFromFile);
            var context    = ResourceRedirection.Hook_AssetBundleLoading_Prefix(parameters, out result);

            if (!context.SkipOriginalCall)
            {
                var p = context.Parameters;
                result = _original(p.Path, p.Crc, p.Offset);
            }

            ResourceRedirection.Hook_AssetBundleLoading_Postfix(context, result);

            return(result);
        }
        static AssetBundleCreateRequest MM_Detour(byte[] binary, uint crc)
        {
            AssetBundleCreateRequest result;

            var parameters = new AssetBundleLoadingParameters(binary, null, crc, 0, AssetBundleLoadType.LoadFromMemory);
            var context    = ResourceRedirection.Hook_AssetBundleLoading_Prefix(parameters, out result);

            if (!context.SkipOriginalCall)
            {
                var p = context.Parameters;
                result = _original(p.Binary, p.Crc);
            }

            ResourceRedirection.Hook_AssetBundleLoading_Postfix(context, result);

            return(result);
        }
Example #4
0
        static AssetBundleCreateRequest MM_Detour(Stream stream, uint crc, uint managedReadBufferSize)
        {
            AssetBundleCreateRequest result;

            var parameters = new AssetBundleLoadingParameters(null, null, crc, 0, stream, managedReadBufferSize, AssetBundleLoadType.LoadFromMemory);
            var context    = ResourceRedirection.Hook_AssetBundleLoading_Prefix(parameters, out result);

            if (!context.SkipOriginalCall)
            {
                var p = context.Parameters;
                result = _original(p.Stream, p.Crc, p.ManagedReadBufferSize);
            }

            ResourceRedirection.Hook_AssetBundleLoading_Postfix(context, result);

            return(result);
        }