1
0
mirror of https://github.com/moparisthebest/minetest synced 2024-11-18 07:15:07 -05:00

Bugfix: make waypoints respect camera offset

This commit is contained in:
RealBadAngel 2014-05-05 07:45:20 +02:00 committed by RealBadAngel
parent 09e8bbea03
commit 6f511b1d05
3 changed files with 6 additions and 4 deletions

View File

@ -3594,7 +3594,7 @@ void the_game(bool &kill, bool random_input, InputHandler *input,
Draw lua hud items Draw lua hud items
*/ */
if (show_hud) if (show_hud)
hud.drawLuaElements(); hud.drawLuaElements(camera.getOffset());
/* /*
Draw gui Draw gui

View File

@ -46,7 +46,7 @@ Hud::Hud(video::IVideoDriver *driver, scene::ISceneManager* smgr,
this->gamedef = gamedef; this->gamedef = gamedef;
this->player = player; this->player = player;
this->inventory = inventory; this->inventory = inventory;
m_screensize = v2u32(0, 0); m_screensize = v2u32(0, 0);
m_displaycenter = v2s32(0, 0); m_displaycenter = v2s32(0, 0);
m_hotbar_imagesize = floor(HOTBAR_IMAGE_SIZE * porting::getDisplayDensity() + 0.5); 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++) { for (size_t i = 0; i != player->hud.size(); i++) {
HudElement *e = player->hud[i]; HudElement *e = player->hud[i];
if (!e) if (!e)
@ -277,6 +277,7 @@ void Hud::drawLuaElements() {
v3f w_pos = e->world_pos * BS; v3f w_pos = e->world_pos * BS;
float distance = floor(10 * p_pos.getDistanceFrom(e->world_pos)) / 10; float distance = floor(10 * p_pos.getDistanceFrom(e->world_pos)) / 10;
scene::ICameraSceneNode* camera = smgr->getActiveCamera(); scene::ICameraSceneNode* camera = smgr->getActiveCamera();
w_pos -= intToFloat(camera_offset, BS);
core::matrix4 trans = camera->getProjectionMatrix(); core::matrix4 trans = camera->getProjectionMatrix();
trans *= camera->getViewMatrix(); trans *= camera->getViewMatrix();
f32 transformed_pos[4] = { w_pos.X, w_pos.Y, w_pos.Z, 1.0f }; f32 transformed_pos[4] = { w_pos.X, w_pos.Y, w_pos.Z, 1.0f };

View File

@ -115,6 +115,7 @@ public:
bool use_hotbar_image; bool use_hotbar_image;
std::string hotbar_selected_image; std::string hotbar_selected_image;
bool use_hotbar_selected_image; bool use_hotbar_selected_image;
v3s16 camera_offset;
Hud(video::IVideoDriver *driver,scene::ISceneManager* smgr, Hud(video::IVideoDriver *driver,scene::ISceneManager* smgr,
gui::IGUIEnvironment* guienv, gui::IGUIFont *font, gui::IGUIEnvironment* guienv, gui::IGUIFont *font,
@ -125,7 +126,7 @@ public:
void resizeHotbar(); void resizeHotbar();
void drawCrosshair(); void drawCrosshair();
void drawSelectionBoxes(std::vector<aabb3f> &hilightboxes); void drawSelectionBoxes(std::vector<aabb3f> &hilightboxes);
void drawLuaElements(); void drawLuaElements(v3s16 camera_offset);
private: private:
void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, void drawStatbar(v2s32 pos, u16 corner, u16 drawdir,
std::string texture, s32 count, v2s32 offset); std::string texture, s32 count, v2s32 offset);