Package gaiasky.scenegraph.camera
Class NaturalCamera
java.lang.Object
gaiasky.scenegraph.camera.AbstractCamera
gaiasky.scenegraph.camera.NaturalCamera
Models the movement of the camera
-
Field Summary
FieldsModifier and TypeFieldDescriptionAcceleration and velocityprotected CelestialBody
Entities for the GAIA_SCENE_MODE modeprotected CelestialBody
Entities for the GAIA_SCENE_MODE modeprotected CelestialBody
Entities for the GAIA_SCENE_MODE modeboolean
Indicates whether the camera is facing the focus or notThe focus entityThe focus entityint
com.badlogic.gdx.graphics.Color[]
float
double[]
float
Acceleration and velocityAcceleration and velocityVR offsetFields inherited from class gaiasky.scenegraph.camera.AbstractCamera
angleEdgeRad, ar, CAM_FAR, CAM_NEAR, camera, cameras, camLeft, camRight, closest, closestBody, closestStar, combined, distance, fovFactor, frustumd, logger, parent, pos, posinv, prevCombined, prevpos, projection, proximity, shift, tmp, view
-
Constructor Summary
ConstructorsConstructorDescriptionNaturalCamera(com.badlogic.gdx.assets.AssetManager assetManager, CameraManager parent, boolean vr)
-
Method Summary
Modifier and TypeMethodDescriptionvoid
void
void
addForwardForce(double amount)
Adds a forward movement by the given amount.void
addHorizontal(double amount, boolean acceleration)
Adds the given amount to camera horizontal rotation around the focus acceleration, or pan in free modevoid
addPanMovement(double deltaX, double deltaY)
Adds a pan movement to the camera.void
addPitch(double amount, boolean acceleration)
Adds the given amount to the camera pitch accelerationvoid
addRoll(double amount, boolean acceleration)
Adds the given amount to the camera roll accelerationvoid
addRotateMovement(double deltaX, double deltaY, boolean focusLookKeyPressed, boolean acceleration)
Adds a rotation force to the camera.void
addVertical(double amount, boolean acceleration)
Adds the given amount to camera vertical rotation around the focus acceleration, or pan in free modevoid
addYaw(double amount, boolean acceleration)
Adds the given amount to the camera yaw accelerationprotected void
applyForce(Vector3d force)
Applies the given force to this entity's accelerationprotected 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 cameravoid
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.void
Checks the position of the camera does not collide with the focus object.void
Clears the velocityVR vectorvoid
forward(double amount)
void
forward(double amount, double minTu)
com.badlogic.gdx.graphics.PerspectiveCamera
Returns the perspective camera.Vector3d[]
Gets the effective direction to use for the perspective camera.getFocus()
Returns the foucs if anycom.badlogic.gdx.graphics.PerspectiveCamera[]
getMode()
int
double
getSpeed()
Gets the current velocity of the camera in km/h.getUp()
void
initialize(com.badlogic.gdx.assets.AssetManager assetManager)
boolean
Checks if this body is the current focusvoid
void
void
render(int rw, int rh)
void
void
resize(int width, int height)
void
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.double
Depends on the distance to the focusvoid
setCamera(com.badlogic.gdx.graphics.PerspectiveCamera cam)
Sets the active cameravoid
setCenterFocus(boolean centerFocus)
void
setDirection(Vector3d dir)
void
setDiverted(boolean diverted)
void
void
setGamepadMultiplier(double amount)
void
setHorizontal(double amount)
void
setInputByController(boolean controller)
void
setPitch(double amount)
void
setRoll(double amount)
void
setThrust(double thrust, int direction)
void
void
setVelocity(double amount)
Sets the gamepad velocity as it comes from the joystick sensor.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.void
setVertical(double amount)
void
setYaw(double amount)
double
The speed scaling function.double
speedScaling(double min)
The speed scaling function.boolean
Stops the camera movement.boolean
Stops the camera movement.boolean
boolean
boolean
Stops the camera movement.boolean
void
strafe(double amount)
void
strafe(double amount, double minTu)
void
translate(double x, double y, double z)
Moves the camera by the given amount on each axis.void
Moves the camera by the given vector.void
update(double dt, ITimeFrameProvider time)
Updates the camera.void
updateHUD(float dt)
void
updateMode(ICamera previousCam, CameraManager.CameraMode previousMode, CameraManager.CameraMode newMode, boolean centerFocus, boolean postEvent)
Updates the camera modeprotected void
Updates the perspective camera float values from the computed double vectorsprotected void
updatePosition(double dt, double multiplier, double transUnits)
Updates the position of this entity using the current forcevoid
vertical(double amount)
void
vertical(double amount, double minTu)
Methods inherited from class gaiasky.scenegraph.camera.AbstractCamera
checkClosestBody, checkClosestParticle, computeVisibleFovs, copyParamsFrom, getAngleEdge, getAngleEdge, getCameraStereoLeft, getCameraStereoRight, getCloseLightSource, getClosest, getClosestBody, getClosestParticle, getCurrent, getDistance, getFar, getFovFactor, getInversePos, getManager, getNear, getPos, getPreviousPos, getPreviousProjView, getProjView, getSecondClosestBody, getShift, isVisible, isVisible, isVisible, setCameraStereoLeft, setCameraStereoRight, setClosest, setFrustumPlanes, setPos, setPos, setPreviousPos, setPreviousPos, setPreviousProjView, setShift, swapBuffers, update, updateAngleEdge, updateFrustumPlanes
-
Field Details
-
vrOffset
VR offset -
accel
Acceleration and velocity -
vel
Acceleration and velocity -
posBak
Acceleration and velocity -
direction
-
up
-
focusDirection
-
facingFocus
public boolean facingFocusIndicates whether the camera is facing the focus or not -
entity1
Entities for the GAIA_SCENE_MODE mode -
entity2
Entities for the GAIA_SCENE_MODE mode -
entity3
Entities for the GAIA_SCENE_MODE mode -
focus
The focus entity -
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 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
Description copied from interface:ICamera
Updates the camera. -
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
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 beamp1
- End point of the beamamountX
- Amount in the perpendicular direction of p0-p1amountY
- 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
-
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
-
-
updateMode
public void updateMode(ICamera previousCam, CameraManager.CameraMode previousMode, CameraManager.CameraMode newMode, boolean centerFocus, boolean postEvent)Updates the camera mode- Specified by:
updateMode
in interfaceICamera
-
getControllerListener
-
addControllerListener
public void addControllerListener() -
removeControllerListener
public void removeControllerListener() -
setFocus
-
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 interfaceICamera
- Returns:
- The speed scaling.
-
rotationScaling
public double rotationScaling()Depends on the distance to the focus- Returns:
- The scaling for the rotation movement
-
notify
-
rotateAround
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 torotationAxis
- the axis to rotate aroundangle
- the angle, in degrees
-
rotate
-
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-axisy
- the displacement on the y-axisz
- the displacement on the z-axis
-
translate
Moves the camera by the given vector.- Parameters:
vec
- the displacement vector
-
applyForce
Applies the given force to this entity's acceleration- Parameters:
force
-
-
getFrontCameras
public com.badlogic.gdx.graphics.PerspectiveCamera[] getFrontCameras()- Specified by:
getFrontCameras
in interfaceICamera
-
getCamera
public com.badlogic.gdx.graphics.PerspectiveCamera getCamera()Description copied from interface:ICamera
Returns the perspective camera. -
getDirection
- Specified by:
getDirection
in interfaceICamera
-
setDirection
- Specified by:
setDirection
in interfaceICamera
-
getUp
-
setUp
-
getDirections
- Specified by:
getDirections
in interfaceICamera
-
getNCameras
public int getNCameras()- Specified by:
getNCameras
in interfaceICamera
-
getMode
-
getSpeed
public double getSpeed()Description copied from interface:ICamera
Gets the current velocity of the camera in km/h. -
isFocus
Description copied from interface:ICamera
Checks if this body is the current focus -
getFocus
Description copied from interface:ICamera
Returns the foucs if any -
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 -
setThrust
public void setThrust(double thrust, int direction) -
render
public void render(int rw, int rh)- Specified by:
render
in interfaceICamera
- Overrides:
render
in classAbstractCamera
-
resize
public void resize(int width, int height) -
getVelocity
- Specified by:
getVelocity
in interfaceICamera
- Overrides:
getVelocity
in classAbstractCamera
-
setDiverted
public void setDiverted(boolean diverted) -
getCurrentMouseKbdListener
-