51 lines
1.7 KiB
GDScript
51 lines
1.7 KiB
GDScript
extends Node2D
|
|
|
|
var draw_color : Color = Color(1.0, 1.0, 1.0, 1.0)
|
|
var active_brush : int = 0
|
|
|
|
func _clear():
|
|
# make sure we don't draw anything first frame
|
|
for i in $ViewportContainer/Viewport/Brushes.get_child_count():
|
|
$ViewportContainer/Viewport/Brushes.get_child(i).visible = false
|
|
|
|
# Make sure our viewport only updates once
|
|
$ViewportContainer/Viewport.render_target_clear_mode = SubViewport.CLEAR_MODE_ONCE
|
|
$ViewportContainer/Viewport.render_target_update_mode = SubViewport.UPDATE_ONCE
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
_clear()
|
|
|
|
func _update_active_brush():
|
|
for i in $ViewportContainer/Viewport/Brushes.get_child_count():
|
|
$ViewportContainer/Viewport/Brushes.get_child(i).visible = i == active_brush
|
|
|
|
func _on_ViewportContainer_gui_input(event):
|
|
if event is InputEventMouseButton:
|
|
if event.pressed:
|
|
_update_active_brush()
|
|
$ViewportContainer/Viewport/Brushes.position = event.position
|
|
$ViewportContainer/Viewport.render_target_update_mode = SubViewport.UPDATE_ONCE
|
|
elif event is InputEventMouseMotion:
|
|
# We're currently only getting these from our poke if we're touching,
|
|
# but once viewport supports pressure we should implement this...
|
|
_update_active_brush()
|
|
$ViewportContainer/Viewport/Brushes.position = event.position
|
|
$ViewportContainer/Viewport.render_target_update_mode = SubViewport.UPDATE_ONCE
|
|
|
|
|
|
func _set_draw_color(p_color : Color) -> void:
|
|
draw_color = p_color
|
|
$ViewportContainer/Viewport/Brushes/Brush1.color = draw_color
|
|
|
|
|
|
func _on_WhiteButton_pressed():
|
|
_set_draw_color(Color(1.0, 1.0, 1.0, 1.0))
|
|
|
|
|
|
func _on_BlackButton_pressed():
|
|
_set_draw_color(Color(0.0, 0.0, 0.0, 1.0))
|
|
|
|
|
|
func _on_ClearButton_pressed():
|
|
_clear()
|