Пример #1
0
        public unsafe static bool LoadImage(Texture2D tex, byte[] data, bool markNonReadable)
        {
            if (method_LoadImage_ptr == IntPtr.Zero)
            {
                method_LoadImage_ptr = UnityInternals.ResolveICall("UnityEngine.ImageConversion::LoadImage(UnityEngine.Texture2D,System.Byte[],System.Boolean)");
                if (method_LoadImage_ptr == IntPtr.Zero)
                {
                    MelonLogger.Error("Failed to resolve icall UnityEngine.ImageConversion::LoadImage(UnityEngine.Texture2D,System.Byte[],System.Boolean)");
                    return(false);
                }
                if (method_LoadImage_ptr != IntPtr.Zero)
                {
                    ImageConversion_LoadImage = (ImageConversion_LoadImage_Delegate)Marshal.GetDelegateForFunctionPointer(method_LoadImage_ptr, typeof(ImageConversion_LoadImage_Delegate));
                }
            }
            if (ImageConversion_LoadImage != null)
            {
                IntPtr dataPtr = UnityInternals.array_new(InternalClassPointerStore <byte> .NativeClassPtr, (uint)data.Length);
                for (var i = 0; i < data.Length; i++)
                {
                    IntPtr arrayStartPointer = (IntPtr)((long)dataPtr + 4 * IntPtr.Size);
                    ((byte *)arrayStartPointer.ToPointer())[i] = data[i];
                }

                return(ImageConversion_LoadImage(tex.Pointer, dataPtr, markNonReadable));
            }
            MelonLogger.Error("Failed to run UnityEngine.ImageConversion::LoadImage(UnityEngine.Texture2D,System.Byte[],System.Boolean)");
            return(false);
        }
Пример #2
0
        static ImageConversion()
        {
            IntPtr ptr = UnityInternals.ResolveICall("UnityEngine.ImageConversion::LoadImage(UnityEngine.Texture2D,System.Byte[],System.Boolean)");

            if (ptr != IntPtr.Zero)
            {
                ImageConversion_LoadImage = (ImageConversion_LoadImage_Delegate)Marshal.GetDelegateForFunctionPointer(ptr, typeof(ImageConversion_LoadImage_Delegate));
            }
            else
            {
                MelonLogger.Error("Failed to resolve icall UnityEngine.ImageConversion::LoadImage(UnityEngine.Texture2D,System.Byte[],System.Boolean)");
            }
        }
Пример #3
0
 public static bool LoadImage(Texture2D tex, byte[] data, bool markNonReadable)
 {
     if (method_LoadImage_ptr == null)
     {
         method_LoadImage_ptr = NET_SDK.IL2CPP.il2cpp_resolve_icall(NET_SDK.IL2CPP.StringToIntPtr("UnityEngine.ImageConversion::LoadImage(UnityEngine.Texture2D,System.Byte[],System.Boolean)"));
     }
     if (method_LoadImage_ptr != IntPtr.Zero)
     {
         ImageConversion_LoadImage = (ImageConversion_LoadImage_Delegate)Marshal.GetDelegateForFunctionPointer(method_LoadImage_ptr, typeof(ImageConversion_LoadImage_Delegate));
     }
     if (ImageConversion_LoadImage != null)
     {
         return(ImageConversion_LoadImage(tex.Pointer, ((Il2CppStructArray <byte>)data).Pointer, markNonReadable));
     }
     return(false);
 }