public static void Set(ColorMask mask) { r = mask.HasFlag(ColorMask.R); g = mask.HasFlag(ColorMask.G); b = mask.HasFlag(ColorMask.B); a = mask.HasFlag(ColorMask.A); }
public bool ChannelSlider(ColorMask inspectedMask, ref Color col, Texture icon = null, bool slider = true) { var changed = false; var channel = inspectedMask.ToColorChannel(); if (icon) { icon.write(alphaBlend: false); } icon = channel.GetIcon(); var label = inspectedMask.ToText(); var channelEnabled = mask.HasFlag(inspectedMask); if (InspectedPainter && InspectedPainter.meshEditing && MeshEditorManager.MeshTool == VertexColorTool.inst) { var mat = InspectedPainter.Material; if (mat) { var tag = mat.Get(inspectedMask.ToString(), ShaderTags.VertexColorRole); if (!tag.IsNullOrEmpty()) { if (channelEnabled) { (tag + ":").nl(); } else { label = tag + " "; } } } } if (channelEnabled ? icon.Click(label) : "{0} channel ignored".F(label).toggleIcon(ref channelEnabled, true).changes(ref changed)) { mask ^= inspectedMask; } if (slider && channelEnabled) { float val = channel.GetValueFrom(col); if (pegi.edit(ref val, 0, 1).nl(ref changed)) { channel.SetValueOn(ref col, val); } } return(changed); }
public static Color ModifyColor(this Color srcColor, byte clrDecrement, ColorMask mask, Vector3Int colorMaskModifier) { Color clr = new Color(srcColor.R, srcColor.G, srcColor.B, srcColor.A); if (mask.HasFlag(ColorMask.R)) { clr.R = (byte)Math.Clamp(clr.R + clrDecrement * colorMaskModifier.R, 0, 255); } if (mask.HasFlag(ColorMask.G)) { clr.G = (byte)Math.Clamp(clr.G + clrDecrement * colorMaskModifier.G, 0, 255); } if (mask.HasFlag(ColorMask.B)) { clr.B = (byte)Math.Clamp(clr.B + clrDecrement * colorMaskModifier.B, 0, 255); } return(clr); }
public TextureMeta SetPixels(Color col, ColorMask mask) { var p = Pixels; bool r = mask.HasFlag(ColorMask.R); bool g = mask.HasFlag(ColorMask.G); bool b = mask.HasFlag(ColorMask.B); bool a = mask.HasFlag(ColorMask.A); for (var i = 0; i < p.Length; i++) { var pix = p[i]; pix.r = r ? col.a : pix.r; pix.g = g ? col.g : pix.g; pix.b = b ? col.b : pix.b; pix.a = a ? col.a : pix.a; p[i] = pix; } return(this); }
public static Vector4 ToVector4(this ColorMask mask) => new Vector4( mask.HasFlag(ColorMask.R) ? 1 : 0, mask.HasFlag(ColorMask.G) ? 1 : 0, mask.HasFlag(ColorMask.B) ? 1 : 0, mask.HasFlag(ColorMask.A) ? 1 : 0);