1#include "OverlaySystem.h"
5#include "Systems/Core/SpriteRenderSystem.h"
7#include "Systems/Core/TransformSystem.h"
9#include <glm/gtx/matrix_query.hpp>
13 auto sprites =
context->spriteRenderSystem;
15 for (
const auto & overlay :
pool) {
16 if (!overlay.image)
continue;
20 if (!spriteRenderer->isVisible())
continue;
22 auto permutation = SpriteRenderSystem::getPermutation(overlay.positionMode, overlay.sizeMode);
24 const bool transformImage = !glm::isIdentity(overlay.imageTransform, glm::epsilon<float>());
27 static thread_local std::string p = permutation.to_string() +
"ImageTransform";
33 glm::vec3 position = glm::vec3(transform->coordinates) + transform->
position;
35 auto batch = sprites->begin(DefaultSpriteMaterial, permutation, overlay.image, overlay.color);
36 batch->positionMode = overlay.positionMode;
37 sprites->addSprite(spriteRenderer, glm::vec3(position.x, position.y, -1), overlay.size * 0.5f, overlay.size, glm::vec4(0, 0, 1, 1));
38 batch->depth = position.z;
39 batch->blendMode = overlay.blendMode;
42 batch->material->setMat4Property(batch->material->material->getMat4Key(
"imageTransform"), overlay.imageTransform);
Context * context
Pointer to the Context instance the system lives in.
void update()
Updates the system state to that of the current frame.
ComponentPool< OverlayComponent > pool
Pool of components managed by the system.
A Context instance contains all the services, systems and runtime components needed to use Cogs.