Como copiar ou calcular novamente as definições de um b2World inteiro?

8

Estou trabalhando em um jogo de plataformas em que eu gostaria de poder mover ou copiar corpos entre vários Box2D b2Worlds. O desejo surgiu três vezes agora - mover objetos entre documentos no meu editor, mover o jogador entre os níveis no jogo normal e dar ao jogador uma prévia de um projétil não trivial que ele possa disparar no jogo, o que parece ser com mais precisão, simulando o mundo por alguns segundos à frente.

Ele parece que eu posso fazer um mundo paralelo ao "longo caminho" - para cada corpo no mundo, copiar parte de trás dados do corpo em um def e re-criá-lo, em seguida, copie a massa sobre ele, da mesma forma, em seguida, fazer o o mesmo para juntas; redefina todas as velocidades; e se for uma "mudança" em vez de uma "cópia", exclua a original.

Eu queria saber se alguém já escreveu esse código (e se sim, era realmente um design viável ou não?), Ou se o Box2D tem alguma possibilidade de fazer isso dentro de sua API que eu estou sentindo falta.


fonte
Edite sua postagem para ser uma pergunta.
topright
2
@Pavel Ele realmente faz uma pergunta, mesmo sem um ponto de interrogação.
Jesse Dorsey
Pelo menos para mim, não estava claro o que ele estava pedindo.
topright
"se alguém já escreveu esse código" Alguém pode responder "Sim" ao questionamento de Joe Wreschnig e será uma resposta legal. Mas suponho que ele não vai gostar disso.
topright
2
@ Pavel Sim, tenho certeza que ele esperava que alguém explicasse o que o tornava um design viável ou não, mesmo que ele não o pedisse explicitamente. Como resposta a "Sim", a votação seria mais provável. Além disso, ser mesquinho não ajuda ninguém.
Jesse Dorsey

Respostas:

1

Obrigado por me lembrar sobre isso.

A resposta é não, você não pode fazer isso no estoque Box2D . As juntas não têm acessadores suficientes para recuperar um JointDef correto. Você pode defender corpos simples, mas nada articulado, e os corpos simples geralmente são triviais o suficiente para que você não precise fazer uma cópia do mundo para prever seu movimento com precisão.


fonte