summaryrefslogtreecommitdiff
path: root/collision_visibility_area.gd
diff options
context:
space:
mode:
Diffstat (limited to 'collision_visibility_area.gd')
-rw-r--r--collision_visibility_area.gd40
1 files changed, 40 insertions, 0 deletions
diff --git a/collision_visibility_area.gd b/collision_visibility_area.gd
new file mode 100644
index 0000000..da4683c
--- /dev/null
+++ b/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(Game.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()