Files
Archipelago-Game/Maps/Connectors/Scripts/camera_limit_connector.gd

27 lines
860 B
GDScript

extends Area2D
@export var camera_to_limit: Camera2D
@export var auto_limit := true
func _ready() -> void:
if camera_to_limit == null or !auto_limit or get_child_count() == 0:
return
var collision_shape: CollisionShape2D = get_children()[0]
if collision_shape.shape is not RectangleShape2D:
return
var limits := _get_normalized_limits(collision_shape)
camera_to_limit.limit_left = limits.position.x
camera_to_limit.limit_top = limits.position.y
camera_to_limit.limit_right = limits.end.x
camera_to_limit.limit_bottom = limits.end.y
func _get_normalized_limits(collision_shape: CollisionShape2D) -> Rect2i:
var rectangle_shape := collision_shape.shape as RectangleShape2D
var rect_position := collision_shape.position
var size := rectangle_shape.size
var begin := rect_position - size / 2
return Rect2(begin.x, begin.y, size.x, size.y)