Files
tli/scripts/globals/hovering_manager.gd

27 lines
735 B
GDScript

extends Node3D
var hovered_node: Variant
var mouse_pos: Vector2 = Vector2.ZERO
@onready var camera: Camera3D = get_viewport().get_camera_3d()
func _physics_process(_delta: float) -> void:
if SelectionManager.selecting:
return
var space_state := get_world_3d().direct_space_state
var from := camera.project_ray_origin(mouse_pos)
var to := from + camera.project_ray_normal(mouse_pos) * (camera.far - 1)
var query := PhysicsRayQueryParameters3D.create(from, to)
var result := space_state.intersect_ray(query)
if not result:
hovered_node = null
return
hovered_node = result["collider"]
func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion:
mouse_pos = (event as InputEventMouseMotion).position