improvments on hovering

This commit is contained in:
Lucas 2025-07-29 14:59:56 +02:00
parent 833b170a0d
commit 6bdd598c66
No known key found for this signature in database
5 changed files with 48 additions and 20 deletions

View file

@ -217,6 +217,12 @@ skeleton = NodePath("../../root/@EditorNode@20441/@Panel@14/@VBoxContainer@15/Do
[node name="dummy" parent="Env" instance=ExtResource("2_40027")]
transform = Transform3D(0.232937, 0, -0.869333, 0, 0.9, 0, 0.869333, 0, 0.232937, 5.3893027, -0.39157277, 17.058931)
[node name="dummy3" parent="Env" instance=ExtResource("2_40027")]
transform = Transform3D(0.88088393, 0, -0.18450773, 0, 0.9000001, 0, 0.18450773, 0, 0.88088393, 5.3893027, -0.39157277, -2.998869)
[node name="dummy2" parent="Env" instance=ExtResource("2_40027")]
transform = Transform3D(-0.84198815, 0, 0.3178923, 0, 0.9000001, 0, -0.3178923, 0, -0.84198815, -9.454242, -0.39157277, 17.058931)
[node name="CSGMesh3D" type="CSGMesh3D" parent="Env"]
transform = Transform3D(5.015, 0, 0, 0, 1, 0, 0, 0, 6.05, 3.7530127, -0.5165728, 11.776872)
material_override = ExtResource("1_b53sv")

View file

@ -1,12 +1,13 @@
extends Control
var tooltip_offset = Vector2(25,10)
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
var mouse = get_viewport().get_mouse_position() + Vector2(25,10) #magic number
position = mouse
func _unhandled_input(e: InputEvent) -> void:
if e is InputEventMouseMotion:
var tooltip_position = e.position + tooltip_offset
position = tooltip_position

View file

@ -23,33 +23,46 @@ mouse_filter = 2
accessibility_name = "Player interface"
script = ExtResource("1_nbn0p")
[node name="Button" type="Button" parent="."]
layout_mode = 0
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 35.0
offset_top = -62.559998
offset_right = 169.0
offset_bottom = -22.559937
offset_left = 50.0
offset_top = -90.0
offset_right = 184.0
offset_bottom = -50.0
grow_vertical = 0
pivot_offset = Vector2(0, 40)
alignment = 1
[node name="Label" type="Label" parent="VBoxContainer"]
layout_mode = 2
text = "Selected:"
[node name="Button" type="Button" parent="VBoxContainer"]
layout_mode = 2
theme = SubResource("Theme_ur0rc")
text = "Test Button"
icon = ExtResource("1_ur0rc")
[node name="SelectionManager" type="Control" parent="." node_paths=PackedStringArray("hover")]
[node name="SelectionManager" type="Control" parent="." node_paths=PackedStringArray("hover", "selecteddisplay")]
process_mode = 3
process_priority = -1
anchors_preset = 0
mouse_filter = 2
script = ExtResource("3_u7fvt")
hover = NodePath("../HoverLabel")
selecteddisplay = NodePath("../VBoxContainer/Button")
rect_style = ExtResource("4_u7fvt")
[node name="HoverLabel" type="Label" parent="."]
[node name="HoverLabel" type="RichTextLabel" parent="."]
unique_name_in_owner = true
editor_description = "Control that displayed the hovered informations"
top_level = true
custom_minimum_size = Vector2(250, 150)
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
fit_content = true
threaded = true
script = ExtResource("5_fvvd0")

View file

@ -135,7 +135,7 @@ func cam_zoom(delta:float) -> void:
if zoom_disabled:return
var new_zoom: float = clamp(cam.position.z + (zoom_speed * zoom_direction * delta),zoom_min,zoom_max)
if new_zoom != cam.position.z and abs(zoom_direction) > 0.001: # TODO: Magic Number
if new_zoom != cam.position.z and abs(zoom_direction) > 0.001: # FIXME: Magic Number
cam.position.z = new_zoom
zoom_direction *= zoom_speed_damp #Smooth the deceleration
@ -173,5 +173,5 @@ func cam_edge_scroll(delta: float) -> void:
func cam_rotation(mouse_relative:Vector2) -> void:
rotation.y += mouse_velocity.x * get_process_delta_time() * rotation_speed_x * (-1 if invert_rotation_x else 1)
%camera_rot.rotation.z = clamp(%camera_rot.rotation.z + (mouse_relative.y * get_process_delta_time() * rotation_speed_y) * (-1 if invert_rotation_y else 1),-0.75,0.35) #= clamp(desired_rot.x,-0.75,0.35) #TODO: REMOVE MAGIC NUMBERS
%camera_rot.rotation.z = clamp(%camera_rot.rotation.z + (mouse_relative.y * get_process_delta_time() * rotation_speed_y) * (-1 if invert_rotation_y else 1),-0.75,0.35) #= clamp(desired_rot.x,-0.75,0.35) #FIXME: REMOVE MAGIC NUMBERS
#endregion

View file

@ -4,6 +4,7 @@ class_name SelectionManager
@export_category("Controls")
@export var hover:Control
@export var selecteddisplay:Control
@export_category("Settings")
@export var rect_style: StyleBoxFlat
@ -17,10 +18,15 @@ var mouse_position:Vector2 # Storing mous eposition to use it on differents proc
@onready var optimized_rect: bool = ProjectSettings.get_setting("game/interface/optimized_rectangle", false)
@onready var cam = get_viewport().get_camera_3d()
@onready var selecteddisplay: Button = $"../Button"
@onready var debug_mode = get_tree().debug_collisions_hint #ProjectSettings.get_setting("debug/collisions/show_mouse_trace", false)
func _ready() -> void:
if !hover:
hover = %HoverLabel
func _unhandled_input(e: InputEvent) -> void:
if e is InputEventMouseButton and e.button_index == MOUSE_BUTTON_LEFT:
if e.pressed:
@ -74,8 +80,10 @@ func check_hover(mouse_pos:Vector2):
hover.text = hovered_entity.name
var selected = get_selected()
selecteddisplay.text = ""
if selected.size() > 0:
selecteddisplay.text = selected[0].name
for s in selected:
selecteddisplay.text += ","+s.name
else:
selecteddisplay.text = ""
@ -93,7 +101,7 @@ func get_selected() -> Array[Entity]:
## [param collision_mask] is 32768 by default, so the collision channel 16
func check_raycast(mouse_pos: Vector2, collision_mask: int = 32768) -> Dictionary:
var from = cam.project_ray_origin(mouse_pos)
var to = from + cam.project_ray_normal(mouse_pos) * 1000 # Magic number
var to = from + cam.project_ray_normal(mouse_pos) * 1000 #FIXME: Magic number
var query = PhysicsRayQueryParameters3D.create(from,to,collision_mask)
query.collide_with_areas = true
query.collide_with_bodies = false