diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2025-03-10 18:22:09 +0100 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2025-03-10 18:22:09 +0100 |
commit | 440020e642f539079867577435a9f8b02075699b (patch) | |
tree | 99acccfc1574a8ffc656d6f64ff934949edb1f52 /map/camera.gd |
Diffstat (limited to 'map/camera.gd')
-rw-r--r-- | map/camera.gd | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/map/camera.gd b/map/camera.gd new file mode 100644 index 0000000..f433157 --- /dev/null +++ b/map/camera.gd @@ -0,0 +1,22 @@ +extends Camera2D + + +@export var limit_tile_map: TileMapLayer + + +func _ready() -> void: + if limit_tile_map: + var tile_size := limit_tile_map.tile_set.tile_size + + limit_top = limit_tile_map.get_used_rect().position.y * tile_size.y + limit_bottom = limit_tile_map.get_used_rect().end.y * tile_size.y + limit_left = limit_tile_map.get_used_rect().position.x * tile_size.x + limit_right = limit_tile_map.get_used_rect().end.x * tile_size.x + + var difference := Vector2i(get_viewport_rect().size) - limit_tile_map.get_used_rect().size * tile_size + if difference.x > 0: + limit_left -= int(difference.x * 0.5) + limit_right += int(difference.x * 0.5) + if difference.y > 0: + limit_top -= int(difference.x * 0.5) + limit_bottom += int(difference.x * 0.5) |