CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::MemoryMappedTerrainOctree< T > Class Template Reference

#include <CeresEngine/Scene/Terrain/TerrainStorage.hpp>

Classes

struct  FreeNode
 
struct  Header
 
struct  Node
 

Public Member Functions

 MemoryMappedTerrainOctree (const FilePath &path)
 
 ~MemoryMappedTerrainOctree ()
 
void reserve (size_t newCapacity)
 
bool insert (Vector3 position, T value)
 
bool insert (const AABox &area, T value)
 
bool insert (const Sphere &sphere, T value)
 
NodeallocateNode ()
 

Private Types

template<typename U >
using Ptr = OffsetPtr< U, std::ptrdiff_t, Int32 >
 

Private Member Functions

void insert (Node *node, Vector3 position, T &&value, AABox aabb, double resolution)
 
template<typename Primitive >
void insert (Node *node, const Primitive &primitive, const T &value, const AABox &aabb, double resolution)
 
void subdivide (Node *node)
 
void subdivide (Node *node, size_t octant)
 
bool shouldCollapse (Node *const node, const T &firstValue)
 
NodefindOrCreateNode (Node *node, Vector2 position, T value, const UInt64 depth, const UInt64 maxDepth)
 
voidnodeAt (size_t index)
 

Static Private Member Functions

static size_t getOctantFor (const Vector3 &position, const AABox &aabb)
 Computes the octant of a position vector within the given aabb.
 
static Vector3 octantDelta (const size_t octant)
 Computes the delta position for a given octant.
 

Private Attributes

SharedMemory mSharedMemory
 
HeadermHeader
 

Member Typedef Documentation

◆ Ptr

template<typename T >
template<typename U >
using CeresEngine::MemoryMappedTerrainOctree< T >::Ptr = OffsetPtr<U, std::ptrdiff_t, Int32>
private

Constructor & Destructor Documentation

◆ MemoryMappedTerrainOctree()

template<typename T >
CeresEngine::MemoryMappedTerrainOctree< T >::MemoryMappedTerrainOctree ( const FilePath path)
inlineexplicit

◆ ~MemoryMappedTerrainOctree()

Member Function Documentation

◆ allocateNode()

template<typename T >
Node * CeresEngine::MemoryMappedTerrainOctree< T >::allocateNode ( )
inline

◆ findOrCreateNode()

template<typename T >
Node * CeresEngine::MemoryMappedTerrainOctree< T >::findOrCreateNode ( Node node,
Vector2  position,
T  value,
const UInt64  depth,
const UInt64  maxDepth 
)
inlineprivate

◆ getOctantFor()

template<typename T >
static size_t CeresEngine::MemoryMappedTerrainOctree< T >::getOctantFor ( const Vector3 position,
const AABox &  aabb 
)
inlinestaticprivate

Computes the octant of a position vector within the given aabb.

Parameters
positionThe position to compute the octant
aabbThe aabb to contain the position to
Returns
The octant index [0-7]

◆ insert() [1/5]

template<typename T >
bool CeresEngine::MemoryMappedTerrainOctree< T >::insert ( const AABox &  area,
T  value 
)
inline

◆ insert() [2/5]

template<typename T >
bool CeresEngine::MemoryMappedTerrainOctree< T >::insert ( const Sphere &  sphere,
T  value 
)
inline

◆ insert() [3/5]

template<typename T >
template<typename Primitive >
void CeresEngine::MemoryMappedTerrainOctree< T >::insert ( Node node,
const Primitive primitive,
const T value,
const AABox &  aabb,
double  resolution 
)
inlineprivate

◆ insert() [4/5]

template<typename T >
void CeresEngine::MemoryMappedTerrainOctree< T >::insert ( Node node,
Vector3  position,
T &&  value,
AABox  aabb,
double  resolution 
)
inlineprivate

◆ insert() [5/5]

template<typename T >
bool CeresEngine::MemoryMappedTerrainOctree< T >::insert ( Vector3  position,
T  value 
)
inline

◆ nodeAt()

template<typename T >
void * CeresEngine::MemoryMappedTerrainOctree< T >::nodeAt ( size_t  index)
inlineprivate

◆ octantDelta()

template<typename T >
static Vector3 CeresEngine::MemoryMappedTerrainOctree< T >::octantDelta ( const size_t  octant)
inlinestaticprivate

Computes the delta position for a given octant.

Parameters
octantThe octant index [0-7]
Returns
A vector to offset a AABB by to match the given octant

◆ reserve()

template<typename T >
void CeresEngine::MemoryMappedTerrainOctree< T >::reserve ( size_t  newCapacity)
inline

◆ shouldCollapse()

template<typename T >
bool CeresEngine::MemoryMappedTerrainOctree< T >::shouldCollapse ( Node *const  node,
const T firstValue 
)
inlineprivate

◆ subdivide() [1/2]

template<typename T >
void CeresEngine::MemoryMappedTerrainOctree< T >::subdivide ( Node node)
inlineprivate

◆ subdivide() [2/2]

template<typename T >
void CeresEngine::MemoryMappedTerrainOctree< T >::subdivide ( Node node,
size_t  octant 
)
inlineprivate

Member Data Documentation

◆ mHeader

template<typename T >
Header* CeresEngine::MemoryMappedTerrainOctree< T >::mHeader
private

◆ mSharedMemory

template<typename T >
SharedMemory CeresEngine::MemoryMappedTerrainOctree< T >::mSharedMemory
private

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