objects can be selected
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://dqrqq5vg8hek3"]
|
||||
[gd_scene load_steps=11 format=3 uid="uid://dqrqq5vg8hek3"]
|
||||
|
||||
[ext_resource type="ArrayMesh" uid="uid://dwd6ylq5xn6kj" path="res://Blends/Person/Person.obj" id="1_11yxf"]
|
||||
[ext_resource type="Script" uid="uid://d308e5vxshc06" path="res://Scripts/person.gd" id="1_dh77o"]
|
||||
[ext_resource type="Shader" uid="uid://bm15rdsdxldwl" path="res://Shaders/shirt.gdshader" id="3_dbviw"]
|
||||
[ext_resource type="Shader" uid="uid://c08eg1piwoy3t" path="res://Shaders/outline.gdshader" id="4_kmh38"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kmh38"]
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_tupbo"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("3_dbviw")
|
||||
shader_parameter/shirt_color = Vector3(0, 0, 0)
|
||||
@@ -12,6 +13,30 @@ shader_parameter/shirt_color = Vector3(0, 0, 0)
|
||||
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_dbviw"]
|
||||
points = PackedVector3Array(0.465296, 4.41226, 2.90193, 0.333481, 5.90986, 1.44973, -0.46535, 4.41226, 2.90193, 0.465296, 2.1221, 2.90193, 0.88668, -1.00046, 1.81769, 0.465296, 4.41226, -1.76192, 0.333481, 5.90986, -0.25128, -0.333667, 5.90986, 1.44973, -0.46535, 4.41226, -1.76192, -0.46535, 2.1221, 2.90193, 0.88668, -1.35832, 1.81769, 0.88668, -1.00046, -0.616956, 0.465296, 2.1221, -1.76192, -0.333667, 5.90986, -0.25128, -0.46535, 2.1221, -1.76192, -0.46535, 1.86882, 1.75606, -0.424191, -1.35832, 1.81769, 0.88668, -1.35832, -0.616956, -0.424191, -1.35832, -0.616956, -0.46535, 1.86882, -0.6165)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_8v2cd"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("4_kmh38")
|
||||
shader_parameter/is_active = true
|
||||
shader_parameter/color = Vector3(0.95, 0.71, 0.01)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kmh38"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("4_kmh38")
|
||||
shader_parameter/is_active = true
|
||||
shader_parameter/color = Vector3(0.95, 0.71, 0.01)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_b8w03"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("4_kmh38")
|
||||
shader_parameter/is_active = true
|
||||
shader_parameter/color = Vector3(0.95, 0.71, 0.01)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_una45"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("4_kmh38")
|
||||
shader_parameter/is_active = true
|
||||
shader_parameter/color = Vector3(0.95, 0.71, 0.01)
|
||||
|
||||
[node name="Person" type="CharacterBody3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.150706, 0, -0.313651)
|
||||
script = ExtResource("1_dh77o")
|
||||
@@ -19,7 +44,7 @@ script = ExtResource("1_dh77o")
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(-1.31134e-08, 0, 0.3, 0, 0.3, 0, -0.3, 0, -1.31134e-08, 0, 0, 0.368102)
|
||||
mesh = ExtResource("1_11yxf")
|
||||
surface_material_override/1 = SubResource("ShaderMaterial_kmh38")
|
||||
surface_material_override/1 = SubResource("ShaderMaterial_tupbo")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(-1.31134e-08, 0, 0.3, 0, 0.3, 0, -0.3, 0, -1.31134e-08, 0, 0, 0.368102)
|
||||
@@ -33,6 +58,18 @@ debug_enabled = true
|
||||
wait_time = 4.0
|
||||
one_shot = true
|
||||
|
||||
[node name="MeshOutline" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(-1.31134e-08, 0, 0.3, 0, 0.3, 0, -0.3, 0, -1.31134e-08, 0, 0, 0.368102)
|
||||
visible = false
|
||||
mesh = ExtResource("1_11yxf")
|
||||
surface_material_override/0 = SubResource("ShaderMaterial_8v2cd")
|
||||
surface_material_override/1 = SubResource("ShaderMaterial_kmh38")
|
||||
surface_material_override/2 = SubResource("ShaderMaterial_b8w03")
|
||||
surface_material_override/3 = SubResource("ShaderMaterial_una45")
|
||||
|
||||
[connection signal="input_event" from="." to="." method="_on_input_event"]
|
||||
[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"]
|
||||
[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"]
|
||||
[connection signal="navigation_finished" from="NavigationAgent3D" to="." method="_on_navigation_agent_3d_navigation_finished"]
|
||||
[connection signal="target_reached" from="NavigationAgent3D" to="." method="_on_navigation_agent_3d_target_reached"]
|
||||
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -19,12 +19,37 @@ 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -59,3 +59,8 @@ test={
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
right_mouse_click={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(92, 20),"global_position":Vector2(101, 68),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user