Доработка. Предел уровня детализации и масштаб теперь хранятся в разных переменных
This commit is contained in:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user