mirror of
https://github.com/love2d/love.git
synced 2026-08-12 00:20:52 +02:00
Add 'inverseOf' to love.Transform.
This commit is contained in:
@@ -141,6 +141,17 @@ int w_Transform_inverse(lua_State *L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int w_Transform_inverseOf(lua_State *L)
|
||||
{
|
||||
Transform *destination = luax_checktransform(L, 1);
|
||||
Transform *source = luax_checktransform(L, 2);
|
||||
Transform *inverseSource = source->inverse();
|
||||
destination->setMatrix(inverseSource->getMatrix());
|
||||
inverseSource->release();
|
||||
lua_pushvalue(L, 1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int w_Transform_apply(lua_State *L)
|
||||
{
|
||||
Transform *t = luax_checktransform(L, 1);
|
||||
@@ -298,6 +309,7 @@ static const luaL_Reg functions[] =
|
||||
{
|
||||
{ "clone", w_Transform_clone },
|
||||
{ "inverse", w_Transform_inverse },
|
||||
{ "inverseOf", w_Transform_inverseOf },
|
||||
{ "apply", w_Transform_apply },
|
||||
{ "isAffine2DTransform", w_Transform_isAffine2DTransform },
|
||||
{ "translate", w_Transform_translate },
|
||||
|
||||
@@ -145,6 +145,16 @@ love.test.math.Transform = function(test)
|
||||
px, py = transform:transformPoint(0, 0)
|
||||
test:assertCoords({-px, -py}, {ipx, ipy}, 'check inverse points transform')
|
||||
|
||||
-- check inverse and inverseOf produce same values
|
||||
transform:reset()
|
||||
transform:setTransformation(4, 4, math.pi / 2, 2, 2)
|
||||
local inverseClone = transform:inverse()
|
||||
local inverseDestinationTransform = love.math.newTransform()
|
||||
inverseDestinationTransform:inverseOf(transform)
|
||||
local opx1, opy1 = inverseClone:transformPoint(0, 0)
|
||||
local opx2, opy2 = inverseDestinationTransform:transformPoint(0, 0)
|
||||
test:assertCoords({opx1, opy1}, {opx2, opy2}, 'check inverse and inverseOf produce same values')
|
||||
|
||||
-- check matrix manipulation
|
||||
transform:setTransformation(0, 0, 0, 1, 1, 0, 0, 0, 0)
|
||||
transform:translate(4, 4)
|
||||
|
||||
Reference in New Issue
Block a user