Package gaiasky.scene.camera
Class NaturalCamera
java.lang.Object
gaiasky.scene.camera.AbstractCamera
gaiasky.scene.camera.NaturalCamera
-
Field Summary
Modifier and TypeFieldDescriptionAcceleration and velocityboolean
Indicates whether the camera is facing the focus or notThe focus entityThe focus entitycom.badlogic.gdx.graphics.Color[]
float
double[]
float
Acceleration and velocityAcceleration and velocityVR offsetFields inherited from class gaiasky.scene.camera.AbstractCamera
angleEdgeRad, ar, CAM_FAR, CAM_NEAR, camera, cameras, camLeft, camRight, closest, closestBody, closestStar, closestStarView, combined, distance, fovFactor, frustumd, gamepadInput, logger, parent, pos, posinv, prevCombined, prevpos, projection, proximity, shift, tmp, view
-
Constructor Summary
ConstructorDescriptionNaturalCamera
(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 Summary
Modifier and TypeMethodDescriptionvoid
void
addForwardForce
(double amount) Adds a forward movement by the given amount.void
void
addHorizontal
(double amount, boolean acceleration) Adds the given amount to camera horizontal rotation around the focus acceleration, or pan in free modevoid
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
(Vector3b force) Applies the given force to this entity's acceleration.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.void
Clears the velocityVR vectorvoid
forward
(double amount) void
forward
(double amount, double minTu) com.badlogic.gdx.graphics.PerspectiveCamera
Returns the perspective camera.Vector3d[]
getFocus()
Returns the focus if any.com.badlogic.gdx.graphics.PerspectiveCamera[]
getMode()
int
getScene()
double
getSpeed()
Gets the current velocity of the camera in km/h.getUp()
boolean
hasFocus()
Checks whether the current camera has a focus set.void
initialize
(com.badlogic.gdx.graphics.glutils.ShaderProgram spriteShader, com.badlogic.gdx.graphics.glutils.ShaderProgram shapeShader) boolean
isFocus
(com.badlogic.ashley.core.Entity focus) Checks if the given entity is the current focus.void
Event notification call.void
void
render
(int rw, int rh) 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.void
setCamera
(com.badlogic.gdx.graphics.PerspectiveCamera perspectiveCamera) Sets the active cameravoid
setCameraMultipliers
(double movementMultiplier, double speedMultiplier) void
setCenterFocus
(boolean centerFocus) void
setDirection
(Vector3d dir) void
setDiverted
(boolean diverted) void
void
setHorizontal
(double amount) 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
(Vector3d p0, Vector3d 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.void
Stops the camera movement.boolean
Stops the camera movement.void
void
Stops the camera movement.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
updateMode
(ICamera previousCam, CameraManager.CameraMode previousMode, CameraManager.CameraMode newMode, boolean centerFocus, boolean postEvent) Updates the camera mode.void
Sets the perspective camera float values from the computed double vectors, and recalculates the camera matrices.protected void
updatePosition
(double dt, double multiplier, double speedScaling) Updates the position of this entity using the current forcevoid
vertical
(double amount) void
vertical
(double amount, double minTu) Methods inherited from class gaiasky.scene.camera.AbstractCamera
checkClosestBody, 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, setGamepadInput, 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
-
facingFocus
public boolean facingFocusIndicates whether the camera is facing the focus or not -
focus
The focus entity -
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
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)
-
updatePerspectiveCamera
public void updatePerspectiveCamera()Sets the perspective camera float values from the computed double vectors, and recalculates the camera matrices. -
addForwardForce
public void addForwardForce(double amount) Adds a forward movement by the given amount.- Parameters:
amount
- Positive for forward force, negative for backward force.
-
setVelocityVR
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 -
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
-
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 speedScaling) 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 interfaceICamera
-
getGamepadListener
-
addGamepadListener
public void addGamepadListener() -
removeGamepadListener
public void removeGamepadListener() -
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.
-
notify
Description copied from interface:IObserver
Event notification call. -
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 orthogonal.- 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
- The 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. -
setCamera
public void setCamera(com.badlogic.gdx.graphics.PerspectiveCamera perspectiveCamera) Description copied from interface:ICamera
Sets the active 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
public boolean isFocus(com.badlogic.ashley.core.Entity focus) Description copied from interface:ICamera
Checks if the given entity is the current focus. -
getFocus
Description copied from interface:ICamera
Returns the focus if any. -
hasFocus
public boolean hasFocus()Description copied from interface:ICamera
Checks whether the current camera has a focus set. -
setCenterFocus
public void setCenterFocus(boolean centerFocus) -
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
-
setVelocity
public void setVelocity(double amount) Sets the gamepad velocity as it comes from the joystick sensor.- Parameters:
amount
- The amount in [-1, 1].
-
setDiverted
public void setDiverted(boolean diverted) -
setCameraMultipliers
public void setCameraMultipliers(double movementMultiplier, double speedMultiplier) -
getCurrentMouseKbdListener
-
getScene
-