Class NullHandler

java.lang.Object
de.pirckheimer_gymnasium.engine_pi.physics.NullHandler
All Implemented Interfaces:
PhysicsHandler

public class NullHandler extends Object implements PhysicsHandler
Eine Steuerungsklasse für Operationen an Actor-Objekten, die an keiner Szene angehängt sind. Die Klasse führt alle Operationen rein numerisch durch und gibt Fehler aus, wenn Operationen ausgeführt werden, die nur mit einer Verbindung zur Physics-Engine funktionieren können.
  • Constructor Details

    • NullHandler

      public NullHandler(PhysicsData physicsData)
  • Method Details

    • moveBy

      public void moveBy(Vector v)
      Description copied from interface: PhysicsHandler
      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).
      Specified by:
      moveBy in interface PhysicsHandler
      Parameters:
      v - Ein Vector, um den das Ziel-Objekt verschoben werden soll. Dies ändert seine Position, jedoch sonst keine weiteren Eigenschaften.
    • getCenter

      public Vector getCenter()
      Description copied from interface: PhysicsHandler
      Gibt den Gewichtsmittelpunkt dieses Actor-Objekts aus.
      Specified by:
      getCenter in interface PhysicsHandler
      Returns:
      der aktuelle Gewichtsmittelpunkt des Ziel-Objekts als Point auf der Zeichenebene.
    • contains

      public boolean contains(Vector p)
      Ein Objekt ohne Physik enthält keinen Punkt.
      Specified by:
      contains in interface PhysicsHandler
      Parameters:
      p - Ein Punkt auf der Zeichenebene.
      Returns:
      false
    • getPosition

      public Vector getPosition()
      Description copied from interface: PhysicsHandler
      Gibt die aktuelle Position des Ziel-Objekts an.
      Specified by:
      getPosition in interface PhysicsHandler
      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

      public double getRotation()
      Description copied from interface: PhysicsHandler
      Gibt die aktuelle Rotation des Ziel-Objekts in Grad an. Bei Erstellung eines Actor-Objekts ist seine Rotation stets 0.
      Specified by:
      getRotation in interface PhysicsHandler
      Returns:
      die aktuelle Rotation des Ziel-Objekts in Grad.
    • rotateBy

      public void rotateBy(double degree)
      Description copied from interface: PhysicsHandler
      Rotiert das Ziel-Objekt um einen festen Winkel.
      Specified by:
      rotateBy in interface PhysicsHandler
      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

      public void setRotation(double degree)
      Specified by:
      setRotation in interface PhysicsHandler
    • setDensity

      public void setDensity(double density)
      Specified by:
      setDensity in interface PhysicsHandler
    • getDensity

      public double getDensity()
      Specified by:
      getDensity in interface PhysicsHandler
    • setGravityScale

      public void setGravityScale(double factor)
      Specified by:
      setGravityScale in interface PhysicsHandler
    • getGravityScale

      public double getGravityScale()
      Specified by:
      getGravityScale in interface PhysicsHandler
    • setFriction

      public void setFriction(double friction)
      Specified by:
      setFriction in interface PhysicsHandler
    • getFriction

      public double getFriction()
      Specified by:
      getFriction in interface PhysicsHandler
    • setRestitution

      public void setRestitution(double elasticity)
      Specified by:
      setRestitution in interface PhysicsHandler
    • getRestitution

      public double getRestitution()
      Specified by:
      getRestitution in interface PhysicsHandler
    • setLinearDamping

      public void setLinearDamping(double damping)
      Specified by:
      setLinearDamping in interface PhysicsHandler
    • getLinearDamping

      public double getLinearDamping()
      Specified by:
      getLinearDamping in interface PhysicsHandler
    • setAngularDamping

      public void setAngularDamping(double damping)
      Specified by:
      setAngularDamping in interface PhysicsHandler
    • getAngularDamping

      public double getAngularDamping()
      Specified by:
      getAngularDamping in interface PhysicsHandler
    • getMass

      public double getMass()
      Description copied from interface: PhysicsHandler
      Gibt die Masse des Ziel-Objekts aus.
      Specified by:
      getMass in interface PhysicsHandler
      Returns:
      Die Masse des Ziel-Objekts in [kg].
    • applyForce

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

      public void applyTorque(double torque)
      Description copied from interface: PhysicsHandler
      Wirkt einen Drehmoment auf das Ziel-Objekt.
      Specified by:
      applyTorque in interface PhysicsHandler
      Parameters:
      torque - der Drehmoment, der auf das Ziel-Objekt wirken soll. In [N*m]
    • applyRotationImpulse

      public void applyRotationImpulse(double rotationImpulse)
      Description copied from interface: PhysicsHandler
      Wirkt einen Drehimpuls auf das Ziel-Objekt.
      Specified by:
      applyRotationImpulse in interface PhysicsHandler
      Parameters:
      rotationImpulse - der Drehimpuls, der auf das Ziel-Objekt wirken soll. in [kg*m*m/s]
    • setType

      public void setType(BodyType type)
      Description copied from interface: PhysicsHandler
      Macht ein Type-Update für diesen Handler.
      Specified by:
      setType in interface PhysicsHandler
      Parameters:
      type - Der neue Type.
    • getType

      public BodyType getType()
      Specified by:
      getType in interface PhysicsHandler
    • applyForce

      public void applyForce(Vector force, Vector globalLocation)
      Specified by:
      applyForce in interface PhysicsHandler
    • applyImpulse

      public void applyImpulse(Vector impulse, Vector globalLocation)
      Description copied from interface: PhysicsHandler
      Wirkt einen Impuls auf einem Welt-Point.
      Specified by:
      applyImpulse in interface PhysicsHandler
      Parameters:
      impulse - Ein Impuls (in [Ns]).
      globalLocation - TODO
    • getWorldHandler

      public WorldHandler getWorldHandler()
      Description copied from interface: PhysicsHandler
      Gibt den WorldHandler aus, der die Welt handelt, in der sich der Klient befindet.
      Specified by:
      getWorldHandler in interface PhysicsHandler
      Returns:
      Der World-Handler, der zu diesem Physics-Handler gehört.
    • getBody

      public org.jbox2d.dynamics.Body getBody()
      Description copied from interface: PhysicsHandler
      Wird intern zum Debuggen benutzt. Gibt den korrespondierenden Body aus.
      Specified by:
      getBody in interface PhysicsHandler
      Returns:
      Der korrespondierende Body.
    • resetMovement

      public void resetMovement()
      Description copied from interface: PhysicsHandler
      Setzt die Wirkung aller physikalischer Bewegungen (Geschwindigkeit und Drehung) zurück. Hiernach ist das Objekt in Ruhe.
      Specified by:
      resetMovement in interface PhysicsHandler
    • setVelocity

      public void setVelocity(Vector metersPerSecond)
      Description copied from interface: PhysicsHandler
      Setzt die Geschwindigkeit für das Handler-Objekt.
      Specified by:
      setVelocity in interface PhysicsHandler
      Parameters:
      metersPerSecond - Setzt die Geschwindigkeit, mit der sich das Zielobjekt bewegen soll.
    • getVelocity

      public Vector getVelocity()
      Description copied from interface: PhysicsHandler
      Gibt die aktuelle Geschwindigkeit aus.
      Specified by:
      getVelocity in interface PhysicsHandler
      Returns:
      Die aktuelle Geschwindigkeit.
    • setAngularVelocity

      public void setAngularVelocity(double rotationsPerSecond)
      Description copied from interface: PhysicsHandler
      Setzt die Drehgeschwindigkeit für das Handler-Objekt.
      Specified by:
      setAngularVelocity in interface PhysicsHandler
      Parameters:
      rotationsPerSecond - Setzt die Drehgeschwindigkeit, mit der sich das Zielobjekt bewegen soll.
    • getAngularVelocity

      public double getAngularVelocity()
      Description copied from interface: PhysicsHandler
      Gibt die aktuelle Drehgeschwindigkeit aus.
      Specified by:
      getAngularVelocity in interface PhysicsHandler
      Returns:
      Die aktuelle Drehgeschwindigkeit.
    • setRotationLocked

      public void setRotationLocked(boolean locked)
      Description copied from interface: PhysicsHandler
      Setzt, ob die Rotation blockiert sein soll.
      Specified by:
      setRotationLocked in interface PhysicsHandler
    • isRotationLocked

      public boolean isRotationLocked()
      Specified by:
      isRotationLocked in interface PhysicsHandler
      Returns:
      Ob die Rotation des Objekts blockiert ist.
    • isGrounded

      public boolean isGrounded()
      Description copied from interface: PhysicsHandler
      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.
      Specified by:
      isGrounded in interface PhysicsHandler
      Returns:
      true, wenn direkt unter dem Objekt ein passives Objekt ist. Sonst false.
    • setFixtures

      public void setFixtures(Supplier<List<FixtureData>> shapes)
      Description copied from interface: PhysicsHandler
      Entfernt alle Fixtures/Collider am Actor und setzt alle Fixturs für dieses Objekt neu.
      Specified by:
      setFixtures in interface PhysicsHandler
      Parameters:
      shapes - Die neuen Fixtures als Supplier, der die Liste der Fixtures ausgibt.
    • getPhysicsData

      public PhysicsData getPhysicsData()
      Description copied from interface: PhysicsHandler
      Gibt die Proxy-Daten des Actors aus.
      Specified by:
      getPhysicsData in interface PhysicsHandler
      Returns:
      der gegenwärtige physikalische Zustand des Raum-Objekts in Proxy-Daten.
    • applyMountCallbacks

      public void applyMountCallbacks(PhysicsHandler otherHandler)
      Specified by:
      applyMountCallbacks in interface PhysicsHandler
    • getCollisions

      public List<CollisionEvent<Actor>> getCollisions()
      Specified by:
      getCollisions in interface PhysicsHandler
    • setAwake

      public 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.

      Specified by:
      setAwake in interface PhysicsHandler
      Parameters:
      value - Der Schlafzustand des Körpers.