Fix decal when live brush preview is enabled

This commit is contained in:
Lubos Lenco
2021-04-20 15:25:10 +02:00
parent ab2e0bb6f4
commit d21dc8efec
+25 -22
View File
@@ -768,39 +768,42 @@ class UISidebar {
my > UINodes.inst.wy && my < UINodes.inst.wy + UINodes.inst.wh;
var decal = Context.tool == ToolDecal || Context.tool == ToolText;
if (!Config.raw.brush_3d || in2dView || (decal && !Config.raw.brush_live)) {
if (!Config.raw.brush_3d || in2dView || decal) {
var decalMask = decal && Operator.shortcut(Config.keymap.decal_mask, ShortcutDown);
if (decal && !inNodes) {
var psizex = Std.int(256 * ui.SCALE() * (Context.brushRadius * Context.brushNodesRadius * Context.brushScaleX));
var psizey = Std.int(256 * ui.SCALE() * (Context.brushRadius * Context.brushNodesRadius));
var decalAlpha = 0.5;
if (!decalMask) {
Context.decalX = Context.paintVec.x;
Context.decalY = Context.paintVec.y;
decalAlpha = Context.brushOpacity;
// Radius being scaled
if (Context.brushLocked) {
Context.decalX += (Context.lockStartedX - System.windowWidth() / 2) / App.w();
Context.decalY += (Context.lockStartedY - System.windowHeight() / 2) / App.h();
}
}
Context.viewIndex = Context.viewIndexLast;
var decalX = App.x() + Context.decalX * App.w() - psizex / 2;
var decalY = App.y() + Context.decalY * App.h() - psizey / 2;
Context.viewIndex = -1;
if (!Config.raw.brush_live) {
var psizex = Std.int(256 * ui.SCALE() * (Context.brushRadius * Context.brushNodesRadius * Context.brushScaleX));
var psizey = Std.int(256 * ui.SCALE() * (Context.brushRadius * Context.brushNodesRadius));
// Radius being scaled
if (Context.brushLocked && !decalMask) {
decalX += Context.lockStartedX - System.windowWidth() / 2;
decalY += Context.lockStartedY - System.windowHeight() / 2;
Context.viewIndex = Context.viewIndexLast;
var decalX = App.x() + Context.decalX * App.w() - psizex / 2;
var decalY = App.y() + Context.decalY * App.h() - psizey / 2;
Context.viewIndex = -1;
g.color = kha.Color.fromFloats(1, 1, 1, decalAlpha);
var angle = (Context.brushAngle + Context.brushNodesAngle) * (Math.PI / 180);
g.pushRotation(-angle, decalX + psizex / 2, decalY + psizey / 2);
#if (kha_direct3d11 || kha_direct3d12 || kha_metal || kha_vulkan)
g.drawScaledImage(Context.decalImage, decalX, decalY, psizex, psizey);
#else
g.drawScaledImage(Context.decalImage, decalX, decalY + psizey, psizex, -psizey);
#end
g.popTransformation();
g.color = 0xffffffff;
}
g.color = kha.Color.fromFloats(1, 1, 1, decalAlpha);
var angle = (Context.brushAngle + Context.brushNodesAngle) * (Math.PI / 180);
g.pushRotation(-angle, decalX + psizex / 2, decalY + psizey / 2);
#if (kha_direct3d11 || kha_direct3d12 || kha_metal || kha_vulkan)
g.drawScaledImage(Context.decalImage, decalX, decalY, psizex, psizey);
#else
g.drawScaledImage(Context.decalImage, decalX, decalY + psizey, psizex, -psizey);
#end
g.popTransformation();
g.color = 0xffffffff;
}
if (Context.tool == ToolBrush ||
Context.tool == ToolEraser ||