diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py
index c62ec9c5..bf0386c1 100644
--- a/autogen/convert_functions.py
+++ b/autogen/convert_functions.py
@@ -160,6 +160,7 @@ manual_index_documentation = """
- [network_send](#network_send)
- [djui_hud_render_texture](#djui_hud_render_texture)
- [get_texture_info](#get_texture_info)
+ - [djui_hud_render_texture_interpolated](#djui_hud_render_texture_interpolated)
@@ -334,6 +335,34 @@ Retrieves a texture by name.
+## [djui_hud_render_texture_interpolated](#djui_hud_render_texture_interpolated)
+
+### Lua Example
+`djui_hud_render_texture_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| texInfo | [TextureInfo](structs.md#TextureInfo) |
+| prevX | `number` |
+| prevY | `number` |
+| prevScaleW | `number` |
+| prevScaleH | `number` |
+| x | `number` |
+| y | `number` |
+| scaleW | `number` |
+| scaleH | `number` |
+
+### Returns
+- None
+
+### C Prototype
+`void djui_hud_render_texture_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH);`
+
+[:arrow_up_small:](#)
+
+
+
"""
############################################################################
diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua
index 79889e68..fdae952a 100644
--- a/autogen/lua_definitions/functions.lua
+++ b/autogen/lua_definitions/functions.lua
@@ -3609,6 +3609,19 @@ function djui_hud_render_rect(x, y, width, height)
-- ...
end
+--- @param prevX number
+--- @param prevY number
+--- @param prevWidth number
+--- @param prevHeight number
+--- @param x number
+--- @param y number
+--- @param width number
+--- @param height number
+--- @return nil
+function djui_hud_render_rect_interpolated(prevX, prevY, prevWidth, prevHeight, x, y, width, height)
+ -- ...
+end
+
--- @param r integer
--- @param g integer
--- @param b integer
@@ -3630,6 +3643,13 @@ function djui_hud_set_resolution(resolutionType)
-- ...
end
+--- @param pos Vec3f
+--- @param out Vec3f
+--- @return nil
+function djui_hud_world_pos_to_screen_pos(pos, out)
+ -- ...
+end
+
--- @param message string
--- @param lines integer
--- @return nil
diff --git a/autogen/lua_definitions/manual.lua b/autogen/lua_definitions/manual.lua
index 364394e0..023337d9 100644
--- a/autogen/lua_definitions/manual.lua
+++ b/autogen/lua_definitions/manual.lua
@@ -158,4 +158,18 @@ end
--- @return nil
function djui_hud_render_texture(texInfo, x, y, scaleW, scaleH)
-- ...
-end
\ No newline at end of file
+end
+
+--- @param texInfo TextureInfo
+--- @param prevX number
+--- @param prevY number
+--- @param prevScaleW number
+--- @param prevScaleH number
+--- @param x number
+--- @param y number
+--- @param scaleW number
+--- @param scaleH number
+--- @return nil
+function djui_hud_render_texture_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH)
+ -- ...
+end
diff --git a/docs/lua/functions-3.md b/docs/lua/functions-3.md
index c90578ea..8a56c89b 100644
--- a/docs/lua/functions-3.md
+++ b/docs/lua/functions-3.md
@@ -2135,6 +2135,33 @@
+## [djui_hud_render_rect_interpolated](#djui_hud_render_rect_interpolated)
+
+### Lua Example
+`djui_hud_render_rect_interpolated(prevX, prevY, prevWidth, prevHeight, x, y, width, height)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| prevX | `number` |
+| prevY | `number` |
+| prevWidth | `number` |
+| prevHeight | `number` |
+| x | `number` |
+| y | `number` |
+| width | `number` |
+| height | `number` |
+
+### Returns
+- None
+
+### C Prototype
+`void djui_hud_render_rect_interpolated(f32 prevX, f32 prevY, f32 prevWidth, f32 prevHeight, f32 x, f32 y, f32 width, f32 height);`
+
+[:arrow_up_small:](#)
+
+
+
## [djui_hud_set_color](#djui_hud_set_color)
### Lua Example
@@ -2198,6 +2225,27 @@
+## [djui_hud_world_pos_to_screen_pos](#djui_hud_world_pos_to_screen_pos)
+
+### Lua Example
+`djui_hud_world_pos_to_screen_pos(pos, out)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| pos | [Vec3f](structs.md#Vec3f) |
+| out | [Vec3f](structs.md#Vec3f) |
+
+### Returns
+- None
+
+### C Prototype
+`void djui_hud_world_pos_to_screen_pos(Vec3f pos, Vec3f out);`
+
+[:arrow_up_small:](#)
+
+
+
---
# functions from djui_popup.h
diff --git a/docs/lua/functions.md b/docs/lua/functions.md
index 0cbf9a46..1aeae144 100644
--- a/docs/lua/functions.md
+++ b/docs/lua/functions.md
@@ -16,6 +16,7 @@
- [network_send](#network_send)
- [djui_hud_render_texture](#djui_hud_render_texture)
- [get_texture_info](#get_texture_info)
+ - [djui_hud_render_texture_interpolated](#djui_hud_render_texture_interpolated)
@@ -708,9 +709,11 @@
- [djui_hud_measure_text](functions-3.md#djui_hud_measure_text)
- [djui_hud_print_text](functions-3.md#djui_hud_print_text)
- [djui_hud_render_rect](functions-3.md#djui_hud_render_rect)
+ - [djui_hud_render_rect_interpolated](functions-3.md#djui_hud_render_rect_interpolated)
- [djui_hud_set_color](functions-3.md#djui_hud_set_color)
- [djui_hud_set_font](functions-3.md#djui_hud_set_font)
- [djui_hud_set_resolution](functions-3.md#djui_hud_set_resolution)
+ - [djui_hud_world_pos_to_screen_pos](functions-3.md#djui_hud_world_pos_to_screen_pos)
@@ -1643,6 +1646,34 @@ Retrieves a texture by name.
+## [djui_hud_render_texture_interpolated](#djui_hud_render_texture_interpolated)
+
+### Lua Example
+`djui_hud_render_texture_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH)`
+
+### Parameters
+| Field | Type |
+| ----- | ---- |
+| texInfo | [TextureInfo](structs.md#TextureInfo) |
+| prevX | `number` |
+| prevY | `number` |
+| prevScaleW | `number` |
+| prevScaleH | `number` |
+| x | `number` |
+| y | `number` |
+| scaleW | `number` |
+| scaleH | `number` |
+
+### Returns
+- None
+
+### C Prototype
+`void djui_hud_render_texture_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH);`
+
+[:arrow_up_small:](#)
+
+
+
---
1 | [2](functions-2.md) | [3](functions-3.md) | [4](functions-4.md) | [next >](functions-2.md)]
diff --git a/src/pc/djui/djui_hud_utils.c b/src/pc/djui/djui_hud_utils.c
index 6a35fc17..91680839 100644
--- a/src/pc/djui/djui_hud_utils.c
+++ b/src/pc/djui/djui_hud_utils.c
@@ -8,12 +8,15 @@
#include "pc/gfx/gfx_pc.h"
#include "pc/gfx/gfx_window_manager_api.h"
#include "pc/pc_main.h"
+#include "pc/utils/misc.h"
#include "djui_gfx.h"
#include "gfx_dimensions.h"
#include "config.h"
#include "djui.h"
#include "djui_hud_utils.h"
+#include "game/camera.h"
+
static enum HudUtilsResolution sResolution = RESOLUTION_DJUI;
static enum DjuiFontType sFont = FONT_NORMAL;
@@ -53,6 +56,66 @@ static void djui_hud_size_translate(f32* size) {
}
}
+ ////////////
+ // interp //
+////////////
+
+#define MAX_INTERP_HUD 128
+struct InterpHud {
+ Gfx* headPos;
+ f32 z;
+ f32 prevX;
+ f32 prevY;
+ f32 x;
+ f32 y;
+ f32 prevScaleW;
+ f32 prevScaleH;
+ f32 scaleW;
+ f32 scaleH;
+ f32 width;
+ f32 height;
+};
+static struct InterpHud sInterpHuds[MAX_INTERP_HUD] = { 0 };
+static u16 sInterpHudCount = 0;
+
+void patch_djui_hud_before(void) {
+ sInterpHudCount = 0;
+}
+
+void patch_djui_hud(f32 delta) {
+ f32 savedZ = gDjuiHudUtilsZ;
+ Gfx* savedHeadPos = gDisplayListHead;
+ for (u16 i = 0; i < sInterpHudCount; i++) {
+ struct InterpHud* interp = &sInterpHuds[i];
+ f32 x = delta_interpolate_f32(interp->prevX, interp->x, delta);
+ f32 y = delta_interpolate_f32(interp->prevY, interp->y, delta);
+ f32 scaleW = delta_interpolate_f32(interp->prevScaleW, interp->scaleW, delta);
+ f32 scaleH = delta_interpolate_f32(interp->prevScaleH, interp->scaleH, delta);
+
+ gDjuiHudUtilsZ = interp->z;
+ gDisplayListHead = interp->headPos;
+
+ // translate position
+ f32 translatedX = x;
+ f32 translatedY = y;
+ djui_hud_position_translate(&translatedX, &translatedY);
+ create_dl_translation_matrix(DJUI_MTX_PUSH, translatedX, translatedY, gDjuiHudUtilsZ);
+
+ // translate scale
+ f32 translatedW = scaleW;
+ f32 translatedH = scaleH;
+ djui_hud_size_translate(&translatedW);
+ djui_hud_size_translate(&translatedH);
+ create_dl_scale_matrix(DJUI_MTX_NOPUSH, interp->width * translatedW, interp->height * translatedH, 1.0f);
+ }
+ gDisplayListHead = savedHeadPos;
+ gDjuiHudUtilsZ = savedZ;
+}
+
+ ////////////
+ // others //
+////////////
+
void djui_hud_set_resolution(enum HudUtilsResolution resolutionType) {
if (resolutionType >= RESOLUTION_COUNT) { return; }
sResolution = resolutionType;
@@ -183,6 +246,28 @@ void djui_hud_render_texture(struct TextureInfo* texInfo, f32 x, f32 y, f32 scal
djui_hud_render_texture_raw(texInfo->texture, texInfo->bitSize, texInfo->width, texInfo->height, x, y, scaleW, scaleH);
}
+void djui_hud_render_texture_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH) {
+ Gfx* savedHeadPos = gDisplayListHead;
+ f32 savedZ = gDjuiHudUtilsZ;
+
+ djui_hud_render_texture_raw(texInfo->texture, texInfo->bitSize, texInfo->width, texInfo->height, prevX, prevY, prevScaleW, prevScaleH);
+
+ if (sInterpHudCount >= MAX_INTERP_HUD) { return; }
+ struct InterpHud* interp = &sInterpHuds[sInterpHudCount++];
+ interp->headPos = savedHeadPos;
+ interp->prevX = prevX;
+ interp->prevY = prevY;
+ interp->prevScaleW = prevScaleW;
+ interp->prevScaleH = prevScaleH;
+ interp->x = x;
+ interp->y = y;
+ interp->scaleW = scaleW;
+ interp->scaleH = scaleH;
+ interp->width = texInfo->width;
+ interp->height = texInfo->height;
+ interp->z = savedZ;
+}
+
void djui_hud_render_rect(f32 x, f32 y, f32 width, f32 height) {
gDjuiHudUtilsZ += 0.01f;
@@ -205,3 +290,51 @@ void djui_hud_render_rect(f32 x, f32 y, f32 width, f32 height) {
// pop
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
}
+
+void djui_hud_render_rect_interpolated(f32 prevX, f32 prevY, f32 prevWidth, f32 prevHeight, f32 x, f32 y, f32 width, f32 height) {
+ Gfx* savedHeadPos = gDisplayListHead;
+ f32 savedZ = gDjuiHudUtilsZ;
+
+ djui_hud_render_rect(prevX, prevY, prevWidth, prevHeight);
+
+ if (sInterpHudCount >= MAX_INTERP_HUD) { return; }
+ struct InterpHud* interp = &sInterpHuds[sInterpHudCount++];
+ interp->headPos = savedHeadPos;
+ interp->prevX = prevX;
+ interp->prevY = prevY;
+ interp->prevScaleW = prevWidth;
+ interp->prevScaleH = prevHeight;
+ interp->x = x;
+ interp->y = y;
+ interp->scaleW = width;
+ interp->scaleH = height;
+ interp->width = 1;
+ interp->height = 1;
+ interp->z = savedZ;
+}
+
+static void hud_rotate_and_translate_vec3f(Vec3f vec, Mat4* mtx, Vec3f out) {
+ out[0] = (*mtx)[0][0] * vec[0] + (*mtx)[1][0] * vec[1] + (*mtx)[2][0] * vec[2];
+ out[1] = (*mtx)[0][1] * vec[0] + (*mtx)[1][1] * vec[1] + (*mtx)[2][1] * vec[2];
+ out[2] = (*mtx)[0][2] * vec[0] + (*mtx)[1][2] * vec[1] + (*mtx)[2][2] * vec[2];
+ out[0] += (*mtx)[3][0];
+ out[1] += (*mtx)[3][1];
+ out[2] += (*mtx)[3][2];
+}
+
+void djui_hud_world_pos_to_screen_pos(Vec3f pos, Vec3f out) {
+ hud_rotate_and_translate_vec3f(pos, &gCamera->mtx, out);
+ if (out[2] > -256.0f) {
+ return;
+ }
+
+ out[0] *= 256.0 / -out[2];
+ out[1] *= 256.0 / out[2];
+
+ // TODO: this is a hack to correct for the FOV. It only sort of works for the default fov
+ out[0] *= 1.135;
+ out[1] *= 1.135;
+
+ out[0] += djui_hud_get_screen_width() / 2.0f;
+ out[1] += djui_hud_get_screen_height() / 2.0f;
+}
\ No newline at end of file
diff --git a/src/pc/djui/djui_hud_utils.h b/src/pc/djui/djui_hud_utils.h
index 3f30529c..8ae7b704 100644
--- a/src/pc/djui/djui_hud_utils.h
+++ b/src/pc/djui/djui_hud_utils.h
@@ -41,6 +41,10 @@ f32 djui_hud_measure_text(const char* message);
void djui_hud_print_text(const char* message, float x, float y, float scale);
void djui_hud_render_texture(struct TextureInfo* texInfo, f32 x, f32 y, f32 scaleW, f32 scaleH);
void djui_hud_render_texture_raw(const u8* texture, u32 bitSize, u32 width, u32 height, f32 x, f32 y, f32 scaleW, f32 scaleH);
+void djui_hud_render_texture_interpolated(struct TextureInfo* texInfo, f32 prevX, f32 prevY, f32 prevScaleW, f32 prevScaleH, f32 x, f32 y, f32 scaleW, f32 scaleH);
void djui_hud_render_rect(f32 x, f32 y, f32 width, f32 height);
+void djui_hud_render_rect_interpolated(f32 prevX, f32 prevY, f32 prevWidth, f32 prevHeight, f32 x, f32 y, f32 width, f32 height);
+
+void djui_hud_world_pos_to_screen_pos(Vec3f pos, Vec3f out);
#endif
\ No newline at end of file
diff --git a/src/pc/lua/smlua_functions.c b/src/pc/lua/smlua_functions.c
index e2c86b7a..c9a3f9da 100644
--- a/src/pc/lua/smlua_functions.c
+++ b/src/pc/lua/smlua_functions.c
@@ -271,6 +271,59 @@ int smlua_func_djui_hud_render_texture(lua_State* L) {
return 1;
}
+int smlua_func_djui_hud_render_texture_interpolated(lua_State* L) {
+ if(!smlua_functions_valid_param_count(L, 9)) { return 0; }
+
+ struct TextureInfo tmpTexInfo = { 0 };
+ struct TextureInfo* texInfo = &tmpTexInfo;
+
+ if (smlua_is_cobject(L, 1, LOT_TEXTUREINFO)) {
+ texInfo = (struct TextureInfo*)smlua_to_cobject(L, 1, LOT_TEXTUREINFO);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1"); return 0; }
+ } else {
+ int top = lua_gettop(L);
+ lua_pushvalue(L, 1);
+
+ lua_pushstring(L, "texture");
+ lua_gettable(L, top+1);
+ tmpTexInfo.texture = smlua_to_cpointer(L, lua_gettop(L), LVT_U8_P);
+ lua_pop(L, 1);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1's 'texture' field"); return 0; }
+
+ tmpTexInfo.bitSize = smlua_get_integer_field(top+1, "bitSize");
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1's 'bitSize' field"); return 0; }
+
+ tmpTexInfo.width = smlua_get_integer_field(top+1, "width");
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1's 'width' field"); return 0; }
+
+ tmpTexInfo.height = smlua_get_integer_field(top+1, "height");
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1's 'height' field"); return 0; }
+
+ lua_settop(L, top);
+ }
+
+ f32 prevX = smlua_to_number(L, 2);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 2"); return 0; }
+ f32 prevY = smlua_to_number(L, 3);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 3"); return 0; }
+ f32 prevScaleW = smlua_to_number(L, 4);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 4"); return 0; }
+ f32 prevScaleH = smlua_to_number(L, 5);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 5"); return 0; }
+ f32 x = smlua_to_number(L, 6);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 6"); return 0; }
+ f32 y = smlua_to_number(L, 7);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 7"); return 0; }
+ f32 scaleW = smlua_to_number(L, 8);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 8"); return 0; }
+ f32 scaleH = smlua_to_number(L, 9);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 9"); return 0; }
+
+ djui_hud_render_texture_interpolated(texInfo, prevX, prevY, prevScaleW, prevScaleH, x, y, scaleW, scaleH);
+
+ return 1;
+}
+
//////////
// bind //
//////////
@@ -290,4 +343,5 @@ void smlua_bind_functions(void) {
smlua_bind_function(L, "network_send_to", smlua_func_network_send_to);
smlua_bind_function(L, "get_texture_info", smlua_func_get_texture_info);
smlua_bind_function(L, "djui_hud_render_texture", smlua_func_djui_hud_render_texture);
+ smlua_bind_function(L, "djui_hud_render_texture_interpolated", smlua_func_djui_hud_render_texture_interpolated);
}
diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c
index 9dbb9882..8f0d8deb 100644
--- a/src/pc/lua/smlua_functions_autogen.c
+++ b/src/pc/lua/smlua_functions_autogen.c
@@ -7267,6 +7267,31 @@ int smlua_func_djui_hud_render_rect(lua_State* L) {
return 1;
}
+int smlua_func_djui_hud_render_rect_interpolated(lua_State* L) {
+ if(!smlua_functions_valid_param_count(L, 8)) { return 0; }
+
+ f32 prevX = smlua_to_number(L, 1);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1"); return 0; }
+ f32 prevY = smlua_to_number(L, 2);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 2"); return 0; }
+ f32 prevWidth = smlua_to_number(L, 3);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 3"); return 0; }
+ f32 prevHeight = smlua_to_number(L, 4);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 4"); return 0; }
+ f32 x = smlua_to_number(L, 5);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 5"); return 0; }
+ f32 y = smlua_to_number(L, 6);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 6"); return 0; }
+ f32 width = smlua_to_number(L, 7);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 7"); return 0; }
+ f32 height = smlua_to_number(L, 8);
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 8"); return 0; }
+
+ djui_hud_render_rect_interpolated(prevX, prevY, prevWidth, prevHeight, x, y, width, height);
+
+ return 1;
+}
+
int smlua_func_djui_hud_set_color(lua_State* L) {
if(!smlua_functions_valid_param_count(L, 4)) { return 0; }
@@ -7306,6 +7331,35 @@ int smlua_func_djui_hud_set_resolution(lua_State* L) {
return 1;
}
+int smlua_func_djui_hud_world_pos_to_screen_pos(lua_State* L) {
+ if(!smlua_functions_valid_param_count(L, 2)) { return 0; }
+
+
+ f32* pos = smlua_get_vec3f_from_buffer();
+ pos[0] = smlua_get_number_field(1, "x");
+ pos[1] = smlua_get_number_field(1, "y");
+ pos[2] = smlua_get_number_field(1, "z");
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 1"); return 0; }
+
+ f32* out = smlua_get_vec3f_from_buffer();
+ out[0] = smlua_get_number_field(2, "x");
+ out[1] = smlua_get_number_field(2, "y");
+ out[2] = smlua_get_number_field(2, "z");
+ if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter 2"); return 0; }
+
+ djui_hud_world_pos_to_screen_pos(pos, out);
+
+ smlua_push_number_field(1, "x", pos[0]);
+ smlua_push_number_field(1, "y", pos[1]);
+ smlua_push_number_field(1, "z", pos[2]);
+
+ smlua_push_number_field(2, "x", out[0]);
+ smlua_push_number_field(2, "y", out[1]);
+ smlua_push_number_field(2, "z", out[2]);
+
+ return 1;
+}
+
//////////////////
// djui_popup.h //
//////////////////
@@ -16807,9 +16861,11 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "djui_hud_measure_text", smlua_func_djui_hud_measure_text);
smlua_bind_function(L, "djui_hud_print_text", smlua_func_djui_hud_print_text);
smlua_bind_function(L, "djui_hud_render_rect", smlua_func_djui_hud_render_rect);
+ smlua_bind_function(L, "djui_hud_render_rect_interpolated", smlua_func_djui_hud_render_rect_interpolated);
smlua_bind_function(L, "djui_hud_set_color", smlua_func_djui_hud_set_color);
smlua_bind_function(L, "djui_hud_set_font", smlua_func_djui_hud_set_font);
smlua_bind_function(L, "djui_hud_set_resolution", smlua_func_djui_hud_set_resolution);
+ smlua_bind_function(L, "djui_hud_world_pos_to_screen_pos", smlua_func_djui_hud_world_pos_to_screen_pos);
// djui_popup.h
smlua_bind_function(L, "djui_popup_create", smlua_func_djui_popup_create);
diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c
index 9b58b305..42fb17c0 100644
--- a/src/pc/pc_main.c
+++ b/src/pc/pc_main.c
@@ -124,6 +124,7 @@ static void patch_interpolations_before(void) {
extern void patch_bubble_particles_before(void);
extern void patch_snow_particles_before(void);
extern void patch_djui_before(void);
+ extern void patch_djui_hud_before(void);
patch_mtx_before();
patch_screen_transition_before();
patch_title_screen_before();
@@ -133,6 +134,7 @@ static void patch_interpolations_before(void) {
patch_bubble_particles_before();
patch_snow_particles_before();
patch_djui_before();
+ patch_djui_hud_before();
}
static inline void patch_interpolations(f32 delta) {
@@ -145,6 +147,7 @@ static inline void patch_interpolations(f32 delta) {
extern void patch_bubble_particles_interpolated(f32 delta);
extern void patch_snow_particles_interpolated(f32 delta);
extern void patch_djui_interpolated(f32 delta);
+ extern void patch_djui_hud(f32 delta);
patch_mtx_interpolated(delta);
patch_screen_transition_interpolated(delta);
patch_title_screen_interpolated(delta);
@@ -154,6 +157,7 @@ static inline void patch_interpolations(f32 delta) {
patch_bubble_particles_interpolated(delta);
patch_snow_particles_interpolated(delta);
patch_djui_interpolated(delta);
+ patch_djui_hud(delta);
}
static void delay_frame(void) {