19 lines
688 B
GDScript
19 lines
688 B
GDScript
class_name CameraController extends Camera2D
|
|
|
|
|
|
func apply_drag(delta: Vector2) -> void:
|
|
var half_view: Vector2 = get_viewport_rect().size * 0.5 / zoom
|
|
var min_pos := Vector2(limit_left, limit_top) + half_view
|
|
var max_pos := Vector2(limit_right, limit_bottom) - half_view
|
|
# Guard against maps smaller than the viewport (min > max)
|
|
max_pos.x = max(min_pos.x, max_pos.x)
|
|
max_pos.y = max(min_pos.y, max_pos.y)
|
|
position = (position + delta / zoom).clamp(min_pos, max_pos)
|
|
|
|
|
|
func set_map_bounds(rect: Rect2) -> void:
|
|
limit_left = int(rect.position.x)
|
|
limit_top = int(rect.position.y)
|
|
limit_right = int(rect.position.x + rect.size.x)
|
|
limit_bottom = int(rect.position.y + rect.size.y)
|