In my online undergraduate P5.js course, students are about to begin the module on motion and physics, including a bit of physics simulation using Matter.js. It suddenly occurred to me that I had never seen anybody put together this particular demo before, and I realized it had to be done. Messy source code at https://editor.p5js.org/isohedral/full/vJa5RiZWs.
@csk Register the mousemove handler on the window object, then you will get the events even when the mouse moves out of the window/frame while dragging.
@bloody_albatross If we're talking about improving the code, then I'd be more interested in the question of how to get a stable tower to stand up in a physics sim without bouncing all over the place and collapsing spontaneously. In this demo I use a cheap hack of freezing all the blocks until you actually click on one of them. Presumably it's really hard to get this working correctly (cc @topher_batty)
@csk @topher_batty I feel like that is basically what all games do anyway. Also saves CPU.
@bloody_albatross @csk Paul Kry even had a paper where they sort of generalize the freezing idea to merging together collections of rigid bodies whose relative motion is small enough. https://eulaliecoevoet.github.io/AdaptiveMerging/
Adaptive Merging for Rigid Body Simulation

With adaptive merging we reduce computation time in rigid body simulations.

AdaptiveMerging
@bloody_albatross @csk I'm not sure of the latest and greatest in academic rigid body stacking, but I've used Danny Kaufman's 2008 staggered projections scheme successfully for one paper: https://www.cs.ubc.ca/labs/sensorimotor/projects/sp_sigasia08/KSJP08.pdf Downside is you usually need to start bringing in better LCP or QP solvers.