AmmoJS integration issues (engine only)

I pulled in the latest version of ammo.js from github and built playcanvas from master, and am getting the following error in the console upon having them both in the same HTML file:

Uncaught TypeError: Ammo.btDefaultCollisionConfiguration is not a constructor
    at c.onLibraryLoaded (playcanvas-latest.js:999)
    at d.onLibrariesLoaded (playcanvas-latest.js:829)
    at d.start (playcanvas-latest.js:820)
    at InfernoLoader.Inferno.self.start [as onloaded] (game.js:44)
    at InfernoMap.InfernoLoader.self._load_next [as _loading_done_callback] (loader.js:34)
    at InfernoMap.self._on_asset_load (map.js:125)
    at b.<anonymous> (playcanvas-latest.js:1190)
    at b.fire (playcanvas-latest.js:23)
    at Array.<anonymous> (playcanvas-latest.js:1188)
    at d.<anonymous> (playcanvas-latest.js:1133)

Obviously, some of that traceback is my own code (pretty much anything with Inferno in it). It seems the issue only arrives when you add an object. (Even though no objects add a physics component yet)

When I look at the engine-only example, I notice it pulls down:
http://code.playcanvas.com/ammo.751ec5f.js
Which is (amongst other things) much smaller than ammo.js, and lo and behold, when I replace amo.js with that file, it co-operates with playcanvas!

So what is this magic ‘751ec5f’ (other than a commit hash), and where do I get/how do I build one?

I made a (currently pending) pull request to PlayCanvas explaining and solving this problem.

1 Like