Доработка. Предел уровня детализации и масштаб теперь хранятся в разных переменных

This commit is contained in:
sasha80
2025-05-15 14:56:46 +03:00
parent 9c4fb13311
commit d029747d6b
2 changed files with 20 additions and 8 deletions

View File

@@ -17,9 +17,10 @@ class_name MercatorTileMap
@export var tile_width: float = 256.0
@export var tile_height: float = 256.0
@export_range(1, 1000, 1) var max_concurrent_requests:int = 5
@export_range(100, 100000, 1) var max_cached_tiles: int = 200
@export_range(0, 25, 1) var max_zoom_level: int = 19
@export_range(0, 25, 1) var min_zoom_level: int = 0
@export_range(100, 100000, 1) var max_cached_tiles: int = 1024
@export_range(0, 20, 1) var max_zoom_level: int = 20
@export_range(0, 20, 1) var min_zoom_level: int = 0
@export_range(0, 20, 1) var max_zoom_level_server: int = 20
@export_color_no_alpha() var back_color: = Color.BLACK
const default_size: = 400.0
var is_centered: = false
@@ -556,10 +557,19 @@ func get_tile(x: int, y: int, z: int, create: bool = true) -> Tile:
var queue_size: = _queue.size()
if create and (not $canvas/player.is_playing()):
tile = Tile.new(idx, x, y, z)
tile.url = base_url.replace('{x}', str(x)).replace('{y}', str(y)).replace('{z}', str(z))
tile.t = now
_queue[idx] = tile
if z > max_zoom_level_server:
z = max_zoom_level_server
n = pow(2, z) - 1
x = clamp(x, 0, n)
y = clamp(y, 0, n)
idx = xyz_to_idx(x, y, z)
if _queue.has(idx):
tile = _queue[idx]
if not tile:
tile = Tile.new(idx, x, y, z)
tile.url = base_url.replace('{x}', str(x)).replace('{y}', str(y)).replace('{z}', str(z))
tile.t = now
_queue[idx] = tile
if queue_size == 0 and _queue.size():
emit_signal('load_started')

View File

@@ -28,7 +28,9 @@ size = Vector2(400, 400)
[node name="tilemap" type="CanvasGroup" groups=["gui_items"]]
script = ExtResource("1_l64tp")
max_zoom_level = 21
base_url = "http://192.168.11.105:8001/osm_tiles/{z}/{x}/{y}.png"
max_zoom_level = 10
max_zoom_level_server = 10
az = 2.0
[node name="canvas" type="TextureRect" parent="." groups=["gui_items"]]