extends Area2D class_name GenericHurtbox @export_flags("NORMAL:1","LOW:2","HIGH:4") var lookup_layers : int = 0 var entities : Array[Entity] = [] signal entity_added(entity : Entity) signal entity_removed(entity : Entity) signal collision_start signal collision_end func _ready() -> void: area_entered.connect(on_area_entered) area_exited.connect(on_area_exited) func on_area_entered(area: Area2D): if area is GenericCollider: if lookup_layers & area.layer != 0: add_entity(area.get_parent()) func on_area_exited(area: Area2D): if area is GenericCollider: if lookup_layers & area.layer != 0: remove_entity(area.get_parent()) func add_entity(entity : Entity): entities.append(entity) entity_added.emit(entity) if entities.size() == 1: collision_start.emit() func remove_entity(entity : Entity): entities.erase(entity) entity_removed.emit(entity) if entities.size() == 0: collision_end.emit() func get_colliding_entity() -> Entity: if entities.size() == 0: return null return entities[0] func is_colliding() -> bool: return entities.size() > 0