objects can be selected

This commit is contained in:
Nikolai Fesenko
2025-08-20 14:31:53 +02:00
parent b5d5d4a818
commit 9bab0ff0f3
5 changed files with 109 additions and 14 deletions

View File

@@ -11,6 +11,8 @@ var default_shaders: Array
#var ActionNode: Node3D
var is_placed: bool = false
var is_selected: bool = false
func _ready() -> void:
BuildManager.preview_created.connect(_on_preview_create)
BuildManager.object_placed.connect(_on_object_placed)
@@ -61,15 +63,19 @@ func _on_object_placed(build_postion):
func enable_outline():
Global.object_over_mouse_selected_signal.emit(self)
for i in meshInstance.get_surface_override_material_count():
var material = meshInstance.get_surface_override_material(i)
if material.next_pass != null:
meshInstance.get_surface_override_material(i).next_pass.set_shader_parameter("is_active", true)
func disable_outline():
for i in meshInstance.get_surface_override_material_count():
var material = meshInstance.get_surface_override_material(i)
if material.next_pass != null:
meshInstance.get_surface_override_material(i).next_pass.set_shader_parameter("is_active", false)
Global.object_over_mouse_unselected_signal.emit(self)
if is_selected == false:
for i in meshInstance.get_surface_override_material_count():
var material = meshInstance.get_surface_override_material(i)
if material.next_pass != null:
meshInstance.get_surface_override_material(i).next_pass.set_shader_parameter("is_active", false)

View File

@@ -8,8 +8,8 @@ signal interact(person,interact_object)
signal object_selected_signal
signal object_unselected_signal
signal object_over_mouse_signal
signal object_over_mouse_selected_signal(object)
signal object_over_mouse_unselected_signal(object)
var object_selected
@@ -18,13 +18,38 @@ var object_over_mouse
func _ready() -> void:
interact.connect(_on_interact)
object_selected_signal.connect(_on_object_selected)
object_unselected_signal.connect(_on_object_unselected)
object_over_mouse_selected_signal.connect(_on_mouse_object_selected)
object_over_mouse_unselected_signal.connect(_on_mouse_object_unselected)
func _input(event: InputEvent) -> void:
if event.is_action_released("mouse_click"):
if object_over_mouse != null:
object_selected_signal.emit(object_over_mouse)
if event.is_action_released("right_mouse_click"):
if object_selected != object_over_mouse:
object_unselected_signal.emit()
func _on_interact(person, object):
object.start_action(person, object)
func _on_object_selected():
pass
func _on_object_selected(object):
if object_selected != null:
object_unselected_signal.emit()
object_selected = object
object_selected.is_selected = true
print(object_selected)
func _on_object_unselected():
pass
object_selected.is_selected = false
object_selected.disable_outline()
object_selected = null
func _on_mouse_object_selected(object):
object_over_mouse = object
func _on_mouse_object_unselected(object):
object_over_mouse = null

View File

@@ -25,6 +25,8 @@ var target_item
var target_action: String
var is_selected: bool = false
func _ready() -> void:
nav_agent = $NavigationAgent3D
meshI = $MeshInstance3D
@@ -112,3 +114,23 @@ func _on_item_received():
if holdingItem != null:
pass
#holdingItem.use()
func _on_input_event(camera: Node, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) -> void:
pass
func _on_mouse_entered() -> void:
Global.object_over_mouse_selected_signal.emit(self)
enable_outline()
func _on_mouse_exited() -> void:
if is_selected == false:
disable_outline()
func enable_outline():
$MeshOutline.visible = true
func disable_outline():
$MeshOutline.visible = false