Cogs.Core
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
Cogs::Core::PotreeSystem Struct Reference
Inheritance diagram for Cogs::Core::PotreeSystem:
Cogs::Core::ComponentSystemWithDataPool< PotreeComponent, PotreeDataHolder > Cogs::Core::ComponentSystemWithDataPools< ComponentType, DataTypes > Cogs::Core::ComponentSystem< ComponentType > Cogs::Core::ComponentSystemBase

Public Member Functions

 PotreeSystem (Memory::Allocator *allocator, SizeType capacity)
 
void initialize (Context *context) override
 Initialize the system.
 
void cleanup (Context *context) override
 Provided for custom cleanup logic in derived systems.
 
void preUpdate (Context *context) override
 Provided for custom pre update logic in derived systems.
 
void update (Context *context) override
 Provided for custom update logic in derived systems.
 
ComponentHandle createComponent () override
 
void destroyComponent (ComponentHandle component) override
 
void issueSubtreeFetch (Context *context, const PotreeComponent *poComp, PotreeData *poData, PotreeCell *parent)
 
void updateLodLevels (Context *context)
 
void updateOcttreeFrame (Context *context, PotreeData &poData, const PotreeComponent &poComp)
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemWithDataPool< PotreeComponent, PotreeDataHolder >
 ComponentSystemWithDataPool (Memory::Allocator *allocator, SizeType size=1024)
 
PotreeDataHoldergetData (const PotreeComponent *component)
 
const PotreeDataHoldergetData (const PotreeComponent *component) const
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemWithDataPools< ComponentType, DataTypes >
 ComponentSystemWithDataPools (Memory::Allocator *allocator, SizeType size=1024, MemBlockType componentMemType=MemBlockType::Component, MemBlockType dataMemType=MemBlockType::ComponentData)
 
ComponentHandle createComponent () override
 
void destroyComponent (ComponentHandle component) override
 
template<typename T >
T & getData (const ComponentType *component)
 Get the data stored for the given component from the data pool storing objects of the specified template type.
 
template<typename T >
const T & getData (const ComponentType *component) const
 Get the const data stored for the given component from the data pool storing objects of the specified template type.
 
- Public Member Functions inherited from Cogs::Core::ComponentSystem< ComponentType >
 ComponentSystem (Memory::Allocator *allocator, SizeType size=16384, MemBlockType componentMemType=MemBlockType::Component)
 
void instrumentedPreUpdate () override
 Provided for tagged engine instrumentation.
 
void instrumentedUpdate () override
 Provided for tagged engine instrumentation.
 
void instrumentedPostUpdate () override
 Provided for tagged engine instrumentation.
 
ComponentHandle createComponent () override
 Create a new component instance.
 
void destroyComponent (ComponentHandle component) override
 Destroy the component held by the given handle.
 
SizeType getComponentIndex (const Component *component) const
 Get the index of the given component in the component pool.
 
size_t size ()
 Returns the number of active components.
 
void clearCarryFlags ()
 Clear carry flags of all active components.
 
void resetFlags ()
 Reset the flags of all active components.
 
void prepareUpdate (Context *) override
 
void postUpdate (Context *) override
 
ComponentHandle getHandle (const ComponentType *component)
 Get a handle to the given Component instance.
 
virtual void addEntitiesWithComponent (std::vector< EntityId > &entities, Reflection::TypeId componentTypeId) override
 Return all entities with a given.
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemBase
virtual ~ComponentSystemBase ()
 Provided for destruction via pointer to base.
 
 ComponentSystemBase (Reflection::TypeId componentType)
 Constructs a ComponentSystemBase to manage components of the given componentType.
 
virtual void initialize (Context *context)
 Initialize the system.
 
void preUpdate ()
 Run the pre-update method of the system.
 
void update ()
 Updates the system state to that of the current frame.
 
void postUpdate ()
 Perform post update logic in the system.
 
virtual void preUpdate (Context *)
 Provided for custom pre update logic in derived systems.
 
virtual void prepareUpdate (Context *)
 Provided for custom update preparation logic in derived systems.
 
virtual void update (Context *)
 Provided for custom update logic in derived systems.
 
virtual void postUpdate (Context *)
 Provided for custom post update logic in derived systems.
 
virtual void instrumentedPreUpdate ()
 Provided for tagged engine instrumentation.
 
virtual void instrumentedUpdate ()
 Provided for tagged engine instrumentation.
 
virtual void instrumentedPostUpdate ()
 Provided for tagged engine instrumentation.
 
virtual void addEntitiesWithComponent (std::vector< EntityId > &, Reflection::TypeId)
 Return all entities with a given.
 
virtual void cleanup (Context *)
 Provided for custom cleanup logic in derived systems.
 
virtual ComponentHandle createComponent ()
 Create a new component instance.
 
virtual void destroyComponent (ComponentHandle)
 Destroy the component held by the given handle.
 
Reflection::TypeId getComponentType () const
 Get the reflected type of the components managed by this system.
 

Static Public Member Functions

static bool lookupAndCheckForStaleness (Context *context, PotreeSystem *&potreeSystem, PotreeData *&poData, PotreeComponent *&poComp, const uint32_t componentId)
 
static bool lookupAndCheckForStaleness (Context *context, PotreeSystem *&potreeSystem, PotreeData *&poData, PotreeComponent *&poComp, PotreeSubtree *&subtree, const uint32_t componentId, const uint32_t subtreeId)
 
static void startFetch (Context *context, const PotreeComponent *poComp, PotreeData *poData)
 Update Component request count and notify client when starting data fetch.
 
static void endFetch (Context *context, const PotreeComponent *poComp, PotreeData *poData)
 
- Static Public Member Functions inherited from Cogs::Core::ComponentSystem< ComponentType >
static Reflection::TypeId getTypeId ()
 Get the type id of the component type used by the system.
 

Public Attributes

unsigned requestsInFlight = 0
 
bool materialLoaded = false
 
MaterialHandle defaultBoxMaterial
 
MaterialHandle defaultPointMaterial
 
PotreeRendererrenderer = nullptr
 
TextureHandle defaultGradient
 
PotreeBoundsbounds = nullptr
 
PotreePickerpicker = nullptr
 
- Public Attributes inherited from Cogs::Core::ComponentSystem< ComponentType >
ComponentPool< ComponentType > pool
 Pool of components managed by the system.
 
- Public Attributes inherited from Cogs::Core::ComponentSystemBase
Reflection::TypeId componentType
 The type of components managed by this instance.
 
Contextcontext = nullptr
 Pointer to the Context instance the system lives in.
 

Static Public Attributes

static PotreeVertexLayoutInfo vertexLayoutInfo [static_cast< size_t >(PotreeVertexLayout::COUNT)]
 

Additional Inherited Members

- Public Types inherited from Cogs::Core::ComponentSystem< ComponentType >
typedef ComponentType component_type
 

Detailed Description

Definition at line 455 of file PotreeSystem.h.

Constructor & Destructor Documentation

◆ PotreeSystem()

Cogs::Core::PotreeSystem::PotreeSystem ( Memory::Allocator allocator,
SizeType  capacity 
)
inline

Definition at line 457 of file PotreeSystem.h.

Member Function Documentation

◆ cleanup()

void Cogs::Core::PotreeSystem::cleanup ( Context )
overridevirtual

Provided for custom cleanup logic in derived systems.

Cleanup is performed during shutdown of the system, and all entities and related data should have been deleted.

All system services are available during the execution of cleanup().

Reimplemented from Cogs::Core::ComponentSystemBase.

Definition at line 405 of file PotreeSystem.cpp.

References Cogs::Core::Context::renderer, and Cogs::Core::IRenderer::unregisterExtension().

◆ createComponent()

ComponentHandle Cogs::Core::PotreeSystem::createComponent ( )
overridevirtual

Overridden to update data pool contents in lockstep with the component pool. Any subclass overriding this method should call base class first.

Reimplemented from Cogs::Core::ComponentSystemWithDataPools< ComponentType, DataTypes >.

Definition at line 411 of file PotreeSystem.cpp.

References Cogs::Core::Context::bounds, Cogs::Core::ComponentSystemBase::createComponent(), Cogs::Core::Context::rayPicking, and Cogs::ComponentModel::ComponentHandle::resolve().

◆ destroyComponent()

void Cogs::Core::PotreeSystem::destroyComponent ( ComponentHandle  component)
overridevirtual

Overridden to update data pool contents in lockstep with the component pool. Any subclass overriding this method should also call base class.

Reimplemented from Cogs::Core::ComponentSystemWithDataPools< ComponentType, DataTypes >.

Definition at line 447 of file PotreeSystem.cpp.

References Cogs::Core::Context::bounds, Cogs::Core::ComponentSystemBase::destroyComponent(), and Cogs::Core::Context::rayPicking.

◆ endFetch()

void Cogs::Core::PotreeSystem::endFetch ( Context context,
const PotreeComponent poComp,
PotreeData poData 
)
static

Called when ending data fetch either on data receive or canceling request.

Parameters
poComp- Optional component. May be null if receiving data after deleting entity.
poData- Optional component data.

Definition at line 667 of file PotreeSystem.cpp.

References Cogs::Core::Context::engine, Cogs::Core::FetchingBegin, Cogs::Core::FetchingEnd, Cogs::Core::PotreeData::potreeNotificationState, and Cogs::Core::PotreeData::requestsInFlight.

◆ initialize()

void Cogs::Core::PotreeSystem::initialize ( Context context)
overridevirtual

Initialize the system.

Initialization is performed after all systems are created and a renderer initialized, but before the first time anything is rendered.

Parameters
contextPointer to the context the system lives in.

Reimplemented from Cogs::Core::ComponentSystemBase.

Definition at line 378 of file PotreeSystem.cpp.

References Cogs::Core::ComponentSystemBase::initialize(), Cogs::Core::IRenderer::registerExtension(), Cogs::Core::Context::renderer, Cogs::Core::Context::services, and Cogs::Core::Context::variables.

◆ issueSubtreeFetch()

void Cogs::Core::PotreeSystem::issueSubtreeFetch ( Context context,
const PotreeComponent poComp,
PotreeData poData,
PotreeCell parent 
)

Definition at line 332 of file PotreeSystem.cpp.

◆ lookupAndCheckForStaleness() [1/2]

bool Cogs::Core::PotreeSystem::lookupAndCheckForStaleness ( Context context,
PotreeSystem *&  potreeSystem,
PotreeData *&  poData,
PotreeComponent *&  poComp,
const uint32_t  componentId 
)
static

Definition at line 345 of file PotreeSystem.cpp.

◆ lookupAndCheckForStaleness() [2/2]

bool Cogs::Core::PotreeSystem::lookupAndCheckForStaleness ( Context context,
PotreeSystem *&  potreeSystem,
PotreeData *&  poData,
PotreeComponent *&  poComp,
PotreeSubtree *&  subtree,
const uint32_t  componentId,
const uint32_t  subtreeId 
)
static

Definition at line 364 of file PotreeSystem.cpp.

◆ preUpdate()

void Cogs::Core::PotreeSystem::preUpdate ( Context )
overridevirtual

◆ startFetch()

void Cogs::Core::PotreeSystem::startFetch ( Context context,
const PotreeComponent poComp,
PotreeData poData 
)
static

Update Component request count and notify client when starting data fetch.

Definition at line 653 of file PotreeSystem.cpp.

References Cogs::Core::Context::engine, Cogs::Core::FetchingBegin, Cogs::Core::PotreeData::potreeNotificationState, and Cogs::Core::PotreeData::requestsInFlight.

◆ update()

void Cogs::Core::PotreeSystem::update ( Context )
overridevirtual

◆ updateLodLevels()

void Cogs::Core::PotreeSystem::updateLodLevels ( Context context)

Definition at line 758 of file ManageLodLevels.cpp.

◆ updateOcttreeFrame()

void Cogs::Core::PotreeSystem::updateOcttreeFrame ( Context context,
PotreeData poData,
const PotreeComponent poComp 
)

Definition at line 498 of file PotreeSystem.cpp.

Member Data Documentation

◆ bounds

PotreeBounds* Cogs::Core::PotreeSystem::bounds = nullptr

Definition at line 500 of file PotreeSystem.h.

◆ defaultBoxMaterial

MaterialHandle Cogs::Core::PotreeSystem::defaultBoxMaterial

Definition at line 493 of file PotreeSystem.h.

◆ defaultGradient

TextureHandle Cogs::Core::PotreeSystem::defaultGradient

Definition at line 498 of file PotreeSystem.h.

◆ defaultPointMaterial

MaterialHandle Cogs::Core::PotreeSystem::defaultPointMaterial

Definition at line 494 of file PotreeSystem.h.

◆ materialLoaded

bool Cogs::Core::PotreeSystem::materialLoaded = false

Definition at line 491 of file PotreeSystem.h.

◆ picker

PotreePicker* Cogs::Core::PotreeSystem::picker = nullptr

Definition at line 501 of file PotreeSystem.h.

◆ renderer

PotreeRenderer* Cogs::Core::PotreeSystem::renderer = nullptr

Definition at line 497 of file PotreeSystem.h.

◆ requestsInFlight

unsigned Cogs::Core::PotreeSystem::requestsInFlight = 0

Definition at line 490 of file PotreeSystem.h.

◆ vertexLayoutInfo

PotreeVertexLayoutInfo Cogs::Core::PotreeSystem::vertexLayoutInfo
static

Definition at line 504 of file PotreeSystem.h.


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