item can be stored, added poses to shelf

This commit is contained in:
Nikolai Fesenko
2025-08-20 13:38:48 +02:00
parent 88007d247a
commit b5d5d4a818
10 changed files with 72 additions and 10 deletions

View File

@@ -43,7 +43,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.138559, 0)
navigation_mesh = SubResource("NavigationMesh_ru0md") navigation_mesh = SubResource("NavigationMesh_ru0md")
[node name="ground" type="StaticBody3D" parent="Cart-bottom/NavigationRegion3D"] [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"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.930367, -0.452148, 0.568024)

View File

@@ -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="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="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"] [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) 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") 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") surface_material_override/0 = ExtResource("3_cemcp")

View File

@@ -1,9 +1,34 @@
extends Node3D extends Node3D
class_name Item class_name Item
var item_name var item_name
var shelf_owner var shelf_owner
var is_being_used: bool var is_being_used: bool
var outline_material: ShaderMaterial
var static_body: StaticBody3D
func _ready() -> void:
set_outline_shader()
func use(): func use():
print(str(self) + "is used") 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)

View File

@@ -1,11 +1,15 @@
extends Item extends Item
@export var mesh: MeshInstance3D
func _init() -> void: func _init() -> void:
item_name = "food" item_name = "food"
is_being_used = false is_being_used = false
func _ready() -> void:
outline_material = mesh.get_surface_override_material(0).next_pass
set_outline_shader()
func use(): func use():
print("Object eaten") print("Object eaten")

View File

@@ -22,6 +22,7 @@ func _on_object_placed(build_postion):
newObject.static_body.input_ray_pickable = true newObject.static_body.input_ray_pickable = true
newObject.global_position = build_postion newObject.global_position = build_postion
BuildManager.add_object_to_array(newObject) BuildManager.add_object_to_array(newObject)
newObject.ActionNode.create() if newObject.ActionNode != null:
newObject.ActionNode.create()
#newObject.restore_default_shaders() #newObject.restore_default_shaders()
self.add_child(newObject) self.add_child(newObject)

View File

@@ -6,8 +6,25 @@ extends Node3D
signal interact(person,interact_object) 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: func _ready() -> void:
interact.connect(_on_interact) interact.connect(_on_interact)
func _on_interact(person, object): func _on_interact(person, object):
object.start_action(person, object) object.start_action(person, object)
func _on_object_selected():
pass
func _on_object_unselected():
pass

View File

@@ -53,3 +53,5 @@ func get_item_from_id(id):
func create_item(item_id):
return ItemManager.get_item(0).instantiate()

View File

@@ -31,9 +31,10 @@ func give_out(person):
func add_item(item): func add_item(item):
stored_items.append(item) stored_items.append(item)
print(item_poses)
for pose in item_poses: for pose in item_poses:
if pose.is_free: if pose.is_free:
print(pose)
pose.add_item(item) pose.add_item(item)
break break
@@ -46,6 +47,6 @@ func get_item_pose(item):
func create(): func create():
for pose in items_pos_master.get_children(): for pose in items_pos_master.get_children():
item_poses.append(pose) item_poses.append(pose)
var newItem = ItemManager.get_item(0).instantiate()
ItemManager.add_shelf(self) 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))

View File

@@ -84,7 +84,6 @@ func set_target_position():
func _on_navigation_agent_3d_target_reached() -> void: func _on_navigation_agent_3d_target_reached() -> void:
if target_object != null: if target_object != null:
print(22)
is_target_reached = true is_target_reached = true
nav_agent.target_position = self.global_position nav_agent.target_position = self.global_position
Global.interact.emit(self, target_object) Global.interact.emit(self, target_object)
@@ -98,6 +97,7 @@ func _on_timer_timeout() -> void:
func hold_item(item): func hold_item(item):
is_holding_item = true
var newItem = item.duplicate() var newItem = item.duplicate()
holdingItem = newItem holdingItem = newItem
holdingItem.position = Vector3(0,0.976, -0.065) holdingItem.position = Vector3(0,0.976, -0.065)

View File

@@ -15,4 +15,5 @@ func add_item(new_item):
func remove_item(): func remove_item():
is_free = true
self.remove_child(item) self.remove_child(item)