From 01e56beea73a11d187692e0ac98b5ff03e2d594b Mon Sep 17 00:00:00 2001 From: luboslenco Date: Wed, 25 Mar 2020 18:25:31 +0100 Subject: [PATCH] Pen pressure sensitivity option --- Sources/arm/render/Uniforms.hx | 16 ++++++++++++---- Sources/arm/ui/BoxPreferences.hx | 1 + Sources/arm/ui/UISidebar.hx | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Sources/arm/render/Uniforms.hx b/Sources/arm/render/Uniforms.hx index c6495f45..aa54f525 100644 --- a/Sources/arm/render/Uniforms.hx +++ b/Sources/arm/render/Uniforms.hx @@ -27,7 +27,9 @@ class Uniforms { if (link == "_brushRadius") { var val = (UISidebar.inst.brushRadius * UISidebar.inst.brushNodesRadius) / 15.0; var pen = Input.getPen(); - if (UISidebar.penPressureRadius && pen.down()) val *= pen.pressure; + if (UISidebar.penPressureRadius && pen.down()) { + val *= pen.pressure * UISidebar.penPressureSensitivity; + } var decal = Context.tool == ToolDecal || Context.tool == ToolText; if (UISidebar.inst.brush3d && !decal) { val *= UISidebar.inst.paint2d ? 0.6 : 2; @@ -41,15 +43,21 @@ class Uniforms { if (link == "_brushOpacity") { var val = UISidebar.inst.brushOpacity * UISidebar.inst.brushNodesOpacity; var pen = Input.getPen(); - if (UISidebar.penPressureOpacity && pen.down()) val *= pen.pressure; + if (UISidebar.penPressureOpacity && pen.down()) { + val *= pen.pressure * UISidebar.penPressureSensitivity; + } return val; } if (link == "_brushHardness") { if (Context.tool != ToolBrush && Context.tool != ToolEraser) return 1.0; var val = UISidebar.inst.brushHardness * UISidebar.inst.brushNodesHardness; var pen = Input.getPen(); - if (UISidebar.penPressureHardness && pen.down()) val *= pen.pressure; - if (UISidebar.inst.brush3d && !UISidebar.inst.paint2d) val *= val; + if (UISidebar.penPressureHardness && pen.down()) { + val *= pen.pressure * UISidebar.penPressureSensitivity; + } + if (UISidebar.inst.brush3d && !UISidebar.inst.paint2d) { + val *= val; + } return val; } if (link == "_brushScale") { diff --git a/Sources/arm/ui/BoxPreferences.hx b/Sources/arm/ui/BoxPreferences.hx index cab56068..98c9997c 100644 --- a/Sources/arm/ui/BoxPreferences.hx +++ b/Sources/arm/ui/BoxPreferences.hx @@ -157,6 +157,7 @@ class BoxPreferences { UISidebar.penPressureRadius = ui.check(Id.handle({selected: UISidebar.penPressureRadius}), tr("Brush Radius")); UISidebar.penPressureHardness = ui.check(Id.handle({selected: UISidebar.penPressureHardness}), tr("Brush Hardness")); UISidebar.penPressureOpacity = ui.check(Id.handle({selected: UISidebar.penPressureOpacity}), tr("Brush Opacity")); + UISidebar.penPressureSensitivity = ui.slider(Id.handle({value: UISidebar.penPressureSensitivity}), tr("Sensitivity"), 0.0, 2.0, true); } UISidebar.inst.hssgi = Id.handle({selected: Config.raw.rp_ssgi}); diff --git a/Sources/arm/ui/UISidebar.hx b/Sources/arm/ui/UISidebar.hx index 19a87078..126cebbd 100644 --- a/Sources/arm/ui/UISidebar.hx +++ b/Sources/arm/ui/UISidebar.hx @@ -37,6 +37,7 @@ class UISidebar { public static var penPressureRadius = true; public static var penPressureHardness = true; public static var penPressureOpacity = false; + public static var penPressureSensitivity = 1.0; public var windowW = 280; // Panel width public var tabx = 0;