Files
2026-02-21 16:45:37 +08:00

53 lines
1.3 KiB
C#

using System;
using UnityEngine;
namespace AmplifyImpostors
{
public static class Texture2DEx
{
private static byte[] Footer = new byte[26]
{
0, 0, 0, 0, 0, 0, 0, 0, 84, 82,
85, 69, 86, 73, 83, 73, 79, 78, 45, 88,
70, 73, 76, 69, 46, 0
};
public static byte[] EncodeToTGA(this Texture2D tex, bool withAlpha = true)
{
int num = ((!withAlpha) ? 3 : 4);
byte[] rawTextureData = tex.GetRawTextureData();
int num2 = rawTextureData.Length;
int width = tex.width;
int height = tex.height;
int num3 = num * (num2 / num);
int num4 = num3;
int num5 = Footer.Length;
int num6 = 18 + num5 + num4;
byte[] array = new byte[num6];
int num7 = 0;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = 2;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = 0;
array[num7++] = (byte)((width >> 0) & 0xFF);
array[num7++] = (byte)((width >> 8) & 0xFF);
array[num7++] = (byte)((height >> 0) & 0xFF);
array[num7++] = (byte)((height >> 8) & 0xFF);
array[num7++] = (byte)(8 * num);
array[num7++] = 0;
Array.Copy(rawTextureData, 0, array, num7, num2);
num7 += num2;
Array.Copy(Footer, 0, array, num7, num5);
return array;
}
}
}