Class NaturalCamera

java.lang.Object
gaiasky.scenegraph.camera.AbstractCamera
gaiasky.scenegraph.camera.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
    • 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 com.badlogic.gdx.graphics.Color[] hudColors
    • hudWidth

      public float hudWidth
    • hudHeight

      public float hudHeight
  • Constructor Details

    • NaturalCamera

      public NaturalCamera(com.badlogic.gdx.assets.AssetManager assetManager, CameraManager parent, boolean vr, com.badlogic.gdx.graphics.glutils.ShaderProgram spriteShader, com.badlogic.gdx.graphics.glutils.ShaderProgram shapeShader)
  • Method Details

    • initialize

      public void initialize(com.badlogic.gdx.graphics.glutils.ShaderProgram spriteShader, com.badlogic.gdx.graphics.glutils.ShaderProgram shapeShader)
    • update

      public void update(double dt, ITimeFrameProvider time)
      Description copied from interface: ICamera
      Updates the camera.
      Specified by:
      update in interface ICamera
      Parameters:
      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.
      Parameters:
      yaw - The yaw angle (to the right)
      pitch - The pitch angle (up)
      roll - The roll angle (clockwise)
    • updatePerspectiveCamera

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

      public void addForwardForce(double amount)
      Adds a forward movement by the given amount.
      Parameters:
      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.
      Parameters:
      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
      Parameters:
      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
    • forward

      public void forward(double amount)
    • forward

      public void forward(double amount, double minTu)
    • 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).
      Parameters:
      deltaX - The yaw amount.
      deltaY - The pitch amount.
      focusLookKeyPressed - The key to look around when on focus mode is pressed.
    • 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.
      Returns:
      True if the camera had any movement at all and it has been stopped. False if camera was already still.
    • stopTotalMovement

      public void stopTotalMovement()
      Stops the camera movement.
    • stopRotateMovement

      public void stopRotateMovement()
    • stopForwardMovement

      public void stopForwardMovement()
      Stops the camera movement.
    • updatePosition

      protected void updatePosition(double dt, double multiplier, double transUnits)
      Updates the position of this entity using the current force
    • 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.
      Parameters:
      min - The minimum speed.
      Returns:
      The speed scaling.
    • speedScaling

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

      public void notify(Events event, Object... data)
      Description copied from interface: IObserver
      Event notification call.
      Specified by:
      notify in interface IObserver
      Parameters:
      event - The event type.
      data - The data associated with this event.
    • 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 orthogonal.
      Parameters:
      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.
      Parameters:
      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.
      Parameters:
      vec - the displacement vector
    • applyForce

      protected void applyForce(Vector3b force)
      Applies the given force to this entity's acceleration.
      Parameters:
      force - The force.
    • getFrontCameras

      public com.badlogic.gdx.graphics.PerspectiveCamera[] getFrontCameras()
      Specified by:
      getFrontCameras in interface ICamera
    • getCamera

      public com.badlogic.gdx.graphics.PerspectiveCamera getCamera()
      Description copied from interface: ICamera
      Returns the perspective camera.
      Specified by:
      getCamera in interface ICamera
      Returns:
      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
      Returns:
      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
      Parameters:
      focus - The body
      Returns:
      Whether the body is focus
    • getFocus

      public IFocus getFocus()
      Description copied from interface: ICamera
      Returns the focus if any
      Specified by:
      getFocus in interface ICamera
      Returns:
      The focus 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)
    • setInputByController

      public void setInputByController(boolean controller)
    • setCamera

      public void setCamera(com.badlogic.gdx.graphics.PerspectiveCamera perspectiveCamera)
      Description copied from interface: ICamera
      Sets the active camera
      Specified by:
      setCamera in interface ICamera
      Parameters:
      perspectiveCamera - The perspective camera.
    • setThrust

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

      public void render(int rw, int rh)
      Specified by:
      render in interface ICamera
      Overrides:
      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
      Overrides:
      getVelocity in class AbstractCamera
    • setDiverted

      public void setDiverted(boolean diverted)
    • getCurrentMouseKbdListener

      public MouseKbdListener getCurrentMouseKbdListener()