From 4aa76e35b767d95b196c97766e958eda1302f546 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 12 Jul 2024 09:17:53 +0300 Subject: [PATCH] add on_hud_render event --- src/graphics/render/WorldRenderer.cpp | 4 ++++ src/logic/PlayerController.cpp | 2 ++ src/logic/scripting/scripting_hud.cpp | 10 ++++++++++ src/logic/scripting/scripting_hud.hpp | 1 + 4 files changed, 17 insertions(+) diff --git a/src/graphics/render/WorldRenderer.cpp b/src/graphics/render/WorldRenderer.cpp index 686d55ff..f5a3ef93 100644 --- a/src/graphics/render/WorldRenderer.cpp +++ b/src/graphics/render/WorldRenderer.cpp @@ -12,6 +12,7 @@ #include "../../items/ItemDef.hpp" #include "../../items/ItemStack.hpp" #include "../../logic/PlayerController.hpp" +#include "../../logic/scripting/scripting_hud.hpp" #include "../../maths/FrustumCulling.hpp" #include "../../maths/voxmaths.hpp" #include "../../objects/Player.hpp" @@ -199,6 +200,9 @@ void WorldRenderer::renderLevel( shader->uniformMatrix("u_model", glm::mat4(1.0f)); level->entities->render(assets, *modelBatch, *frustumCulling, pause); + if (!pause) { + scripting::on_frontend_render(); + } modelBatch->render(); skybox->unbind(); diff --git a/src/logic/PlayerController.cpp b/src/logic/PlayerController.cpp index eda4a9d9..4279eb37 100644 --- a/src/logic/PlayerController.cpp +++ b/src/logic/PlayerController.cpp @@ -139,6 +139,8 @@ void CameraControl::switchCamera() { if (static_cast(index) != playerCameras.size()) { index = (index + 1) % playerCameras.size(); player->currentCamera = playerCameras.at(index); + } else { + player->currentCamera = camera; } } diff --git a/src/logic/scripting/scripting_hud.cpp b/src/logic/scripting/scripting_hud.cpp index 0174f9ac..2ae7a9f3 100644 --- a/src/logic/scripting/scripting_hud.cpp +++ b/src/logic/scripting/scripting_hud.cpp @@ -28,6 +28,15 @@ void scripting::on_frontend_init(Hud* hud) { } } +void scripting::on_frontend_render() { + for (auto& pack : engine->getContentPacks()) { + lua::emit_event(lua::get_main_thread(), pack.id + ".hudrender", + [&] (lua::State* L) { + return 0; + }); + } +} + void scripting::on_frontend_close() { for (auto& pack : engine->getContentPacks()) { lua::emit_event(lua::get_main_thread(), pack.id + ".hudclose", @@ -47,5 +56,6 @@ void scripting::load_hud_script(const scriptenv& senv, const std::string& packid register_event(env, "init", packid+".init"); register_event(env, "on_hud_open", packid+".hudopen"); + register_event(env, "on_hud_render", packid+".hudrender"); register_event(env, "on_hud_close", packid+".hudclose"); } diff --git a/src/logic/scripting/scripting_hud.hpp b/src/logic/scripting/scripting_hud.hpp index ff18e927..ad36cda2 100644 --- a/src/logic/scripting/scripting_hud.hpp +++ b/src/logic/scripting/scripting_hud.hpp @@ -14,6 +14,7 @@ namespace scripting { extern Hud* hud; void on_frontend_init(Hud* hud); + void on_frontend_render(); void on_frontend_close(); /**