reckfellENGINE

GridMap

Entity 3D карт на основе плиток.

На этой странице
class GridMapReckfellSharpНаследует Entity3D

Entity 3D карт на основе плиток.

GridMap Он работает как от редактора, так и от скриптов, что может помочь создать редакторы в игровом уровне. Сетка Maps использует MeshLibrary Каждая плитка представляет собой сетку с материалами, а также факультативную форму столкновения и навигационной формы. A GridMap содержит набор клеток. Каждая ячейка сетки относится к плитке в MeshLibraryВсе клетки на карте имеют одинаковые размеры. Внутри страны a GridMap Каждый октат имеет одинаковые размеры и может содержать несколько клеток. Примечание: GridMap не длиннее VisualInstance3D и поэтому не могут быть скрыты или замаскированы на основании VisualInstance3D.Layers. Если свет не влияет на первый слой, все GridMap не будет освещен этим светом.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

GridMapКонструктор
# GridMap
C#
public GridMap();

Свойства15

BakeNavigationСвойство
# BakeNavigation
C#
public bool BakeNavigation { get; set; }

Если true, этот GridMap создает навигационную область для каждой ячейки, которая использует элемент GridMap.MeshLibrary с навигационной сеткой. Созданная навигационная область будет использовать битовую маску навигационных слоев, назначенную элементу MeshLibrary.

CellCenterXСвойство
# CellCenterX
C#
public bool CellCenterX { get; set; }

Если true, элементы сетки центрируются по оси X.

CellCenterYСвойство
# CellCenterY
C#
public bool CellCenterY { get; set; }

Если true, элементы сетки центрируются по оси Y.

CellCenterZСвойство
# CellCenterZ
C#
public bool CellCenterZ { get; set; }

Если true, элементы сетки центрируются по оси Z.

CellOctantSizeСвойство
# CellOctantSize
C#
public int CellOctantSize { get; set; }

Размер каждого октанта измеряется в количестве ячеек. Это относится ко всем трем осям.

CellScaleСвойство
# CellScale
C#
public float CellScale { get; set; }

Масштаб базиса размещённых элементов: влияет и на меш, и на физические формы. Не меняет CellSize или MapToLocal. Значение 0.5 уменьшает блоки, но оставляет прежние промежутки между позициями клеток.

CellSizeСвойство
# CellSize
C#
public Vector3 CellSize { get; set; }

Шаг сетки по трём осям. Меняет расстояния и позиции клеток, но не размеры исходных мешей MeshLibrary. Согласуйте размеры модулей отдельно; для масштаба размещённых мешей и форм существует CellScale.

CollisionLayerСвойство
# CollisionLayer
C#
public uint CollisionLayer { get; set; }

Физические слои, в которых находится этот GridMap. GridMaps действуют как статические тела, то есть на них не влияет гравитация или другие силы. Они влияют только на другие физические тела, которые сталкиваются с ними.

CollisionMaskСвойство
# CollisionMask
C#
public uint CollisionMask { get; set; }

Физические слои, в которых этот GridMap обнаруживает столкновения. Для получения дополнительной информации см. Слои и маски столкновений в документации.

CollisionPriorityСвойство
# CollisionPriority
C#
public float CollisionPriority { get; set; }

Приоритет, используемый для решения столкновений при возникновении проникновения. Чем выше приоритет, тем ниже будет проникновение в объект. Это может быть использовано, например, для предотвращения прорыва игрока через границы уровня.

CollisionVisibilityModeСвойство
# CollisionVisibilityMode
C#
public GridMap.DebugVisibilityMode CollisionVisibilityMode { get; set; }

Отображать или скрывать формы столкновений GridMap. Если установлено значение GridMap.DebugVisibilityMode.Default, это зависит от настроек отладки отображения столкновений.

DebugOctantColorСвойство
# DebugOctantColor
C#
public Color DebugOctantColor { get; set; }

:: Color используется для визуализации октантового отладочного устройства, когда GridMap.DebugShowOctants Включено.

DebugShowOctantsСвойство
# DebugShowOctants
C#
public bool DebugShowOctants { get; set; }

Если true, показывает отладочные изображения для октантов.

Меш

MeshLibraryСвойство
# MeshLibrary
C#
public MeshLibrary MeshLibrary { get; set; }

Общий ресурс элементов сетки: ID, меши, трансформации и отдельные физические формы. Меш не создаёт коллизию автоматически. В текущей версии проверено сохранение с последовательными ID 0 и 1; разрыв 0/7 теряет данные элемента 7 после .rdata roundtrip, даже при Error.Ok.

PhysicsMaterialСвойство
# PhysicsMaterial
C#
public PhysicsMaterial PhysicsMaterial { get; set; }

Переопределяет физические свойства трения и отскока по умолчанию для всего GridMap.

Методы60

Clearvoid
# Clear
C#
public void Clear();

Очистить все ячейки.

ClearBakedMeshesvoid
# ClearBakedMeshes
C#
public void ClearBakedMeshes();

Очищает все запеченные сетки. См. GridMap.MakeBakedMeshes.

GetBakeMeshInstanceRid
# GetBakeMeshInstance
C#
public Rid GetBakeMeshInstance(int idx);

Возвращает Rid запеченной сетки с заданным idx.

Параметры
ИмяТипПо умолчанию
idxint—
Возвращает Rid
GetBakeMeshesReckfell.Collections.Array
# GetBakeMeshes
C#
public Reckfell.Collections.Array GetBakeMeshes();

Возвращает массив ссылок ArrayMesh и Transform3D всех запекаемых сеток, существующих в текущем GridMap. Чётные индексы содержат ArrayMesh, а нечётные — Transform3D, которые всегда равны Transform3D.Identity. Этот метод использует выходные данные метода GridMap.MakeBakedMeshes, который будет вызван с gen_lightmap_uv равным true и lightmap_uv_texel_size равным 0.1, если он ещё не был вызван.

Возвращает Reckfell.Collections.Array
GetBasisWithOrthogonalIndexBasis
# GetBasisWithOrthogonalIndex
C#
public Basis GetBasisWithOrthogonalIndex(int index);

Возвращает один из 24 возможных поворотов, которые лежат вдоль векторов (x,y,z), где каждый компонент равен -1, 0 или 1. Для получения дополнительных сведений обратитесь к исходному коду Reckfell.

Параметры
ИмяТипПо умолчанию
indexint—
Возвращает Basis
GetCellItemint
# GetCellItem
C#
public int GetCellItem(Vector3I position);

Читает сохранённый ID клетки. Наличие ID не доказывает наличие такого элемента в MeshLibrary, готовность коллизии или видимый меш.

Параметры
ИмяТипПо умолчанию
positionVector3I—
position

Координата клетки сетки.

Возвращает int

ID элемента либо -1 для пустой клетки. Внутреннее поле ID 16-битное; проверяйте диапазон до SetCellItem.

GetCellItemBasisBasis
# GetCellItemBasis
C#
public Basis GetCellItemBasis(Vector3I position);

Возвращает базис, задающий ориентацию указанной ячейке.

Параметры
ИмяТипПо умолчанию
positionVector3I—
Возвращает Basis
GetCellItemOrientationint
# GetCellItemOrientation
C#
public int GetCellItemOrientation(Vector3I position);

Читает индекс ориентации клетки, а не Euler-углы. Для Basis используйте GetCellItemBasis или GetBasisWithOrthogonalIndex.

Параметры
ИмяТипПо умолчанию
positionVector3I—
Возвращает int

Индекс 0..23 для корректно записанной ортогональной ориентации; -1 для пустой клетки. Значения вне контракта SetCellItem не используйте.

GetCellScalefloat
# GetCellScale
C#
public float GetCellScale();
Возвращает float
GetCellSizeVector3
# GetCellSize
C#
public Vector3 GetCellSize();
Возвращает Vector3
GetCenterXbool
# GetCenterX
C#
public bool GetCenterX();
Возвращает bool
GetCenterYbool
# GetCenterY
C#
public bool GetCenterY();
Возвращает bool
GetCenterZbool
# GetCenterZ
C#
public bool GetCenterZ();
Возвращает bool
GetCollisionLayeruint
# GetCollisionLayer
C#
public uint GetCollisionLayer();
Возвращает uint
GetCollisionLayerValuebool
# GetCollisionLayerValue
C#
public bool GetCollisionLayerValue(int layerNumber);

Возвращает, включен ли указанный слой GridMap.CollisionLayer, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetCollisionMaskuint
# GetCollisionMask
C#
public uint GetCollisionMask();
Возвращает uint
GetCollisionMaskValuebool
# GetCollisionMaskValue
C#
public bool GetCollisionMaskValue(int layerNumber);

Возвращает, включен ли указанный слой GridMap.CollisionMask, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetCollisionPriorityfloat
# GetCollisionPriority
C#
public float GetCollisionPriority();
Возвращает float
GetCollisionVisibilityModeGridMap.DebugVisibilityMode
# GetCollisionVisibilityMode
C#
public GridMap.DebugVisibilityMode GetCollisionVisibilityMode();
Возвращает GridMap.DebugVisibilityMode
GetDebugOctantColorColor
# GetDebugOctantColor
C#
public Color GetDebugOctantColor();
Возвращает Color
GetDebugShowOctantsbool
# GetDebugShowOctants
C#
public bool GetDebugShowOctants();
Возвращает bool
GetMeshLibraryMeshLibrary
# GetMeshLibrary
C#
public MeshLibrary GetMeshLibrary();
Возвращает MeshLibrary
GetMeshesReckfell.Collections.Array
# GetMeshes
C#
public Reckfell.Collections.Array GetMeshes();

Возвращает пары трансформаций и мешей существующих элементов. Это не список Entity или коллайдеров; неизвестный ID клетки без элемента библиотеки может отсутствовать в результате.

Возвращает Reckfell.Collections.Array

Array с чередующимися Transform3D и Mesh. Число элементов массива вдвое больше числа пар; не считайте Count количеством клеток.

GetNavigationMapRid
# GetNavigationMap
C#
public Rid GetNavigationMap();

Возвращает Rid навигационной карты, которую этот узел GridMap использует для своих ячеек запеченных навигационных сеток. Эта функция всегда возвращает набор карт на узле GridMap, а не карту на NavigationServer. Если карта изменяется напрямую с помощью API Навигационный Сервер, узел GridMap не будет знать об изменении карты.

Возвращает Rid
GetOctantCoordsFromCellCoordsVector3I
# GetOctantCoordsFromCellCoords
C#
public Vector3I GetOctantCoordsFromCellCoords(Vector3I cellCoords);

Возвращает координаты октанта Vector3I, к которому принадлежит ячейка по адресу cell_coords.

Параметры
ИмяТипПо умолчанию
cellCoordsVector3I—
Возвращает Vector3I
GetOctantSizeint
# GetOctantSize
C#
public int GetOctantSize();
Возвращает int
GetOctantsInBoundsReckfell.Collections.Array<Vector3I>
# GetOctantsInBounds
C#
public Reckfell.Collections.Array<Vector3I> GetOctantsInBounds(Aabb bounds);

Возвращает массив координат октантов Vector3I, находящихся внутри заданных bounds, включая октанты, в которых нет используемых ячеек.

Параметры
ИмяТипПо умолчанию
boundsAabb—
Возвращает Reckfell.Collections.Array<Vector3I>
GetOrthogonalIndexFromBasisint
# GetOrthogonalIndexFromBasis
C#
public int GetOrthogonalIndexFromBasis(Basis basis);

Эта функция рассматривает дискретизацию вращений в 24 точки на единичной сфере, лежащих вдоль векторов (x,y,z), где каждый компонент равен -1, 0 или 1, и возвращает индекс (в диапазоне от 0 до 23) точки, наилучшим образом представляющей ориентацию объекта. Для получения дополнительных сведений обратитесь к исходному коду Reckfell.

Параметры
ИмяТипПо умолчанию
basisBasis—
Возвращает int
GetPhysicsMaterialPhysicsMaterial
# GetPhysicsMaterial
C#
public PhysicsMaterial GetPhysicsMaterial();
Возвращает PhysicsMaterial
GetUsedCellsReckfell.Collections.Array<Vector3I>
# GetUsedCells
C#
public Reckfell.Collections.Array<Vector3I> GetUsedCells();

Возвращает массив Vector3 с непустыми координатами ячеек на карте сетки.

Возвращает Reckfell.Collections.Array<Vector3I>
GetUsedCellsByItemReckfell.Collections.Array<Vector3I>
# GetUsedCellsByItem
C#
public Reckfell.Collections.Array<Vector3I> GetUsedCellsByItem(int item);

Возвращает массив всех ячеек с заданным индексом элемента, указанным в item.

Параметры
ИмяТипПо умолчанию
itemint—
Возвращает Reckfell.Collections.Array<Vector3I>
GetUsedCellsInOctantReckfell.Collections.Array<Vector3I>
# GetUsedCellsInOctant
C#
public Reckfell.Collections.Array<Vector3I> GetUsedCellsInOctant(Vector3I octantCoords);

Возвращает массив объектов Vector3I с координатами непустых ячеек внутри октанта по адресу octant_coords.

Параметры
ИмяТипПо умолчанию
octantCoordsVector3I—
Возвращает Reckfell.Collections.Array<Vector3I>
GetUsedCellsInOctantByItemReckfell.Collections.Array<Vector3I>
# GetUsedCellsInOctantByItem
C#
public Reckfell.Collections.Array<Vector3I> GetUsedCellsInOctantByItem(Vector3I octantCoords, int item);

Возвращает массив объектов Vector3I с координатами ячеек внутри октанта в точке octant_coords, которые используют указанную ячейку item.

Параметры
ИмяТипПо умолчанию
octantCoordsVector3I—
itemint—
Возвращает Reckfell.Collections.Array<Vector3I>
GetUsedOctantsReckfell.Collections.Array<Vector3I>
# GetUsedOctants
C#
public Reckfell.Collections.Array<Vector3I> GetUsedOctants();

Возвращает массив объектов Vector3I с координатами непустых октантов на карте сетки.

Возвращает Reckfell.Collections.Array<Vector3I>
GetUsedOctantsByItemReckfell.Collections.Array<Vector3I>
# GetUsedOctantsByItem
C#
public Reckfell.Collections.Array<Vector3I> GetUsedOctantsByItem(int item);

Возвращает массив объектов Vector3I с координатами октантов, использующих указанный item на карте сетки.

Параметры
ИмяТипПо умолчанию
itemint—
Возвращает Reckfell.Collections.Array<Vector3I>
GetUsedOctantsInBoundsReckfell.Collections.Array<Vector3I>
# GetUsedOctantsInBounds
C#
public Reckfell.Collections.Array<Vector3I> GetUsedOctantsInBounds(Aabb bounds);

Возвращает массив Vector3I с координатами октантов непустых октантов, находящихся внутри локальных bounds.

Параметры
ИмяТипПо умолчанию
boundsAabb—
Возвращает Reckfell.Collections.Array<Vector3I>
IsBakingNavigationbool
# IsBakingNavigation
C#
public bool IsBakingNavigation();
Возвращает bool
LocalToMapVector3I
# LocalToMap
C#
public Vector3I LocalToMap(Vector3 localPosition);

Делит локальную позицию на CellSize и округляет вниз по каждой оси. Для мировой позиции сначала вызовите ToLocal; целочисленное приведение деления не подходит для отрицательных значений.

Параметры
ИмяТипПо умолчанию
localPositionVector3—
localPosition

Позиция в пространстве GridMap, не необработанная мировая точка попадания луча.

Возвращает Vector3I

Координата клетки. При размере 2 точка (-0.01,-0.01,-0.01) принадлежит клетке (-1,-1,-1). Для точки точно на поверхности учитывайте сторону границы и normal попадания.

MakeBakedMeshesvoid
# MakeBakedMeshes
C#
public void MakeBakedMeshes(bool genLightmapUV = false, float lightmapUVTexelSize = 0.1f);

Генерирует запечённую сетку, представляющую все сетки в назначенной MeshLibrary для использования с LightmapGI. Если gen_lightmap_uv имеет значение true, данные UV2 будут сгенерированы для каждой сетки, используемой в данный момент в GridMap. В противном случае запечённые карты освещения будут доступны только для сеток, у которых уже есть данные UV2. При генерации UV2 параметр lightmap_uv_texel_size управляет плотностью текселей для карт освещения, чем ниже значение, тем более детальные карты освещения получаются. lightmap_uv_texel_size игнорируется, если gen_lightmap_uv имеет значение false. См. также GridMap.GetBakeMeshes, который использует выходные данные этого метода. Примечание: Вызов этого метода не приводит к запеканию карт освещения, поскольку запекание выполняется с помощью узла LightmapGI.

Параметры
ИмяТипПо умолчанию
genLightmapUVboolfalse
lightmapUVTexelSizefloat0.1f
MapToLocalVector3
# MapToLocal
C#
public Vector3 MapToLocal(Vector3I mapPosition);

Переводит координату клетки в локальную позицию с учётом CellSize и отдельных CellCenterX/Y/Z. Это не гарантированный центр меша: MeshLibrary содержит собственные трансформации.

Параметры
ИмяТипПо умолчанию
mapPositionVector3I—
mapPosition

Целочисленная координата клетки.

Возвращает Vector3

Локальная позиция клетки. При CellSize=(2,2,2), центрировании X/Z и выключенном центрировании Y клетка (2,3,-1) даёт (5,6,-1). Для мировой позиции вызовите ToGlobal.

ResourceChangedvoid · Устарело
# ResourceChanged
C#
public void ResourceChanged(Resource resource);

Этот метод ничего не даёт.

Параметры
ИмяТипПо умолчанию
resourceResource—
SetBakeNavigationvoid
# SetBakeNavigation
C#
public void SetBakeNavigation(bool bakeNavigation);
Параметры
ИмяТипПо умолчанию
bakeNavigationbool—
SetCellItemvoid
# SetCellItem
C#
public void SetCellItem(Vector3I position, int item, int orientation = 0);

Задаёт единственный элемент клетки; повторная запись заменяет прежний элемент. Логическое состояние меняется сразу, отрисовка и физические октанты обновляются отложенно. Проверьте ID по GetItemList: неизвестный ID может храниться без видимого меша. В проверенной версии поле ID 16-битное: 65536 превращается в 0.

Параметры
ИмяТипПо умолчанию
positionVector3I—
itemint—
orientationint0
position

Целочисленная координата клетки, не позиция в метрах. По исходникам абсолютная величина каждой координаты должна быть меньше 2^20.

item

ID MeshLibrary в пределах 0..65535; отрицательное значение удаляет клетку. Для сохранения библиотеки в текущей версии используйте последовательные ID от 0 и проверяйте загрузку: разрывы ID могут потерять данные.

orientation

Индекс одной из 24 ортогональных ориентаций, а не угол в градусах. Получите его через GetOrthogonalIndexFromBasis; не передавайте произвольное число.

SetCellScalevoid
# SetCellScale
C#
public void SetCellScale(float scale);
Параметры
ИмяТипПо умолчанию
scalefloat—
SetCellSizevoid
# SetCellSize
C#
public void SetCellSize(Vector3 size);
Параметры
ИмяТипПо умолчанию
sizeVector3—
SetCenterXvoid
# SetCenterX
C#
public void SetCenterX(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetCenterYvoid
# SetCenterY
C#
public void SetCenterY(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetCenterZvoid
# SetCenterZ
C#
public void SetCenterZ(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetCollisionLayervoid
# SetCollisionLayer
C#
public void SetCollisionLayer(uint layer);
Параметры
ИмяТипПо умолчанию
layeruint—
SetCollisionLayerValuevoid
# SetCollisionLayerValue
C#
public void SetCollisionLayerValue(int layerNumber, bool value);

На основе value включает или отключает указанный слой в GridMap.CollisionLayer, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetCollisionMaskvoid
# SetCollisionMask
C#
public void SetCollisionMask(uint mask);
Параметры
ИмяТипПо умолчанию
maskuint—
SetCollisionMaskValuevoid
# SetCollisionMaskValue
C#
public void SetCollisionMaskValue(int layerNumber, bool value);

На основе value включает или отключает указанный слой в GridMap.CollisionMask при заданном layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetCollisionPriorityvoid
# SetCollisionPriority
C#
public void SetCollisionPriority(float priority);
Параметры
ИмяТипПо умолчанию
priorityfloat—
SetCollisionVisibilityModevoid
# SetCollisionVisibilityMode
C#
public void SetCollisionVisibilityMode(GridMap.DebugVisibilityMode visibilityMode);
Параметры
ИмяТипПо умолчанию
visibilityModeGridMap.DebugVisibilityMode—
SetDebugOctantColorvoid
# SetDebugOctantColor
C#
public void SetDebugOctantColor(Color color);
Параметры
ИмяТипПо умолчанию
colorColor—
SetDebugShowOctantsvoid
# SetDebugShowOctants
C#
public void SetDebugShowOctants(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetMeshLibraryvoid
# SetMeshLibrary
C#
public void SetMeshLibrary(MeshLibrary meshLibrary);
Параметры
ИмяТипПо умолчанию
meshLibraryMeshLibrary—
SetNavigationMapvoid
# SetNavigationMap
C#
public void SetNavigationMap(Rid navigationMap);

Устанавливает Rid навигационной карты, которую этот узел GridMap должен использовать для своих запеченных ячеек навигационных сеток.

Параметры
ИмяТипПо умолчанию
navigationMapRid—
SetOctantSizevoid
# SetOctantSize
C#
public void SetOctantSize(int size);
Параметры
ИмяТипПо умолчанию
sizeint—
SetPhysicsMaterialvoid
# SetPhysicsMaterial
C#
public void SetPhysicsMaterial(PhysicsMaterial material);
Параметры
ИмяТипПо умолчанию
materialPhysicsMaterial—

Сигналы и события2

CellSizeChangedСобытие
# CellSizeChanged
C#
public event GridMap.CellSizeChangedEventHandler CellSizeChanged;

Вызывается при изменении GridMap.CellSize.

Параметры обработчика
ИмяТипПо умолчанию
cellSizeVector3—
ChangedСобытие
# Changed
C#
public event Action Changed;

Вызывается при изменении MeshLibrary данной GridMap.

Поля и константы1

InvalidCellItemПоле
# InvalidCellItem
C#
public const long InvalidCellItem = -1;

Недопустимый элемент ячейки, который можно использовать в GridMap.SetCellItem для очистки ячеек (или представлять пустую ячейку в GridMap.GetCellItem).

GridMap.DebugVisibilityMode

ЗначениеОписание
Default = 0

Скройте отладочные фигуры столкновений в редакторе и используйте настройки отладки, чтобы определить их видимость в игре (например, EntityTree.DebugCollisionsHint или EntityTree.DebugNavigationHint).

ForceHide = 2

Всегда скрывать отладочные фигуры, отображающие столкновения.

ForceShow = 1

Всегда отображать отладочные фигуры столкновений.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.