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

The transform system handles TransformComponent instances, calculating local and global transform data for each component. More...

#include <TransformSystem.h>

Inheritance diagram for Cogs::Core::TransformSystem:
Cogs::Core::ComponentSystemWithDataPools< TransformComponent, LocalTransform, WorldTransform, TransformState > Cogs::Core::ComponentSystem< ComponentType > Cogs::Core::ComponentSystemBase

Public Member Functions

 TransformSystem (Memory::Allocator *allocator, SizeType capacity)
 
void handleOriginUpdate (class Context *context)
 
void update (class Context *context) override
 Updates the transform system.
 
void updateLocalTransform (const TransformComponent &component)
 
void setLocalTransform (TransformComponent *component, const glm::mat4 &matrix)
 
void updateTransformData (const TransformComponent &component)
 Force an update of the transform data associated with the given component.
 
void setOrigin (const glm::dvec3 &newOrigin)
 Sets the Origin offset of the scene.
 
glm::dvec3 getOrigin () const
 Gets the Origin offset of the scene.
 
glm::mat4 & getLocalToWorld (const TransformComponent *component)
 
glm::mat4 & getLocalTransform (const TransformComponent *component)
 
void setTransform (TransformComponent *component, glm::mat4 transformMatrix)
 
void copyTransform (const TransformComponent *source, TransformComponent *destination)
 
bool hasChanged (const TransformComponent *component)
 
void updateLocalToWorldTransform (const TransformComponent &component, bool dirty=false)
 
glm::vec3 engineFromWorldCoords (glm::dvec3 c)
 
glm::dvec3 worldFromEngineCoords (glm::vec3 c)
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemWithDataPools< TransformComponent, LocalTransform, WorldTransform, TransformState >
 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 TransformComponent *component)
 Get the data stored for the given component from the data pool storing objects of the specified template type.
 
const T & getData (const TransformComponent *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.
 

Private Attributes

glm::dvec3 origin = glm::dvec3(0.0)
 Current origin, kept fixed during the frame.
 
glm::dvec3 originUpdate = glm::dvec3(0.0)
 Is set by setOrigin and swapped in before updates.
 

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.
 
- 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.
 

Detailed Description

The transform system handles TransformComponent instances, calculating local and global transform data for each component.

Definition at line 35 of file TransformSystem.h.

Constructor & Destructor Documentation

◆ TransformSystem()

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

Definition at line 38 of file TransformSystem.h.

Member Function Documentation

◆ copyTransform()

void Cogs::Core::TransformSystem::copyTransform ( const TransformComponent source,
TransformComponent destination 
)
inline

Definition at line 96 of file TransformSystem.h.

◆ engineFromWorldCoords()

glm::vec3 Cogs::Core::TransformSystem::engineFromWorldCoords ( glm::dvec3  c)
inline

Definition at line 108 of file TransformSystem.h.

◆ getLocalToWorld()

glm::mat4 & Cogs::Core::TransformSystem::getLocalToWorld ( const TransformComponent component)
inline

Definition at line 79 of file TransformSystem.h.

◆ getLocalTransform()

glm::mat4 & Cogs::Core::TransformSystem::getLocalTransform ( const TransformComponent component)
inline

Definition at line 84 of file TransformSystem.h.

◆ getOrigin()

glm::dvec3 Cogs::Core::TransformSystem::getOrigin ( ) const
inline

Gets the Origin offset of the scene.

Definition at line 77 of file TransformSystem.h.

Referenced by Cogs::Core::TerrainBounds::getBounds(), and Cogs::Core::RigidBodySystem::update().

◆ handleOriginUpdate()

void Cogs::Core::TransformSystem::handleOriginUpdate ( class Context context)

Definition at line 78 of file TransformSystem.cpp.

◆ hasChanged()

bool Cogs::Core::TransformSystem::hasChanged ( const TransformComponent component)
inline

Definition at line 101 of file TransformSystem.h.

◆ setLocalTransform()

void Cogs::Core::TransformSystem::setLocalTransform ( TransformComponent component,
const glm::mat4 &  matrix 
)

Definition at line 92 of file TransformSystem.cpp.

◆ setOrigin()

void Cogs::Core::TransformSystem::setOrigin ( const glm::dvec3 &  newOrigin)
inline

Sets the Origin offset of the scene.

Definition at line 74 of file TransformSystem.h.

◆ setTransform()

void Cogs::Core::TransformSystem::setTransform ( TransformComponent component,
glm::mat4  transformMatrix 
)
inline

Definition at line 89 of file TransformSystem.h.

◆ update()

void Cogs::Core::TransformSystem::update ( class Context context)
overridevirtual

◆ updateLocalToWorldTransform()

void Cogs::Core::TransformSystem::updateLocalToWorldTransform ( const TransformComponent component,
bool  dirty = false 
)

Definition at line 156 of file TransformSystem.cpp.

◆ updateLocalTransform()

void Cogs::Core::TransformSystem::updateLocalTransform ( const TransformComponent component)
inline

Definition at line 45 of file TransformSystem.h.

◆ updateTransformData()

void Cogs::Core::TransformSystem::updateTransformData ( const TransformComponent component)
inline

Force an update of the transform data associated with the given component.

Definition at line 65 of file TransformSystem.h.

Referenced by Cogs::Core::ClipShapeSystem::preUpdate(), Cogs::Core::TrajectoryLayoutSystem::update(), Cogs::Core::EchoSounder::PingIsoSystem::update(), and Cogs::Core::AdaptivePlanarGridSystem::update().

◆ worldFromEngineCoords()

glm::dvec3 Cogs::Core::TransformSystem::worldFromEngineCoords ( glm::vec3  c)
inline

Definition at line 109 of file TransformSystem.h.

Member Data Documentation

◆ origin

glm::dvec3 Cogs::Core::TransformSystem::origin = glm::dvec3(0.0)
private

Current origin, kept fixed during the frame.

Definition at line 112 of file TransformSystem.h.

◆ originUpdate

glm::dvec3 Cogs::Core::TransformSystem::originUpdate = glm::dvec3(0.0)
private

Is set by setOrigin and swapped in before updates.

Definition at line 113 of file TransformSystem.h.


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