Cogs.Core
Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Cogs::Core::SpriteRenderSystem Class Reference
Inheritance diagram for Cogs::Core::SpriteRenderSystem:
Cogs::Core::ComponentSystemWithDataPool< SpriteRenderComponent, SpriteRenderData > Cogs::Core::ComponentSystemWithDataPools< ComponentType, DataTypes > Cogs::Core::ComponentSystem< ComponentType > Cogs::Core::ComponentSystemBase

Public Member Functions

 SpriteRenderSystem (Memory::Allocator *allocator, SizeType capacity)
 
void initialize (Context *context) override
 Initialize the system.
 
void preUpdate (Context *context) override
 Provided for custom pre update logic in derived systems.
 
void postUpdate (Context *context) override
 
ComponentHandle createComponent () override
 
void destroyComponent (ComponentHandle component) override
 
SpriteMaterialKey registerSpriteMaterial (MaterialHandle material)
 
SpriteBatchbegin (SpriteMaterialKey material, const StringView &permutation, TextureHandle texture, glm::vec4 color, bool alwaysOnTop=false)
 
SpriteBatchbegin (SpriteMaterialKey material, const StringView &postfix, PositionMode positionMode, SizeMode sizeMode, TextureHandle texture, glm::vec4 color, bool alwaysOnTop=false)
 
SpriteBatchbegin (SpriteMaterialKey material, TextureHandle texture, glm::vec4 color)
 
SpriteBatchbegin (TextureHandle texture, glm::vec4 color)
 
void addSprite (SpriteRenderComponent *spriteRenderer, glm::vec3 position, glm::vec2 size, glm::vec4 texCoords)
 
void addSprite (SpriteRenderComponent *spriteRenderer, glm::vec3 position, glm::vec2 offset, glm::vec2 size, glm::vec4 texCoords)
 
const SpriteBatchgetSpriteBatch (SpriteBatchIndex index) const
 
std::span< const SpriteBatchgetSpriteBatches () const
 
- Public Member Functions inherited from Cogs::Core::ComponentSystemWithDataPool< SpriteRenderComponent, SpriteRenderData >
 ComponentSystemWithDataPool (Memory::Allocator *allocator, SizeType size=1024)
 
SpriteRenderDatagetData (const SpriteRenderComponent *component)
 
const SpriteRenderDatagetData (const SpriteRenderComponent *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.
 

Static Public Member Functions

static StringView getPermutation (PositionMode positionMode, SizeMode sizeMode)
 
- 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.
 

Private Types

using base = ComponentSystemWithDataPool< SpriteRenderComponent, SpriteRenderData >
 

Private Member Functions

void updateBatchMesh ()
 

Private Attributes

std::vector< SpriteBatchspriteBatches
 
MaterialHandle spriteMaterial
 
std::vector< SpriteMaterialmaterials
 
SpriteBatchcurrentBatch = nullptr
 
std::vector< MeshHandleframeMeshes
 
std::vector< MeshHandlefreeMeshes
 
bool expandSpriteGeometry = true
 
SpritePickerpicker = nullptr
 

Additional Inherited Members

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

Definition at line 89 of file SpriteRenderSystem.h.

Member Typedef Documentation

◆ base

Definition at line 91 of file SpriteRenderSystem.h.

Constructor & Destructor Documentation

◆ SpriteRenderSystem()

Cogs::Core::SpriteRenderSystem::SpriteRenderSystem ( Memory::Allocator allocator,
SizeType  capacity 
)

Definition at line 23 of file SpriteRenderSystem.cpp.

Member Function Documentation

◆ addSprite() [1/2]

void Cogs::Core::SpriteRenderSystem::addSprite ( SpriteRenderComponent spriteRenderer,
glm::vec3  position,
glm::vec2  offset,
glm::vec2  size,
glm::vec4  texCoords 
)

Definition at line 246 of file SpriteRenderSystem.cpp.

◆ addSprite() [2/2]

void Cogs::Core::SpriteRenderSystem::addSprite ( SpriteRenderComponent spriteRenderer,
glm::vec3  position,
glm::vec2  size,
glm::vec4  texCoords 
)

Definition at line 241 of file SpriteRenderSystem.cpp.

◆ begin() [1/4]

Cogs::Core::SpriteBatch * Cogs::Core::SpriteRenderSystem::begin ( SpriteMaterialKey  material,
const StringView permutation,
TextureHandle  texture,
glm::vec4  color,
bool  alwaysOnTop = false 
)

Definition at line 156 of file SpriteRenderSystem.cpp.

◆ begin() [2/4]

Cogs::Core::SpriteBatch * Cogs::Core::SpriteRenderSystem::begin ( SpriteMaterialKey  material,
const StringView postfix,
PositionMode  positionMode,
SizeMode  sizeMode,
TextureHandle  texture,
glm::vec4  color,
bool  alwaysOnTop = false 
)

Definition at line 213 of file SpriteRenderSystem.cpp.

◆ begin() [3/4]

Cogs::Core::SpriteBatch * Cogs::Core::SpriteRenderSystem::begin ( SpriteMaterialKey  material,
TextureHandle  texture,
glm::vec4  color 
)

Definition at line 231 of file SpriteRenderSystem.cpp.

◆ begin() [4/4]

Cogs::Core::SpriteBatch * Cogs::Core::SpriteRenderSystem::begin ( TextureHandle  texture,
glm::vec4  color 
)

Definition at line 236 of file SpriteRenderSystem.cpp.

◆ createComponent()

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

◆ destroyComponent()

void Cogs::Core::SpriteRenderSystem::destroyComponent ( ComponentHandle  component)
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 108 of file SpriteRenderSystem.cpp.

◆ getPermutation()

Cogs::StringView Cogs::Core::SpriteRenderSystem::getPermutation ( PositionMode  positionMode,
SizeMode  sizeMode 
)
static

Definition at line 345 of file SpriteRenderSystem.cpp.

◆ getSpriteBatch()

const Cogs::Core::SpriteBatch * Cogs::Core::SpriteRenderSystem::getSpriteBatch ( SpriteBatchIndex  index) const

Definition at line 333 of file SpriteRenderSystem.cpp.

◆ getSpriteBatches()

std::span< const Cogs::Core::SpriteBatch > Cogs::Core::SpriteRenderSystem::getSpriteBatches ( ) const

Definition at line 340 of file SpriteRenderSystem.cpp.

◆ initialize()

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

References Cogs::Core::MaterialOptions::blendMode, Cogs::Core::ComponentSystemBase::context, Cogs::Core::MaterialOptions::depthWriteEnabled, Cogs::Core::ComponentSystemBase::initialize(), Cogs::Core::Material::options, and Cogs::Core::PremultipliedBlend.

◆ postUpdate()

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

◆ preUpdate()

void Cogs::Core::SpriteRenderSystem::preUpdate ( Context )
overridevirtual

Provided for custom pre update logic in derived systems.

Reimplemented from Cogs::Core::ComponentSystemBase.

Definition at line 49 of file SpriteRenderSystem.cpp.

◆ registerSpriteMaterial()

size_t Cogs::Core::SpriteRenderSystem::registerSpriteMaterial ( MaterialHandle  material)

Definition at line 122 of file SpriteRenderSystem.cpp.

◆ updateBatchMesh()

void Cogs::Core::SpriteRenderSystem::updateBatchMesh ( )
private

Definition at line 376 of file SpriteRenderSystem.cpp.

Member Data Documentation

◆ currentBatch

SpriteBatch* Cogs::Core::SpriteRenderSystem::currentBatch = nullptr
private

Definition at line 133 of file SpriteRenderSystem.h.

◆ expandSpriteGeometry

bool Cogs::Core::SpriteRenderSystem::expandSpriteGeometry = true
private

Definition at line 138 of file SpriteRenderSystem.h.

◆ frameMeshes

std::vector<MeshHandle> Cogs::Core::SpriteRenderSystem::frameMeshes
private

Definition at line 135 of file SpriteRenderSystem.h.

◆ freeMeshes

std::vector<MeshHandle> Cogs::Core::SpriteRenderSystem::freeMeshes
private

Definition at line 136 of file SpriteRenderSystem.h.

◆ materials

std::vector<SpriteMaterial> Cogs::Core::SpriteRenderSystem::materials
private

Definition at line 131 of file SpriteRenderSystem.h.

◆ picker

SpritePicker* Cogs::Core::SpriteRenderSystem::picker = nullptr
private

Definition at line 140 of file SpriteRenderSystem.h.

◆ spriteBatches

std::vector<SpriteBatch> Cogs::Core::SpriteRenderSystem::spriteBatches
private

Definition at line 128 of file SpriteRenderSystem.h.

◆ spriteMaterial

MaterialHandle Cogs::Core::SpriteRenderSystem::spriteMaterial
private

Definition at line 130 of file SpriteRenderSystem.h.


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