Commit Graph

532 Commits

Author SHA1 Message Date
rdb 6e168c2bc4 collide: Implement respect-prev-transform for capsule-into-poly
It's not perfect by any means, but it's better than nothing, and should prevent capsules from flying through walls.
2021-01-12 15:55:10 +01:00
rdb 3f08781eac collide: Improve box-into-polygon test
* Use nearly-zero test to check which edges to snap the interior/surface points to, if any, to be less sensitive to fp precision
* The respect-prev-transform test now tests for a sphere that fits inside the box, to prevent a false positive test when the box has been rotated since the last test
* More appropriate surface point for respect-prev-transform test
2021-01-12 14:59:31 +01:00
rdb 1b7f3e4bbd collide: Fix pusher if interior and surface point don't lie along normal
Currently, all tests I'm aware of put the surface point above the interior point (ie. along the normal), but there seems to be no good reason for this requirement, especially since a dot product is more efficient than a length().
2021-01-12 14:51:42 +01:00
rdb 84034f06f5 collide: Respect prev transform in box-into-poly test
Only takes changes in position in account, and the test is not entirely perfect, but mostly right
2021-01-11 19:06:24 +01:00
rdb ea2816f4ea CMake: Add extension sources for egg and collide directories 2021-01-02 03:11:34 +01:00
rdb f003e3434e collide: Use virtual read_datagram/write_datagram on handlers 2021-01-02 02:40:52 +01:00
rdb e099d9e787 Merge branch 'release/1.10.x' 2021-01-02 02:33:35 +01:00
rdb f8ce339960 collide: Add pickle support for most collision handlers
Also redo CollisionHandlerEvent pickling to use Datagram instead

Related to #1090
2021-01-01 16:56:18 +01:00
rdb 8852c835fc collide: Support pickling for CollisionTraverser, HandlerEvent+Queue
Fixes #1090
2020-12-31 16:57:34 +01:00
rdb ac991e4c5e collide: Fix error with CollisionHandler's again_patterns property 2020-12-31 16:55:22 +01:00
rdb 454179a276 collide: Fix typo in STDFLOAT_DOUBLE case 2020-12-14 11:00:49 +01:00
rdb 9f09857397 collide: Error checking for CollisionPolygon::setup/verify_points() 2020-12-12 17:28:41 +01:00
Daniel ac6a1a7874 collide: Expose CollisionPolygon's setup_points and verify_points to Python
Closes #1035
2020-11-22 22:01:07 +01:00
rdb d62146a317 Merge branch 'release/1.10.x' 2020-11-17 23:56:00 +01:00
rdb 8c3fd5b406 collide: Release GIL while during CollisionTraverser traversal
This is necessary to prevent deadlocking on the GIL if some Python code is trying to write some geometry while the CollisionTraverser is trying to read it.

Fixes #1033
2020-11-02 12:18:22 +01:00
rdb dcc08ac572 Merge branch 'release/1.10.x' 2020-07-25 14:58:35 +02:00
rdb 3fe1d286d0 collide: Add docstring for CollisionTraverser::traverse() 2020-07-25 12:50:09 +02:00
rdb d01c53c2d8 Merge branch 'release/1.10.x' 2020-06-14 13:02:25 +02:00
rdb 26ba2b15cd collide: unexpose verify_points overload taking LPoint3 array
Similar as in #908
2020-05-11 09:09:00 +02:00
rdb 9ad4e4586c collide: Use correct intersection point for sphere into poly
Previously, the reported surface and intersection points could be outside the polygon if the sphere was colliding with the edge.

Fixes #907
2020-05-05 16:52:21 +02:00
rdb 3598222977 Merge branch 'release/1.10.x' 2020-05-05 16:47:38 +02:00
rdb ed73394275 collide: fix erroneous collision if sphere is under edge of polygon
Reproducible by the code in #907, occurs if the sphere is close to the edge, but its center is off and under the polygon.
2020-05-05 16:33:20 +02:00
rdb 2ed4516cb2 collide: Unexpose CollisionPolygon constructor taking point array
This could never work in Python, and does indeed cause a crash, so I don't consider this compat-breaking.

Fixes #908
2020-05-05 14:51:31 +02:00
rdb 94571aac93 collide: improve performance of colliding with visible geometry 2020-04-01 20:31:19 +02:00
rdb c185de3018 Merge branch 'release/1.10.x' 2020-03-19 20:20:25 +01:00
rdb b549133b3e collide: protect info print with is_info() check
This prevents an unnecessary sqrt
2020-03-16 14:55:42 +01:00
rdb 515ce931b9 Merge branch 'release/1.10.x' 2020-03-08 10:37:05 +01:00
rdb e8d8f20acb collide: fix pusher convex angle detection for visible geometry
Previously it was only working for CollisionPolygon.

Fixes #879
2020-03-08 10:30:04 +01:00
Sam Edwards 9b7bcf2564 Merge branch 'master' into cmake 2019-11-07 21:21:04 -07:00
rdb 9a7e103c33 collide: restore missing CollisionTraverser.showCollisions()
This was an accidental regression in e48a40abad which unexposed CollisionVisualizer and therefore caused this method to no longer be wrapped by Interrogate.
2019-11-02 20:43:21 +01:00
Sam Edwards 12c16eb9ff Merge branch 'master' into cmake 2019-10-15 23:43:25 -06:00
rdb e48a40abad collide: unexpose CollisionVisualizer
The fact that this class only exists in opt3 builds makes it hard to offer ABI compatibility guarantees with opt4 builds; most users probably use this thorugh the high-level interface, so let's unexpose this until someone complains.
2019-10-08 19:51:24 +02:00
rdb 247f3c415a Merge branch 'release/1.10.x' 2019-10-08 19:50:48 +02:00
rdb 08572f3c38 general: Fix a variety of ABI incompatibility issues with opt4 builds 2019-10-08 19:44:29 +02:00
Sam Edwards 5961cc2ee0 Merge branch 'master' into cmake 2019-10-05 15:00:49 -06:00
rdb 2c42cfcc1a Merge branch 'release/1.10.x' 2019-09-10 16:34:11 +02:00
rdb 05ed918d63 general: mark deprecated methods with the @deprecated tag
This makes them easier to find and, if necessary, automatically generate deprecation warnings for.
2019-09-08 09:50:28 +02:00
Sam Edwards 5fa4af9189 CMake: Rely on GNUInstallDirs to specify install paths
This makes multiarch OSes happy as they can dictate that
64-bit libraries go into 'lib64'
2019-08-31 00:48:42 -06:00
Sam Edwards 1a654cba04 CMake: Record the location that headers are installed
This populates INTERFACE_INCLUDE_DIRECTORIES on the targets
after they're installed.
2019-08-30 22:58:18 -06:00
Sam Edwards 19ed9f6b47 Merge branch 'master' into cmake 2019-08-24 18:07:12 -06:00
Sam Edwards abc941245e general: Fix missing includes (and one forward declaration) 2019-08-24 18:05:28 -06:00
hecris 674c9fdee9 collide: implement box into capsule
Closes #675
2019-08-02 19:14:58 +02:00
hecris 563ff75c2f collide: implement check from parabola into inverse sphere 2019-06-20 19:33:42 +02:00
hecris 47f39809ee collide: add collision test for parabola into box
Closes #664
2019-06-07 22:21:27 +02:00
Sam Edwards 039f5af34e Merge branch 'master' into cmake 2019-06-03 23:12:23 -06:00
rdb 226d888ef4 collide: remove doubly defined property due to faulty merge 2019-05-03 18:02:45 +02:00
rdb 0ac36185a9 Merge branch 'release/1.10.x' 2019-05-02 21:34:25 +02:00
rdb d9d30cdfd2 collide: compat for typo'ed respect_prev_transform property in 1.10 2019-04-29 22:29:36 +02:00
rdb 269d3db290 collide: fix typo in respect_prev_transform property 2019-04-29 18:09:19 +02:00
Sam Edwards 6097d34ead CMake: Neatly format everything for readability and consistency 2019-04-14 22:37:18 -06:00