This is a maintained fork of cannon.js, originally created by Stefan Hedman @schteppe.
It's a type-safe flatbundle (esm and cjs) which allows for tree shaking and usage in modern environments.
These minor changes and improvements were also made:
- These PRs from the original repo were merged: schteppe/cannon.js#433, schteppe/cannon.js#430, schteppe/cannon.js#418, schteppe/cannon.js#360, schteppe/cannon.js#265, schteppe/cannon.js#392, schteppe/cannon.js#424
- The
ConvexPolyhedron
constructor now accepts an object instead of a list of arguments. #6 - The
Cylinder
is now oriented on the Y axis. #30 - The
type
property of theCylinder
is now equal toShape.types.CYLINDER
. #59 Body.applyImpulse()
andBody.applyForce()
are now relative to the center of the body instead of the center of the world 86b0444- Sleeping bodies now wake up if a force or an impulse is applied to them #61
- Added a property
World.hasActiveBodies: boolean
which will be false when all physics bodies are sleeping. This allows for invalidating frames when physics aren't active for increased performance. - Add support for Trigger bodies. #83
- Deprecated properties and methods have been removed.
- The original cannon.js debugger, which shows the wireframes of each body, has been moved to its own repo cannon-es-debugger.
If instead you're using three.js in a React environment with react-three-fiber, check out use-cannon! It's a wrapper around cannon-es.
yarn add cannon-es
import { World } from 'cannon-es'
// ...
or, if you're using webpack, you can import it like this while still taking advantage of tree shaking:
import * as CANNON from 'cannon-es'
// ...
- Fix Octree
as any
assertions, and removeas any
type assertions wherever possible - Remove use of defined assertion (!) where possible (profile performance to ensure no degradation)
- Convert to abstract classes where possible (Equation, Solver, etc.?)
- V-HACD support (pmndrs/use-cannon#35 (comment))
- Explore performance enhancements: