Interface PhysicsHandler

All Known Implementing Classes:
BodyHandler, NullHandler

@Internal public interface PhysicsHandler
Beschreibt allgemein ein Objekt, dass die physikalischen Eigenschaften eines Actor-Objektes kontrollieren kann. Dazu gehört:
  • Das Actor-Objekt bewegen.
  • Physikalische Eigenschaften des Objektes verändern (wie Masse, Reibungskoeffizient etc.)
  • Einflüsse auf das Actor-Objekt ausüben (wie anwenden von Impulsen / Kräften)
Created by andonie on 16.02.15.
  • Method Details

    • moveBy

      @Internal void moveBy(Vector v)
      Verschiebt das Ziel-Objekt um einen spezifischen Wert auf der Zeichenebene. Die Ausführung hat erst (ggf.) im kommenden Frame einfluss auf die Physics und ändert keine physikalischen Eigenschaften des Ziel-Objekts (außer dessen Ort).
      Parameters:
      v - Ein Vector, um den das Ziel-Objekt verschoben werden soll. Dies ändert seine Position, jedoch sonst keine weiteren Eigenschaften.
    • getCenter

      @Internal Vector getCenter()
      Gibt den Gewichtsmittelpunkt dieses Actor-Objekts aus.
      Returns:
      der aktuelle Gewichtsmittelpunkt des Ziel-Objekts als Point auf der Zeichenebene.
    • contains

      @Internal boolean contains(Vector p)
      Gibt an, ob ein bestimmter Punkt auf der Zeichenebene innerhalb des Ziel-Objekts liegt.
      Parameters:
      p - Ein Punkt auf der Zeichenebene.
      Returns:
      true, wenn der übergebene Punkt innerhalb des Ziel-Objekts liegt, sonst false. Das Ergebnis kann (abhängig von der implementierenden Klasse) verschieden sicher richtige Ergebnisse liefern.
    • getPosition

      @Internal Vector getPosition()
      Gibt die aktuelle Position des Ziel-Objekts an.
      Returns:
      Die aktuelle Position des Ziel-Objekts. Diese ist bei Erstellung des Objekts zunächst immer (0|0) und wird mit Rotation und Verschiebung verändert.
    • getRotation

      @Internal double getRotation()
      Gibt die aktuelle Rotation des Ziel-Objekts in Grad an. Bei Erstellung eines Actor-Objekts ist seine Rotation stets 0.
      Returns:
      die aktuelle Rotation des Ziel-Objekts in Grad.
    • rotateBy

      @Internal void rotateBy(double degree)
      Rotiert das Ziel-Objekt um einen festen Winkel.
      Parameters:
      degree - Der Winkel, um den das Ziel-Objekt gedreht werden soll (in Grad).
      • Werte > 0 : Drehung gegen Uhrzeigersinn
      • Werte < 0 : Drehung im Uhrzeigersinn
    • setRotation

      @Internal void setRotation(double degree)
    • setDensity

      @Internal void setDensity(double density)
    • getDensity

      @Internal double getDensity()
    • setGravityScale

      @Internal void setGravityScale(double factor)
    • getGravityScale

      @Internal double getGravityScale()
    • setFriction

      @Internal void setFriction(double friction)
    • getFriction

      @Internal double getFriction()
    • setRestitution

      @Internal void setRestitution(double restitution)
    • getRestitution

      @Internal double getRestitution()
    • setLinearDamping

      @Internal void setLinearDamping(double damping)
    • getLinearDamping

      @Internal double getLinearDamping()
    • setAngularDamping

      @Internal void setAngularDamping(double damping)
    • getAngularDamping

      @Internal double getAngularDamping()
    • getMass

      @Internal double getMass()
      Gibt die Masse des Ziel-Objekts aus.
      Returns:
      Die Masse des Ziel-Objekts in [kg].
    • applyForce

      @Internal void applyForce(Vector force)
      Übt eine Kraft auf das Ziel-Objekt (im Massenschwerpunkt) aus (sofern möglich).
      Parameters:
      force - Die Kraft, die auf den Massenschwerpunkt angewandt werden soll. Nicht in [px], sondern in [N] = [m / s^2].
    • applyTorque

      @Internal void applyTorque(double torque)
      Wirkt einen Drehmoment auf das Ziel-Objekt.
      Parameters:
      torque - der Drehmoment, der auf das Ziel-Objekt wirken soll. In [N*m]
    • applyRotationImpulse

      @Internal void applyRotationImpulse(double rotationImpulse)
      Wirkt einen Drehimpuls auf das Ziel-Objekt.
      Parameters:
      rotationImpulse - der Drehimpuls, der auf das Ziel-Objekt wirken soll. in [kg*m*m/s]
    • setType

      @Internal void setType(BodyType type)
      Macht ein Type-Update für diesen Handler.
      Parameters:
      type - Der neue Type.
    • getType

      @Internal BodyType getType()
    • applyForce

      @Internal void applyForce(Vector kraftInN, Vector globalLocation)
    • applyImpulse

      @Internal void applyImpulse(Vector impulsInNS, Vector globalLocation)
      Wirkt einen Impuls auf einem Welt-Point.
      Parameters:
      impulsInNS - Ein Impuls (in [Ns]).
      globalLocation - TODO
    • getWorldHandler

      @Internal WorldHandler getWorldHandler()
      Gibt den WorldHandler aus, der die Welt handelt, in der sich der Klient befindet.
      Returns:
      Der World-Handler, der zu diesem Physics-Handler gehört.
    • getBody

      @Internal org.jbox2d.dynamics.Body getBody()
      Wird intern zum Debuggen benutzt. Gibt den korrespondierenden Body aus.
      Returns:
      Der korrespondierende Body.
    • resetMovement

      @Internal void resetMovement()
      Setzt die Wirkung aller physikalischer Bewegungen (Geschwindigkeit und Drehung) zurück. Hiernach ist das Objekt in Ruhe.
    • setVelocity

      @Internal void setVelocity(Vector metersPerSecond)
      Setzt die Geschwindigkeit für das Handler-Objekt.
      Parameters:
      metersPerSecond - Setzt die Geschwindigkeit, mit der sich das Zielobjekt bewegen soll.
    • getVelocity

      @Internal Vector getVelocity()
      Gibt die aktuelle Geschwindigkeit aus.
      Returns:
      Die aktuelle Geschwindigkeit.
    • setAngularVelocity

      @Internal void setAngularVelocity(double rotationsPerSecond)
      Setzt die Drehgeschwindigkeit für das Handler-Objekt.
      Parameters:
      rotationsPerSecond - Setzt die Drehgeschwindigkeit, mit der sich das Zielobjekt bewegen soll.
    • getAngularVelocity

      @Internal double getAngularVelocity()
      Gibt die aktuelle Drehgeschwindigkeit aus.
      Returns:
      Die aktuelle Drehgeschwindigkeit.
    • setRotationLocked

      @Internal void setRotationLocked(boolean locked)
      Setzt, ob die Rotation blockiert sein soll.
    • isRotationLocked

      @Internal boolean isRotationLocked()
      Returns:
      Ob die Rotation des Objekts blockiert ist.
    • isGrounded

      @Internal boolean isGrounded()
      Testet, ob das Objekt unter sich festen Boden hat. Dies ist der Fall, wenn direkt unter dem Objekt ein passives Objekt liegt.
      Diese Methode geht bei unten explizit von "unterhalb der Y-Achse" aus. Ein Objekt hat also Boden sich, wenn am "unteren" Ende seines Bodies (=höchster Y-Wert) in unmittelbarer Nähe (heuristisch getestet) ein passives Objekt anliegt.
      Returns:
      true, wenn direkt unter dem Objekt ein passives Objekt ist. Sonst false.
    • setFixtures

      @Internal void setFixtures(Supplier<List<FixtureData>> fixtures)
      Entfernt alle Fixtures/Collider am Actor und setzt alle Fixturs für dieses Objekt neu.
      Parameters:
      fixtures - Die neuen Fixtures als Supplier, der die Liste der Fixtures ausgibt.
    • getPhysicsData

      @Internal PhysicsData getPhysicsData()
      Gibt die Proxy-Daten des Actors aus.
      Returns:
      der gegenwärtige physikalische Zustand des Raum-Objekts in Proxy-Daten.
    • applyMountCallbacks

      void applyMountCallbacks(PhysicsHandler otherHandler)
    • getCollisions

      List<CollisionEvent<Actor>> getCollisions()
    • setAwake

      void setAwake(boolean value)
      Legt den Schlafzustand des Körpers fest. Ein schlafender Körper hat sehr geringe CPU-Kosten.

      Das Versetzen in den Schlafzustand setzt die Geschwindigkeit und den Impuls eines Körpers auf null.

      Parameters:
      value - Der Schlafzustand des Körpers.