diff --git a/Scenes/Prefabs/DoubleBeds.tscn b/Scenes/Prefabs/DoubleBeds.tscn index 06bbcd9..8f4bee7 100644 --- a/Scenes/Prefabs/DoubleBeds.tscn +++ b/Scenes/Prefabs/DoubleBeds.tscn @@ -73,9 +73,10 @@ input_ray_pickable = false transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.218994, -0.287048, 0.10144) shape = SubResource("BoxShape3D_sp2kd") -[node name="ActionNode" type="Node3D" parent="."] +[node name="ActionNode" type="Node3D" parent="." node_paths=PackedStringArray("area")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.3739) script = ExtResource("8_c1046") +area = NodePath("Area3d") [node name="Area3d" type="Area3D" parent="ActionNode"] input_ray_pickable = false diff --git a/Scenes/Prefabs/Pot.tscn b/Scenes/Prefabs/Pot.tscn index 2bca260..cce0b5e 100644 --- a/Scenes/Prefabs/Pot.tscn +++ b/Scenes/Prefabs/Pot.tscn @@ -88,9 +88,10 @@ surface_material_override/1 = SubResource("StandardMaterial3D_uhv8u") surface_material_override/2 = SubResource("StandardMaterial3D_dn6sd") surface_material_override/3 = SubResource("StandardMaterial3D_rbvpf") -[node name="ActionNode" type="Node3D" parent="."] +[node name="ActionNode" type="Node3D" parent="." node_paths=PackedStringArray("area")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.26206, 2.41965) script = ExtResource("12_r71lq") +area = NodePath("Area3d") [node name="Area3d" type="Area3D" parent="ActionNode"] input_ray_pickable = false diff --git a/Scripts/Interactable.gd b/Scripts/Interactable.gd index 6bfa314..24bcc76 100644 --- a/Scripts/Interactable.gd +++ b/Scripts/Interactable.gd @@ -4,6 +4,8 @@ extends Node signal action_stoped signal object_placed() + +@export var area: Area3D var build_name: String = "None" @@ -38,6 +40,7 @@ func set_person_pos(person): for pose in persons_position: if pose.is_free: pose.set_person(person) + break func find_pose(person): diff --git a/Scripts/global_script.gd b/Scripts/global_script.gd index 023e4e1..e030049 100644 --- a/Scripts/global_script.gd +++ b/Scripts/global_script.gd @@ -39,8 +39,10 @@ func _input(event: InputEvent) -> void: show_context_menu.emit() func _on_interact(person, object): - object.start_action(person, object) - + if object.name == "ActionNode": + object.start_action(person, object) + else: + object.ActionNode.start_action(person, object) func _on_object_selected(object): if object_selected != null and object != object_selected: diff --git a/Scripts/objects/pot_object.gd b/Scripts/objects/pot_object.gd index 103f9ee..4f472a2 100644 --- a/Scripts/objects/pot_object.gd +++ b/Scripts/objects/pot_object.gd @@ -11,7 +11,7 @@ func _ready() -> void: func start_action(person, object): person.action = self + person.visible = false + set_person_pos(person) person.set_timer(5) -func stop_action(person, object): - print("action stoped") diff --git a/Scripts/person.gd b/Scripts/person.gd index 5a60346..b232103 100644 --- a/Scripts/person.gd +++ b/Scripts/person.gd @@ -79,16 +79,22 @@ func set_target_position(): var newPos = target_object.global_position newPos.y = self.position.y nav_agent.target_position = newPos - + if target_object.name != "ActionNode": + target_object.ActionNode.area.body_entered.connect(on_target_reached) + else: + target_object.area.body_entered.connect(on_target_reached) #nav_agent.target_position = start_pos - +func on_target_reached(body): + print("I reached ") + if body == self: + if target_object != null: + print("I reached a target") + is_target_reached = true + nav_agent.target_position = self.global_position + Global.interact.emit(self, target_object) func _on_navigation_agent_3d_target_reached() -> void: - if target_object != null: - print("I reached a target") - is_target_reached = true - nav_agent.target_position = self.global_position - Global.interact.emit(self, target_object) + pass func set_timer(time): diff --git a/Scripts/person_action.gd b/Scripts/person_action.gd index d607b81..67c3251 100644 --- a/Scripts/person_action.gd +++ b/Scripts/person_action.gd @@ -60,3 +60,8 @@ func go_cook(): else: print("I cant find free pot") pass + + +func cook(person, object): + person.set_timer(5) +