Commit Graph

3759 Commits

Author SHA1 Message Date
Sasha Szpakowski ac9ae82524 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.
2023-10-07 15:17:24 -03:00
Sasha Szpakowski 2702004bb2 Add Body:getFixture.
Convenience method to get the first Fixture attached to the body.
2023-10-04 20:00:44 -03:00
Sasha Szpakowski 51b439822b Add convenience functions for creating a Body+Shape+Fixture all at once.
#1130.

- Add love.physics.newCircleBody(world, bodytype, x, y, radius)
- Add love.physics.newRectangleBody(world, bodytype, x, y, w, h [, angle])
- Add love.physics.newPolygonBody(world, bodytype, coords)
- Add love.physics.newEdgeBody(world, bodytype, x1, y1, x2, y2 [, onesided])
- Add love.physics.newChainBody(world, bodytype, loop, coords)

All new functions return a Body object. The body's world position is at the center of the given coordinates, and the shape's local origin is at its center.
2023-10-04 19:56:22 -03:00
Sasha Szpakowski 03b6b9ff13 Fix return value counts... 2023-10-02 14:08:21 -03:00
Sasha Szpakowski da430d5145 World:rayCastAny and rayCastClosest also return the fixture they hit. 2023-10-02 14:05:54 -03:00
Sasha Szpakowski 6cb0287500 Add optional category bit mask to World:getFixturesInArea. 2023-10-02 12:15:26 -03:00
Sasha Szpakowski 28a898df1f Add World:rayCastAny and World:rayCastClosest.
They return hit position, normal, and ray fraction (if there is a hit), and also take an optional fixture category bitmask parameter.
2023-10-02 12:11:35 -03:00
Sasha Szpakowski c3847d5f04 Rename World:queryBoundingBox to World:queryFixturesInArea.
Matches the new World:getFixturesInArea function.
2023-10-02 11:06:15 -03:00
Sasha Szpakowski d24ccde864 World:rayCast and World:queryBoundingBox have user args passed through to the callback function.
Fixes #1194
2023-10-02 11:00:02 -03:00
Sasha Szpakowski b1609ed83b love.physics: simplify some internal bookkeeping code 2023-10-01 15:55:23 -03:00
Sasha Szpakowski dbc7d7f3ca Add love.graphics.newMesh variant to create a Mesh from existing Buffers.
This allows a Mesh to be created that doesn't have its own internal vertex buffer and purely references other vertex buffers instead.

The prototype looks like this:
mesh = love.graphics.newMesh(attributelist, drawmode)

where attributelist is an array of tables each with the following fields, similar to Mesh:attachAttribute:
{
    buffer = vertexbuffer,
    name = "VertexPosition", -- the name this vertex attribute will use in a shader
    nameinbuffer = nil, -- the name of the attribute in the vertex buffer. Defaults to the name field.
    step = nil, -- vertex attribute step ("pervertex" or "perinstance"), defaults to "pervertex".
    startindex = nil, -- 1-based array index within the given vertex buffer where the attribute data will start being pulled from during rendering. Defaults to 1.
}
2023-09-30 20:12:43 -03:00
Sasha Szpakowski 691d910c3e Improve error message when Mesh:setVertexMap is used with an empty array. 2023-09-30 17:54:09 -03:00
Sasha Szpakowski 96040b2b2a Fix list of data types in the error message when using an invalid vertex data type in the deprecated type+component count vertex format declaration. 2023-09-09 13:22:45 -03:00
Sasha Szpakowski 48e23a048d Improve text wrapping when multiple characters are combined into one glyph.
#1923
2023-09-08 22:38:17 -03:00
Sasha Szpakowski b0e3246ba8 Fix the Data object variant of File:write.
Fixes #1962
2023-08-21 16:50:28 -03:00
Sasha Szpakowski 6e80d85110 Merge branch 'main' into 12.0-development 2023-08-19 21:35:55 -03:00
Sasha Szpakowski 98663ec0db Merge pull request #1958 from nikeinikei/12.0-development
vk: maintenance
2023-08-07 21:08:51 -03:00
Miku AuahDark 8913ca2b23 Fix wrong function being registered for Joystick:getSensorData(). 2023-08-04 21:43:36 +08:00
niki 61cafd7dd4 adjust code styling 2023-08-01 14:23:10 +02:00
niki 8096cab5bc vulkan: use vkResetDescriptorPool 2023-07-30 15:35:20 +02:00
niki 9d9e2da763 vulkan: optimize vkUpdateDescriptorSets calls 2023-07-25 21:39:28 +02:00
niki af717c8cab vulkan: fix incorrect return type 2023-07-25 16:50:39 +02:00
niki f30bf9bee0 vulkan: better api use of descriptor pools
Some implementations allow for bottomless pools,
which never run out of pool memory.
This new implementation allows for this case to happen.
2023-07-25 16:37:53 +02:00
niki e08ade86b5 vulkan: simplify shader code slightly 2023-07-25 16:26:26 +02:00
Sasha Szpakowski 7706ac7ba9 iOS: don't try to open audio recording devices for capture.
It hard-crashes inside the alcCaptureOpenDevice call with Apple's OpenAL implementation.
See #1912.
2023-07-22 18:04:12 -03:00
niki 3b9476b5dd vulkan: fix validation warnings
Sometimes no buffer for tex coords are given, however the shader
still expects some. We can fix this by using a default buffer, which
contains the constant tex coords (0, 0), which is then bound instead.
2023-07-18 14:56:42 +02:00
niki ba15a2ab05 vulkan: correct usage of pNext chain for device
For systems where VK_EXT_extended_dynamic_state is not supported
it is not valid to extend VkDeviceCreateInfo with an unknown struct.
Todo: if more extensions are supported in the future this code probably
needs adjustments to correctly build a pNext chain.
2023-07-18 14:01:05 +02:00
niki 04de1ade9e vulkan: correctly deal with custom input attribs 2023-07-18 13:54:48 +02:00
niki 5254417c63 vulkan: remove unnecessary vkDeviceWaitIdle
Since we are only cleaning up objects that haven't been used in the
last 5000 frames, we do not need to wait to delete them.
2023-07-18 13:54:27 +02:00
niki 332b456131 vulkan: remove getDefaultTexture 2023-07-18 13:54:06 +02:00
niki 8b419522d7 vulkan: simplify code slightly 2023-07-18 13:53:25 +02:00
niki 37013267f7 vulkan: improve readability / maintainability 2023-07-18 13:52:26 +02:00
niki 284a385062 support more swapchain image formats 2023-07-18 13:52:13 +02:00
Sasha Szpakowski e582677344 Fix mouse position backward compatibility with new SDL2 versions.
Clamp the mouse coordinates to the window's dimensions.
2023-07-01 17:53:29 -03:00
Sasha Szpakowski 6563aec89d Merge pull request #1944 from MellowArpeggiation/main
Fix #1943 - Duplicate frames being skipped when decoding Theora
2023-06-18 12:56:07 -03:00
Sasha Szpakowski 5f4f0b424b love.joystick: more fixes for duplicate platform fields in gamepad mapping strings. 2023-06-18 11:54:17 -03:00
George Paton 241378e437 Revert to old packetin loop, set granulePosition after each packet read in 2023-06-18 12:39:56 +10:00
Sasha Szpakowski df7a55911d Fix love.joystick.setGamepadMapping breaking the mapping string when replacing an existing binding.
issue #1936.
2023-06-17 22:16:18 -03:00
Sasha Szpakowski f06d6c6281 Only add platform field to love.joystick.getGamepadMappingString's result if it's not there already. 2023-06-17 20:34:27 -03:00
George Paton ec0c65642b Fix #1943 duplicate frames being skipped when decoding Theora 2023-06-15 19:22:57 +10:00
Miku AuahDark d28b30736f Improve MP3 detection slightly more.
Looking too much result in increase of false-positive and vice-versa. So only look first 128 bytes of the file (after the ID3 tags). Also reject known audio file signature such as WAV, Ogg (Theora/Vorbis), and FLAC.

Fixes #1939
2023-06-06 14:36:35 +08:00
Sasha Szpakowski 8efcf27a6e Fix RTL text when fallback fonts are used.
Fixes #1937.
2023-06-03 18:08:22 -03:00
Miku AuahDark e559fd5e68 Pass pointer of PHYSFS_AndroidInit struct in Android when initializing PhysFS. 2023-06-01 15:33:04 +08:00
Miku AuahDark e9c564e989 Use new PhysfsIo class for Android AAsset wrapper. 2023-06-01 15:10:43 +08:00
Sasha Szpakowski 93c2709f7c Maybe fix build when VS2013 is used 2023-05-29 10:29:46 -03:00
Sasha Szpakowski 63f0af8971 Merge pull request #1935 from ImagicTheCat/hash-func-fix
Hash function fixes.
2023-05-29 09:47:44 -03:00
Sasha Szpakowski 6cc188b8ba Merge pull request #1930 from pfirsich/physfs_skip_codesign
Add PHYSFS_Io StripSuffixIo to skip codesign signatures
2023-05-29 09:42:25 -03:00
Sasha Szpakowski 48326a026d Fix t.window.displayindex in love.conf.
Fixes #1934
2023-05-28 15:14:45 -03:00
Sasha Szpakowski a161207f02 update PhysFS to 3.2.0.
Fixes #1880.
2023-05-28 12:30:32 -03:00
ImagicTheCat 22e68868e1 Fix/improve SHA-384/512 hashing. 2023-05-24 16:29:23 +02:00