Skip to content

Commit b310b4d

Browse files
committed
Added line tool for the pixels node
1 parent 3b18267 commit b310b4d

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

material_maker/widgets/pixels_edit/pixels_editor.gd

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ extends "res://material_maker/widgets/pixels_edit/pixels_view.gd"
44

55
var current_color: int = -1
66

7+
var last_mouse_pos : Vector2
8+
79
@onready var menu_bar: Control = $PixelMenu
810
@onready var colors: Control = %Colors
911

@@ -72,9 +74,22 @@ func draw_pixel() -> void:
7274
queue_redraw()
7375
self.value_changed.emit(pixels)
7476

77+
func draw_pixel_line() -> void:
78+
var from : Vector2 = reverse_transform_point(last_mouse_pos)
79+
var to : Vector2 = reverse_transform_point(get_local_mouse_position())
80+
var pixel_from : Vector2i = Vector2i(Vector2(pixels.size) * from)
81+
var pixel_to : Vector2i = Vector2i(Vector2(pixels.size) * to)
82+
for pixel : Vector2i in Geometry2D.bresenham_line(pixel_from, pixel_to):
83+
pixels.set_color_index(pixel.x, pixel.y, current_color)
84+
queue_redraw()
85+
self.value_changed.emit(pixels)
86+
7587
func _on_PixelsEditor_gui_input(event : InputEvent):
7688
if event is InputEventMouseButton:
7789
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
90+
if event.shift_pressed and last_mouse_pos:
91+
draw_pixel_line()
92+
last_mouse_pos = get_local_mouse_position()
7893
draw_pixel()
7994
return
8095
elif event is InputEventMouseMotion:

0 commit comments

Comments
 (0)