public static void MaskFromTexture(ref Texture2D Texture, Texture2D Mask, uint[] ColorsFrom)
{
if (Texture.Width != Mask.Width || Texture.Height != Mask.Height)
{
return;
}
var ColorTo = Color.Transparent.PackedValue;
var size = Texture.Width * Texture.Height;
uint[] buffer = GetBuffer(size);
Texture.GetData(buffer, 0, size);
var sizeMask = Mask.Width * Mask.Height;
var bufferMask = GetBuffer(sizeMask);
Mask.GetData(bufferMask, 0, sizeMask);
var didChange = false;
for (int i = 0; i < size; i++)
{
if (ColorsFrom.Contains(bufferMask[i]))
{
didChange = true;
buffer[i] = ColorTo;
}
}
if (didChange)
{
Texture.SetData(buffer, 0, size);
}
}