From b5d5d4a8189503faf0d66a0d72c7f14fa07275f9 Mon Sep 17 00:00:00 2001 From: Nikolai Fesenko <152747946+NikolaiFesenko-code@users.noreply.github.com> Date: Wed, 20 Aug 2025 13:38:48 +0200 Subject: [PATCH] item can be stored, added poses to shelf --- Scenes/Prefabs/cart.tscn | 2 +- Scenes/Prefabs/food_item.tscn | 17 ++++++++++++++--- Scripts/Item.gd | 25 +++++++++++++++++++++++++ Scripts/Items/food_item.gd | 6 +++++- Scripts/cart.gd | 3 ++- Scripts/global_script.gd | 17 +++++++++++++++++ Scripts/item_manager.gd | 2 ++ Scripts/objects/shelf_object.gd | 7 ++++--- Scripts/person.gd | 2 +- Scripts/pose_item.gd | 1 + 10 files changed, 72 insertions(+), 10 deletions(-) diff --git a/Scenes/Prefabs/cart.tscn b/Scenes/Prefabs/cart.tscn index b259443..5bcebb5 100644 --- a/Scenes/Prefabs/cart.tscn +++ b/Scenes/Prefabs/cart.tscn @@ -43,7 +43,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.138559, 0) navigation_mesh = SubResource("NavigationMesh_ru0md") [node name="ground" type="StaticBody3D" parent="Cart-bottom/NavigationRegion3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.12006, 0.135911, 0.169229, -0.0448687) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.12006, 0.135911, -0.0747662, -0.0448687) [node name="CollisionShape3D" type="CollisionShape3D" parent="Cart-bottom/NavigationRegion3D/ground"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.930367, -0.452148, 0.568024) diff --git a/Scenes/Prefabs/food_item.tscn b/Scenes/Prefabs/food_item.tscn index ebd894c..4b6f30c 100644 --- a/Scenes/Prefabs/food_item.tscn +++ b/Scenes/Prefabs/food_item.tscn @@ -1,12 +1,23 @@ -[gd_scene load_steps=4 format=3 uid="uid://d3l2w1076ttb0"] +[gd_scene load_steps=5 format=3 uid="uid://d3l2w1076ttb0"] [ext_resource type="PackedScene" uid="uid://tedmijw81j46" path="res://Blends/Items/Food/food.gltf" id="1_613iy"] [ext_resource type="Script" uid="uid://bd3vhk86ac1nu" path="res://Scripts/Items/food_item.gd" id="2_cemcp"] [ext_resource type="Material" uid="uid://detpb4ww2vvsf" path="res://Blends/Items/Food/Material.tres" id="3_cemcp"] -[node name="food" instance=ExtResource("1_613iy")] +[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_cemcp"] +points = PackedVector3Array(0.916143, 0.0653669, 0.916143, -1.04586, -0.458043, -1.04586, -0.987529, -0.722254, -0.987529, -1.04586, -0.458043, 1.04586, 0.942723, -0.750116, 0.942926, 1.04586, -0.458043, -1.04586, -0.916143, 0.0653669, -0.916143, -0.916143, 0.0653669, 0.916143, 0.916143, 0.0653669, -0.916143, 0.942723, -0.750116, -0.942926, -0.942723, -0.750116, 0.942926, 1.0134, -0.196704, 1.04617, -1.04617, -0.196704, -1.0134, 1.0134, -0.196704, -1.04617, 1.04586, -0.458043, 1.04586, -1.04617, -0.196704, 1.0134, -0.942723, -0.750116, -0.942926, 0.987529, -0.722254, 0.987529, 1.04617, -0.196704, -1.0134, 0.987529, -0.722254, -0.987529, -0.987529, -0.722254, 0.987529, 1.04617, -0.196704, 1.0134, -1.0132, -0.196704, -1.04617, -1.0132, -0.196704, 1.04617, -0.948223, 0.0324106, -0.948428, 0.948223, 0.0324106, 0.948428, -0.948223, 0.0324106, 0.948428, 0.948223, 0.0324106, -0.948428) + +[node name="food" node_paths=PackedStringArray("mesh") instance=ExtResource("1_613iy")] transform = Transform3D(0.3, -1.53807e-05, 1.30802e-05, 1.53807e-05, 0.3, -5.5671e-06, -1.30802e-05, 5.5671e-06, 0.3, 0, 0, 0) script = ExtResource("2_cemcp") +mesh = NodePath("Cube") -[node name="Cube" parent="." index="0"] +[node name="StaticBody3D" type="StaticBody3D" parent="." index="0"] +transform = Transform3D(1, -1.44862e-12, -1.09139e-11, -1.56369e-12, 1, 1.81899e-12, 7.27596e-12, 0, 1, 0, 0, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" index="0"] +transform = Transform3D(1, 2.18947e-12, 7.27596e-12, 2.07429e-12, 1, -1.81899e-12, -7.27596e-12, 0, 1, 0, 0, 0) +shape = SubResource("ConvexPolygonShape3D_cemcp") + +[node name="Cube" parent="." index="1"] surface_material_override/0 = ExtResource("3_cemcp") diff --git a/Scripts/Item.gd b/Scripts/Item.gd index c9c7b24..3fbbecf 100644 --- a/Scripts/Item.gd +++ b/Scripts/Item.gd @@ -1,9 +1,34 @@ extends Node3D class_name Item + + + var item_name var shelf_owner var is_being_used: bool +var outline_material: ShaderMaterial +var static_body: StaticBody3D + +func _ready() -> void: + set_outline_shader() func use(): print(str(self) + "is used") + + +func set_outline_shader(): + static_body = $StaticBody3D + static_body.mouse_entered.connect(_on_mouse_enter) + static_body.mouse_exited.connect(_on_mouse_exit) + +func _on_mouse_enter(): + enable_outline() +func _on_mouse_exit(): + disable_outline() + + +func enable_outline(): + outline_material.set_shader_parameter("is_active", true) +func disable_outline(): + outline_material.set_shader_parameter("is_active", false) diff --git a/Scripts/Items/food_item.gd b/Scripts/Items/food_item.gd index f958acd..1f4968c 100644 --- a/Scripts/Items/food_item.gd +++ b/Scripts/Items/food_item.gd @@ -1,11 +1,15 @@ extends Item - +@export var mesh: MeshInstance3D func _init() -> void: item_name = "food" is_being_used = false + +func _ready() -> void: + outline_material = mesh.get_surface_override_material(0).next_pass + set_outline_shader() func use(): print("Object eaten") diff --git a/Scripts/cart.gd b/Scripts/cart.gd index 2e4ece9..51aa344 100644 --- a/Scripts/cart.gd +++ b/Scripts/cart.gd @@ -22,6 +22,7 @@ func _on_object_placed(build_postion): newObject.static_body.input_ray_pickable = true newObject.global_position = build_postion BuildManager.add_object_to_array(newObject) - newObject.ActionNode.create() + if newObject.ActionNode != null: + newObject.ActionNode.create() #newObject.restore_default_shaders() self.add_child(newObject) diff --git a/Scripts/global_script.gd b/Scripts/global_script.gd index 7baacb4..60ad995 100644 --- a/Scripts/global_script.gd +++ b/Scripts/global_script.gd @@ -6,8 +6,25 @@ extends Node3D signal interact(person,interact_object) +signal object_selected_signal +signal object_unselected_signal +signal object_over_mouse_signal + + + +var object_selected +var object_over_mouse + + func _ready() -> void: interact.connect(_on_interact) func _on_interact(person, object): object.start_action(person, object) + + +func _on_object_selected(): + pass + +func _on_object_unselected(): + pass diff --git a/Scripts/item_manager.gd b/Scripts/item_manager.gd index 958b7d4..20deb17 100644 --- a/Scripts/item_manager.gd +++ b/Scripts/item_manager.gd @@ -53,3 +53,5 @@ func get_item_from_id(id): +func create_item(item_id): + return ItemManager.get_item(0).instantiate() diff --git a/Scripts/objects/shelf_object.gd b/Scripts/objects/shelf_object.gd index ea13390..b2ce355 100644 --- a/Scripts/objects/shelf_object.gd +++ b/Scripts/objects/shelf_object.gd @@ -31,9 +31,10 @@ func give_out(person): func add_item(item): stored_items.append(item) - print(item_poses) + for pose in item_poses: if pose.is_free: + print(pose) pose.add_item(item) break @@ -46,6 +47,6 @@ func get_item_pose(item): func create(): for pose in items_pos_master.get_children(): item_poses.append(pose) - var newItem = ItemManager.get_item(0).instantiate() ItemManager.add_shelf(self) - ItemManager.add_item_to_shelf(self, newItem) + ItemManager.add_item_to_shelf(self, ItemManager.create_item(0)) + ItemManager.add_item_to_shelf(self, ItemManager.create_item(0)) diff --git a/Scripts/person.gd b/Scripts/person.gd index f4ca13b..4d6b6f2 100644 --- a/Scripts/person.gd +++ b/Scripts/person.gd @@ -84,7 +84,6 @@ func set_target_position(): func _on_navigation_agent_3d_target_reached() -> void: if target_object != null: - print(22) is_target_reached = true nav_agent.target_position = self.global_position Global.interact.emit(self, target_object) @@ -98,6 +97,7 @@ func _on_timer_timeout() -> void: func hold_item(item): + is_holding_item = true var newItem = item.duplicate() holdingItem = newItem holdingItem.position = Vector3(0,0.976, -0.065) diff --git a/Scripts/pose_item.gd b/Scripts/pose_item.gd index 6095a3f..59d0b3f 100644 --- a/Scripts/pose_item.gd +++ b/Scripts/pose_item.gd @@ -15,4 +15,5 @@ func add_item(new_item): func remove_item(): + is_free = true self.remove_child(item)