Cogs.Core
|
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) |
![]() | |
ComponentSystemWithDataPool (Memory::Allocator *allocator, SizeType size=1024) | |
PotreeDataHolder & | getData (const PotreeComponent *component) |
const PotreeDataHolder & | getData (const PotreeComponent *component) const |
![]() | |
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. | |
![]() | |
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. | |
![]() | |
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 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 |
PotreeRenderer * | renderer = nullptr |
TextureHandle | defaultGradient |
PotreeBounds * | bounds = nullptr |
PotreePicker * | picker = nullptr |
![]() | |
ComponentPool< ComponentType > | pool |
Pool of components managed by the system. | |
![]() | |
Reflection::TypeId | componentType |
The type of components managed by this instance. | |
Context * | context = 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 | |
![]() | |
typedef ComponentType | component_type |
Definition at line 455 of file PotreeSystem.h.
|
inline |
Definition at line 457 of file PotreeSystem.h.
|
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().
|
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().
|
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.
|
static |
Called when ending data fetch either on data receive or canceling request.
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.
|
overridevirtual |
Initialize the system.
Initialization is performed after all systems are created and a renderer initialized, but before the first time anything is rendered.
context | Pointer 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.
void Cogs::Core::PotreeSystem::issueSubtreeFetch | ( | Context * | context, |
const PotreeComponent * | poComp, | ||
PotreeData * | poData, | ||
PotreeCell * | parent | ||
) |
Definition at line 332 of file PotreeSystem.cpp.
|
static |
Definition at line 345 of file PotreeSystem.cpp.
|
static |
Definition at line 364 of file PotreeSystem.cpp.
|
overridevirtual |
Provided for custom pre update logic in derived systems.
Reimplemented from Cogs::Core::ComponentSystemBase.
Definition at line 465 of file PotreeSystem.cpp.
References Cogs::Core::CenterOnOrigin, Cogs::Core::CenterOnOriginAdjustCoordinate, Cogs::Core::TransformComponent::coordinates, Cogs::ComponentModel::Component::getComponent(), Cogs::Core::None, Cogs::Core::PotreeComponent::originPolicy, Cogs::Core::ComponentSystemBase::preUpdate(), and Cogs::ComponentModel::Component::setChanged().
|
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.
|
overridevirtual |
Provided for custom update logic in derived systems.
Reimplemented from Cogs::Core::ComponentSystemBase.
Definition at line 510 of file PotreeSystem.cpp.
References Cogs::Core::PotreeComponent::boxMaterial, Cogs::Core::PotreeComponent::clipPlanes, Cogs::Core::RenderComponent::clipShapeComponent, Cogs::Core::PotreeComponent::debugBoxes, Cogs::Core::PotreeComponent::densityBias, Cogs::Core::PotreeComponent::densityLevelScale, Cogs::Core::PotreeComponent::densityScale, Cogs::Core::PotreeComponent::disableCustomClipping, Cogs::Core::ViewContext::dpiService, Cogs::ComponentModel::ComponentHandle::Empty(), Cogs::ComponentModel::Component::getComponent(), Cogs::Core::RenderComponent::isVisible(), Cogs::Core::PotreeData::jsonPath, Cogs::Core::MaterialInstance::material, Cogs::Core::PotreeData::max, Cogs::Core::PotreeData::MaxClipPlanes, Cogs::Core::PotreeComponent::maxPointSize, Cogs::Core::PotreeData::min, Cogs::Core::PotreeComponent::minPointSize, Cogs::Core::PotreeComponent::pointMaterial, Cogs::Core::PotreeComponent::pointScreenSpacing, Cogs::Core::PotreeComponent::pointSize, Cogs::Core::PotreeComponent::rootNodeMinScreenSize, Cogs::Core::PotreeData::rootPath, Cogs::Core::PotreeComponent::source, Cogs::Core::PotreeComponent::supportPicking, Cogs::Core::PotreeData::val, and Cogs::Core::Context::variables.
void Cogs::Core::PotreeSystem::updateLodLevels | ( | Context * | context | ) |
Definition at line 758 of file ManageLodLevels.cpp.
void Cogs::Core::PotreeSystem::updateOcttreeFrame | ( | Context * | context, |
PotreeData & | poData, | ||
const PotreeComponent & | poComp | ||
) |
Definition at line 498 of file PotreeSystem.cpp.
PotreeBounds* Cogs::Core::PotreeSystem::bounds = nullptr |
Definition at line 500 of file PotreeSystem.h.
MaterialHandle Cogs::Core::PotreeSystem::defaultBoxMaterial |
Definition at line 493 of file PotreeSystem.h.
TextureHandle Cogs::Core::PotreeSystem::defaultGradient |
Definition at line 498 of file PotreeSystem.h.
MaterialHandle Cogs::Core::PotreeSystem::defaultPointMaterial |
Definition at line 494 of file PotreeSystem.h.
bool Cogs::Core::PotreeSystem::materialLoaded = false |
Definition at line 491 of file PotreeSystem.h.
PotreePicker* Cogs::Core::PotreeSystem::picker = nullptr |
Definition at line 501 of file PotreeSystem.h.
PotreeRenderer* Cogs::Core::PotreeSystem::renderer = nullptr |
Definition at line 497 of file PotreeSystem.h.
unsigned Cogs::Core::PotreeSystem::requestsInFlight = 0 |
Definition at line 490 of file PotreeSystem.h.
|
static |
Definition at line 504 of file PotreeSystem.h.