diff --git a/Scenes/Prefabs/Shelf.tscn b/Scenes/Prefabs/Shelf.tscn index bef8e83..2813ac0 100644 --- a/Scenes/Prefabs/Shelf.tscn +++ b/Scenes/Prefabs/Shelf.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=4 uid="uid://c0gypplbklc3i"] +[gd_scene load_steps=17 format=4 uid="uid://c0gypplbklc3i"] [ext_resource type="ArrayMesh" uid="uid://k2k1ppv3ycsv" path="res://Blends/Shelf/Shelf.obj" id="1_usf1u"] [ext_resource type="Script" uid="uid://c61rr6to3q566" path="res://Scripts/build_object.gd" id="1_ya6sq"] @@ -8,6 +8,7 @@ [ext_resource type="Shader" uid="uid://c08eg1piwoy3t" path="res://Shaders/outline.gdshader" id="5_jbe2f"] [ext_resource type="Script" uid="uid://dw0nntbakhny6" path="res://Scripts/objects/shelf_object.gd" id="7_4318v"] [ext_resource type="Material" uid="uid://detpb4ww2vvsf" path="res://Blends/Items/Food/Material.tres" id="8_0dtcx"] +[ext_resource type="Script" uid="uid://ckrqph0jwnjcp" path="res://Scripts/pose_item.gd" id="8_w5qf7"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_4318v"] render_priority = 0 @@ -86,9 +87,10 @@ input_ray_pickable = false transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0545654, 0.0981445, -0.0205688) shape = SubResource("BoxShape3D_jbe2f") -[node name="ActionNode" type="Node3D" parent="."] +[node name="ActionNode" type="Node3D" parent="." node_paths=PackedStringArray("items_pos_master")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.39139) script = ExtResource("7_4318v") +items_pos_master = NodePath("ItemPos") [node name="Area3d" type="Area3D" parent="ActionNode"] input_ray_pickable = false @@ -102,8 +104,170 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.839141, 0.470829) visible = false radius = 0.886475 -[node name="Cube" type="MeshInstance3D" parent="."] +[node name="ItemPos" type="Node3D" parent="ActionNode"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.24741) + +[node name="Pose1" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.75345, -1.22793, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose1"] transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose2" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.834656, -1.22793, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose2"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose3" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.029565, -1.22793, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose3"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose4" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.886944, -1.22793, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose4"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose5" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.696, -1.22793, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose5"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose6" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.75345, -0.182641, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose6"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose7" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.834656, -0.182641, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose7"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose8" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.029565, -0.182641, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose8"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose9" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.886944, -0.182641, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose9"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose10" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.696, -0.182641, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose10"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose11" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.75345, 0.906006, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose11"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose12" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.834656, 0.906006, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose12"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose13" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.029565, 0.906006, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose13"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose14" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.886944, 0.906006, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose14"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false +mesh = SubResource("ArrayMesh_w5qf7") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("8_0dtcx") + +[node name="Pose15" type="Node3D" parent="ActionNode/ItemPos"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.696, 0.906006, -0.143976) +script = ExtResource("8_w5qf7") + +[node name="Cube" type="MeshInstance3D" parent="ActionNode/ItemPos/Pose15"] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) +visible = false mesh = SubResource("ArrayMesh_w5qf7") skeleton = NodePath("") surface_material_override/0 = ExtResource("8_0dtcx") diff --git a/Scripts/item_manager.gd b/Scripts/item_manager.gd index 4e9e202..958b7d4 100644 --- a/Scripts/item_manager.gd +++ b/Scripts/item_manager.gd @@ -34,7 +34,7 @@ func add_shelf(object): func add_item_to_shelf(shelf, item): item.shelf_owner = shelf - shelf.stored_items.append(item) + shelf.add_item(item) func get_item(id): return get_item_from_id(id) diff --git a/Scripts/objects/shelf_object.gd b/Scripts/objects/shelf_object.gd index 5d9611a..ea13390 100644 --- a/Scripts/objects/shelf_object.gd +++ b/Scripts/objects/shelf_object.gd @@ -3,12 +3,15 @@ extends Interactable var test: bool = false +@export var items_pos_master: Node +var item_poses: Array + + func _init() -> void: max_person_using = 1 can_store = true func _ready() -> void: self.owner = $".." - print(self) #object_placed.connect(_on_object_placed.bind(self)) @@ -20,14 +23,29 @@ func start_action(person, object): func give_out(person): + var pose = get_item_pose(person.target_item) + pose.remove_item() person.hold_item(person.target_item) stored_items.erase(person.target_item) +func add_item(item): + stored_items.append(item) + print(item_poses) + for pose in item_poses: + if pose.is_free: + pose.add_item(item) + break - +func get_item_pose(item): + for pose in item_poses: + if pose.item == item: + return pose + return null 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) diff --git a/Scripts/person.gd b/Scripts/person.gd index df3d794..f4ca13b 100644 --- a/Scripts/person.gd +++ b/Scripts/person.gd @@ -110,4 +110,5 @@ func drop_item(): func _on_item_received(): if holdingItem != null: - holdingItem.use() + pass + #holdingItem.use() diff --git a/Scripts/pose_item.gd b/Scripts/pose_item.gd new file mode 100644 index 0000000..6095a3f --- /dev/null +++ b/Scripts/pose_item.gd @@ -0,0 +1,18 @@ +extends Node3D + +var is_free: bool +var item + +func _init() -> void: + is_free = true + +func add_item(new_item): + is_free = false + item = new_item + self.add_child(item) + item.position = global_position + print("item added") + + +func remove_item(): + self.remove_child(item) diff --git a/Scripts/pose_item.gd.uid b/Scripts/pose_item.gd.uid new file mode 100644 index 0000000..066e765 --- /dev/null +++ b/Scripts/pose_item.gd.uid @@ -0,0 +1 @@ +uid://ckrqph0jwnjcp