add get_text, set_text, get_pos, set_pos

This commit is contained in:
MihailRis 2024-11-14 10:57:55 +03:00
parent d74b530a83
commit 501f1b568d
6 changed files with 62 additions and 1 deletions

View File

@ -1,6 +1,8 @@
local DROP_FORCE = 8
local DROP_INIT_VEL = {0, 3, 0}
local textid
function on_hud_open()
input.add_callback("player.drop", function ()
if hud.is_paused() or hud.is_inventory_open() then
@ -25,9 +27,14 @@ function on_hud_open()
drop.rigidbody:set_vel(velocity)
end)
gfx.text3d.show({0.5, 99.5, 0.0015}, "Segmentation fault", {
textid = gfx.text3d.show({0.5, 99.5, 0.0015}, "Segmentation fault", {
scale=0.005,
color={0, 0, 0, 1},
displayMode="static_billboard"
})
end
function on_hud_render()
local pos = gfx.text3d.get_pos(textid)
gfx.text3d.set_pos(textid, {pos[1], pos[2]+time.delta(), pos[3]})
end

View File

@ -6,6 +6,10 @@ TextNote::TextNote(std::wstring text, NotePreset preset, glm::vec3 position)
position(std::move(position)) {
}
void TextNote::setText(std::wstring_view text) {
this->text = text;
}
const std::wstring& TextNote::getText() const {
return text;
}
@ -14,6 +18,10 @@ const NotePreset& TextNote::getPreset() const {
return preset;
}
void TextNote::setPosition(const glm::vec3& position) {
this->position = position;
}
const glm::vec3& TextNote::getPosition() const {
return position;
}

View File

@ -10,9 +10,13 @@ class TextNote {
public:
TextNote(std::wstring text, NotePreset preset, glm::vec3 position);
void setText(std::wstring_view text);
const std::wstring& getText() const;
const NotePreset& getPreset() const;
void setPosition(const glm::vec3& position);
const glm::vec3& getPosition() const;
};

View File

@ -96,6 +96,14 @@ u64id_t TextsRenderer::add(std::unique_ptr<TextNote> note) {
return uid;
}
TextNote* TextsRenderer::get(u64id_t id) const {
const auto& found = notes.find(id);
if (found == notes.end()) {
return nullptr;
}
return found->second.get();
}
void TextsRenderer::remove(u64id_t id) {
notes.erase(id);
}

View File

@ -41,5 +41,7 @@ public:
u64id_t add(std::unique_ptr<TextNote> note);
TextNote* get(u64id_t id) const;
void remove(u64id_t id);
};

View File

@ -28,8 +28,40 @@ static int l_hide(lua::State* L) {
return 0;
}
static int l_get_text(lua::State* L) {
if (auto note = renderer->texts->get(lua::tointeger(L, 1))) {
return lua::pushwstring(L, note->getText());
}
return 0;
}
static int l_set_text(lua::State* L) {
if (auto note = renderer->texts->get(lua::tointeger(L, 1))) {
note->setText(lua::require_wstring(L, 2));
}
return 0;
}
static int l_get_pos(lua::State* L) {
if (auto note = renderer->texts->get(lua::tointeger(L, 1))) {
return lua::pushvec(L, note->getPosition());
}
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));
}
return 0;
}
const luaL_Reg text3dlib[] = {
{"show", lua::wrap<l_show>},
{"hide", lua::wrap<l_hide>},
{"get_text", lua::wrap<l_get_text>},
{"set_text", lua::wrap<l_set_text>},
{"get_pos", lua::wrap<l_get_pos>},
{"set_pos", lua::wrap<l_set_pos>},
{NULL, NULL}
};