VoxelTerrain
Воксельный объем с использованием постоянного уровня детализации.
Воксельный объем с использованием постоянного уровня детализации.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
VoxelTerrainКонструктор
public VoxelTerrain();Свойства17
AreaEditNotificationEnabledСвойство
public bool AreaEditNotificationEnabled { get; set; }AutomaticLoadingEnabledСвойство
public bool AutomaticLoadingEnabled { get; set; }В случае отключения местность больше не будет автоматически загружать блоки вокруг местных зрителей. Это может быть использовано в мультиплеерах, когда местность расположена в стороне клиента, потому что блоки будут отправлены сервером вместо этого.
BlockEnterNotificationEnabledСвойство
public bool BlockEnterNotificationEnabled { get; set; }BoundsСвойство
public Aabb Bounds { get; set; }Определяет границы, в пределах которых земля может иметь вокселы. Если будет использоваться бесконечное мировое генератор, блоки будут генерировать только внутри этого региона. Все снаружи останется пустым.
Если любое измерение новых границ превышает 512, и VoxelTerrain.MaxViewDistance больше 512, тогда VoxelTerrain.MaxViewDistance 512. Эта мера направлена на то, чтобы избежать крушения из-за потенциального огромного количества кусочков, которые могли бы загрузиться.
CollisionLayerСвойство
public int CollisionLayer { get; set; }CollisionMarginСвойство
public float CollisionMargin { get; set; }CollisionMaskСвойство
public int CollisionMask { get; set; }DebugDrawEnabledСвойство
public bool DebugDrawEnabled { get; set; }DebugDrawShadowOccludersСвойство
public bool DebugDrawShadowOccluders { get; set; }DebugDrawVisualAndCollisionBlocksСвойство
public bool DebugDrawVisualAndCollisionBlocks { get; set; }DebugDrawVolumeBoundsСвойство
public bool DebugDrawVolumeBounds { get; set; }DebugDrawVoxelMetadataСвойство
public bool DebugDrawVoxelMetadata { get; set; }GenerateCollisionsСвойство
public bool GenerateCollisions { get; set; }Включает создание форм столкновения с помощью классического физического двигателя. Используйте эту функцию, если вам нужны реалистичные или нетривиальные столкновения или физика.
Примечание 1: Вам также нужно VoxelViewer Запрашивать столкновения, иначе они не будут генерировать.
Примечание 2: Если вам нужен простой шахтер/AABB Физика, ты можешь использовать VoxelBoxMover Которые могут быть лучше в закулисных мирах.
MaterialOverrideСвойство
public Material MaterialOverride { get; set; }MaxViewDistanceСвойство
public int MaxViewDistance { get; set; }Устанавливает максимальное расстояние, которое эта местность может поддерживать. VoxelViewer Запрашиваю больше, он будет зажат.
MeshBlockSizeСвойство
public uint MeshBlockSize { get; set; }Устанавливает, сколько вокселов по всей местности.
Воксельные куски хранятся в кубических кусках 16x16x16, и по умолчанию меши местности соответствуют этому размеру. Но вы можете установить это на 32, так что ячеек будет иметь 2x2x2 вокселовые кусочки. Это компромисс по эффективности. Более высокий размер ячеек может ускорить трансформацию за счет более медленных сетчатых обновлений.
Значения, отличные от 16 и 32, не поддерживаются.
Примечание: эта регулировка также влияет VoxelInstancer Кусочки.
UseGpuGenerationСвойство
public bool UseGpuGeneration { get; set; }Включает генерацию блока GPU, которая может ускорить его. Это применимо только для генераторов, которые поддерживают его. Вулкан требуется.
Методы42
DataBlockToVoxelVector3I
public Vector3I DataBlockToVoxel(Vector3I blockPos);Преобразует координаты блока данных во воксельные координаты.
| Имя | Тип | По умолчанию |
|---|---|---|
blockPos | Vector3I | — |
Vector3IDebugGetDrawFlagbool
public bool DebugGetDrawFlag(VoxelTerrain.DebugDrawFlag flagIndex);| Имя | Тип | По умолчанию |
|---|---|---|
flagIndex | VoxelTerrain.DebugDrawFlag | — |
boolDebugGetDrawShadowOccludersbool
public bool DebugGetDrawShadowOccluders();boolDebugIsDrawEnabledbool
public bool DebugIsDrawEnabled();boolDebugSetDrawEnabledvoid
public void DebugSetDrawEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
DebugSetDrawFlagvoid
public void DebugSetDrawFlag(VoxelTerrain.DebugDrawFlag flagIndex, bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
flagIndex | VoxelTerrain.DebugDrawFlag | — |
enabled | bool | — |
DebugSetDrawShadowOccludersvoid
public void DebugSetDrawShadowOccluders(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
GetBoundsAabb
public Aabb GetBounds();AabbGetCollisionLayerint
public int GetCollisionLayer();intGetCollisionMarginfloat
public float GetCollisionMargin();floatGetCollisionMaskint
public int GetCollisionMask();intGetDataBlockSizeuint
public uint GetDataBlockSize();uintGetGenerateCollisionsbool
public bool GetGenerateCollisions();boolGetGeneratorUseGpubool
public bool GetGeneratorUseGpu();boolGetMaterialOverrideMaterial
public Material GetMaterialOverride();MaterialGetMaxViewDistanceint
public int GetMaxViewDistance();intGetMeshBlockSizeuint
public uint GetMeshBlockSize();uintGetStatisticsReckfell.Collections.Dictionary
public Reckfell.Collections.Dictionary GetStatistics();Получает отладочную информацию о том, сколько времени потрачено на обработку местности. Вернутый словарь имеет следующую структуру:
{
"time_detect_required_blocks": int,
"time_request_blocks_to_load": int,
"time_process_load_responses": int,
"time_request_blocks_to_update": int,
"time_process_update_responses": int,
"remaining_main_thread_blocks": int,
"dropped_block_loads": int,
"dropped_block_meshs": int,
"updated_blocks": int
}Reckfell.Collections.DictionaryGetViewerNetworkPeerIdsInAreaint[]
public int[] GetViewerNetworkPeerIdsInArea(Vector3I areaOrigin, Vector3I areaSize);| Имя | Тип | По умолчанию |
|---|---|---|
areaOrigin | Vector3I | — |
areaSize | Vector3I | — |
int[]HasDataBlockbool
public bool HasDataBlock(Vector3I blockPosition);| Имя | Тип | По умолчанию |
|---|---|---|
blockPosition | Vector3I | — |
boolIsAreaEditNotificationEnabledbool
public bool IsAreaEditNotificationEnabled();boolIsAreaMeshedbool
public bool IsAreaMeshed(Aabb areaInVoxels);Это не значит, что в этом районе действительно есть сетка. Возвращение не соответствует действительности, если район не был обработан сеткой (поэтому неизвестно, должна ли быть сетка здесь или нет). При траектории местности это может быть использовано для определения того, полностью ли зона «загружена», на случай, если игра полагается на меши или сетчатые коллайдеры.
| Имя | Тип | По умолчанию |
|---|---|---|
areaInVoxels | Aabb | — |
boolIsAutomaticLoadingEnabledbool
public bool IsAutomaticLoadingEnabled();boolIsBlockEnterNotificationEnabledbool
public bool IsBlockEnterNotificationEnabled();boolSaveBlockvoid
public void SaveBlock(Vector3I position);Заставляют сохранить конкретный блок. Примечание 1: это будет иметь последствия только в том случае, если установка потока на этой местности будет способствовать спасению. Примечание 2: Сбережение является асинхронным и не блокирует игру. Сохранение может завершиться лишь через короткое время после того, как вы назовете этот метод.
| Имя | Тип | По умолчанию |
|---|---|---|
position | Vector3I | — |
SaveModifiedBlocksVoxelSaveCompletionTracker
public VoxelSaveCompletionTracker SaveModifiedBlocks();Все модифицированные блоки должны быть спасены. Примечание 1: это будет иметь последствия только в том случае, если установка потока на этой местности будет способствовать спасению. Примечание 2: Сбережение является асинхронным и не блокирует игру. Сохранение может завершиться лишь через короткое время после того, как вы назовете этот метод. Используйте возвращенный объект для слежения, чтобы знать, когда сбережение завершено. Однако, сбережения, произведенные после вызова этого метода, не будут отслеживаться этим объектом. Заметьте, что блоки, разгружаемые по мере перемещения зрителя, могут также приводить к сохранению задач независимо от этой функции.
VoxelSaveCompletionTrackerSetAreaEditNotificationEnabledvoid
public void SetAreaEditNotificationEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetAutomaticLoadingEnabledvoid
public void SetAutomaticLoadingEnabled(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetBlockEnterNotificationEnabledvoid
public void SetBlockEnterNotificationEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetBoundsvoid
public void SetBounds(Aabb bounds);| Имя | Тип | По умолчанию |
|---|---|---|
bounds | Aabb | — |
SetCollisionLayervoid
public void SetCollisionLayer(int layer);| Имя | Тип | По умолчанию |
|---|---|---|
layer | int | — |
SetCollisionMarginvoid
public void SetCollisionMargin(float margin);| Имя | Тип | По умолчанию |
|---|---|---|
margin | float | — |
SetCollisionMaskvoid
public void SetCollisionMask(int mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | int | — |
SetGenerateCollisionsvoid
public void SetGenerateCollisions(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetGeneratorUseGpuvoid
public void SetGeneratorUseGpu(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetMaterialOverridevoid
public void SetMaterialOverride(Material material);| Имя | Тип | По умолчанию |
|---|---|---|
material | Material | — |
SetMaxViewDistancevoid
public void SetMaxViewDistance(int distanceInVoxels);| Имя | Тип | По умолчанию |
|---|---|---|
distanceInVoxels | int | — |
SetMeshBlockSizevoid
public void SetMeshBlockSize(uint size);| Имя | Тип | По умолчанию |
|---|---|---|
size | uint | — |
TrySetBlockDatabool
public bool TrySetBlockData(Vector3I position, VoxelBuffer voxels);| Имя | Тип | По умолчанию |
|---|---|---|
position | Vector3I | — |
voxels | VoxelBuffer | — |
boolVoxelToDataBlockVector3I
public Vector3I VoxelToDataBlock(Vector3 voxelPos);| Имя | Тип | По умолчанию |
|---|---|---|
voxelPos | Vector3 | — |
Vector3I_OnAreaEditedvoid
public virtual void _OnAreaEdited(Vector3I areaOrigin, Vector3I areaSize);| Имя | Тип | По умолчанию |
|---|---|---|
areaOrigin | Vector3I | — |
areaSize | Vector3I | — |
_OnDataBlockEnteredvoid
public virtual void _OnDataBlockEntered(VoxelDataBlockEnterInfo info);| Имя | Тип | По умолчанию |
|---|---|---|
info | VoxelDataBlockEnterInfo | — |
Сигналы и события4
BlockLoadedСобытие
public event VoxelTerrain.BlockLoadedEventHandler BlockLoaded;Включено при загрузке нового блока данных из потока. Это может произойти до появления сетчатки или коллайдера.
| Имя | Тип | По умолчанию |
|---|---|---|
position | Vector3I | — |
BlockUnloadedСобытие
public event VoxelTerrain.BlockUnloadedEventHandler BlockUnloaded;Включено при выгрузке блока данных из-за внешнего расстояния обзора.
| Имя | Тип | По умолчанию |
|---|---|---|
position | Vector3I | — |
MeshBlockEnteredСобытие
public event VoxelTerrain.MeshBlockEnteredEventHandler MeshBlockEntered;Приемлемо, когда блок сетчатки получает свое первое обновление после того, как он был добавлен в диапазон зрителей. Это независимо от пустости сетки. Он отслеживает изменения того же состояния, полученного с помощью VoxelTerrain.IsAreaMeshed.
| Имя | Тип | По умолчанию |
|---|---|---|
position | Vector3I | — |
MeshBlockExitedСобытие
public event VoxelTerrain.MeshBlockExitedEventHandler MeshBlockExited;Взято, когда разгружается сетчатый блок. VoxelTerrain.MeshBlockEntered.
| Имя | Тип | По умолчанию |
|---|---|---|
position | Vector3I | — |