adopt engine stuff to new update strategy

This commit is contained in:
2020-12-26 19:29:39 +01:00
parent c1ae30c89c
commit 840b663d5e
28 changed files with 351 additions and 324 deletions

View File

@ -10,6 +10,7 @@
#include <mm/opengl/texture_loader.hpp>
#include "../opengl/res/default_texture.h" // data
#include "../opengl/res/errig_texture.h" // data
#include "mm/update_strategies/update_strategy.hpp"
#include <tracy/Tracy.hpp>
#ifndef MM_OPENGL_3_GLES
@ -67,18 +68,6 @@ bool OpenGLRenderer::enable(Engine& engine) {
targets["display"]->_resize = false; // its done for us
}
_render_handle = engine.addUpdate([this](Engine& e){ this->render(e); });
if (_render_handle.expired()) {
LOG_ERROR("couldn't add update function!");
return false;
}
{
auto tmp_lock = _render_handle.lock();
tmp_lock->priority = -10;
tmp_lock->name = "render";
}
_sdl_event_handle = sdl_s.addEventHandler([this, &engine](const SDL_Event& e) -> bool {
if (e.type == SDL_WINDOWEVENT) {
if (e.window.event == SDL_WINDOWEVENT_RESIZED || e.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
@ -138,12 +127,7 @@ bool OpenGLRenderer::enable(Engine& engine) {
return true;
}
void OpenGLRenderer::disable(Engine& engine) {
if (!_render_handle.expired()) {
engine.removeUpdate(_render_handle);
_render_handle.reset();
}
void OpenGLRenderer::disable(Engine&) {
// TODO: do we need this??
targets.clear();
render_tasks.clear();
@ -152,6 +136,17 @@ void OpenGLRenderer::disable(Engine& engine) {
MM::ResourceManager<MM::OpenGL::Texture>::ref().clear();
}
std::vector<UpdateStrategies::UpdateCreationInfo> OpenGLRenderer::registerUpdates(void) {
return {
{
"OpenGLRenderer::render"_hs,
"OpenGLRenderer::render",
[this](Engine& e){ this->render(e); },
UpdateStrategies::update_phase_t::POST
}
};
}
void OpenGLRenderer::render(Engine& engine) {
ZoneScopedN("MM::Services::OpenGLRenderer::render");

View File

@ -28,7 +28,6 @@ namespace MM::Services {
}
private:
Engine::FunctionDataHandle _render_handle;
SDLService::EventHandlerHandle _sdl_event_handle = nullptr;
public:
@ -37,6 +36,9 @@ namespace MM::Services {
const char* name(void) override { return "OpenGLRendererService"; }
std::vector<UpdateStrategies::UpdateCreationInfo> registerUpdates(void) override;
private:
void render(Engine& engine);
};