mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 01:53:45 +01:00
Fix missing item images clipping in formspecs (#8652)
* Fix clipping of itemimage * Code style * More code styling
This commit is contained in:
parent
a8446d29e8
commit
c3daf2a8be
@ -649,10 +649,31 @@ void drawItemStack(video::IVideoDriver *driver,
|
||||
core::rect<s32> oldViewPort = driver->getViewPort();
|
||||
core::matrix4 oldProjMat = driver->getTransform(video::ETS_PROJECTION);
|
||||
core::matrix4 oldViewMat = driver->getTransform(video::ETS_VIEW);
|
||||
core::rect<s32> viewrect = rect;
|
||||
if (clip)
|
||||
viewrect.clipAgainst(*clip);
|
||||
|
||||
core::matrix4 ProjMatrix;
|
||||
ProjMatrix.buildProjectionMatrixOrthoLH(2, 2, -1, 100);
|
||||
ProjMatrix.buildProjectionMatrixOrthoLH(2.0f, 2.0f, -1.0f, 100.0f);
|
||||
|
||||
core::matrix4 ViewMatrix;
|
||||
ViewMatrix.buildProjectionMatrixOrthoLH(
|
||||
2.0f * viewrect.getWidth() / rect.getWidth(),
|
||||
2.0f * viewrect.getHeight() / rect.getHeight(),
|
||||
-1.0f,
|
||||
100.0f);
|
||||
ViewMatrix.setTranslation(core::vector3df(
|
||||
1.0f * (rect.LowerRightCorner.X + rect.UpperLeftCorner.X -
|
||||
viewrect.LowerRightCorner.X - viewrect.UpperLeftCorner.X) /
|
||||
viewrect.getWidth(),
|
||||
1.0f * (viewrect.LowerRightCorner.Y + viewrect.UpperLeftCorner.Y -
|
||||
rect.LowerRightCorner.Y - rect.UpperLeftCorner.Y) /
|
||||
viewrect.getHeight(),
|
||||
0.0f));
|
||||
|
||||
driver->setTransform(video::ETS_PROJECTION, ProjMatrix);
|
||||
driver->setTransform(video::ETS_VIEW, ProjMatrix);
|
||||
driver->setTransform(video::ETS_VIEW, ViewMatrix);
|
||||
|
||||
core::matrix4 matrix;
|
||||
matrix.makeIdentity();
|
||||
|
||||
@ -662,7 +683,7 @@ void drawItemStack(video::IVideoDriver *driver,
|
||||
}
|
||||
|
||||
driver->setTransform(video::ETS_WORLD, matrix);
|
||||
driver->setViewPort(rect);
|
||||
driver->setViewPort(viewrect);
|
||||
|
||||
video::SColor basecolor =
|
||||
client->idef()->getItemstackColor(item, client);
|
||||
|
Loading…
Reference in New Issue
Block a user