mirror of
https://github.com/MadeOfJelly/MushMachine.git
synced 2025-07-03 08:06:46 +02:00
port to EnTT v3.10.0
This commit is contained in:
@ -27,9 +27,6 @@
|
||||
namespace MM::OpenGL::RenderTasks {
|
||||
|
||||
BatchedSpriteSheet::BatchedSpriteSheet(Engine& engine) {
|
||||
default_cam.setOrthographic();
|
||||
default_cam.updateView();
|
||||
|
||||
float vertices[] = {
|
||||
-0.5f, 0.5f,
|
||||
-0.5f, -0.5f,
|
||||
@ -70,6 +67,10 @@ void BatchedSpriteSheet::render(Services::OpenGLRenderer& rs, Engine& engine) {
|
||||
|
||||
auto& scene = ssi->getScene();
|
||||
|
||||
if (!scene.ctx().contains<Camera3D>()) {
|
||||
return; // nothing to draw
|
||||
}
|
||||
|
||||
struct sp_data {
|
||||
SpriteSheet sp;
|
||||
struct instance_data {
|
||||
@ -116,12 +117,9 @@ void BatchedSpriteSheet::render(Services::OpenGLRenderer& rs, Engine& engine) {
|
||||
_vertexBuffer->bind(GL_ARRAY_BUFFER);
|
||||
_vao->bind();
|
||||
|
||||
auto* cam = scene.try_ctx<Camera3D>();
|
||||
if (!cam) {
|
||||
cam = &default_cam;
|
||||
}
|
||||
auto& cam = scene.ctx().at<Camera3D>();
|
||||
|
||||
auto vp = cam->getViewProjection();
|
||||
auto vp = cam.getViewProjection();
|
||||
_shader->setUniformMat4f("_VP", vp);
|
||||
|
||||
for (auto& sp_ent : batch_map) {
|
||||
|
@ -37,8 +37,6 @@ namespace MM::OpenGL::RenderTasks {
|
||||
public:
|
||||
glm::vec4 default_color {1.f, 1.f, 1.f, 1.f};
|
||||
|
||||
OpenGL::Camera3D default_cam;
|
||||
|
||||
BatchedSpriteSheet(Engine& engine);
|
||||
~BatchedSpriteSheet(void);
|
||||
|
||||
|
@ -47,7 +47,6 @@ FastSky::FastSky(MM::Engine& engine) {
|
||||
|
||||
_vertexBuffer->unbind(GL_ARRAY_BUFFER);
|
||||
_vao->unbind();
|
||||
|
||||
}
|
||||
|
||||
FastSky::~FastSky(void) {
|
||||
@ -56,6 +55,17 @@ FastSky::~FastSky(void) {
|
||||
void FastSky::render(MM::Services::OpenGLRenderer& rs, MM::Engine& engine) {
|
||||
ZoneScopedN("MM::OpenGL::RenderTasks::FastSky::render");
|
||||
|
||||
auto* ssi = engine.tryService<MM::Services::SceneServiceInterface>();
|
||||
if (ssi == nullptr) {
|
||||
return; // nothing to draw
|
||||
}
|
||||
|
||||
auto& scene = ssi->getScene();
|
||||
|
||||
if (!scene.ctx().contains<Camera3D>()) {
|
||||
return; // nothing to draw
|
||||
}
|
||||
|
||||
rs.targets[target_fbo]->bind(MM::OpenGL::FrameBufferObject::W);
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
@ -67,9 +77,8 @@ void FastSky::render(MM::Services::OpenGLRenderer& rs, MM::Engine& engine) {
|
||||
_vertexBuffer->bind(GL_ARRAY_BUFFER);
|
||||
_vao->bind();
|
||||
|
||||
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
|
||||
{
|
||||
auto& cam = scene.ctx<MM::OpenGL::Camera3D>();
|
||||
auto& cam = scene.ctx().at<MM::OpenGL::Camera3D>();
|
||||
MM::OpenGL::Camera3D tmp_cam = cam;
|
||||
// create cam with y up, bc shader says so
|
||||
tmp_cam.up = {0, 1, 0};
|
||||
@ -80,9 +89,13 @@ void FastSky::render(MM::Services::OpenGLRenderer& rs, MM::Engine& engine) {
|
||||
}
|
||||
|
||||
{
|
||||
auto* ctx_ptr = scene.try_ctx<FastSkyContext>();
|
||||
if (!ctx_ptr) {
|
||||
ctx_ptr = &_default_context;
|
||||
//auto* ctx_ptr = scene.try_ctx<FastSkyContext>();
|
||||
//if (!ctx_ptr) {
|
||||
//ctx_ptr = &_default_context;
|
||||
//}
|
||||
auto* ctx_ptr = &_default_context;
|
||||
if (scene.ctx().contains<FastSkyContext>()) {
|
||||
ctx_ptr = &scene.ctx().at<FastSkyContext>();
|
||||
}
|
||||
|
||||
_shader->setUniform1f("time", ctx_ptr->time);
|
||||
|
@ -22,9 +22,6 @@
|
||||
namespace MM::OpenGL::RenderTasks {
|
||||
|
||||
SimpleRect::SimpleRect(Engine& engine) {
|
||||
default_cam.setOrthographic();
|
||||
default_cam.updateView();
|
||||
|
||||
float vertices[] = {
|
||||
-0.5f, 0.5f,
|
||||
-0.5f, -0.5f,
|
||||
@ -63,6 +60,10 @@ void SimpleRect::render(Services::OpenGLRenderer& rs, Engine& engine) {
|
||||
|
||||
auto& scene = ssi->getScene();
|
||||
|
||||
if (!scene.ctx().contains<Camera3D>()) {
|
||||
return; // nothing to draw
|
||||
}
|
||||
|
||||
rs.targets[target_fbo]->bind(FrameBufferObject::RW);
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
@ -71,12 +72,8 @@ void SimpleRect::render(Services::OpenGLRenderer& rs, Engine& engine) {
|
||||
_shader->bind();
|
||||
_vao->bind();
|
||||
|
||||
Camera3D* cam = scene.try_ctx<Camera3D>();
|
||||
if (!cam) {
|
||||
cam = &default_cam;
|
||||
}
|
||||
|
||||
auto vp = cam->getViewProjection();
|
||||
Camera3D& cam = scene.ctx().at<Camera3D>();
|
||||
auto vp = cam.getViewProjection();
|
||||
|
||||
scene.view<const Components::Transform4x4>().each([this, &scene, &vp](entt::entity e, const auto& t) {
|
||||
_shader->setUniformMat4f("_WVP", vp * t.trans);
|
||||
|
@ -5,7 +5,6 @@
|
||||
|
||||
#include <mm/opengl/camera_3d.hpp>
|
||||
|
||||
//#include <glm/fwd.hpp>
|
||||
#include <glm/vec4.hpp>
|
||||
|
||||
// fwd
|
||||
@ -26,8 +25,6 @@ namespace MM::OpenGL::RenderTasks {
|
||||
public:
|
||||
glm::vec4 default_color {1,1,1,1};
|
||||
|
||||
Camera3D default_cam;
|
||||
|
||||
SimpleRect(Engine& engine);
|
||||
~SimpleRect(void);
|
||||
|
||||
|
@ -28,9 +28,6 @@
|
||||
namespace MM::OpenGL::RenderTasks {
|
||||
|
||||
SimpleSprite::SimpleSprite(Engine& engine) {
|
||||
default_cam.setOrthographic();
|
||||
default_cam.updateView();
|
||||
|
||||
float vertices[] = {
|
||||
-0.5f, 0.5f,
|
||||
-0.5f, -0.5f,
|
||||
@ -69,6 +66,10 @@ void SimpleSprite::render(Services::OpenGLRenderer& rs, Engine& engine) {
|
||||
|
||||
auto& scene = ssi->getScene();
|
||||
|
||||
if (!scene.ctx().contains<Camera3D>()) {
|
||||
return; // nothing to draw
|
||||
}
|
||||
|
||||
rs.targets[target_fbo]->bind(FrameBufferObject::W);
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
@ -79,12 +80,8 @@ void SimpleSprite::render(Services::OpenGLRenderer& rs, Engine& engine) {
|
||||
_vao->bind();
|
||||
|
||||
|
||||
auto* cam = scene.try_ctx<Camera3D>();
|
||||
if (!cam) {
|
||||
cam = &default_cam;
|
||||
}
|
||||
|
||||
auto vp = cam->getViewProjection();
|
||||
Camera3D& cam = scene.ctx().at<Camera3D>();
|
||||
auto vp = cam.getViewProjection();
|
||||
|
||||
scene.view<const Components::Transform4x4, Components::OpenGL::Texture>().each([this, &scene, &vp](entt::entity e, const auto& t, auto& tex) {
|
||||
assert(tex.tex); // debug
|
||||
|
@ -26,8 +26,6 @@ namespace MM::OpenGL::RenderTasks {
|
||||
public:
|
||||
glm::vec4 default_color {1,1,1,1};
|
||||
|
||||
Camera3D default_cam;
|
||||
|
||||
SimpleSprite(Engine& engine);
|
||||
~SimpleSprite(void);
|
||||
|
||||
|
@ -30,9 +30,6 @@
|
||||
namespace MM::OpenGL::RenderTasks {
|
||||
|
||||
SimpleSpriteSheet::SimpleSpriteSheet(Engine& engine) {
|
||||
default_cam.setOrthographic();
|
||||
default_cam.updateView();
|
||||
|
||||
float vertices[] = {
|
||||
-0.5f, 0.5f,
|
||||
-0.5f, -0.5f,
|
||||
@ -56,11 +53,6 @@ SimpleSpriteSheet::SimpleSpriteSheet(Engine& engine) {
|
||||
setupShaderFiles();
|
||||
_shader = Shader::createF(engine, vertexPath, fragmentPath);
|
||||
assert(_shader != nullptr);
|
||||
|
||||
auto& scene = engine.tryService<MM::Services::SceneServiceInterface>()->getScene();
|
||||
if (!scene.try_ctx<Camera3D>()) {
|
||||
LOG_SSSR("warn: scene has no Camera!");
|
||||
}
|
||||
}
|
||||
|
||||
SimpleSpriteSheet::~SimpleSpriteSheet(void) {
|
||||
@ -76,6 +68,10 @@ void SimpleSpriteSheet::render(Services::OpenGLRenderer& rs, Engine& engine) {
|
||||
|
||||
auto& scene = ssi->getScene();
|
||||
|
||||
if (!scene.ctx().contains<Camera3D>()) {
|
||||
return; // nothing to draw
|
||||
}
|
||||
|
||||
rs.targets[target_fbo]->bind(FrameBufferObject::W);
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
@ -85,12 +81,8 @@ void SimpleSpriteSheet::render(Services::OpenGLRenderer& rs, Engine& engine) {
|
||||
_vertexBuffer->bind(GL_ARRAY_BUFFER);
|
||||
_vao->bind();
|
||||
|
||||
auto* cam = scene.try_ctx<Camera3D>();
|
||||
if (!cam) {
|
||||
cam = &default_cam;
|
||||
}
|
||||
|
||||
auto vp = cam->getViewProjection();
|
||||
Camera3D& cam = scene.ctx().at<Camera3D>();
|
||||
auto vp = cam.getViewProjection();
|
||||
|
||||
scene.view<const Components::Transform4x4, SpriteSheetRenderable>().each([this, &scene, &vp](entt::entity e, const auto& t, auto& spr) {
|
||||
assert(spr.sp.tex); // debug
|
||||
|
@ -26,8 +26,6 @@ namespace MM::OpenGL::RenderTasks {
|
||||
public:
|
||||
glm::vec4 default_color {1.f, 1.f, 1.f, 1.f};
|
||||
|
||||
Camera3D default_cam;
|
||||
|
||||
SimpleSpriteSheet(Engine& engine);
|
||||
~SimpleSpriteSheet(void);
|
||||
|
||||
|
@ -75,6 +75,17 @@ Tilemap::~Tilemap(void) {
|
||||
void Tilemap::render(MM::Services::OpenGLRenderer& rs, MM::Engine& engine) {
|
||||
ZoneScopedN("MM::OpenGL::Renderers::TilemapRenderer::render");
|
||||
|
||||
auto* ssi = engine.tryService<MM::Services::SceneServiceInterface>();
|
||||
if (ssi == nullptr) {
|
||||
return; // nothing to draw
|
||||
}
|
||||
|
||||
auto& scene = ssi->getScene();
|
||||
|
||||
if (!scene.ctx().contains<Camera3D>()) {
|
||||
return; // nothing to draw
|
||||
}
|
||||
|
||||
rs.targets[target_fbo]->bind(MM::OpenGL::FrameBufferObject::W);
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
@ -85,17 +96,13 @@ void Tilemap::render(MM::Services::OpenGLRenderer& rs, MM::Engine& engine) {
|
||||
_vertexBuffer->bind(GL_ARRAY_BUFFER);
|
||||
_vao->bind();
|
||||
|
||||
|
||||
auto& scene = engine.tryService<Services::SceneServiceInterface>()->getScene();
|
||||
|
||||
MM::OpenGL::Camera3D& cam = scene.ctx<MM::OpenGL::Camera3D>();
|
||||
MM::OpenGL::Camera3D& cam = scene.ctx().at<MM::OpenGL::Camera3D>();
|
||||
auto vp = cam.getViewProjection();
|
||||
|
||||
_shader->setUniform3f("_ambient_color", ambient_color);
|
||||
|
||||
scene.view<MM::Components::Transform4x4, OpenGL::TilemapRenderable>()
|
||||
.each([&](auto, MM::Components::Transform4x4& t, OpenGL::TilemapRenderable& tilemap) {
|
||||
//_shader->setUniformMat4f("_WVP", vp * t.getTransform4(tilemap.z + 500.f));
|
||||
_shader->setUniformMat4f("_WVP", vp * t.trans);
|
||||
|
||||
// for each sprite layer
|
||||
|
Reference in New Issue
Block a user