Fix T86060: Texture Paint clone tool misleading texture UI
For projection painting tools besides the `DRAW` tool: - Don't show the texture from viewport stencil drawing. - Don't show the texture panel. Based on D10564 by @lichtwerk with own changes.
This commit is contained in:
parent
3944560b4a
commit
afcfc6eb08
Notes:
blender-bot
2023-02-14 00:20:15 +01:00
Referenced by commit 0ea66039dd
, Fix T87267: Texture Paint stencil texture not drawing
Referenced by issue #86060, (bug or design?) Texture paint mode. Clone tool brush: stencil texture do nothing
|
@ -622,9 +622,15 @@ class VIEW3D_PT_tools_brush_texture(Panel, View3DPaintPanel):
|
|||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
settings = cls.paint_settings(context)
|
||||
return (settings and settings.brush and
|
||||
(context.sculpt_object or context.image_paint_object or context.vertex_paint_object))
|
||||
if (
|
||||
(settings := cls.paint_settings(context)) and
|
||||
(brush := settings.brush)
|
||||
):
|
||||
if context.sculpt_object or context.vertex_paint_object:
|
||||
return True
|
||||
elif context.image_paint_object:
|
||||
return (brush.image_tool == 'DRAW')
|
||||
return False
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
|
|
@ -545,6 +545,7 @@ static bool paint_draw_tex_overlay(UnifiedPaintSettings *ups,
|
|||
int x,
|
||||
int y,
|
||||
float zoom,
|
||||
const ePaintMode mode,
|
||||
bool col,
|
||||
bool primary)
|
||||
{
|
||||
|
@ -556,6 +557,13 @@ static bool paint_draw_tex_overlay(UnifiedPaintSettings *ups,
|
|||
(brush->overlay_flags & BRUSH_OVERLAY_SECONDARY) != 0);
|
||||
int overlay_alpha = (primary) ? brush->texture_overlay_alpha : brush->mask_overlay_alpha;
|
||||
|
||||
if (mode == PAINT_MODE_TEXTURE_3D) {
|
||||
if (primary && brush->imagepaint_tool == PAINT_TOOL_DRAW) {
|
||||
/* All non-draw tools don't use the primary texture (clone, smear, soften.. etc). */
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(mtex->tex) ||
|
||||
!((mtex->brush_map_mode == MTEX_MAP_MODE_STENCIL) ||
|
||||
(valid && ELEM(mtex->brush_map_mode, MTEX_MAP_MODE_VIEW, MTEX_MAP_MODE_TILED)))) {
|
||||
|
@ -785,10 +793,11 @@ static bool paint_draw_alpha_overlay(UnifiedPaintSettings *ups,
|
|||
/* Colored overlay should be drawn separately. */
|
||||
if (col) {
|
||||
if (!(flags & PAINT_OVERLAY_OVERRIDE_PRIMARY)) {
|
||||
alpha_overlay_active = paint_draw_tex_overlay(ups, brush, vc, x, y, zoom, true, true);
|
||||
alpha_overlay_active = paint_draw_tex_overlay(ups, brush, vc, x, y, zoom, mode, true, true);
|
||||
}
|
||||
if (!(flags & PAINT_OVERLAY_OVERRIDE_SECONDARY)) {
|
||||
alpha_overlay_active = paint_draw_tex_overlay(ups, brush, vc, x, y, zoom, false, false);
|
||||
alpha_overlay_active = paint_draw_tex_overlay(
|
||||
ups, brush, vc, x, y, zoom, mode, false, false);
|
||||
}
|
||||
if (!(flags & PAINT_OVERLAY_OVERRIDE_CURSOR)) {
|
||||
alpha_overlay_active = paint_draw_cursor_overlay(ups, brush, vc, x, y, zoom);
|
||||
|
@ -796,7 +805,7 @@ static bool paint_draw_alpha_overlay(UnifiedPaintSettings *ups,
|
|||
}
|
||||
else {
|
||||
if (!(flags & PAINT_OVERLAY_OVERRIDE_PRIMARY) && (mode != PAINT_MODE_WEIGHT)) {
|
||||
alpha_overlay_active = paint_draw_tex_overlay(ups, brush, vc, x, y, zoom, false, true);
|
||||
alpha_overlay_active = paint_draw_tex_overlay(ups, brush, vc, x, y, zoom, mode, false, true);
|
||||
}
|
||||
if (!(flags & PAINT_OVERLAY_OVERRIDE_CURSOR)) {
|
||||
alpha_overlay_active = paint_draw_cursor_overlay(ups, brush, vc, x, y, zoom);
|
||||
|
|
Loading…
Reference in New Issue