Cogs.Core
Public Member Functions | Public Attributes | Private Types | Private Attributes | List of all members
Cogs::Core::InstancedMeshRenderSystem Class Reference

Instanced mesh render system. More...

#include <InstancedMeshRenderSystem.h>

Inheritance diagram for Cogs::Core::InstancedMeshRenderSystem:
Cogs::Core::ComponentSystemWithDataPools< InstancedMeshRenderComponent, InstancedMeshRenderData, LocalBounds, WorldBounds > Cogs::Core::ComponentSystem< ComponentType > Cogs::Core::ComponentSystemBase

Public Member Functions

 InstancedMeshRenderSystem (Memory::Allocator *allocator, SizeType capacity)
 
void initialize (Context *context) override
 Initialize the system.
 
void update (Context *context) override
 Provided for custom update logic in derived systems.
 
void postUpdate (Context *context) override
 
void cleanup (Context *context) override
 Provided for custom cleanup logic in derived systems.
 
ComponentHandle createComponent () override
 Create a new component instance.
 
void destroyComponent (ComponentHandle component) override
 Destroy the component held by the given handle.
 
TaskId getTaskGroup () const
 
void setLocalBounds (const InstancedMeshRenderComponent *component, const Geometry::BoundingBox &bbox)
 
Geometry::BoundingBox & getLocalBounds (const InstancedMeshRenderComponent *component)
 
Geometry::BoundingBox & getWorldBounds (const InstancedMeshRenderComponent *component)
 
void initializeCulling (struct CullingSource *cullSource)
 
size_t getGeneration () const
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemWithDataPools< InstancedMeshRenderComponent, InstancedMeshRenderData, LocalBounds, WorldBounds >
 ComponentSystemWithDataPools (Memory::Allocator *allocator, SizeType size=1024, MemBlockType componentMemType=MemBlockType::Component, MemBlockType dataMemType=MemBlockType::ComponentData)
 
ComponentHandle createComponent () override
 
void destroyComponent (ComponentHandle component) override
 
T & getData (const InstancedMeshRenderComponent *component)
 Get the data stored for the given component from the data pool storing objects of the specified template type.
 
const T & getData (const InstancedMeshRenderComponent *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.
 

Public Attributes

class TransformSystemtransformSystem = 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.
 

Private Types

using base_type = Cogs::Core::ComponentSystemWithDataPools< InstancedMeshRenderComponent, InstancedMeshRenderData, LocalBounds, WorldBounds >
 

Private Attributes

bool needsPost = true
 
size_t generation = 0
 
TaskId geometryGroup = NoTask
 
std::unique_ptr< InstancedMeshRenderBoundsbounds
 
std::unique_ptr< InstancedMeshPickerpicker
 

Additional Inherited Members

- Public Types inherited from Cogs::Core::ComponentSystem< ComponentType >
typedef ComponentType component_type
 
- 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.
 

Detailed Description

Instanced mesh render system.

Definition at line 67 of file InstancedMeshRenderSystem.h.

Member Typedef Documentation

◆ base_type

Definition at line 69 of file InstancedMeshRenderSystem.h.

Constructor & Destructor Documentation

◆ InstancedMeshRenderSystem()

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

Definition at line 71 of file InstancedMeshRenderSystem.h.

Member Function Documentation

◆ cleanup()

void Cogs::Core::InstancedMeshRenderSystem::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 183 of file InstancedMeshRenderSystem.cpp.

References Cogs::Core::Context::taskManager.

◆ createComponent()

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

Create a new component instance.

Reimplemented from Cogs::Core::ComponentSystem< ComponentType >.

Definition at line 191 of file InstancedMeshRenderSystem.cpp.

Referenced by Cogs::Core::InstancedModelSystem::update().

◆ destroyComponent()

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

Destroy the component held by the given handle.

Reimplemented from Cogs::Core::ComponentSystem< ComponentType >.

Definition at line 208 of file InstancedMeshRenderSystem.cpp.

◆ getGeneration()

size_t Cogs::Core::InstancedMeshRenderSystem::getGeneration ( ) const
inline

Definition at line 103 of file InstancedMeshRenderSystem.h.

◆ getLocalBounds()

Geometry::BoundingBox & Cogs::Core::InstancedMeshRenderSystem::getLocalBounds ( const InstancedMeshRenderComponent component)
inline

Definition at line 91 of file InstancedMeshRenderSystem.h.

◆ getTaskGroup()

TaskId Cogs::Core::InstancedMeshRenderSystem::getTaskGroup ( ) const
inline

Definition at line 81 of file InstancedMeshRenderSystem.h.

◆ getWorldBounds()

Geometry::BoundingBox & Cogs::Core::InstancedMeshRenderSystem::getWorldBounds ( const InstancedMeshRenderComponent component)
inline

Definition at line 96 of file InstancedMeshRenderSystem.h.

◆ initialize()

void Cogs::Core::InstancedMeshRenderSystem::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 53 of file InstancedMeshRenderSystem.cpp.

References Cogs::Core::ComponentSystemBase::context, Cogs::Core::ComponentSystemBase::initialize(), and Cogs::Core::Context::taskManager.

◆ initializeCulling()

void Cogs::Core::InstancedMeshRenderSystem::initializeCulling ( struct CullingSource cullSource)

Definition at line 225 of file InstancedMeshRenderSystem.cpp.

◆ postUpdate()

void Cogs::Core::InstancedMeshRenderSystem::postUpdate ( Context )
overridevirtual

Overridden to propagate carry flags. Any subclass overriding this method should also call base class.

Reimplemented from Cogs::Core::ComponentSystem< ComponentType >.

Definition at line 176 of file InstancedMeshRenderSystem.cpp.

References Cogs::Core::ComponentSystemBase::postUpdate().

◆ setLocalBounds()

void Cogs::Core::InstancedMeshRenderSystem::setLocalBounds ( const InstancedMeshRenderComponent component,
const Geometry::BoundingBox &  bbox 
)
inline

Definition at line 83 of file InstancedMeshRenderSystem.h.

◆ update()

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

Member Data Documentation

◆ bounds

std::unique_ptr<InstancedMeshRenderBounds> Cogs::Core::InstancedMeshRenderSystem::bounds
private

Definition at line 111 of file InstancedMeshRenderSystem.h.

◆ generation

size_t Cogs::Core::InstancedMeshRenderSystem::generation = 0
private

Definition at line 109 of file InstancedMeshRenderSystem.h.

◆ geometryGroup

TaskId Cogs::Core::InstancedMeshRenderSystem::geometryGroup = NoTask
private

Definition at line 110 of file InstancedMeshRenderSystem.h.

◆ needsPost

bool Cogs::Core::InstancedMeshRenderSystem::needsPost = true
private

Definition at line 108 of file InstancedMeshRenderSystem.h.

◆ picker

std::unique_ptr<InstancedMeshPicker> Cogs::Core::InstancedMeshRenderSystem::picker
private

Definition at line 112 of file InstancedMeshRenderSystem.h.

◆ transformSystem

class TransformSystem* Cogs::Core::InstancedMeshRenderSystem::transformSystem = nullptr

Definition at line 105 of file InstancedMeshRenderSystem.h.


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