Package pi.physics

Class WorldHandler

java.lang.Object
pi.physics.WorldHandler
All Implemented Interfaces:
ContactListener

public class WorldHandler extends Object implements ContactListener
Die WorldHandler-Klasse ist die (nicht objektgebundene) Middleware zwischen der JBox2D-Engine und der Engine Pi.

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

  • Method Details

    • worldPaused

      @Setter public void worldPaused(boolean worldPaused)
    • isWorldPaused

      public boolean isWorldPaused()
    • step

      public void step(double pastTime)
    • createBody

      public Body createBody(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.
    • beginContact

      public void beginContact(Contact contact)
      Wird aufgerufen, wenn zwei Halterungen (Fixture) beginnen sich zu berühren.
      Specified by:
      beginContact in interface ContactListener
      Parameters:
      contact - Der Kontakt zwischen zwei Halterungen (Fixture. In der Broad Phase besteht für jedes überlappende AABB ein Kontakt (es sei denn, es wurde gefiltert). Daher kann es vorkommen, dass ein Kontakt-Objekt existiert, das keine Kontaktpunkte aufweist.
    • endContact

      public void endContact(Contact contact)
      Wird aufgerufen, wenn zwei Halterungen (Fixture keinen Kontakt mehr haben.
      Specified by:
      endContact in interface ContactListener
      Parameters:
      contact - Der Kontakt zwischen zwei Halterungen (Fixture. In der Broad Phase besteht für jedes überlappende AABB ein Kontakt (es sei denn, es wurde gefiltert). Daher kann es vorkommen, dass ein Kontakt-Objekt existiert, das keine Kontaktpunkte aufweist.
    • preSolve

      public void preSolve(Contact contact, Manifold manifold)
      Wird aufgerufen, nachdem ein Kontakt aktualisiert wurde.

      Dies ermöglicht es Ihnen, einen Kontakt zu inspizieren, bevor er an den Solver übergeben wird. Bei sorgfältiger Vorgehensweise können Sie das Kontakt-Manifold modifizieren (z. B. den Kontakt deaktivieren). Es wird eine Kopie des alten Manifolds bereitgestellt, damit Sie Änderungen erkennen können.

      • Hinweis: Diese Methode wird nur für aktive (awake) Körper aufgerufen.
      • Hinweis: Diese Methode wird auch dann aufgerufen, wenn die Anzahl der Kontaktpunkte null beträgt.
      • Hinweis: Diese Methode wird nicht für Sensoren aufgerufen.
      • Hinweis: Wenn Sie die Anzahl der Kontaktpunkte auf null setzen, erhalten Sie keinen EndContact-Callback. Möglicherweise erhalten Sie jedoch im nächsten Schritt einen BeginContact-Callback.
      • Hinweis: Der Parameter `oldManifold` wird gepoolt; es handelt sich daher bei jedem Callback innerhalb desselben Threads um dasselbe Objekt.
      Specified by:
      preSolve in interface ContactListener
      Parameters:
      contact - Der Kontakt zwischen zwei Halterungen (Fixture. In der Broad Phase besteht für jedes überlappende AABB ein Kontakt (es sei denn, es wurde gefiltert). Daher kann es vorkommen, dass ein Kontakt-Objekt existiert, das keine Kontaktpunkte aufweist.
    • postSolve

      public void postSolve(Contact contact, ContactImpulse contactImpulse)
      Wird aufgerufen, nachdem die Kollisionsreaktion berechnet und angewendet wurde.

      Dies ist nützlich, um Impulse zu überprüfen. Hinweis: Das Kontakt-Manifold enthält nicht die Impulse zum Zeitpunkt des Aufpralls; diese können beliebig groß ausfallen, wenn der Teilschritt klein ist. Daher wird der Impuls explizit in einer separaten Datenstruktur bereitgestellt. Hinweis: Diese Funktion wird nur für Kontakte aufgerufen, die sich berühren, fest und aktiv sind.

      Der Impule kann beispielsweise verwendet werden, um festzustellen, ob ein Pfeil beim Aufprall im Ziel stecken bleiben soll.

      Specified by:
      postSolve in interface ContactListener
      Parameters:
      contact - Der Kontakt zwischen zwei Halterungen (Fixture. In der Broad Phase besteht für jedes überlappende AABB ein Kontakt (es sei denn, es wurde gefiltert). Daher kann es vorkommen, dass ein Kontakt-Objekt existiert, das keine Kontaktpunkte aufweist.
      contactImpulse - This is usually a pooled variable, so it will be modified after this call
      See Also:
    • layer

      @Getter public Layer layer()