Cogs.Core
|
The camera system computes CameraData for every CameraDataComponent in the engine. More...
#include <CameraSystem.h>
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 |
CameraComponent * | getMainCamera () const |
Get the main camera component. | |
const CameraData & | getMainCameraData () const |
Get the calculated CameraData of the main camera. | |
void | postRender (const Context *context) |
Called by the renderer after all rendering is complete. | |
![]() | |
ComponentSystemWithDataPool (Memory::Allocator *allocator, SizeType size=1024) | |
CameraData & | getData (const CameraComponent *component) |
const CameraData & | getData (const CameraComponent *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. | |
Public Attributes | |
Collections::Pool< CullingData > | cullingData |
![]() | |
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. | |
Private Types | |
using | base = ComponentSystemWithDataPool< CameraComponent, CameraData > |
Private Attributes | |
ComponentModel::ComponentHandle | mainCamera = ComponentModel::ComponentHandle::Empty() |
Main camera handle. | |
int | nextRayPickId = 1 |
Additional Inherited Members | |
![]() | |
typedef ComponentType | component_type |
![]() | |
static Reflection::TypeId | getTypeId () |
Get the type id of the component type used by the system. | |
The camera system computes CameraData for every CameraDataComponent in the engine.
Definition at line 142 of file CameraSystem.h.
|
private |
Definition at line 144 of file CameraSystem.h.
|
inline |
Definition at line 146 of file CameraSystem.h.
|
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().
|
inline |
Get the main camera component.
Definition at line 169 of file CameraSystem.h.
References mainCamera, and Cogs::ComponentModel::ComponentHandle::resolveComponent().
Referenced by getMainCameraData().
|
inline |
Get the calculated CameraData of the main camera.
Definition at line 172 of file CameraSystem.h.
References getMainCamera().
void Cogs::Core::CameraSystem::postRender | ( | const Context * | context | ) |
Called by the renderer after all rendering is complete.
Definition at line 50 of file CameraSystem.cpp.
References Cogs::Core::IRenderer::getResources(), Cogs::Core::ResourceHandle_t< Texture >::NoHandle, Cogs::Core::Context::renderer, and Cogs::IContext::resolveResource().
|
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.
|
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.
|
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.
bool Cogs::Core::CameraSystem::updateClippingPlanes | ( | Context * | context, |
const CameraComponent & | cameraComponent, | ||
bool | secondPass | ||
) |
Update near/far clipping plane calculations.
Definition at line 221 of file CameraSystem.cpp.
References Cogs::Core::Context::bounds, Cogs::Core::CameraComponent::enableClippingPlaneAdjustment, Cogs::Core::Context::engine, Cogs::Core::CameraComponent::farDistance, Cogs::Core::CameraComponent::farPlaneLimit, Cogs::Core::CameraComponent::layerMask, Cogs::Core::CameraComponent::nearDistance, Cogs::Core::CameraComponent::nearPlaneLimit, and Cogs::Core::Context::variables.
void Cogs::Core::CameraSystem::updateProjection | ( | Context * | context, |
const CameraComponent & | cameraComponent | ||
) |
Update the projection matrix and derived matrices of a camera.
Definition at line 156 of file CameraSystem.cpp.
References Cogs::Core::CameraComponent::clientFlags, Cogs::Core::CameraComponent::fieldOfView, Cogs::Core::CameraComponent::flags, Cogs::Core::FlipY, Cogs::Core::IRenderer::getProjectionMatrix(), Cogs::Core::IRenderer::getViewFromViewportMatrix(), Cogs::Core::Orthographic, Cogs::Core::CameraComponent::orthoHeight, Cogs::Core::CameraComponent::projectionMode, Cogs::Core::Context::renderer, Cogs::Core::CameraComponent::subsetMax, and Cogs::Core::CameraComponent::subsetMin.
Collections::Pool<CullingData> Cogs::Core::CameraSystem::cullingData |
Definition at line 177 of file CameraSystem.h.
|
private |
Main camera handle.
Definition at line 181 of file CameraSystem.h.
Referenced by getMainCamera(), and setMainCamera().
|
private |
Definition at line 182 of file CameraSystem.h.