82 lines
2.2 KiB
GDScript
82 lines
2.2 KiB
GDScript
extends Control
|
|
|
|
@onready var settings_vbox: VBoxContainer = %SettingsContainer
|
|
var shader: ShaderMaterial
|
|
|
|
|
|
var _data: Dictionary = {
|
|
"SPIN_ROTATION": -2.0,
|
|
"SPIN_SPEED": 7.0,
|
|
"OFFSET": Vector2(0.0, 0.0),
|
|
"COLOUR_1": Color(0.871, 0.267, 0.231),
|
|
"COLOUR_2": Color(0.0, 0.42, 0.706),
|
|
"COLOUR_3": Color(0.086, 0.137, 0.145),
|
|
"CONTRAST": 3.5,
|
|
"LIGTHING": 0.4,
|
|
"SPIN_AMOUNT": 0.25,
|
|
"PIXEL_FILTER": 745.0,
|
|
"SPIN_EASE": 1.0,
|
|
}
|
|
|
|
var _reset_data = _data.duplicate()
|
|
|
|
const FLOAT_PARAM = preload("res://components/float_param.tscn")
|
|
const VEC_2_PARAM = preload("res://components/vec2_param.tscn")
|
|
const COLOR_PARAM = preload("res://components/color_param.tscn")
|
|
|
|
var uniform_controls: Array[Control] = []
|
|
|
|
func _ready() -> void:
|
|
var balatro_shader: TextureRect = %BalatroShader
|
|
shader = balatro_shader.material
|
|
|
|
setup_controls()
|
|
|
|
func setup_controls() -> void:
|
|
var i
|
|
i = create_param(FLOAT_PARAM) as FloatParam
|
|
i.setup(_data, "SPIN_ROTATION", 1, -10, 10)
|
|
i = create_param(FLOAT_PARAM) as FloatParam
|
|
i.setup(_data, "SPIN_SPEED", 1, -10, 10)
|
|
i = create_param(VEC_2_PARAM) as Vec2Param
|
|
i.setup(_data, "OFFSET")
|
|
i = create_param(COLOR_PARAM) as ColorParam
|
|
i.setup(_data, "COLOUR_1")
|
|
i = create_param(COLOR_PARAM) as ColorParam
|
|
i.setup(_data, "COLOUR_2")
|
|
i = create_param(COLOR_PARAM) as ColorParam
|
|
i.setup(_data, "COLOUR_3")
|
|
i = create_param(FLOAT_PARAM) as FloatParam
|
|
i.setup(_data, "CONTRAST", 1, 0, 10.0)
|
|
i = create_param(FLOAT_PARAM) as FloatParam
|
|
i.setup(_data, "LIGTHING")
|
|
i = create_param(FLOAT_PARAM) as FloatParam
|
|
i.setup(_data, "SPIN_AMOUNT")
|
|
i = create_param(FLOAT_PARAM) as FloatParam
|
|
i.setup(_data, "PIXEL_FILTER", 0, 64, 4096.0)
|
|
i = create_param(FLOAT_PARAM) as FloatParam
|
|
i.setup(_data, "SPIN_EASE", 2, 0, 3.0)
|
|
|
|
func _process(delta: float) -> void:
|
|
for key in _data.keys():
|
|
shader.set_shader_parameter(key, _data[key])
|
|
|
|
|
|
func create_param(template: PackedScene) -> Control:
|
|
var c = template.instantiate()
|
|
settings_vbox.add_child(c)
|
|
uniform_controls.append(c)
|
|
return c
|
|
|
|
func _on_reset_button_pressed() -> void:
|
|
for key in _reset_data.keys():
|
|
_data[key] = _reset_data[key]
|
|
|
|
while settings_vbox.get_child_count() > 0:
|
|
var c = settings_vbox.get_child(0)
|
|
settings_vbox.remove_child(c)
|
|
c.queue_free()
|
|
|
|
|
|
setup_controls()
|