DaiconMap
![]()
Представляет собой набор TileMapLayers, которые в свою очередь, являются уровнями вашего окружения.
Каждый такой слой содержит уникальный z-индекс являющийся показателем высоты данного слоя в пространстве. Другими словами z-сортировка размещает объекты по модулируемой оси Z на основе их индекса.
Параметры:
- grid_map
GridMap
Ядро DaiconMap.
- cells_count
int
Количество трехмерных тайлов.
- mesh_library
MeshLibrary
Библиотека меша из которого строиться 3D окружение.
- physics_material
PhysicsMaterial
Используется для определения физических свойств, таких как трение и упругость, отдельных тайлов.
- z_step
int
Z-шаг в системе сортировки между уровнями высоты.
Например z_step = 10, тогда:
Уровень -1 = -10 Уровень 0 = 0 Уровень 1 = 10 Уровень 2 = 20
- size
Vector3
Размер одного трехмерного тайла в метрах.
- layer
int
Слои столкновений для grid_map.
- mask
int
Слои столкновений для grid_map.
- bake_navigation
bool
Запечь навигационную сетку для 3D.
Методы:
- _ready
При каждом запуске развертывает ядро. Проводит базовую настройку ноды.
- _process
Работает только в редакторе.
Обновляет grid_map когда количество трехмерных тайлов не равно количеству двумерных (вызывает update_grid_map).
Синхронизирует перемещение ноды в 2D и её ядра в 3D.
- get_cells
Возвращает количество используемых трехмерных тайлов в 3D окружении.
func get_cells() -> int:
_cells_count = 0
for layer_index in range(0, get_layers_count()):
_cells_count += len(get_used_cells(layer_index))
for layer in get_children():
if layer is TileMapLayer:
_cells_count += len(layer.get_used_cells())
return _cells_count
- update_grid_map
Обновляет grid_map.
func update_grid_map():
grid_map.clear()
for layer_index in range(0, get_layers_count()):
var z = get_layer_z_index(layer_index) / z_step
for tile in get_used_cells(layer_index):
var tile_data = get_cell_tile_data(layer_index, Vector2(tile.x, tile.y))
grid_map.set_cell_item(Vector3(tile.x, z-1, tile.y+z), tile_data.get_custom_data("Item"))
for layer in get_children():
if layer is TileMapLayer:
var z = layer.z_index / z_step
for tile in layer.get_used_cells():
var tile_data = layer.get_cell_tile_data(Vector2(tile.x, tile.y))
grid_map.set_cell_item(Vector3(tile.x, z-1, tile.y+z), tile_data.get_custom_data("Item"))