tli/scripts/ui/following_ui.gd

32 lines
653 B
GDScript

extends CloseableUI
class_name FollowingUI
const EDGE_MARGIN = 10
var _target: Node3D
func _process(_delta: float) -> void:
if not visible or _target == null:
return
var pos := StaticNodesManager.main_camera.unproject_position(
_target.global_position
)
var corner_1 := Vector2.ONE * EDGE_MARGIN
var viewport_size := get_viewport().get_visible_rect().size
var corner_2 := Vector2(
viewport_size.x - size.x - EDGE_MARGIN,
viewport_size.y - size.y - EDGE_MARGIN,
)
position = (pos - pivot_offset).clamp(corner_1, corner_2)
func set_target(to: Node3D) -> void:
_target = to
func close() -> void:
super.close()
_target = null