Interface ICamera

All Superinterfaces:
IUpdateable
All Known Implementing Classes:
Camera, FreeFlightCamera, LocationLockCamera

public interface ICamera extends IUpdateable

Defines the viewport through which entities and tiles are rendered on screen.

Camera control is based on a Focus system. Generally, the camera will always try to keep the focus point in the center of the viewport.

There are two coordinate systems referenced in ICamera methods: map coordinates, and screen coordinates. The camera is responsible for converting between the two coordinate systems.

Camera provides the standard focus and zoom behavior. FreeFlightCamera allows independent movement, while LocationLockCamera follows a supplied location.

See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static interface 
    This listener interface receives focus events for a camera.
    static interface 
    This listener interface receives zoom events for a camera.
  • Field Summary

    Fields inherited from interface IUpdateable

    DEFAULT_UPDATE_PRIORITY
  • Method Summary

    Modifier and Type
    Method
    Description
    Gets the current horizontal alignment used for clamping the camera to the map boundaries.
    Gets the current vertical alignment used for clamping the camera to the map boundaries.
    Gets the map location that is focused by this camera.
    Converts a point in screen coordinates into a map location.
    double
    Gets the x coordinate of the viewport's origin.
    double
    Gets the y coordinate of the viewport's origin.
    default float
    Combines this camera's zoom with the game's render scale.
    Gets the camera's viewport region, in screen coordinates.
    Gets the center of the entity, in screen coordinates.
    getViewportLocation(double x, double y)
    Converts a location in map coordinates into screen coordinates.
    default Point2D
    Converts the entity's location into screen coordinates.
    default Point2D
    Converts a location in map coordinates into screen coordinates.
    float
    The zoom factor of this camera.
    boolean
    Returns whether this camera will clamp the viewport to the bounds of the map.
    void
    Adds the specified focus changed listener to receive events when the focus of this camera changed.
    void
    Adds the specified zoom changed listener to receive events when the zoom of this camera changed.
    void
    pan(double x, double y, int duration)
    Pans the camera over the specified duration (in frames) to the target location, after accounting for modifications such as clamping to the map.
    void
    pan(Point2D focus, int duration)
    Pans the camera over the specified duration (in frames) to the target location, after accounting for modifications such as clamping to the map.
    void
    Removes the specified focus changed listener.
    void
    Removes the specified zoom changed listener.
    void
    setClampAlign(Align align, Valign valign)
    Sets the alignment for clamping the camera to the map boundaries.
    void
    setClampToMap(boolean clampToMap)
    Set the camera to clamp the viewport to the bounds of the map.
    void
    setFocus(double x, double y)
    Focuses the camera on a given point.
    default void
    Focuses the camera on a given point.
    void
    setZoom(float zoom, int duration)
    Changes the camera's zoom over the specified duration (in frames) to the target zoom.
    void
    shake(double intensity, int delay, int duration)
    Shakes the camera for the specified duration.
    void
    Currently an update function for the shake effect.

    Methods inherited from interface IUpdateable

    getUpdatePriority, update
  • Method Details

    • onZoom

      void onZoom(ICamera.ZoomChangedListener listener)
      Adds the specified zoom changed listener to receive events when the zoom of this camera changed.
      Parameters:
      listener - The listener to add.
    • removeZoomListener

      void removeZoomListener(ICamera.ZoomChangedListener listener)
      Removes the specified zoom changed listener.
      Parameters:
      listener - The listener to remove.
    • onFocus

      void onFocus(ICamera.FocusChangedListener listener)
      Adds the specified focus changed listener to receive events when the focus of this camera changed.
      Parameters:
      listener - The listener to add.
    • removeFocusListener

      void removeFocusListener(ICamera.FocusChangedListener listener)
      Removes the specified focus changed listener.
      Parameters:
      listener - The listener to remove.
    • getFocus

      Point2D getFocus()
      Gets the map location that is focused by this camera.
      Returns:
      the focus's location in map coordinates
    • getMapLocation

      Point2D getMapLocation(Point2D point)
      Converts a point in screen coordinates into a map location.
      Parameters:
      point - the point in screen coordinates
      Returns:
      the map location
    • getPixelOffsetX

      double getPixelOffsetX()
      Gets the x coordinate of the viewport's origin.
      Returns:
      the offset, in screen coordinates
    • getPixelOffsetY

      double getPixelOffsetY()
      Gets the y coordinate of the viewport's origin.
      Returns:
      the offset, in screen coordinates
    • getViewport

      Rectangle2D getViewport()
      Gets the camera's viewport region, in screen coordinates.
      Returns:
      the viewport region, in screen coordinates
    • getViewportDimensionCenter

      Point2D getViewportDimensionCenter(IEntity entity)
      Gets the center of the entity, in screen coordinates.
      Parameters:
      entity - The entity to retrieve the dimension center for.
      Returns:
      the center, in screen coordinates
    • getViewportLocation

      Point2D getViewportLocation(double x, double y)
      Converts a location in map coordinates into screen coordinates.
      Parameters:
      x - The x-coordinate of the viewport location.
      y - The y-coordinate of the viewport location.
      Returns:
      the screen location
    • getViewportLocation

      default Point2D getViewportLocation(IEntity entity)
      Converts the entity's location into screen coordinates.
      Parameters:
      entity - the entity
      Returns:
      the screen location
    • getViewportLocation

      default Point2D getViewportLocation(Point2D point)
      Converts a location in map coordinates into screen coordinates.
      Parameters:
      point - the point
      Returns:
      the screen location
    • getRenderScale

      default float getRenderScale()
      Combines this camera's zoom with the game's render scale.
      Returns:
      the scale factor
      See Also:
    • getZoom

      float getZoom()
      The zoom factor of this camera.
      Returns:
      the scale factor
    • setFocus

      default void setFocus(Point2D focus)
      Focuses the camera on a given point.
      Parameters:
      focus - the point, in map coordinates
    • setFocus

      void setFocus(double x, double y)
      Focuses the camera on a given point.
      Parameters:
      x - the x coordinate of the point, in map coordinates
      y - the y coordinate of the point, in map coordinates
    • pan

      void pan(Point2D focus, int duration)
      Pans the camera over the specified duration (in frames) to the target location, after accounting for modifications such as clamping to the map. Event listeners attached to this camera are notified when the pan completes.
      Parameters:
      focus - the new focus for the camera once the panning is complete
      duration - the number of frames between this call and when the pan completes
    • pan

      void pan(double x, double y, int duration)
      Pans the camera over the specified duration (in frames) to the target location, after accounting for modifications such as clamping to the map. Event listeners attached to this camera are notified when the pan completes.
      Parameters:
      x - the new X coordinate for the camera once the panning is complete
      y - the new Y coordinate for the camera once the panning is complete
      duration - the number of frames between this call and when the pan completes
    • setZoom

      void setZoom(float zoom, int duration)
      Changes the camera's zoom over the specified duration (in frames) to the target zoom.
      Parameters:
      zoom - the new zoom scale
      duration - the number of frames between this call and when the zoom completes
    • isClampToMap

      boolean isClampToMap()
      Returns whether this camera will clamp the viewport to the bounds of the map.
      Returns:
      True if the camera viewport is currently clamped to the map boundaries; otherwise false.
    • setClampToMap

      void setClampToMap(boolean clampToMap)
      Set the camera to clamp the viewport to the bounds of the map.
      Parameters:
      clampToMap - A flag indicating whether the camera viewport should be clamped to the map boundaries.
    • setClampAlign

      void setClampAlign(Align align, Valign valign)
      Sets the alignment for clamping the camera to the map boundaries.
      Parameters:
      align - The horizontal alignment (e.g., left, center, or right).
      valign - The vertical alignment (e.g., top, middle, or bottom).
    • getClampAlign

      Align getClampAlign()
      Gets the current horizontal alignment used for clamping the camera to the map boundaries.
      Returns:
      The horizontal alignment.
    • getClampValign

      Valign getClampValign()
      Gets the current vertical alignment used for clamping the camera to the map boundaries.
      Returns:
      The vertical alignment.
    • shake

      void shake(double intensity, int delay, int duration)
      Shakes the camera for the specified duration. The way the camera shakes is implementation defined.
      Parameters:
      intensity - The intensity of the screen shake effect.
      delay - The delay in milliseconds between randomized offset updates.
      duration - The total duration of the effect in milliseconds.
    • updateFocus

      void updateFocus()
      Currently an update function for the shake effect.