igor::iVoxelBlock Struct Reference

#include <iVoxelBlock.h>

Public Attributes

uint64 _id = INVALID_VOXELBLOCKID
 
uint8 _neighboursLOD = 0
 
bool _dirty = true
 
bool _inRange = false
 
bool _dirtyNeighbours = true
 
uint64 _voxelGenerationTaskID = iTask::INVALID_TASK_ID
 
uint64 _transformNodeIDCurrent = iNode::INVALID_NODE_ID
 
uint64 _modelNodeIDCurrent = iNode::INVALID_NODE_ID
 
uint64 _transformNodeIDQueued = iNode::INVALID_NODE_ID
 
uint64 _modelNodeIDQueued = iNode::INVALID_NODE_ID
 
uint16 _mutationCounter = 0
 
uint8 _childAddress
 
iaVector3I _positionInLOD
 
uint32 _lod = 0
 
uint16 _size = 0
 
iVoxelBlockState _state = iVoxelBlockState::Initial
 
iVoxelData_voxelData = nullptr
 
iVoxelBlockInfo_voxelBlockInfo = nullptr
 
uint64 _parent = INVALID_VOXELBLOCKID
 
uint64 _children [8]
 
uint64 _neighbours [6]
 
std::vector< std::shared_ptr< iVoxelOperation > > _voxelOperations
 

Static Public Attributes

static const uint64 INVALID_VOXELBLOCKID = 0
 

Detailed Description

voxel block (or tile) or specific LOD

Member Data Documentation

◆ _childAddress

uint8 igor::iVoxelBlock::_childAddress

index position of block relative to parent

◆ _children

uint64 igor::iVoxelBlock::_children[8]

indexes to children

◆ _dirty

bool igor::iVoxelBlock::_dirty = true

if dirty the tile has to be regenerated

◆ _dirtyNeighbours

bool igor::iVoxelBlock::_dirtyNeighbours = true

if true neighbours changed and we might have to regenerate the mesh

◆ _id

uint64 igor::iVoxelBlock::_id = INVALID_VOXELBLOCKID

block ID

◆ _inRange

bool igor::iVoxelBlock::_inRange = false

if true mesh is in visible range (and SHOULD be visible)

but can be actually not rendered because e.g. the mesh is not ready yet

◆ _lod

uint32 igor::iVoxelBlock::_lod = 0

level of detail of this block

◆ _modelNodeIDCurrent

uint64 igor::iVoxelBlock::_modelNodeIDCurrent = iNode::INVALID_NODE_ID

id to generated model currently in use

◆ _modelNodeIDQueued

uint64 igor::iVoxelBlock::_modelNodeIDQueued = iNode::INVALID_NODE_ID

temporary id of node so we can tell if it was already loaded

◆ _mutationCounter

uint16 igor::iVoxelBlock::_mutationCounter = 0

every time the tile changes this counter goes up so Igor can tell the difference between the models before and after

◆ _neighbours

uint64 igor::iVoxelBlock::_neighbours[6]

indexes to neighbour in same LOD

◆ _neighboursLOD

uint8 igor::iVoxelBlock::_neighboursLOD = 0

bit mask with current neighbors LOD settings

◆ _parent

uint64 igor::iVoxelBlock::_parent = INVALID_VOXELBLOCKID

pointer to parenting block

◆ _positionInLOD

iaVector3I igor::iVoxelBlock::_positionInLOD

blocks position as index in corresponding LOD

◆ _size

uint16 igor::iVoxelBlock::_size = 0

world size of block

◆ _state

iVoxelBlockState igor::iVoxelBlock::_state = iVoxelBlockState::Initial

current state of the block

◆ _transformNodeIDCurrent

uint64 igor::iVoxelBlock::_transformNodeIDCurrent = iNode::INVALID_NODE_ID

id to transform node to control if a tile is in the scene and therefore visible

◆ _transformNodeIDQueued

uint64 igor::iVoxelBlock::_transformNodeIDQueued = iNode::INVALID_NODE_ID

temporary transform node id to control where we have to regenerate a new tile or not

◆ _voxelBlockInfo

iVoxelBlockInfo* igor::iVoxelBlock::_voxelBlockInfo = nullptr

voxel block info needed to generated voxel data

◆ _voxelData

iVoxelData* igor::iVoxelBlock::_voxelData = nullptr

the actual voxel data

◆ _voxelGenerationTaskID

uint64 igor::iVoxelBlock::_voxelGenerationTaskID = iTask::INVALID_TASK_ID

id of voxel generation task

there is only one at a time needed

◆ _voxelOperations

std::vector<std::shared_ptr<iVoxelOperation> > igor::iVoxelBlock::_voxelOperations

voxel operation on this block

◆ INVALID_VOXELBLOCKID

const uint64 igor::iVoxelBlock::INVALID_VOXELBLOCKID = 0
static

invalid voxel block id definition


The documentation for this struct was generated from the following file: