public static void Paint(StrokeVector stroke, float brushAlpha, TextureMeta image, BrushConfig bc, PlaytimePainter painter) { if (image?.Pixels == null) { return; } var uvCoords = stroke.uvFrom; brAlpha = brushAlpha; bc.PrepareCpuBlit(image); var iHalf = (int)(half); Vector2 offset; var tmp = image.UvToPixelNumber(uvCoords, out offset); var smooth = bc.GetBrushType(true) != BrushTypes.Pixel.Inst; if (smooth) { iHalf += 1; offset = Vector2.zero; } var hf = half - 0.5f; var halfFromX = Mathf.RoundToInt(-hf + offset.x); var halfFromY = Mathf.RoundToInt(-hf + offset.y); var halfToX = Mathf.RoundToInt(hf + offset.x); var halfToY = Mathf.RoundToInt(hf + offset.y); var fromX = tmp.x + halfFromX; tmp.y += halfFromY; var pixels = image.Pixels; for (y = halfFromY; y <= halfToY; y++) { tmp.x = fromX; for (x = halfFromX; x <= halfToX; x++) { if (alphaMode()) { blitMode(ref pixels[image.PixelNo(tmp)]); } tmp.x += 1; } tmp.y += 1; } }
public static void Paint(PaintCommand.UV command) { TextureMeta image = command.TextureData; if (image.Pixels == null) { return; } Brush bc = command.Brush; var uvCoords = command.Stroke.uvFrom; brAlpha = command.strokeAlphaPortion; bc.PrepareCpuBlit(image); var iHalf = (int)(half); Vector2 offset; var tmp = image.UvToPixelNumber(uvCoords, out offset); var smooth = bc.GetBrushType(true) != BrushTypes.Pixel.Inst; if (smooth) { iHalf += 1; offset = Vector2.zero; } var hf = half - 0.5f; var halfFromX = Mathf.RoundToInt(-hf + offset.x); var halfFromY = Mathf.RoundToInt(-hf + offset.y); var halfToX = Mathf.RoundToInt(hf + offset.x); var halfToY = Mathf.RoundToInt(hf + offset.y); var fromX = tmp.x + halfFromX; tmp.y += halfFromY; var pixels = image.Pixels; for (y = halfFromY; y <= halfToY; y++) { tmp.x = fromX; for (x = halfFromX; x <= halfToX; x++) { if (alphaMode()) { blitMode(ref pixels[image.PixelNo(tmp)]); } tmp.x += 1; } tmp.y += 1; } }