1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-07 19:09:50 +00:00
Pixelorama/src/UI/UI.gd

44 lines
1.2 KiB
GDScript

extends Panel
var shader_disabled := false
var transparency_material: ShaderMaterial
@onready var main_canvas_container := find_child("Main Canvas") as Container
func _ready() -> void:
transparency_material = material
main_canvas_container.property_list_changed.connect(_re_configure_shader)
update_transparent_shader()
func _re_configure_shader():
await get_tree().process_frame
if get_window() != main_canvas_container.get_window():
material = null
shader_disabled = true
else:
if shader_disabled:
material = transparency_material
shader_disabled = false
func _on_main_canvas_item_rect_changed() -> void:
update_transparent_shader()
func _on_main_canvas_visibility_changed() -> void:
update_transparent_shader()
func update_transparent_shader() -> void:
if not is_instance_valid(main_canvas_container):
return
# Works independently of the transparency feature
var canvas_size: Vector2 = (main_canvas_container.size - Vector2.DOWN * 2) * Global.shrink
transparency_material.set_shader_parameter("screen_resolution", get_viewport().size)
transparency_material.set_shader_parameter(
"position", main_canvas_container.global_position * Global.shrink
)
transparency_material.set_shader_parameter("size", canvas_size)