Wie kann ich Definitionen für eine gesamte b2World kopieren oder zurückrechnen?

8

Ich arbeite an einem Plattformer, bei dem ich Körper zwischen mehreren Box2D b2Worlds verschieben oder kopieren möchte. Der Wunsch ist jetzt dreimal aufgetaucht - Objekte zwischen Dokumenten in meinem Editor zu bewegen, den Spieler zwischen Ebenen im normalen Spielverlauf zu bewegen und dem Spieler eine Vorschau auf ein nicht triviales Projektil zu geben, das er im Spiel abschießen kann, was zu sein scheint am genauesten, indem man die Welt für ein paar Sekunden voraus simuliert.

Es sieht so aus, als könnte ich eine Parallelwelt zum "langen Weg" machen - für jeden Körper auf der Welt kopieren Sie die Körperdaten zurück in ein Def und erstellen Sie sie neu, kopieren Sie dann die Fixtures auf die gleiche Weise und machen Sie dann das Gleiches gilt für Gelenke. alle Geschwindigkeiten zurücksetzen; und wenn es sich eher um einen "Umzug" als um eine "Kopie" handelt, löschen Sie den Original.

Ich habe mich gefragt, ob jemand diesen Code bereits geschrieben hat (und wenn ja, war es tatsächlich ein praktikables Design oder nicht?), Oder ob Box2D einen Vorteil dafür hat, dies innerhalb seiner API zu tun, die mir fehlt.


quelle
Bitte bearbeiten Sie Ihren Beitrag als Frage.
topright
2
@Pavel Er stellt tatsächlich eine Frage, obwohl ihm ein Fragezeichen fehlt.
Jesse Dorsey
Zumindest für mich war nicht klar, wonach er fragte.
topright
"Wenn jemand diesen Code bereits geschrieben hat" Jemand kann auf die Frage von Joe Wreschnig mit "Ja" antworten und es wird eine legale Antwort sein. Aber ich nehme an, er wird das nicht zu schätzen wissen.
topright
2
@Pavel Ja, ich bin sicher, er hat erwartet, dass jemand erklärt, was es zu einem praktikablen Design gemacht hat oder nicht, auch wenn er nicht explizit danach gefragt hat. Als Antwort auf "Ja" würde mehr als wahrscheinlich herabgestimmt. Auch kleinlich zu sein hilft niemandem.
Jesse Dorsey

Antworten:

1

Danke, dass du mich daran erinnert hast.

Die Antwort ist nein, Sie können dies nicht auf Lager Box2D tun . Gelenke haben nicht genügend Accessoren, um ein korrektes JointDef zurückzubekommen. Sie können einfache Körper rückgängig machen, aber nichts ist miteinander verbunden, und die einfachen Körper sind normalerweise so trivial, dass Sie ohnehin keine Kopie der Welt erstellen müssten, um ihre Bewegung genau vorherzusagen.


quelle