Program Listing for File renderSystem.cpp
↰ Return to documentation for file (PrismEngine/src/renderSystem.cpp)
#include "renderSystem.h"
#include "cameraComponent.h"
#include "transformComponent.h"
#include "meshComponent.h"
#include "textureComponent.h"
void prism::scene::RenderSystem::update()
{
if (renderer->isRenderingActive()) {
renderer->beginFrame();
auto cameras = scene->getEntitiesWithAll<TransformComponent, CameraComponent>();
for (auto camera : cameras) {
CameraComponent* cameraComponent = scene->getComponent<CameraComponent>(camera);
if (cameraComponent->isActive) {
TransformComponent* transformComponent = scene->getComponent<TransformComponent>(camera);
renderer->updateCamera(transformComponent, cameraComponent);
}
}
uint32_t i = 0;
auto forRenderingEntites = scene->getEntitiesWithAll<TransformComponent, MeshComponent>();
for (auto entity : forRenderingEntites) {
renderer->updateObjectTransform(scene->getComponent<TransformComponent>(entity), i++);
}
renderer->beginRender();
renderer->bindDefault();
i = 0;
for (auto entity : forRenderingEntites) {
renderer->bindTransform(i++);
if (scene->getComponent<TextureComponent>(entity) == nullptr) {
renderer->pushTextureId(INVALID_TEXTURE);
}
else {
renderer->pushTextureId(scene->getComponent<TextureComponent>(entity)->texture);
}
renderer->drawMesh(scene->getComponent<MeshComponent>(entity)->mesh);
}
renderer->endRender();
renderer->endFrame();
}
}