Class WorldHandler
java.lang.Object
de.pirckheimer_gymnasium.engine_pi.physics.WorldHandler
- All Implemented Interfaces:
de.pirckheimer_gymnasium.jbox2d.callbacks.ContactListener
public class WorldHandler
extends Object
implements de.pirckheimer_gymnasium.jbox2d.callbacks.ContactListener
Die WorldHandler-Klasse ist die (nicht objektgebundene) Middleware zwischen
der JBox2D Engine und der Engine Omage. Sie ist verantwortlich für:
- Den globalen "World"-Parameter aus der JBox2D Engine.
- Übersetzung zwischen JB2D-Vektoren (SI-Basiseinheiten) und denen der Engine (Zeichengrößen)
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final double -
Constructor Summary
ConstructorsConstructorDescriptionWorldHandler(Layer layer) Erstellt eine neue standardisierte Physik ohne Schwerkraft. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddContactToBlacklist(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact) Fügt einenKontaktder Blacklist hinzu.static voidaddGenericCollisionListener(CollisionListener<Actor> listener, Actor actor) Meldet einen allgemeinen Kollisionsbeobachter in der Physics-Welt an.addMountListener(Actor a, Actor b, Consumer<WorldHandler> runnable) static <E extends Actor>
voidaddSpecificCollisionListener(Actor actor, E collider, CollisionListener<E> listener) Meldet ein spezifisches CollisionListener-Interface in dieser Physics-Welt an.voidAssertion-Methode, die sicherstellt, dass die (JBox2D-)World der gerade nicht im World-Step ist.voidbeginContact(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact) de.pirckheimer_gymnasium.jbox2d.dynamics.BodycreateBody(de.pirckheimer_gymnasium.jbox2d.dynamics.BodyDef bd, Actor actor) Erstellt einenBodyund mappt ihn intern zum analogenActor-Objekt.static <JointType extends de.pirckheimer_gymnasium.jbox2d.dynamics.joints.Joint,Wrapper extends Joint<JointType>>
WrappercreateJoint(Actor a, Actor b, JointBuilder<JointType> jointBuilder, Wrapper wrapper) voidendContact(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact) getLayer()de.pirckheimer_gymnasium.jbox2d.dynamics.WorldgetWorld()Gibt den World-Parameter der Physics aus.static booleanisBodyCollision(de.pirckheimer_gymnasium.jbox2d.dynamics.Body a, de.pirckheimer_gymnasium.jbox2d.dynamics.Body b) booleanvoidpostSolve(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact, de.pirckheimer_gymnasium.jbox2d.callbacks.ContactImpulse contactImpulse) voidpreSolve(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact, de.pirckheimer_gymnasium.jbox2d.collision.Manifold manifold) de.pirckheimer_gymnasium.jbox2d.dynamics.Fixture[]queryAABB(de.pirckheimer_gymnasium.jbox2d.collision.AABB aabb) voidremoveAllInternalReferences(de.pirckheimer_gymnasium.jbox2d.dynamics.Body body) Entfernt alle internen Referenzen auf einenKörperund das zugehörigeActor-Objekt.voidsetWorldPaused(boolean worldPaused) voidstep(double pastTime)
-
Field Details
-
CATEGORY_PASSIVE
public static final int CATEGORY_PASSIVE- See Also:
-
CATEGORY_STATIC
public static final int CATEGORY_STATIC- See Also:
-
CATEGORY_KINEMATIC
public static final int CATEGORY_KINEMATIC- See Also:
-
CATEGORY_DYNAMIC
public static final int CATEGORY_DYNAMIC- See Also:
-
CATEGORY_PARTICLE
public static final int CATEGORY_PARTICLE- See Also:
-
STEP_TIME
public static final double STEP_TIME- See Also:
-
-
Constructor Details
-
WorldHandler
Erstellt eine neue standardisierte Physik ohne Schwerkraft.
-
-
Method Details
-
getWorld
Gibt den World-Parameter der Physics aus.- Returns:
- Der JB2D-World-Parameter der Welt.
-
setWorldPaused
public void setWorldPaused(boolean worldPaused) -
isWorldPaused
public boolean isWorldPaused() -
assertNoWorldStep
Assertion-Methode, die sicherstellt, dass die (JBox2D-)World der gerade nicht im World-Step ist. Dies ist wichtig für die Manipulation von Actors (Manipulation vieler physikalischen Eigenschaften während des World-Steps führt zu Inkonsistenzen).- Throws:
RuntimeException- Wenn die World sich gerade im World-Step befindet. Ist dies nicht der Fall, passiert nichts (und es wird keine Exception geworfen).
-
step
public void step(double pastTime) -
createBody
public de.pirckheimer_gymnasium.jbox2d.dynamics.Body createBody(de.pirckheimer_gymnasium.jbox2d.dynamics.BodyDef bd, Actor actor) Erstellt einenBodyund mappt ihn intern zum analogenActor-Objekt.- Parameters:
bd- Exakte Beschreibung des Bodies.actor-Actor-Objekt, das ab sofort zu dem Body gehört.- Returns:
- Der
Body, der aus derBodyDefgeneriert wurde. Er liegt in der Game-World dieses Handlers.
-
removeAllInternalReferences
@Internal public void removeAllInternalReferences(de.pirckheimer_gymnasium.jbox2d.dynamics.Body body) Entfernt alle internen Referenzen auf einenKörperund das zugehörigeActor-Objekt.- Parameters:
body- Der zu entfernendeKörper.
-
addContactToBlacklist
@Internal public void addContactToBlacklist(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact) Fügt einenKontaktder Blacklist hinzu.Kontakte in der Blacklist werden bis zur Trennung nicht aufgelöst. Der Kontakt wird nach endContact wieder entfernt. -
beginContact
public void beginContact(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact) - Specified by:
beginContactin interfacede.pirckheimer_gymnasium.jbox2d.callbacks.ContactListener
-
endContact
public void endContact(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact) - Specified by:
endContactin interfacede.pirckheimer_gymnasium.jbox2d.callbacks.ContactListener
-
preSolve
public void preSolve(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact, de.pirckheimer_gymnasium.jbox2d.collision.Manifold manifold) - Specified by:
preSolvein interfacede.pirckheimer_gymnasium.jbox2d.callbacks.ContactListener
-
postSolve
public void postSolve(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact, de.pirckheimer_gymnasium.jbox2d.callbacks.ContactImpulse contactImpulse) - Specified by:
postSolvein interfacede.pirckheimer_gymnasium.jbox2d.callbacks.ContactListener
-
getLayer
-
queryAABB
@Internal public de.pirckheimer_gymnasium.jbox2d.dynamics.Fixture[] queryAABB(de.pirckheimer_gymnasium.jbox2d.collision.AABB aabb) -
isBodyCollision
@Internal public static boolean isBodyCollision(de.pirckheimer_gymnasium.jbox2d.dynamics.Body a, de.pirckheimer_gymnasium.jbox2d.dynamics.Body b) -
addGenericCollisionListener
@Internal public static void addGenericCollisionListener(CollisionListener<Actor> listener, Actor actor) Meldet einen allgemeinen Kollisionsbeobachter in der Physics-Welt an.- Parameters:
listener- Das anzumeldende Kollisionsbeobachteractor- Kollisionsbeobachter wird informiert falls diesesActor-Objekt mit einem anderen Objekt kollidiert.
-
addSpecificCollisionListener
@Internal public static <E extends Actor> void addSpecificCollisionListener(Actor actor, E collider, CollisionListener<E> listener) Meldet ein spezifisches CollisionListener-Interface in dieser Physics-Welt an. -
createJoint
@Internal public static <JointType extends de.pirckheimer_gymnasium.jbox2d.dynamics.joints.Joint,Wrapper extends Joint<JointType>> Wrapper createJoint(Actor a, Actor b, JointBuilder<JointType> jointBuilder, Wrapper wrapper) -
addMountListener
-