From 242156882531bb371a784c9e05ad757ff13bfcb2 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Tue, 24 Mar 2020 11:50:45 +0100 Subject: [PATCH] Add brush angle shortcut --- Assets/painter/keymap_presets/blender.json | 1 + Assets/painter/keymap_presets/default.json | 1 + Sources/arm/ui/UIHeader.hx | 5 ++--- Sources/arm/ui/UISidebar.hx | 22 ++++++++++++++++++---- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Assets/painter/keymap_presets/blender.json b/Assets/painter/keymap_presets/blender.json index 8c60eecb..d05dae19 100644 --- a/Assets/painter/keymap_presets/blender.json +++ b/Assets/painter/keymap_presets/blender.json @@ -13,6 +13,7 @@ "brush_radius_decrease": "[", "brush_radius_increase": "]", "brush_opacity": "shift+f", + "brush_angle": "alt+f", "brush_ruler": "shift", "file_new": "ctrl+n", "file_open": "ctrl+o", diff --git a/Assets/painter/keymap_presets/default.json b/Assets/painter/keymap_presets/default.json index e96a0462..89363e19 100644 --- a/Assets/painter/keymap_presets/default.json +++ b/Assets/painter/keymap_presets/default.json @@ -13,6 +13,7 @@ "brush_radius_decrease": "[", "brush_radius_increase": "]", "brush_opacity": "shift+f", + "brush_angle": "alt+f", "brush_ruler": "shift", "file_new": "ctrl+n", "file_open": "ctrl+o", diff --git a/Sources/arm/ui/UIHeader.hx b/Sources/arm/ui/UIHeader.hx index 9352eb37..89675f63 100644 --- a/Sources/arm/ui/UIHeader.hx +++ b/Sources/arm/ui/UIHeader.hx @@ -160,9 +160,8 @@ class UIHeader { } } - var brushAngleHandle = Id.handle({value: UISidebar.inst.brushAngle}); - UISidebar.inst.brushAngle = ui.slider(brushAngleHandle, tr("Angle"), 0.0, 360.0, true, 1); - if (brushAngleHandle.changed) { + UISidebar.inst.brushAngle = ui.slider(UISidebar.inst.brushAngleHandle, tr("Angle"), 0.0, 360.0, true, 1); + if (UISidebar.inst.brushAngleHandle.changed) { MaterialParser.parsePaintMaterial(); } } diff --git a/Sources/arm/ui/UISidebar.hx b/Sources/arm/ui/UISidebar.hx index 265a44a0..d189afb6 100644 --- a/Sources/arm/ui/UISidebar.hx +++ b/Sources/arm/ui/UISidebar.hx @@ -187,6 +187,7 @@ class UISidebar { public var brushOpacityHandle = new Handle({value: 1.0}); public var brushScale = 1.0; public var brushAngle = 0.0; + public var brushAngleHandle = new Handle({value: 0.0}); public var brushHardness = 0.8; public var brushLazyRadius = 0.0; public var brushLazyStep = 0.0; @@ -480,15 +481,24 @@ class UISidebar { var mouse = Input.getMouse(); - if (brushCanLock || brushLocked) { - if (kb.down(Config.keymap.brush_radius) && mouse.moved) { + if ((brushCanLock || brushLocked) && mouse.moved) { + if (Operator.shortcut(Config.keymap.brush_radius, ShortcutDown) || + Operator.shortcut(Config.keymap.brush_opacity, ShortcutDown) || + Operator.shortcut(Config.keymap.brush_angle, ShortcutDown)) { if (brushLocked) { - if (kb.down("shift")) { + if (Operator.shortcut(Config.keymap.brush_opacity, ShortcutDown)) { brushOpacity += mouse.movementX / 500; brushOpacity = Math.max(0.0, Math.min(1.0, brushOpacity)); brushOpacity = Math.round(brushOpacity * 100) / 100; brushOpacityHandle.value = brushOpacity; } + else if(Operator.shortcut(Config.keymap.brush_angle, ShortcutDown)) { + brushAngle += mouse.movementX / 5; + brushAngle = Math.max(0.0, Math.min(360.0, brushAngle)); + brushAngle = Std.int(brushAngle); + brushAngleHandle.value = brushAngle; + MaterialParser.parsePaintMaterial(); + } else { brushRadius += mouse.movementX / 150; brushRadius = Math.max(0.05, Math.min(4.0, brushRadius)); @@ -546,7 +556,8 @@ class UISidebar { Context.tool == ToolBlur || Context.tool == ToolParticle) { if (Operator.shortcut(Config.keymap.brush_radius) || - Operator.shortcut(Config.keymap.brush_opacity)) { + Operator.shortcut(Config.keymap.brush_opacity) || + Operator.shortcut(Config.keymap.brush_angle)) { brushCanLock = true; if (!Input.getPen().connected) mouse.lock(); lockStartedX = mouse.x; @@ -978,11 +989,14 @@ class UISidebar { var psizex = Std.int(256 * (brushRadius * brushNodesRadius * brushScaleX)); var psizey = Std.int(256 * (brushRadius * brushNodesRadius)); g.color = kha.Color.fromFloats(1, 1, 1, brushOpacity); + var angle = (brushAngle + brushNodesAngle) * (Math.PI / 180); + g.pushRotation(-angle, mx, my); #if (kha_direct3d11 || kha_direct3d12) g.drawScaledImage(decalImage, mx - psizex / 2, my - psizey / 2, psizex, psizey); #else g.drawScaledImage(decalImage, mx - psizex / 2, my - psizey / 2 + psizey, psizex, -psizey); #end + g.popTransformation(); g.color = 0xffffffff; } else if (Context.tool == ToolBrush ||