diff options
Diffstat (limited to 'UI/collision_visibility_area.gd')
-rw-r--r-- | UI/collision_visibility_area.gd | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/UI/collision_visibility_area.gd b/UI/collision_visibility_area.gd new file mode 100644 index 0000000..a049432 --- /dev/null +++ b/UI/collision_visibility_area.gd @@ -0,0 +1,40 @@ +extends Area2D + + +@onready var collision_shape = get_child(0) as CollisionShape2D + +var colliding_nodes = [] + +@export var not_colliding_color: Color +@export var colliding_color: Color + + +func _draw(): + var shape = collision_shape.shape as RectangleShape2D + draw_rect( + Rect2( + Vector2.ZERO, + shape.size.snapped(Client.stage.map.tile_set.tile_size) + ), + colliding_color if colliding_nodes else not_colliding_color + ) + + +func _on_area_entered(area: Area2D) -> void: + colliding_nodes.append(area) + queue_redraw() + + +func _on_area_exited(area: Area2D) -> void: + colliding_nodes.remove_at(colliding_nodes.find(area)) + queue_redraw() + + +func _on_body_entered(body: Node2D) -> void: + colliding_nodes.append(body) + queue_redraw() + + +func _on_body_exited(body: Node2D) -> void: + colliding_nodes.remove_at(colliding_nodes.find(body)) + queue_redraw() |