48 lines
1.5 KiB
GDScript
48 lines
1.5 KiB
GDScript
@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
|
|
|