diff --git a/src/game.cpp b/src/game.cpp index 51e97d61..a9ca38d1 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -3594,7 +3594,7 @@ void the_game(bool &kill, bool random_input, InputHandler *input, Draw lua hud items */ if (show_hud) - hud.drawLuaElements(); + hud.drawLuaElements(camera.getOffset()); /* Draw gui diff --git a/src/hud.cpp b/src/hud.cpp index bbec4489..c385211f 100644 --- a/src/hud.cpp +++ b/src/hud.cpp @@ -46,7 +46,7 @@ Hud::Hud(video::IVideoDriver *driver, scene::ISceneManager* smgr, this->gamedef = gamedef; this->player = player; this->inventory = inventory; - + m_screensize = v2u32(0, 0); m_displaycenter = v2s32(0, 0); m_hotbar_imagesize = floor(HOTBAR_IMAGE_SIZE * porting::getDisplayDensity() + 0.5); @@ -222,7 +222,7 @@ void Hud::drawItems(v2s32 upperleftpos, s32 itemcount, s32 offset, } -void Hud::drawLuaElements() { +void Hud::drawLuaElements(v3s16 camera_offset) { for (size_t i = 0; i != player->hud.size(); i++) { HudElement *e = player->hud[i]; if (!e) @@ -277,6 +277,7 @@ void Hud::drawLuaElements() { v3f w_pos = e->world_pos * BS; float distance = floor(10 * p_pos.getDistanceFrom(e->world_pos)) / 10; scene::ICameraSceneNode* camera = smgr->getActiveCamera(); + w_pos -= intToFloat(camera_offset, BS); core::matrix4 trans = camera->getProjectionMatrix(); trans *= camera->getViewMatrix(); f32 transformed_pos[4] = { w_pos.X, w_pos.Y, w_pos.Z, 1.0f }; diff --git a/src/hud.h b/src/hud.h index 3897a850..1ace6646 100644 --- a/src/hud.h +++ b/src/hud.h @@ -115,6 +115,7 @@ public: bool use_hotbar_image; std::string hotbar_selected_image; bool use_hotbar_selected_image; + v3s16 camera_offset; Hud(video::IVideoDriver *driver,scene::ISceneManager* smgr, gui::IGUIEnvironment* guienv, gui::IGUIFont *font, @@ -125,7 +126,7 @@ public: void resizeHotbar(); void drawCrosshair(); void drawSelectionBoxes(std::vector &hilightboxes); - void drawLuaElements(); + void drawLuaElements(v3s16 camera_offset); private: void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, std::string texture, s32 count, v2s32 offset);