2020-08-25 16:49:18 +00:00
|
|
|
extends ImageEffect
|
2020-08-01 01:24:11 +00:00
|
|
|
|
|
|
|
var red := true
|
|
|
|
var green := true
|
|
|
|
var blue := true
|
|
|
|
var alpha := false
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
var shader_path: String = "res://src/Shaders/Desaturate.shader"
|
2021-04-21 12:31:33 +00:00
|
|
|
|
|
|
|
var confirmed: bool = false
|
2021-11-25 12:48:30 +00:00
|
|
|
|
|
|
|
|
2021-04-21 12:31:33 +00:00
|
|
|
func _about_to_show():
|
2021-11-25 12:48:30 +00:00
|
|
|
var sm: ShaderMaterial = ShaderMaterial.new()
|
|
|
|
sm.shader = load(shader_path)
|
2021-04-21 12:31:33 +00:00
|
|
|
preview.set_material(sm)
|
|
|
|
._about_to_show()
|
|
|
|
|
2020-08-01 01:24:11 +00:00
|
|
|
|
2020-08-25 16:49:18 +00:00
|
|
|
func set_nodes() -> void:
|
2021-08-31 12:38:11 +00:00
|
|
|
preview = $VBoxContainer/AspectRatioContainer/Preview
|
2020-08-25 16:49:18 +00:00
|
|
|
selection_checkbox = $VBoxContainer/OptionsContainer/SelectionCheckBox
|
|
|
|
affect_option_button = $VBoxContainer/OptionsContainer/AffectOptionButton
|
2020-08-01 01:24:11 +00:00
|
|
|
|
|
|
|
|
2021-04-21 12:31:33 +00:00
|
|
|
func _confirmed() -> void:
|
|
|
|
confirmed = true
|
|
|
|
._confirmed()
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
|
|
|
|
func commit_action(_cel: Image, _project: Project = Global.current_project) -> void:
|
2021-04-21 12:31:33 +00:00
|
|
|
var selection = _project.bitmap_to_image(_project.selection_bitmap, false)
|
|
|
|
var selection_tex = ImageTexture.new()
|
|
|
|
selection_tex.create_from_image(selection)
|
|
|
|
|
|
|
|
if !confirmed:
|
|
|
|
preview.material.set_shader_param("red", red)
|
|
|
|
preview.material.set_shader_param("blue", blue)
|
|
|
|
preview.material.set_shader_param("green", green)
|
|
|
|
preview.material.set_shader_param("alpha", alpha)
|
|
|
|
preview.material.set_shader_param("selection", selection_tex)
|
|
|
|
preview.material.set_shader_param("affect_selection", selection_checkbox.pressed)
|
|
|
|
preview.material.set_shader_param("has_selection", _project.has_selection)
|
|
|
|
else:
|
|
|
|
var params = {
|
|
|
|
"red": red,
|
|
|
|
"blue": blue,
|
|
|
|
"green": green,
|
|
|
|
"alpha": alpha,
|
|
|
|
"selection": selection_tex,
|
|
|
|
"affect_selection": selection_checkbox.pressed,
|
|
|
|
"has_selection": _project.has_selection
|
|
|
|
}
|
|
|
|
var gen: ShaderImageEffect = ShaderImageEffect.new()
|
2021-11-25 12:48:30 +00:00
|
|
|
gen.generate_image(_cel, shader_path, params, _project.size)
|
2021-04-21 12:31:33 +00:00
|
|
|
yield(gen, "done")
|
2020-08-01 01:24:11 +00:00
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_RButton_toggled(button_pressed: bool) -> void:
|
2020-08-01 01:24:11 +00:00
|
|
|
red = button_pressed
|
|
|
|
update_preview()
|
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_GButton_toggled(button_pressed: bool) -> void:
|
2020-08-01 01:24:11 +00:00
|
|
|
green = button_pressed
|
|
|
|
update_preview()
|
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_BButton_toggled(button_pressed: bool) -> void:
|
2020-08-01 01:24:11 +00:00
|
|
|
blue = button_pressed
|
|
|
|
update_preview()
|
|
|
|
|
|
|
|
|
2021-11-25 12:48:30 +00:00
|
|
|
func _on_AButton_toggled(button_pressed: bool) -> void:
|
2020-08-01 01:24:11 +00:00
|
|
|
alpha = button_pressed
|
|
|
|
update_preview()
|