Class NaturalCamera

    • Field Detail

      • 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
      • 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 com.badlogic.gdx.graphics.Color[] hudColors
      • hudColor

        public int hudColor
      • hudw

        public float hudw
      • hudh

        public float hudh
    • Constructor Detail

      • NaturalCamera

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

      • 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
        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)
      • 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
        Returns:
        The effective direction
      • cameraUpdate

        protected void cameraUpdate​(com.badlogic.gdx.graphics.PerspectiveCamera 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.
        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
      • addPanMovement

        public void addPanMovement​(double deltaX,
                                   double deltaY)
        Adds a pan movement to the camera.
        Parameters:
        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).
        Parameters:
        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.
        Returns:
        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.
        Returns:
        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.
        Returns:
        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
        Parameters:
        dt -
        multiplier -
      • setFocus

        public void setFocus​(IFocus focus)
      • getTranslateUnits

        public double getTranslateUnits​(double min)
      • getTranslateUnits

        public double getTranslateUnits()
        this depends on the distance from the focus.
        Specified by:
        getTranslateUnits in interface ICamera
        Returns:
        the translate units
      • getRotationUnits

        public double getRotationUnits()
        Depends on the distance to the focus
        Returns:
        The rotation units
      • notify

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

        public void rotateAround​(Vector3d 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.
        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​(Vector3d force)
        Applies the given force to this entity's acceleration
        Parameters:
        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.
      • setUp

        public void setUp​(Vector3d up)
      • 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 foucs if any
        Specified by:
        getFocus in interface ICamera
        Returns:
        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​(com.badlogic.gdx.graphics.PerspectiveCamera cam)
        Description copied from interface: ICamera
        Sets the active camera
        Specified by:
        setCamera in interface ICamera
      • setThrust

        public void setThrust​(double thrust,
                              int direction)
      • resize

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

        public void setDiverted​(boolean diverted)
      • getCurrentMouseKbdListener

        public MouseKbdListener getCurrentMouseKbdListener()