From f0529022681bd173f8983c84dfe958adda141838 Mon Sep 17 00:00:00 2001 From: Variable Date: Sat, 30 Nov 2024 00:12:30 +0500 Subject: [PATCH] if drawing over same color in index mode, check and update index as well --- src/Classes/Drawers.gd | 2 ++ src/Classes/ImageExtended.gd | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Classes/Drawers.gd b/src/Classes/Drawers.gd index caa005ebf..bd021e01d 100644 --- a/src/Classes/Drawers.gd +++ b/src/Classes/Drawers.gd @@ -30,6 +30,8 @@ class SimpleDrawer: var color_new := op.process(Color(color_str), color_old) if not color_new.is_equal_approx(color_old): image.set_pixelv_custom(position, color_new) + else: + image.set_pixelv_custom(position, color_new, image.is_indexed) class PixelPerfectDrawer: diff --git a/src/Classes/ImageExtended.gd b/src/Classes/ImageExtended.gd index 338364729..b9456fb76 100644 --- a/src/Classes/ImageExtended.gd +++ b/src/Classes/ImageExtended.gd @@ -139,7 +139,7 @@ func set_pixel_custom(x: int, y: int, color: Color) -> void: ## Equivalent of [method Image.set_pixelv], ## but also handles the logic necessary for indexed mode. -func set_pixelv_custom(point: Vector2i, color: Color) -> void: +func set_pixelv_custom(point: Vector2i, color: Color, index_image_only := false) -> void: var new_color := color if is_indexed: var color_to_fill := TRANSPARENT @@ -170,7 +170,8 @@ func set_pixelv_custom(point: Vector2i, color: Color) -> void: else: indices_image.set_pixelv(point, TRANSPARENT) new_color = TRANSPARENT - set_pixelv(point, new_color) + if not index_image_only: + set_pixelv(point, new_color) ## Finds the distance between colors [param c1] and [param c2].