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

The camera system computes CameraData for every CameraDataComponent in the engine. More...

#include <CameraSystem.h>

Inheritance diagram for Cogs::Core::CameraSystem:
Cogs::Core::ComponentSystemWithDataPool< CameraComponent, CameraData > Cogs::Core::ComponentSystemWithDataPools< ComponentType, DataTypes > Cogs::Core::ComponentSystem< ComponentType > Cogs::Core::ComponentSystemBase

Public Member Functions

 CameraSystem (Memory::Allocator *allocator, SizeType capacity)
 
void update (Context *context) override
 Update the system, calculating camera data for all components with registered changes.
 
void postUpdate (Context *context) override
 
void updateProjection (Context *context, const CameraComponent &cameraComponent)
 Update the projection matrix and derived matrices of a camera.
 
bool updateClippingPlanes (Context *context, const CameraComponent &cameraComponent, bool secondPass)
 Update near/far clipping plane calculations.
 
void setMainCamera (ComponentModel::ComponentHandle mainCamera)
 
ComponentHandle createComponent () override
 
CameraComponentgetMainCamera () const
 Get the main camera component.
 
const CameraDatagetMainCameraData () const
 Get the calculated CameraData of the main camera.
 
void postRender (const Context *context)
 Called by the renderer after all rendering is complete.
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemWithDataPool< CameraComponent, CameraData >
 ComponentSystemWithDataPool (Memory::Allocator *allocator, SizeType size=1024)
 
CameraDatagetData (const CameraComponent *component)
 
const CameraDatagetData (const CameraComponent *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.
 

Public Attributes

Collections::Pool< CullingDatacullingData
 
- 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 = ComponentSystemWithDataPool< CameraComponent, CameraData >
 

Private Attributes

ComponentModel::ComponentHandle mainCamera = ComponentModel::ComponentHandle::Empty()
 Main camera handle.
 
int nextRayPickId = 1
 

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

The camera system computes CameraData for every CameraDataComponent in the engine.

Definition at line 142 of file CameraSystem.h.

Member Typedef Documentation

◆ base

Definition at line 144 of file CameraSystem.h.

Constructor & Destructor Documentation

◆ CameraSystem()

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

Definition at line 146 of file CameraSystem.h.

Member Function Documentation

◆ createComponent()

ComponentHandle Cogs::Core::CameraSystem::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 42 of file CameraSystem.cpp.

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

◆ getMainCamera()

CameraComponent * Cogs::Core::CameraSystem::getMainCamera ( ) const
inline

Get the main camera component.

Definition at line 169 of file CameraSystem.h.

References mainCamera, and Cogs::ComponentModel::ComponentHandle::resolveComponent().

Referenced by getMainCameraData().

◆ getMainCameraData()

const CameraData & Cogs::Core::CameraSystem::getMainCameraData ( ) const
inline

Get the calculated CameraData of the main camera.

Definition at line 172 of file CameraSystem.h.

References getMainCamera().

◆ postRender()

void Cogs::Core::CameraSystem::postRender ( const Context context)

◆ postUpdate()

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

References Cogs::Core::Context::cullingManager.

◆ setMainCamera()

void Cogs::Core::CameraSystem::setMainCamera ( ComponentModel::ComponentHandle  mainCamera)
inline

Set the main camera. The main camera will be used by view-dependent functionality such as view-aligned geometry, calculating view space axes and dimensions from this camera.

Definition at line 164 of file CameraSystem.h.

References mainCamera.

◆ update()

void Cogs::Core::CameraSystem::update ( Context context)
overridevirtual

Update the system, calculating camera data for all components with registered changes.

Reimplemented from Cogs::Core::ComponentSystemBase.

Definition at line 71 of file CameraSystem.cpp.

References Cogs::ComponentModel::ComponentHandle::Empty(), Cogs::ComponentModel::Component::getComponentHandle(), Cogs::Core::HandleIsValid(), and Cogs::Core::OverrideClearColor.

◆ updateClippingPlanes()

bool Cogs::Core::CameraSystem::updateClippingPlanes ( Context context,
const CameraComponent cameraComponent,
bool  secondPass 
)

◆ updateProjection()

void Cogs::Core::CameraSystem::updateProjection ( Context context,
const CameraComponent cameraComponent 
)

Member Data Documentation

◆ cullingData

Collections::Pool<CullingData> Cogs::Core::CameraSystem::cullingData

Definition at line 177 of file CameraSystem.h.

◆ mainCamera

ComponentModel::ComponentHandle Cogs::Core::CameraSystem::mainCamera = ComponentModel::ComponentHandle::Empty()
private

Main camera handle.

Definition at line 181 of file CameraSystem.h.

Referenced by getMainCamera(), and setMainCamera().

◆ nextRayPickId

int Cogs::Core::CameraSystem::nextRayPickId = 1
private

Definition at line 182 of file CameraSystem.h.


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