@tool extends Node2D @export var color_1_texture : Texture @export var color_2_texture : Texture @export var outline_texture : Texture @export_tool_button("Redraw", "Callable") var redraw_action = func(): create_image() func _ready(): create_image() func create_image(): var image := Image.create(TEXTURE_SIZE,TEXTURE_SIZE, false, Image.FORMAT_RGBA8) if color_2_texture: var color_2_image = color_2_texture.get_image() color_2_image.resize(TEXTURE_SIZE,TEXTURE_SIZE) image.blend_rect( modulated_image(color_2_image, COLOR_PALETTE.pick_random()), Rect2i(0,0,TEXTURE_SIZE,TEXTURE_SIZE), Vector2i.ZERO ) if color_1_texture: var color_1_image = color_1_texture.get_image() color_1_image.resize(TEXTURE_SIZE,TEXTURE_SIZE) image.blend_rect( modulated_image(color_1_image, COLOR_PALETTE.pick_random()), Rect2i(0,0,TEXTURE_SIZE,TEXTURE_SIZE), Vector2i.ZERO ) if outline_texture: var outline_image = outline_texture.get_image() outline_image.resize(TEXTURE_SIZE,TEXTURE_SIZE) image.blend_rect(outline_image, Rect2i(0,0,TEXTURE_SIZE,TEXTURE_SIZE),Vector2i.ZERO) ImageTexture.create_from_image(image) func modulated_image(i : Image, color : Color) -> Image: var ret = i.duplicate() for x in i.get_size().x: for y in i.get_size().y: ret.set_pixel(x,y, i.get_pixel(x,y)*color) return ret