Class Layer

java.lang.Object
rocks.friedrich.engine_omega.Layer
All Implemented Interfaces:
ActorCreator, FrameUpdateListenerContainer, KeyListenerContainer, MouseClickListenerContainer, MouseWheelListenerContainer

Eine Ebene bieten die Möglichkeit, Actor-Objekte vor und hinter der Zeichenebene mit zusätzlichen Eigenschaften (wie Parallaxe) zu rendern.
Author:
Michael Andonie
  • Constructor Details

    • Layer

      @API public Layer()
      Erstellt ein neues Layer.
  • Method Details

    • getParent

      public Scene getParent()
    • getScene

      public Scene getScene()
      Specified by:
      getScene in interface ActorCreator
    • setLayerPosition

      @API public void setLayerPosition(int position)
      Setzt die Position dieses Layers relativ zu anderen Layers.
      Parameters:
      position - Die neue Position dieses Layers. Je höher dieser Wert, desto weiter vorne ist das Layer.
    • getLayerPosition

      @API public int getLayerPosition()
      Gibt die Position des Layers aus.
      Returns:
      Der Wert, der die Position dieses Layers repräsentiert.
      See Also:
    • setParallaxPosition

      @API public void setParallaxPosition(double parallaxX, double parallaxY)
      Setzt den Parallaxenwert der Bewegung für dieses Layer:
      • 1 ist keine Parallaxe (Bewegung exakt mit der Kamera)
      • Werte zwischen 0 und 1 schaffen einen entfernten Effekt: Die Bewegung ist weniger als die der Kamera
      • 0 bedeutet, die Bewegung der Kamera hat gar keinen Einfluss auf das Layer.
      • Negative Werte sorgen für Bewegung entgegen der Kamera
      • Werte > 1 verstärken die Bewegung der Kamera (z.B. für Vordergrund).
      Parameters:
      parallaxX - Der X-Parallaxenwert.
      parallaxY - Der Y-Parallaxenwert.
    • setParallaxZoom

      @API public void setParallaxZoom(double parallaxZoom)
      Setzt den Parallaxenwert beim Zoom für dieses Layer:
      • 1: Normaler Zoom mit der Kamera
      • 0: Kamerazoom hat keinen Einfluss auf dieses Layer.
      • 0 < parallaxZoom < 1: Der Zoomeffekt tritt schwächer auf.
      • parallaxZoom > 1: Der Zoomeffekt tritt stärker auf.
      • parallaxZoom < 0: Der Zoomeffekt tritt betragsmäßig ähnlich und umgekehrt auf.
    • setParallaxRotation

      @API public void setParallaxRotation(double parallaxRotation)
      Setzt die Parallaxe der Rotation. Dieses Layer wird um [kamerarotation] * parallaxRotation rotiert.
      Parameters:
      parallaxRotation - Die Rotationsparallaxe.
    • setTimeDistort

      @API public void setTimeDistort(double timeDistort)
      Setzt einen Zeitverzerrungsfaktor. Die Zeit in der Physiksimulation vergeht standardmäßig in Echtzeit, kann allerdings verzerrt werden.
      Parameters:
      timeDistort - Zeit in der Simulation = Echtzeit * Verzerrungsfaktor
      • Werte >1 lassen die Zeit schneller vergehen
      • Werte <1 lassen die Zeit langsamer vergehen
      • 1 lässt die Zeit in Echtzeit vergehen
      • Werte <=0 sind nicht erlaubt
    • setGravity

      @API public void setGravity(Vector gravity)
      Setzt die Schwerkraft als Vektor, die auf alle Objekte innerhalb dieser Ebene wirkt.
      Parameters:
      gravity - Die neue Schwerkraft als Vector. Die Einheit ist [N] bzw. [m/s^2].
      See Also:
      jbox2d source code:
      dynamics/World.java#L997-L1004
      box2d source code:
      b2_world.h#L312-L315
    • setGravity

      @API public void setGravity(double gravityX, double gravityY)
      Setzt die Schwerkraft durch zwei Eingabeparameter für die x- und y-Richtung, die auf alle Objekte innerhalb dieser Ebene wirkt.
      Parameters:
      gravityX - Die neue Schwerkraft, die in X-Richtung wirken soll. Die Einheit ist [N] bzw. [m/s^2].
      gravityY - Die neue Schwerkraft, die in Y-Richtung wirken soll. Die Einheit ist [N] bzw. [m/s^2].
      See Also:
      jbox2d source code:
      dynamics/World.java#L997-L1004
      box2d source code:
      b2_world.h#L312-L315
    • setGravityOfEarth

      @API public void setGravityOfEarth()
      Setzt die Schwerkraft die auf der Erde wirkt: 9.81 [N] bzw. [m/s^2] nach unten (x: 0, y: -9.81).
      See Also:
    • setVisible

      @API public void setVisible(boolean visible)
      Setzt, ob dieses Layer sichtbar sein soll.
      Parameters:
      visible - true: Das Layer ist sichtbar, wenn es an einer Szene angemeldet ist. false: Das Layer ist auch dann nicht sichtbar, wenn es an einer Szene angemeldet ist.
      See Also:
    • isVisible

      @API public boolean isVisible()
      Gibt an, ob dieses Layer gerade sichtbar ist.
      Returns:
      true: Das Layer ist sichtbar. false: Das Layer ist nicht sichtbar.
      See Also:
    • add

      @API public void add(Actor... actors)
      Fügt einen oder mehrere Actor-Objekte der Ebene hinzu.
      Parameters:
      actors - Ein oder mehrere Actor-Objekte.
    • remove

      @API public final void remove(Actor... actors)
      Entferne einen oder mehrere Actor-Objekte aus der Ebene.
      Parameters:
      actors - Ein oder mehrere Actor-Objekte.
    • translateWorldPointToFramePxCoordinates

      @Internal public Vector translateWorldPointToFramePxCoordinates(Vector worldPoint)
      Übersetzt einen Punkt auf diesem Layer zu der analogen, aktuellen Pixelkoordinate im zeichnenden Frame.
      Parameters:
      worldPoint - Ein Punkt auf dem Layer
      Returns:
      Ein Vektor in Pixelkoordinaten (nicht Meter, Y-Achse ist umgekehrt), der mit der aktuellen Kameraeinstellung dem angegebenen worldPoint entspricht
    • getVisibleArea

      @API public Bounds getVisibleArea(Vector gameSizeInPixels)
      Gibt die derzeit auf dem Bildschirm sichtbare Fläche des Layers an.
      Returns:
      Die sichtbare Fläche als Bounds Objekt mit Angaben in Meter
      See Also:
    • setVisibleWidth

      @API public void setVisibleWidth(double width, Vector gameSizeInPixels)
      Setzt den Kamerazoom exakt, sodass die sichtbare Breite des sichtbaren Fensters einer bestimmten Länge entspricht.
      Parameters:
      width - Die Breite in Meter, auf die die Kamera im Fenster exakt zu setzen ist.
      See Also:
    • setVisibleHeight

      @API public void setVisibleHeight(double height, Vector gameSizeInPixels)
      Setzt den Kamerazoom exakt, sodass die sichtbare Höhe des sichtbaren Fensters einer bestimmten Länge entspricht.
      Parameters:
      height - Die Höhe in Meter, auf die die Kamera im Fenster exakt zu setzen ist.
      See Also:
    • calculatePixelPerMeter

      @API public double calculatePixelPerMeter()
    • render

      @Internal public void render(Graphics2D g, Camera camera, int width, int height)
    • getWorldHandler

      @Internal public WorldHandler getWorldHandler()
      Gibt den WorldHandler dieser Ebene aus.
      Returns:
      Der WorldHandler dieser Ebene.
    • step

      @Internal public void step(double deltaSeconds)
    • getKeyListeners

      @API public EventListeners<KeyListener> getKeyListeners()
      Specified by:
      getKeyListeners in interface KeyListenerContainer
    • getMouseClickListeners

      @API public EventListeners<MouseClickListener> getMouseClickListeners()
      Specified by:
      getMouseClickListeners in interface MouseClickListenerContainer
    • getMouseWheelListeners

      @API public EventListeners<MouseWheelListener> getMouseWheelListeners()
      Specified by:
      getMouseWheelListeners in interface MouseWheelListenerContainer
    • getFrameUpdateListeners

      @API public EventListeners<FrameUpdateListener> getFrameUpdateListeners()
      Specified by:
      getFrameUpdateListeners in interface FrameUpdateListenerContainer
      Returns:
      Liste der FrameUpdateListener