33 lines
923 B
GDScript
33 lines
923 B
GDScript
class_name EntityInteractingArea extends Area3D
|
|
const Entity = preload("res://overworld/entity/Entity.gd")
|
|
|
|
var interactableAreas:Array[EntityInteractableArea] = []
|
|
@export var entity:Entity
|
|
|
|
func hasInteraction() -> bool:
|
|
return true
|
|
|
|
func interact() -> void:
|
|
for area in interactableAreas:
|
|
area.onInteract()
|
|
|
|
func _enter_tree() -> void:
|
|
self.area_entered.connect(_onAreaEntered)
|
|
self.area_exited.connect(_onAreaExited)
|
|
|
|
func _exit_tree() -> void:
|
|
self.area_entered.disconnect(_onAreaEntered)
|
|
self.area_exited.disconnect(_onAreaExited)
|
|
|
|
func _onAreaEntered(area:Area3D) -> void:
|
|
if area is EntityInteractableArea:
|
|
if area.entity == entity:
|
|
return
|
|
if !area.isInteractable():
|
|
return
|
|
print("EntityInteractingArea: Area Entered")
|
|
interactableAreas.append(area)
|
|
|
|
func _onAreaExited(area:Area3D) -> void:
|
|
print("EntityInteractingArea: Area Exited")
|
|
interactableAreas.erase(area) |