FSO.Common.Utils.TextureUtils.MaskFromTexture C# (CSharp) Method

MaskFromTexture() public static method

public static MaskFromTexture ( Microsoft.Xna.Framework.Graphics.Texture2D &Texture, Microsoft.Xna.Framework.Graphics.Texture2D Mask, uint ColorsFrom ) : void
Texture Microsoft.Xna.Framework.Graphics.Texture2D
Mask Microsoft.Xna.Framework.Graphics.Texture2D
ColorsFrom uint
return void
        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);
            }
        }