Ammo.js Typed
This project provides the Ammo.js modules with typescript definitions.
Installation
Use npm or yarn to install this version of ammojs from npm
$ npm install ammojs-typed
or from github
$ npm install github:giniedp/ammojs-typed
Usage
Ammo as window global
Configure your tsconfig.json
to lookup the ambient types
"typeRoots":
Then at some point require ammo.js (depends on your build chain)
require'ammojs-typed'
or reference the script
And use the global Ammo
object
Ammo.then
Ammo as es6 module import
You probably need to set the following compilerOptions
in tsconfig.json
"allowSyntheticDefaultImports": true, "esModuleInterop": true
Then import ammo like this
This works but be cautious here. The default import gives you the bootstrap function.
After bootstrapping the api is not available through the Ammo
symbol by default.
Ammo.then
You can work around that by booting like this
AmmoAmmo.then
Ammo as dynamic import
Enable same compilerOptions
as above
.thenModule.default // bootstrap ammo.js .then
Since typescript 3.8 you can use type only imports. So with dynamic imports you can safely import ammo.js types, without including them in you bundle like this
.thenModule.default // bootstrap ammo.js .then
Generate .d.ts files
Clone this repository and install node dependencies
git clone git@github.com:giniedp/ammojs-typed.git
cd ammojs-typed
npm install
Place the ammo.idl
and ammo.js
into the ./ammo
folder.
To download the latest version from the ammo.js repository run
$ npm run download
Make your adjustments to the IDL file if needed (see below) and run
$ npm run generate
This will parse the ./ammo/ammo.idl
and generate a ./ammo/ammo.d.ts
as well as ./ammo/ambient/ammo.d.ts
Manual IDL adjustments
The btVector4
implements the shape of btVector3
which causes a signature mismatch of the setValue
method which typescript complains about. Add the following to the btVector4
+void setValue(float x, float y, float z);
The btDbvtBroadphase
should derive from btBroadphaseInterface
-interface btDbvtBroadphase {+interface btDbvtBroadphase: btBroadphaseInterface {