Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm working on a platformer where I'd like to be able to move or copy bodies between multiple Box2D b2Worlds. The desire has cropped up three times now - moving objects between documents in my editor, moving the player between levels in normal game play, and giving the player a preview of a non-trivial projectile they can shoot in the game, which seems to be most accurately done by simulating the world for a few seconds ahead.

It looks like I can make a parallel world the "long way" - for each body in the world, copy the body data back into a def and re-create it, then copy the fixtures on it in the same way, then do the same for joints; re-set all the velocities; and if it's a "move" rather than a "copy" delete the original one.

I was wondering if someone has already written this code (and if so, was it actually a workable design or not?), or if Box2D has some affordance for doing this within its API which I am missing.

share|improve this question
Please edit your posting to be a question. – topright Sep 28 '10 at 18:08
@Pavel He actually does ask a question even though he is lacking a question mark. – Noctrine Sep 28 '10 at 19:52
At least to me it wasn't clear what he was asking for. – topright Sep 28 '10 at 20:05
"if someone has already written this code" Someone can answer "Yes" to the wondering of Joe Wreschnig and it will be legal answer. But I suppose he doesn't going to appreciated that. – topright Sep 28 '10 at 20:09
@Pavel Yes, I am sure he expected someone to explain what made it a workable design or not even if he didn't ask for it explicitly. As an answer of "Yes" would be downvoted more than likely. Also, being petty helps no one. – Noctrine Sep 28 '10 at 21:20
up vote 1 down vote accepted

Thanks for reminding me about this.

The answer, is no, you can't do this in stock Box2D. Joints don't have enough accessors to get back a correct JointDef. You can back-def-ify simple bodies, but nothing jointed, and the simple bodies are usually trivial enough you wouldn't need to do a copy of the world to predict their motion accurately anyway.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.