love.physics: simplify Body and Shape API.

#1130

- Shapes are now directly attached to Bodies when they're created (similar to love 0.7 and older).
- Fixtures are removed.
- All methods that were in Fixtures now exist in Shapes.
- All APIs that used or returned a Fixture now do the same with a Shape.

- Add new love.physics.new*Shape variants that take a Body as the first parameter.
- Deprecate the new*Shape APIs that don't take a Body.
- Deprecate love.physics.newFixture (the deprecated function now returns a Shape).
- Replace Body:getFixture and Body:getFixtures with Body:getShape and Body:getShapes (Body:getFixtures is deprecated).
- Replace World:queryFixturesInArea and World:getFixturesInArea with World:queryShapesInArea and World:getShapesInArea (queryFixturesInArea is deprecated).
- Replace Contact:getFixtures with Contact:getShapes (Contact:getFixtures is deprecated).
- Replace all love.physics callback Fixture parameters with Shape parameters.
- Deprecate ChainShape:getChildEdge.
This commit is contained in:
Sasha Szpakowski
2023-10-07 15:17:24 -03:00
parent 2702004bb2
commit ac9ae82524
35 changed files with 1137 additions and 1236 deletions
@@ -36,13 +36,17 @@ int w_PolygonShape_getPoints(lua_State *L)
{
PolygonShape *t = luax_checkpolygonshape(L, 1);
lua_remove(L, 1);
return t->getPoints(L);
int ret = 0;
luax_catchexcept(L, [&]() { ret = t->getPoints(L); });
return ret;
}
int w_PolygonShape_validate(lua_State *L)
{
PolygonShape *t = luax_checkpolygonshape(L, 1);
luax_pushboolean(L, t->validate());
bool valid = false;
luax_catchexcept(L, [&]() { valid = t->validate(); });
luax_pushboolean(L, valid);
return 1;
}