diff --git a/res/content/base/scripts/hud.lua b/res/content/base/scripts/hud.lua index b1c4b130..49d34b62 100644 --- a/res/content/base/scripts/hud.lua +++ b/res/content/base/scripts/hud.lua @@ -28,10 +28,10 @@ function on_hud_open() end) note = gfx.text3d.new({0.5, 99.5, 0.0015}, "Segmentation fault", { + scale=0.005, color={0, 0, 0, 1}, - display="projected", - perspective=1.0, - scale=2.0 + display="static_billboard", + xray_opacity=0.2 }) end diff --git a/src/graphics/render/TextNote.cpp b/src/graphics/render/TextNote.cpp index b5136279..127414c3 100644 --- a/src/graphics/render/TextNote.cpp +++ b/src/graphics/render/TextNote.cpp @@ -29,3 +29,19 @@ void TextNote::setPosition(const glm::vec3& position) { const glm::vec3& TextNote::getPosition() const { return position; } + +const glm::vec3& TextNote::getAxisX() const { + return xAxis; +} + +const glm::vec3& TextNote::getAxisY() const { + return yAxis; +} + +void TextNote::setAxisX(const glm::vec3& vec) { + xAxis = vec; +} + +void TextNote::setAxisY(const glm::vec3& vec) { + yAxis = vec; +} diff --git a/src/graphics/render/TextNote.hpp b/src/graphics/render/TextNote.hpp index e16afd30..65a26ac1 100644 --- a/src/graphics/render/TextNote.hpp +++ b/src/graphics/render/TextNote.hpp @@ -7,6 +7,9 @@ class TextNote { std::wstring text; NotePreset preset; glm::vec3 position; + + glm::vec3 xAxis {1, 0, 0}; + glm::vec3 yAxis {0, 1, 0}; public: TextNote(std::wstring text, NotePreset preset, glm::vec3 position); @@ -19,6 +22,11 @@ public: void updatePreset(const dv::value& data); void setPosition(const glm::vec3& position); - const glm::vec3& getPosition() const; + + const glm::vec3& getAxisX() const; + const glm::vec3& getAxisY() const; + + void setAxisX(const glm::vec3& vec); + void setAxisY(const glm::vec3& vec); }; diff --git a/src/graphics/render/TextsRenderer.cpp b/src/graphics/render/TextsRenderer.cpp index ad2ac987..92b628f8 100644 --- a/src/graphics/render/TextsRenderer.cpp +++ b/src/graphics/render/TextsRenderer.cpp @@ -47,8 +47,8 @@ void TextsRenderer::renderNote( } const auto& font = assets.require("normal"); - glm::vec3 xvec {1, 0, 0}; - glm::vec3 yvec {0, 1, 0}; + glm::vec3 xvec = note.getAxisX(); + glm::vec3 yvec = note.getAxisY(); int width = font.calcWidth(text, text.length()); if (preset.displayMode == NoteDisplayMode::Y_FREE_BILLBOARD || diff --git a/src/logic/scripting/lua/libs/libtext3d.cpp b/src/logic/scripting/lua/libs/libtext3d.cpp index 4469e792..ccbb5977 100644 --- a/src/logic/scripting/lua/libs/libtext3d.cpp +++ b/src/logic/scripting/lua/libs/libtext3d.cpp @@ -48,7 +48,6 @@ static int l_get_pos(lua::State* L) { } return 0; } - static int l_set_pos(lua::State* L) { if (auto note = renderer->texts->get(lua::tointeger(L, 1))) { note->setPosition(lua::tovec3(L, 2)); @@ -56,6 +55,33 @@ static int l_set_pos(lua::State* L) { return 0; } +static int l_get_axis_x(lua::State* L) { + if (auto note = renderer->texts->get(lua::tointeger(L, 1))) { + return lua::pushvec(L, note->getAxisX()); + } + return 0; +} +static int l_set_axis_x(lua::State* L) { + if (auto note = renderer->texts->get(lua::tointeger(L, 1))) { + note->setAxisX(lua::tovec3(L, 2)); + } + return 0; +} + + +static int l_get_axis_y(lua::State* L) { + if (auto note = renderer->texts->get(lua::tointeger(L, 1))) { + return lua::pushvec(L, note->getAxisY()); + } + return 0; +} +static int l_set_axis_y(lua::State* L) { + if (auto note = renderer->texts->get(lua::tointeger(L, 1))) { + note->setAxisY(lua::tovec3(L, 2)); + } + return 0; +} + static int l_update_settings(lua::State* L) { if (auto note = renderer->texts->get(lua::tointeger(L, 1))) { note->updatePreset(lua::tovalue(L, 2)); @@ -70,6 +96,10 @@ const luaL_Reg text3dlib[] = { {"set_text", lua::wrap}, {"get_pos", lua::wrap}, {"set_pos", lua::wrap}, + {"get_axis_x", lua::wrap}, + {"set_axis_x", lua::wrap}, + {"get_axis_y", lua::wrap}, + {"set_axis_y", lua::wrap}, {"update_settings", lua::wrap}, {NULL, NULL} };