1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using Harmony;
- using UnityEngine;
- using XUnity.AutoTranslator.Plugin.Core.Constants;
- namespace XUnity.AutoTranslator.Plugin.Core.Extensions
- {
- public static class TextureExtensions
- {
- private static readonly MethodInfo LoadImage = AccessTools.Method( ClrTypes.ImageConversion, "LoadImage", new[] { typeof( Texture2D ), typeof( byte[] ), typeof( bool ) } );
- private static readonly MethodInfo EncodeToPNG = AccessTools.Method( ClrTypes.ImageConversion, "EncodeToPNG", new[] { typeof( Texture2D ) } );
- public static bool IsNonReadable( this Texture2D texture )
- {
- return texture.GetRawTextureData().Length == 0;
- }
- public static void LoadImageEx( this Texture2D texture, byte[] data, bool markNonReadable )
- {
- if( LoadImage != null )
- {
- LoadImage.Invoke( null, new object[] { texture, data, markNonReadable } );
- }
- else
- {
- texture.LoadImageSafe( data, markNonReadable );
- }
- }
- private static void LoadImageSafe( this Texture2D texture, byte[] data, bool markNonReadable )
- {
- texture.LoadImage( data, markNonReadable );
- }
- public static byte[] EncodeToPNGEx( this Texture2D texture )
- {
- if( EncodeToPNG != null )
- {
- return (byte[])EncodeToPNG.Invoke( null, new object[] { texture } );
- }
- else
- {
- return texture.EncodeToPNGSafe();
- }
- }
- private static byte[] EncodeToPNGSafe( this Texture2D texture )
- {
- return texture.EncodeToPNG();
- }
- }
- }
|