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/MeshRenderer.cpp
|
||||
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) {
|
||||
|
||||
gameLayer->onUpdate();
|
||||
}
|
||||
|
||||
void ColorRaceApp::onRender() {
|
||||
m_renderState.apply();
|
||||
|
||||
engine::MeshRenderSystem meshRenderSystem;
|
||||
|
||||
engine::RenderQueue queue;
|
||||
meshRenderSystem.update(*entityRegistry, queue);
|
||||
|
||||
m_renderer->render(queue, *m_camera);
|
||||
|
||||
gameLayer->onRender();
|
||||
}
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
#ifndef COLORRACE_COLORRACEAPP_H
|
||||
#define COLORRACE_COLORRACEAPP_H
|
||||
#include "GameLayer.h"
|
||||
#include "core/Application.h"
|
||||
#include "ecs/EntityRegistry.h"
|
||||
#include "ecs/standardComponents/MeshComponent.h"
|
||||
@ -31,34 +32,12 @@ public:
|
||||
return config;
|
||||
}
|
||||
ColorRaceApp() : Application(makeConfig()) {
|
||||
m_renderState.depthTesting = false;
|
||||
m_renderState.backfaceCulling = false;
|
||||
|
||||
m_shader = std::make_unique<engine::StaticShader>();
|
||||
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);
|
||||
|
||||
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>();
|
||||
gameLayer = std::make_unique<GameLayer>();
|
||||
gameLayer->onAttach();
|
||||
}
|
||||
private:
|
||||
engine::GLRenderState m_renderState;
|
||||
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;
|
||||
std::unique_ptr<GameLayer> gameLayer;
|
||||
protected:
|
||||
void onUpdate(float deltaTime) 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