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 Details

  • Constructor Details

    • WorldHandler

      @Internal public WorldHandler(Layer layer)
      Erstellt eine neue standardisierte Physik ohne Schwerkraft.
  • Method Details

    • getWorld

      @Internal public de.pirckheimer_gymnasium.jbox2d.dynamics.World 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

      @Internal public void 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 einen Body und mappt ihn intern zum analogen Actor-Objekt.
      Parameters:
      bd - Exakte Beschreibung des Bodies.
      actor - Actor-Objekt, das ab sofort zu dem Body gehört.
      Returns:
      Der Body, der aus der BodyDef generiert 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 einen Körper und das zugehörige Actor-Objekt.
      Parameters:
      body - Der zu entfernende Körper.
    • addContactToBlacklist

      @Internal public void addContactToBlacklist(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact)
      Fügt einen Kontakt der 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:
      beginContact in interface de.pirckheimer_gymnasium.jbox2d.callbacks.ContactListener
    • endContact

      public void endContact(de.pirckheimer_gymnasium.jbox2d.dynamics.contacts.Contact contact)
      Specified by:
      endContact in interface de.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:
      preSolve in interface de.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:
      postSolve in interface de.pirckheimer_gymnasium.jbox2d.callbacks.ContactListener
    • getLayer

      public Layer 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 Kollisionsbeobachter
      actor - Kollisionsbeobachter wird informiert falls dieses Actor-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.
      Type Parameters:
      E - Der Type des Colliders.
      Parameters:
      listener - Das anzumeldende KR Interface
      actor - Der Actor (Haupt-Actor-Objekt)
      collider - Der Collider (zweites Actor-Objekt)
    • 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

      @Internal public static List<Runnable> addMountListener(Actor a, Actor b, Consumer<WorldHandler> runnable)