Remove unnecessary function (#659)
SetUserData is no longer needed since a non-const reference is provided by GetUserData.
Switch from travis to Github Actions for CI and testing
Making hull builder more robust (#735)
nitially I tried to make gift wrapping handle collinear points better. Conclusion: gift wrapping is a bad algorithm. So I removed gift wrapping and implemented quickhull. I also added code to explicitly remove collinear points. This turns out to be quite easy once you have a convex hull. I ran over 200 million randomized tests successfully with test data that is very likely to have collinear points with small numerical deviations. All the tests passed and algorithm correctly rejects very close points and fully collinear points. I also tested performance at around 150 milliseconds per million hulls. I split out the convex hull code into a separate function b2ComputeHull. This lets people build hulls offline and check for hull validity before using them in b2PolygonShape. This video is a good reference for the 2D quickhull algorithm (my implementation is different): https://www.youtube.com/watch?v=2EKIZrimeuk Fixes: #671 #728
This code is migrated from https://github.com/erincatto/box2c - readme - build scripts - maximum linear velocity in world def, fast rotation in body def
Fix null being passed to memcpy (#770)
Joints were incorrectly using the body bit-set for the overflow color Sensor shapes now always generate events when created
- hand written SSE2, Neon, and scalar SIMD - improved performance of SSE2 (x64) and Neon (ARM) - removed SIMDE library - SSE2 is the default on x64
Cross platform determinism (#773)
Cross platform determinism by implementing custom trigonometry functions 64-bit filter category and mask Fixed island bug Added `b2DefaultDebugDraw()`
Fixes #774 and more. Added Intel N100 benchmarks.
Cross platform random numbers for samples (#785)
Don't using the standard library `rand()`. This way all samples should be cross platform deterministic. Simplified clang compile options for determinism. b2Shape_RayCast now uses b2RayCastInput.
Internal arrays using macro generated functions instead of stretchy buffers. Added `b2Body_GetWorld` Added `b2CosSin` and `b2ComputeCosSin`
Wrote a custom capsule versus capsule collider which is more robust than treating capsules as two face polygons.
set weld joint reference angle fixed some angle wrapping bugs
Friction and restitution mixing rules (#811)
get/set max linear velocity
- optimized ray and shape cast : 2x faster - update mass options instead of automatic mass - fixes for 32-bit Windows build - b2TreeStats for measuring query performance - reduced tree node size from 48-bytes to 40-bytes - fixes for 32-bit Neon - MSVC warning level 4 and fixes #814, #815, #813, #809
Fixed bug with static shape recreation (#822)
Added translation and speed functions for prismatic joint. Fix missing sensor end touch event for fast moving shapes. Null joint to disable collision between two specific bodies. World user data. More consistent functions to make polygons. Save and load uint64 from ids.
Sensor and contact end touch events are now generated whenever a contact is destroyed via user operations, such as: - destroying a body or shape - changing filters - changing body type - disabling a body - connecting bodies via joints Enable hot reloading on MSVC.
It turns out emscripten compiles fine on WSL. Added benchmark for ragdolls. Created shared library for code shared by samples, benchmarks, and unit tests. Now samples and benchmarks can run off the same code. Fix solver set leak (thanks Melvyn) Pinned imgui and glfw versions