53 lines
1.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|