extends Control
class_name SliderButton
signal toggled(enabled)
export(bool) var enabled = true setget set_enabled # true is to the right
export(Color) var on_color := Color.green
export(Color) var off_color := Color.red
var pos: float = 1 # 0-1
func set_enabled(new_enabled: bool) -> void:
enabled = new_enabled
emit_signal("toggled", enabled)
set_process(true)
func _gui_input(event):
if event is InputEventMouseButton and event.pressed:
set_enabled(!enabled)
func _draw():
var x: float = lerp(rect_size.y / 2, rect_size.x - rect_size.y / 2, pos)
var c: Color = lerp(off_color, on_color, pos)
draw_circle(Vector2(x, rect_size.y / 2), (rect_size.y / 2) + .3, c)
func _process(_delta):
update()
if enabled and pos <= 1:
pos = lerp(pos, 1, 0.1)
elif !enabled and pos >= 0:
pos = lerp(pos, 0, 0.1)
if is_equal_approx(pos, 1) or is_equal_approx(pos, 0):
set_process(false)