class_name ComponentCollision extends Node signal collided @export_node_path("CharacterBody2D") var entityPath: NodePath @onready var entity: CharacterBody2D = get_node(entityPath) @export_node_path("CollisionShape2D") var collision_shape_path: NodePath @onready var collision_shape: CollisionShape2D = get_node(collision_shape_path) @export_node_path("ComponentHealth") var component_health_path: NodePath var component_health: ComponentHealth var collision_area: Area2D func init(): collision_area = Utilities.Collision.Area.new(entity, collision_shape) collision_area.set_collision_mask_value(Utilities.Collision.Layer.PLAYER, true) collision_area.connect("collided", func(area): emit_signal("collided", area)) entity.add_child(collision_area) if component_health_path: component_health = get_node(component_health_path) collision_area.connect("collided", func(area): if area.is_in_group("explosions"): component_health.take_damage() ) component_health.died.connect(func(): collision_area.set_collision_layer_value(Utilities.Collision.Layer.ENEMY, false) collision_area.set_collision_mask_value(Utilities.Collision.Layer.PLAYER, false) )