Skip to content

Commit

Permalink
add gfx.text3d OOP wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
MihailRis committed Nov 14, 2024
1 parent 4a74e56 commit 3a1e90f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 3 deletions.
6 changes: 3 additions & 3 deletions res/content/base/scripts/hud.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
local DROP_FORCE = 8
local DROP_INIT_VEL = {0, 3, 0}

local textid
local note

function on_hud_open()
input.add_callback("player.drop", function ()
Expand All @@ -27,15 +27,15 @@ function on_hud_open()
drop.rigidbody:set_vel(velocity)
end)

textid = gfx.text3d.show({0.5, 99.5, 0.0015}, "Segmentation fault", {
note = gfx.text3d.new({0.5, 99.5, 0.0015}, "Segmentation fault", {
scale=0.005,
color={0, 0, 0, 1},
displayMode="static_billboard"
})
end

function on_hud_render()
gfx.text3d.update_settings(textid, {
note:update_settings({
color={math.sin(time.uptime() * 12) * 0.5 + 0.5, 0, 0, 1}
})
end
13 changes: 13 additions & 0 deletions res/scripts/hud_classes.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
local Text3D = {__index={
hide=function(self) return gfx.text3d.hide(self.id) end,
get_pos=function(self) return gfx.text3d.get_pos(self.id) end,
set_pos=function(self, v) return gfx.text3d.set_pos(self.id, v) end,
get_text=function(self) return gfx.text3d.get_text(self.id) end,
set_text=function(self, s) return gfx.text3d.set_text(self.id, s) end,
update_settings=function(self, t) return gfx.text3d.update_settings(self.id, t) end,
}}

gfx.text3d.new = function(pos, text, preset, extension)
local id = gfx.text3d.show(pos, text, preset, extension)
return setmetatable({id=id}, Text3D)
end
10 changes: 10 additions & 0 deletions src/logic/scripting/scripting_hud.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ static debug::Logger logger("scripting-hud");
Hud* scripting::hud = nullptr;
WorldRenderer* scripting::renderer = nullptr;

static void load_script(const std::string& name) {
auto file = engine->getPaths()->getResourcesFolder() / "scripts" / name;
std::string src = files::read_string(file);
logger.info() << "loading script " << file.u8string();

lua::execute(lua::get_main_state(), 0, src, file.u8string());
}

void scripting::on_frontend_init(Hud* hud, WorldRenderer* renderer) {
scripting::hud = hud;
scripting::renderer = renderer;
Expand All @@ -27,6 +35,8 @@ void scripting::on_frontend_init(Hud* hud, WorldRenderer* renderer) {
lua::openlib(L, "gfx", "particles", particleslib);
lua::openlib(L, "gfx", "text3d", text3dlib);

load_script("hud_classes.lua");

if (lua::getglobal(L, "__vc_create_hud_rules")) {
lua::call_nothrow(L, 0, 0);
}
Expand Down

0 comments on commit 3a1e90f

Please sign in to comment.