Class NaturalCamera

All Implemented Interfaces:
IObserver, ICamera

public class NaturalCamera extends AbstractCamera implements IObserver
Models the movement of the camera
  • Field Details

    • vrOffset

      public Vector3d vrOffset
      VR offset
    • accel

      public Vector3d accel
      Acceleration and velocity
    • vel

      public Vector3d vel
      Acceleration and velocity
    • posBak

      public Vector3d posBak
      Acceleration and velocity
    • direction

      public Vector3d direction
    • up

      public Vector3d up
    • focusDirection

      public Vector3d focusDirection
    • facingFocus

      public boolean facingFocus
      Indicates whether the camera is facing the focus or not
    • entity1

      protected CelestialBody entity1
      Entities for the GAIA_SCENE_MODE mode
    • entity2

      protected CelestialBody entity2
      Entities for the GAIA_SCENE_MODE mode
    • entity3

      protected CelestialBody entity3
      Entities for the GAIA_SCENE_MODE mode
    • focus

      public IFocus focus
      The focus entity
    • focusBak

      public IFocus focusBak
      The focus entity
    • hudScales

      public double[] hudScales
    • hudColors

      public[] hudColors
    • hudColor

      public int hudColor
    • hudw

      public float hudw
    • hudh

      public float hudh
  • Constructor Details

    • NaturalCamera

      public NaturalCamera(com.badlogic.gdx.assets.AssetManager assetManager, CameraManager parent, boolean vr)
  • Method Details

    • initialize

      public void initialize(com.badlogic.gdx.assets.AssetManager assetManager)
    • update

      public void update(double dt, ITimeFrameProvider time)
      Description copied from interface: ICamera
      Updates the camera.
      Specified by:
      update in interface ICamera
      dt - The time since the las frame in seconds.
      time - The frame time provider (simulation time).
    • camOrientProjection

      public void camOrientProjection(float yaw, float pitch, float roll)
      Does a pre-transformation to the camera to orient it using the given yaw, pitch and roll angles.
      yaw - The yaw angle (to the right)
      pitch - The pitch angle (up)
      roll - The roll angle (clockwise)
    • updateHUD

      public void updateHUD(float dt)
    • updatePerspectiveCamera

      protected void updatePerspectiveCamera()
      Updates the perspective camera float values from the computed double vectors
    • getEffectiveDirection

      public Vector3d getEffectiveDirection()
      Gets the effective direction to use for the perspective camera. Takes into account planetarium down angle in free mode
      The effective direction
    • cameraUpdate

      protected void cameraUpdate( camera)
      Does the camera math in higher precision Matrix4d objects and then down-casts the results into the perspective camera
    • addForwardForce

      public void addForwardForce(double amount)
      Adds a forward movement by the given amount.
      amount - Positive for forward force, negative for backward force.
    • setVelocity

      public void setVelocity(double amount)
      Sets the gamepad velocity as it comes from the joystick sensor.
      amount - The amount in [-1, 1].
    • setVelocityVR

      public void setVelocityVR(com.badlogic.gdx.math.Vector3 p0, com.badlogic.gdx.math.Vector3 p1, double amountX, double amountY)
      Sets the velocity of the VR controller as a vector. The magnitude of this vector should not be larger than 1
      p0 - Start point of the beam
      p1 - End point of the beam
      amountX - Amount in the perpendicular direction of p0-p1
      amountY - Amount in the direction of p0-p1
    • clearVelocityVR

      public void clearVelocityVR()
      Clears the velocityVR vector
    • addPanMovement

      public void addPanMovement(double deltaX, double deltaY)
      Adds a pan movement to the camera.
      deltaX - Amount of horizontal movement.
      deltaY - Amount of vertical movement.
    • forward

      public void forward(double amount)
    • forward

      public void forward(double amount, double minTu)
    • strafe

      public void strafe(double amount)
    • strafe

      public void strafe(double amount, double minTu)
    • vertical

      public void vertical(double amount)
    • vertical

      public void vertical(double amount, double minTu)
    • addRotateMovement

      public void addRotateMovement(double deltaX, double deltaY, boolean focusLookKeyPressed, boolean acceleration)
      Adds a rotation force to the camera. DeltaX corresponds to yaw (right/left) and deltaY corresponds to pitch (up/down).
      deltaX - The yaw amount.
      deltaY - The pitch amount.
      focusLookKeyPressed - The key to look around when on focus mode is pressed.
    • setGamepadMultiplier

      public void setGamepadMultiplier(double amount)
    • addAmount

      public void addAmount(Vector3d vec, double amount, boolean x)
    • addYaw

      public void addYaw(double amount, boolean acceleration)
      Adds the given amount to the camera yaw acceleration
    • setYaw

      public void setYaw(double amount)
    • addPitch

      public void addPitch(double amount, boolean acceleration)
      Adds the given amount to the camera pitch acceleration
    • setPitch

      public void setPitch(double amount)
    • addRoll

      public void addRoll(double amount, boolean acceleration)
      Adds the given amount to the camera roll acceleration
    • setRoll

      public void setRoll(double amount)
    • addHorizontal

      public void addHorizontal(double amount, boolean acceleration)
      Adds the given amount to camera horizontal rotation around the focus acceleration, or pan in free mode
    • setHorizontal

      public void setHorizontal(double amount)
    • addVertical

      public void addVertical(double amount, boolean acceleration)
      Adds the given amount to camera vertical rotation around the focus acceleration, or pan in free mode
    • setVertical

      public void setVertical(double amount)
    • stopMovement

      public boolean stopMovement()
      Stops the camera movement.
      True if the camera had any movement at all and it has been stopped. False if camera was already still.
    • stopTotalMovement

      public boolean stopTotalMovement()
      Stops the camera movement.
      True if the camera had any movement at all and it has been stopped. False if camera was already still.
    • stopRotateMovement

      public boolean stopRotateMovement()
    • stopRollMovement

      public boolean stopRollMovement()
    • stopTurnMovement

      public boolean stopTurnMovement()
    • stopForwardMovement

      public boolean stopForwardMovement()
      Stops the camera movement.
      True if the camera had any movement at all and it has been stopped. False if camera was already still.
    • updatePosition

      protected void updatePosition(double dt, double multiplier, double transUnits)
      Updates the position of this entity using the current force
      dt -
      multiplier -
    • updateMode

      public void updateMode(ICamera previousCam, CameraManager.CameraMode previousMode, CameraManager.CameraMode newMode, boolean centerFocus, boolean postEvent)
      Updates the camera mode
      Specified by:
      updateMode in interface ICamera
    • getControllerListener

      public NaturalControllerListener getControllerListener()
    • addControllerListener

      public void addControllerListener()
    • removeControllerListener

      public void removeControllerListener()
    • setFocus

      public void setFocus(IFocus focus)
    • speedScaling

      public double speedScaling(double min)
      The speed scaling function.
      min - The minimum speed.
      The speed scaling.
    • speedScaling

      public double speedScaling()
      The speed scaling function.
      Specified by:
      speedScaling in interface ICamera
      The speed scaling.
    • rotationScaling

      public double rotationScaling()
      Depends on the distance to the focus
      The scaling for the rotation movement
    • notify

      public void notify(Events event, Object... data)
      Specified by:
      notify in interface IObserver
    • rotateAround

      public void rotateAround(Vector3b rotationCenter, Vector3d rotationAxis, double angle)
      Rotates the direction and up vector of this camera by the given angle around the given axis, with the axis attached to given point. The direction and up vector will not be orthogonalized.
      rotationCenter - the point to attach the axis to
      rotationAxis - the axis to rotate around
      angle - the angle, in degrees
    • rotate

      public void rotate(Vector3d axis, double angle)
    • translate

      public void translate(double x, double y, double z)
      Moves the camera by the given amount on each axis.
      x - the displacement on the x-axis
      y - the displacement on the y-axis
      z - the displacement on the z-axis
    • translate

      public void translate(Vector3d vec)
      Moves the camera by the given vector.
      vec - the displacement vector
    • applyForce

      protected void applyForce(Vector3d force)
      Applies the given force to this entity's acceleration
      force -
    • getFrontCameras

      public[] getFrontCameras()
      Specified by:
      getFrontCameras in interface ICamera
    • getCamera

      public getCamera()
      Description copied from interface: ICamera
      Returns the perspective camera.
      Specified by:
      getCamera in interface ICamera
      The perspective camera.
    • getDirection

      public Vector3d getDirection()
      Specified by:
      getDirection in interface ICamera
    • setDirection

      public void setDirection(Vector3d dir)
      Specified by:
      setDirection in interface ICamera
    • getUp

      public Vector3d getUp()
      Specified by:
      getUp in interface ICamera
    • setUp

      public void setUp(Vector3d up)
    • getDirections

      public Vector3d[] getDirections()
      Specified by:
      getDirections in interface ICamera
    • getNCameras

      public int getNCameras()
      Specified by:
      getNCameras in interface ICamera
    • getMode

      public CameraManager.CameraMode getMode()
      Specified by:
      getMode in interface ICamera
    • getSpeed

      public double getSpeed()
      Description copied from interface: ICamera
      Gets the current velocity of the camera in km/h.
      Specified by:
      getSpeed in interface ICamera
      The velocity in km/h.
    • isFocus

      public boolean isFocus(IFocus focus)
      Description copied from interface: ICamera
      Checks if this body is the current focus
      Specified by:
      isFocus in interface ICamera
      focus - The body
      Whether the body is focus
    • getFocus

      public IFocus getFocus()
      Description copied from interface: ICamera
      Returns the foucs if any
      Specified by:
      getFocus in interface ICamera
      The foucs object if it is in focus mode. Null otherwise
    • checkFocus

      public void checkFocus()
      Checks the position of the camera does not collide with the focus object.
    • setCenterFocus

      public void setCenterFocus(boolean centerFocus)
    • resetState

      public void resetState()
    • setInputByController

      public void setInputByController(boolean controller)
    • setCamera

      public void setCamera( cam)
      Description copied from interface: ICamera
      Sets the active camera
      Specified by:
      setCamera in interface ICamera
    • setThrust

      public void setThrust(double thrust, int direction)
    • render

      public void render(int rw, int rh)
      Specified by:
      render in interface ICamera
      render in class AbstractCamera
    • resize

      public void resize(int width, int height)
      Specified by:
      resize in interface ICamera
    • getVelocity

      public Vector3d getVelocity()
      Specified by:
      getVelocity in interface ICamera
      getVelocity in class AbstractCamera
    • setDiverted

      public void setDiverted(boolean diverted)
    • getCurrentMouseKbdListener

      public MouseKbdListener getCurrentMouseKbdListener()