Make dragged itemstack following the mouse cursor much smoother
by using the cursor coordinates directly, instead of updating them only when a mouse event is seen.
This commit is contained in:
parent
6cf87e1d23
commit
c1d8eeb70a
|
@ -1513,7 +1513,7 @@ void the_game(
|
||||||
<<"Launching inventory"<<std::endl;
|
<<"Launching inventory"<<std::endl;
|
||||||
|
|
||||||
GUIFormSpecMenu *menu =
|
GUIFormSpecMenu *menu =
|
||||||
new GUIFormSpecMenu(guienv, guiroot, -1,
|
new GUIFormSpecMenu(device, guiroot, -1,
|
||||||
&g_menumgr,
|
&g_menumgr,
|
||||||
&client, gamedef);
|
&client, gamedef);
|
||||||
|
|
||||||
|
@ -2296,7 +2296,7 @@ void the_game(
|
||||||
/* Create menu */
|
/* Create menu */
|
||||||
|
|
||||||
GUIFormSpecMenu *menu =
|
GUIFormSpecMenu *menu =
|
||||||
new GUIFormSpecMenu(guienv, guiroot, -1,
|
new GUIFormSpecMenu(device, guiroot, -1,
|
||||||
&g_menumgr,
|
&g_menumgr,
|
||||||
&client, gamedef);
|
&client, gamedef);
|
||||||
menu->setFormSpec(meta->getString("formspec"),
|
menu->setFormSpec(meta->getString("formspec"),
|
||||||
|
|
|
@ -125,13 +125,14 @@ void drawItemStack(video::IVideoDriver *driver,
|
||||||
GUIFormSpecMenu
|
GUIFormSpecMenu
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GUIFormSpecMenu::GUIFormSpecMenu(gui::IGUIEnvironment* env,
|
GUIFormSpecMenu::GUIFormSpecMenu(irr::IrrlichtDevice* dev,
|
||||||
gui::IGUIElement* parent, s32 id,
|
gui::IGUIElement* parent, s32 id,
|
||||||
IMenuManager *menumgr,
|
IMenuManager *menumgr,
|
||||||
InventoryManager *invmgr,
|
InventoryManager *invmgr,
|
||||||
IGameDef *gamedef
|
IGameDef *gamedef
|
||||||
):
|
):
|
||||||
GUIModalMenu(env, parent, id, menumgr),
|
GUIModalMenu(dev->getGUIEnvironment(), parent, id, menumgr),
|
||||||
|
m_device(dev),
|
||||||
m_invmgr(invmgr),
|
m_invmgr(invmgr),
|
||||||
m_gamedef(gamedef),
|
m_gamedef(gamedef),
|
||||||
m_form_src(NULL),
|
m_form_src(NULL),
|
||||||
|
@ -698,6 +699,8 @@ void GUIFormSpecMenu::drawMenu()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_pointer = m_device->getCursorControl()->getPosition();
|
||||||
|
|
||||||
updateSelectedItem();
|
updateSelectedItem();
|
||||||
|
|
||||||
gui::IGUISkin* skin = Environment->getSkin();
|
gui::IGUISkin* skin = Environment->getSkin();
|
||||||
|
@ -937,24 +940,15 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(event.EventType==EET_MOUSE_INPUT_EVENT
|
|
||||||
&& event.MouseInput.Event == EMIE_MOUSE_MOVED)
|
|
||||||
{
|
|
||||||
// Mouse moved
|
|
||||||
m_pointer = v2s32(event.MouseInput.X, event.MouseInput.Y);
|
|
||||||
}
|
|
||||||
if(event.EventType==EET_MOUSE_INPUT_EVENT
|
if(event.EventType==EET_MOUSE_INPUT_EVENT
|
||||||
&& event.MouseInput.Event != EMIE_MOUSE_MOVED)
|
&& event.MouseInput.Event != EMIE_MOUSE_MOVED)
|
||||||
{
|
{
|
||||||
// Mouse event other than movement
|
// Mouse event other than movement
|
||||||
|
|
||||||
v2s32 p(event.MouseInput.X, event.MouseInput.Y);
|
|
||||||
m_pointer = p;
|
|
||||||
|
|
||||||
// Get selected item and hovered/clicked item (s)
|
// Get selected item and hovered/clicked item (s)
|
||||||
|
|
||||||
updateSelectedItem();
|
updateSelectedItem();
|
||||||
ItemSpec s = getItemAtPos(p);
|
ItemSpec s = getItemAtPos(m_pointer);
|
||||||
|
|
||||||
Inventory *inv_selected = NULL;
|
Inventory *inv_selected = NULL;
|
||||||
Inventory *inv_s = NULL;
|
Inventory *inv_s = NULL;
|
||||||
|
|
|
@ -144,7 +144,7 @@ class GUIFormSpecMenu : public GUIModalMenu
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GUIFormSpecMenu(gui::IGUIEnvironment* env,
|
GUIFormSpecMenu(irr::IrrlichtDevice* dev,
|
||||||
gui::IGUIElement* parent, s32 id,
|
gui::IGUIElement* parent, s32 id,
|
||||||
IMenuManager *menumgr,
|
IMenuManager *menumgr,
|
||||||
InventoryManager *invmgr,
|
InventoryManager *invmgr,
|
||||||
|
@ -197,6 +197,7 @@ protected:
|
||||||
v2s32 spacing;
|
v2s32 spacing;
|
||||||
v2s32 imgsize;
|
v2s32 imgsize;
|
||||||
|
|
||||||
|
irr::IrrlichtDevice* m_device;
|
||||||
InventoryManager *m_invmgr;
|
InventoryManager *m_invmgr;
|
||||||
IGameDef *m_gamedef;
|
IGameDef *m_gamedef;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue