diff --git a/scenes/Maps/TestMap/TestMap.tscn b/scenes/Maps/TestMap/TestMap.tscn index 0cbd462..1727863 100644 --- a/scenes/Maps/TestMap/TestMap.tscn +++ b/scenes/Maps/TestMap/TestMap.tscn @@ -29,26 +29,21 @@ ambient_light_source = 1 script = ExtResource("1_ru75d") mapName = "My cool map" -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] -environment = SubResource("Environment_nyivo") - -[node name="Rosa" parent="." instance=ExtResource("1_7b7hx")] +[node name="Entities" type="Node3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.19857, 0.684572, 0.968477) -[node name="Green" parent="." node_paths=PackedStringArray("interactEvent") instance=ExtResource("2_cg1ph")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.68747, 0.459578, -0.399262) -interactEvent = NodePath("../Events/TestConversation") +[node name="Rosa" parent="Entities" instance=ExtResource("1_7b7hx")] -[node name="Sign" parent="." node_paths=PackedStringArray("interactEvent") instance=ExtResource("9_xfqoe")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.36525, 0.136824, 2.58137) -interactEvent = NodePath("../Events/TestConversation") +[node name="Green" parent="Entities" node_paths=PackedStringArray("interactEvent") instance=ExtResource("2_cg1ph")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.88604, -0.224994, -1.36774) +interactEvent = NodePath("../../Events/TestConversation") -[node name="OmniLight3D" type="OmniLight3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.20244, 3.80554) -light_energy = 3.375 -shadow_bias = 0.0 -shadow_normal_bias = 0.9 -omni_range = 281.646 +[node name="Sign" parent="Entities" node_paths=PackedStringArray("interactEvent") instance=ExtResource("9_xfqoe")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.56382, -0.547748, 1.61289) +interactEvent = NodePath("../../Events/TestConversation") + +[node name="ItemOnGround" parent="Entities" instance=ExtResource("4_ejcqv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.546944, -0.547748, -3.46628) [node name="Map" type="Node3D" parent="."] metadata/_edit_lock_ = true @@ -65,6 +60,16 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.92766, 2.37929, -4.38178) collision_layer = 256 collision_mask = 2 +[node name="WorldEnvironment" type="WorldEnvironment" parent="Map"] +environment = SubResource("Environment_nyivo") + +[node name="OmniLight3D" type="OmniLight3D" parent="Map"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7.20244, 3.80554) +light_energy = 3.375 +shadow_bias = 0.0 +shadow_normal_bias = 0.9 +omni_range = 281.646 + [node name="Events" type="Node" parent="."] [node name="TestConversation" type="Node" parent="Events"] @@ -89,7 +94,3 @@ metadata/_custom_type_script = "uid://tkfc88q8m86f" [node name="Get Item" type="Node" parent="Events"] script = ExtResource("10_avybc") metadata/_custom_type_script = "uid://b41umpbgqfuc2" - -[node name="ItemOnGround" parent="." node_paths=PackedStringArray("interactEvent") instance=ExtResource("4_ejcqv")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.651626, 0.136824, -2.4978) -interactEvent = NodePath("../Events/Get Item") diff --git a/scripts/Entity/Component/EntityDirection.gd b/scripts/Entity/Component/EntityDirection.gd index d02fcef..020fe4b 100644 --- a/scripts/Entity/Component/EntityDirection.gd +++ b/scripts/Entity/Component/EntityDirection.gd @@ -69,7 +69,7 @@ func getDirectionToFace(position:Vector3) -> Direction: if !characterBody: return Direction.SOUTH; - var diff = position - characterBody.position; + var diff = position - characterBody.global_position; if abs(diff.x) > abs(diff.z): if diff.x > 0: return Direction.EAST; diff --git a/scripts/Entity/Component/EntityInteractor.gd b/scripts/Entity/Component/EntityInteractor.gd index fa8e354..cc4f4c7 100644 --- a/scripts/Entity/Component/EntityInteractor.gd +++ b/scripts/Entity/Component/EntityInteractor.gd @@ -21,8 +21,8 @@ func getRaycastInteractable() -> EntityInteractable: var rayDirection = entityDirection.getDirectionVector() var query = PhysicsRayQueryParameters3D.create( - characterBody.position, - characterBody.position + (rayDirection * interactRange) + characterBody.global_position, + characterBody.global_position + (rayDirection * interactRange) ) query.collide_with_bodies = true; query.collide_with_areas = true; diff --git a/scripts/Entity/ItemOnGround.gd b/scripts/Entity/ItemOnGround.gd index a7e3775..3a6539f 100644 --- a/scripts/Entity/ItemOnGround.gd +++ b/scripts/Entity/ItemOnGround.gd @@ -1,6 +1,7 @@ class_name ItemOnGround extends StaticBody3D -@export var interactEvent:Event = null +@export var itemType:Item.Type = Item.Type.POTION; +@export var quantity:int = 1; func _ready() -> void: $Entity/EntityInteractable.onInteract.connect( @@ -12,16 +13,15 @@ func _exit_tree() -> void: self.onEntityInteract ) -func selfDispose() -> void: - get_parent().remove_child(self) - self.queue_free() - func onEntityInteract( interactor:EntityInteractor, interactee:EntityInteractable ) -> void: - if interactEvent == null || (interactEvent.started && !interactEvent.isDone()): - return - - interactEvent.onEntityInteract(interactor, $Entity/EntityInteractable) - self.selfDispose() + print("Interact?") + var event = EventGetItem.new() + event.itemType = itemType; + event.quantity = quantity; + event.onEntityInteract(interactor, interactee) + + get_parent().remove_child(self) + self.queue_free() \ No newline at end of file diff --git a/scripts/Entity/RosaCamera.gd b/scripts/Entity/RosaCamera.gd index 10980ef..0cd2737 100644 --- a/scripts/Entity/RosaCamera.gd +++ b/scripts/Entity/RosaCamera.gd @@ -20,7 +20,7 @@ func _process(delta: float) -> void: (viewportHeight / 2.0) ) / unitScale; - var look = follow.position; + var look = follow.global_position; var position = Vector3(0, 0, 2) + look; look_at_from_position( diff --git a/scripts/Event/EventConversation.gd b/scripts/Event/EventConversation.gd index f92d3c6..f138017 100644 --- a/scripts/Event/EventConversation.gd +++ b/scripts/Event/EventConversation.gd @@ -16,13 +16,13 @@ func start() -> void: if turnInteractee && interactee.entityDirection && interactor.characterBody: var turn = EventEntityTurn.new() turn.entity = interactee.entityDirection - turn.direction = turn.entity.getDirectionToFace(interactor.characterBody.position) + turn.direction = turn.entity.getDirectionToFace(interactor.characterBody.global_position) addExtraEvent(turn, 0) if turnInteractor && interactor.entityDirection && interactee.characterBody: var turn = EventEntityTurn.new() turn.entity = interactor.entityDirection - turn.direction = turn.entity.getDirectionToFace(interactee.characterBody.position) + turn.direction = turn.entity.getDirectionToFace(interactee.characterBody.global_position) addExtraEvent(turn, 0) # Create start pause event diff --git a/scripts/Event/Item/EventGetItem.gd b/scripts/Event/Item/EventGetItem.gd index f94d986..49b34c1 100644 --- a/scripts/Event/Item/EventGetItem.gd +++ b/scripts/Event/Item/EventGetItem.gd @@ -2,4 +2,5 @@ class_name EventGetItem extends "res://scripts/Event/Item/EventItem.gd" func start() -> void: super.start() + print("Got item") getInventory().addItem(itemType, quantity) \ No newline at end of file