grunk/src/ui/canvas_projector.gd
Rob Kelly 8766e0c2bb
Some checks failed
linting & formatting / build (push) Failing after 4s
Funky sprayer HUD elements!
2025-03-12 19:29:31 -06:00

24 lines
659 B
GDScript

class_name CanvasProjector extends Node3D
## 3D node which projects its children into 2D screen space.
func _ready() -> void:
visibility_changed.connect(_on_visibility_changed)
_on_visibility_changed()
func _process(_delta: float) -> void:
var camera := get_viewport().get_camera_3d()
var px_coord := camera.unproject_position(global_position)
for c: Node in get_children():
if c is Control:
(c as Control).global_position = px_coord
elif c is Node2D:
(c as Node2D).global_position = px_coord
func _on_visibility_changed() -> void:
for c: Node in get_children():
if c is CanvasItem:
(c as CanvasItem).visible = is_visible_in_tree()