ADD: Introduce GameLayer
This commit is contained in:
parent
484fe4aa3e
commit
c1732e01fa
@ -136,6 +136,10 @@ add_executable(ColorRace
|
|||||||
engine/src/renderer/MeshRenderSystem.h
|
engine/src/renderer/MeshRenderSystem.h
|
||||||
engine/src/renderer/MeshRenderer.cpp
|
engine/src/renderer/MeshRenderer.cpp
|
||||||
engine/src/renderer/MeshRenderer.h
|
engine/src/renderer/MeshRenderer.h
|
||||||
|
engine/src/layer/Layer.cpp
|
||||||
|
engine/src/layer/Layer.h
|
||||||
|
game/src/GameLayer.cpp
|
||||||
|
game/src/GameLayer.h
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
5
engine/src/layer/Layer.cpp
Normal file
5
engine/src/layer/Layer.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
//
|
||||||
|
// Created by sebastian on 29.07.26.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "Layer.h"
|
||||||
24
engine/src/layer/Layer.h
Normal file
24
engine/src/layer/Layer.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
//
|
||||||
|
// Created by sebastian on 29.07.26.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef COLORRACE_LAYER_H
|
||||||
|
#define COLORRACE_LAYER_H
|
||||||
|
#include "ecs/EntityRegistry.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace engine {
|
||||||
|
class Layer {
|
||||||
|
public:
|
||||||
|
Layer() = default;
|
||||||
|
virtual ~Layer() = default;
|
||||||
|
virtual void onAttach() {}
|
||||||
|
virtual void onDetach() {}
|
||||||
|
virtual void onUpdate() {}
|
||||||
|
virtual void onRender() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif //COLORRACE_LAYER_H
|
||||||
@ -12,17 +12,9 @@
|
|||||||
|
|
||||||
|
|
||||||
void ColorRaceApp::onUpdate(float deltaTime) {
|
void ColorRaceApp::onUpdate(float deltaTime) {
|
||||||
|
gameLayer->onUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColorRaceApp::onRender() {
|
void ColorRaceApp::onRender() {
|
||||||
m_renderState.apply();
|
gameLayer->onRender();
|
||||||
|
|
||||||
engine::MeshRenderSystem meshRenderSystem;
|
|
||||||
|
|
||||||
engine::RenderQueue queue;
|
|
||||||
meshRenderSystem.update(*entityRegistry, queue);
|
|
||||||
|
|
||||||
m_renderer->render(queue, *m_camera);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#ifndef COLORRACE_COLORRACEAPP_H
|
#ifndef COLORRACE_COLORRACEAPP_H
|
||||||
#define COLORRACE_COLORRACEAPP_H
|
#define COLORRACE_COLORRACEAPP_H
|
||||||
|
#include "GameLayer.h"
|
||||||
#include "core/Application.h"
|
#include "core/Application.h"
|
||||||
#include "ecs/EntityRegistry.h"
|
#include "ecs/EntityRegistry.h"
|
||||||
#include "ecs/standardComponents/MeshComponent.h"
|
#include "ecs/standardComponents/MeshComponent.h"
|
||||||
@ -31,34 +32,12 @@ public:
|
|||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
ColorRaceApp() : Application(makeConfig()) {
|
ColorRaceApp() : Application(makeConfig()) {
|
||||||
m_renderState.depthTesting = false;
|
|
||||||
m_renderState.backfaceCulling = false;
|
|
||||||
|
|
||||||
m_shader = std::make_unique<engine::StaticShader>();
|
gameLayer = std::make_unique<GameLayer>();
|
||||||
m_camera = std::make_unique<engine::Camera>();
|
gameLayer->onAttach();
|
||||||
m_camera->setPosition({0.0f, 0.0f, 5.0f});
|
|
||||||
m_camera->setYaw(0.0f);
|
|
||||||
m_camera->setPitch(0.0f);
|
|
||||||
|
|
||||||
auto cubeModel = engine::CubeFactory::createCube();
|
|
||||||
|
|
||||||
entityRegistry = std::make_unique<engine::EntityRegistry>();
|
|
||||||
|
|
||||||
const auto transformComponent = engine::TransformComponent({0,0,0}, {0,0,0}, {1,1,1});
|
|
||||||
const auto meshComponent = engine::MeshComponent(std::move(cubeModel));
|
|
||||||
|
|
||||||
const auto entity = entityRegistry->createEntity();
|
|
||||||
entityRegistry->addComponent<>(entity, transformComponent);
|
|
||||||
entityRegistry->addComponent(entity, meshComponent);
|
|
||||||
|
|
||||||
m_renderer = std::make_unique<engine::MeshRenderer>();
|
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
engine::GLRenderState m_renderState;
|
std::unique_ptr<GameLayer> gameLayer;
|
||||||
std::unique_ptr<engine::EntityRegistry> entityRegistry;
|
|
||||||
std::unique_ptr<engine::StaticShader> m_shader;
|
|
||||||
std::unique_ptr<engine::MeshRenderer> m_renderer;
|
|
||||||
std::unique_ptr<engine::Camera> m_camera;
|
|
||||||
protected:
|
protected:
|
||||||
void onUpdate(float deltaTime) override;
|
void onUpdate(float deltaTime) override;
|
||||||
void onRender() override;
|
void onRender() override;
|
||||||
|
|||||||
51
game/src/GameLayer.cpp
Normal file
51
game/src/GameLayer.cpp
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
//
|
||||||
|
// Created by sebastian on 29.07.26.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "GameLayer.h"
|
||||||
|
|
||||||
|
#include "ecs/standardComponents/MeshComponent.h"
|
||||||
|
#include "ecs/standardComponents/TransformComponent.h"
|
||||||
|
#include "renderer/MeshRenderer.h"
|
||||||
|
#include "renderer/MeshRenderSystem.h"
|
||||||
|
#include "renderer/primitives/CubeFactory.h"
|
||||||
|
using namespace engine;
|
||||||
|
void GameLayer::onAttach() {
|
||||||
|
m_renderState.depthTesting = false;
|
||||||
|
m_renderState.backfaceCulling = false;
|
||||||
|
|
||||||
|
m_camera = std::make_unique<engine::Camera>();
|
||||||
|
m_camera->setPosition({0.0f, 0.0f, 5.0f});
|
||||||
|
m_camera->setYaw(0.0f);
|
||||||
|
m_camera->setPitch(0.0f);
|
||||||
|
|
||||||
|
m_renderer = std::make_unique<engine::MeshRenderer>();
|
||||||
|
|
||||||
|
Entity entity = m_entityRegistry.createEntity();
|
||||||
|
|
||||||
|
const auto cubeModel = CubeFactory::createCube();
|
||||||
|
|
||||||
|
const auto transform = TransformComponent({0,0,0}, {0,0,0}, {1,1,1});
|
||||||
|
const auto mesh = MeshComponent(cubeModel);
|
||||||
|
|
||||||
|
m_entityRegistry.addComponent<TransformComponent>(entity, transform);
|
||||||
|
m_entityRegistry.addComponent<MeshComponent>(entity, mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameLayer::onDetach() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameLayer::onUpdate() {
|
||||||
|
Layer::onUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameLayer::onRender() {
|
||||||
|
m_renderQueue.clear();
|
||||||
|
|
||||||
|
MeshRenderSystem meshRenderSystem;
|
||||||
|
meshRenderSystem.update(m_entityRegistry, m_renderQueue);
|
||||||
|
|
||||||
|
MeshRenderer renderer;
|
||||||
|
renderer.render(m_renderQueue, *m_camera);
|
||||||
|
}
|
||||||
28
game/src/GameLayer.h
Normal file
28
game/src/GameLayer.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// Created by sebastian on 29.07.26.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef COLORRACE_GAMELAYER_H
|
||||||
|
#define COLORRACE_GAMELAYER_H
|
||||||
|
#include "ecs/EntityRegistry.h"
|
||||||
|
#include "layer/Layer.h"
|
||||||
|
#include "renderer/MeshRenderer.h"
|
||||||
|
#include "renderer/RenderQueue.h"
|
||||||
|
#include "utils/openglWrapper/GLRenderState.h"
|
||||||
|
|
||||||
|
|
||||||
|
class GameLayer: public engine::Layer {
|
||||||
|
public:
|
||||||
|
void onAttach() override;
|
||||||
|
void onDetach() override;
|
||||||
|
void onUpdate() override;
|
||||||
|
void onRender() override;
|
||||||
|
private:
|
||||||
|
engine::GLRenderState m_renderState;
|
||||||
|
engine::RenderQueue m_renderQueue;
|
||||||
|
engine::EntityRegistry m_entityRegistry;
|
||||||
|
std::unique_ptr<engine::MeshRenderer> m_renderer;
|
||||||
|
std::unique_ptr<engine::Camera> m_camera;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //COLORRACE_GAMELAYER_H
|
||||||
Loading…
Reference in New Issue
Block a user