Package gaiasky.scenegraph.camera
Class CameraManager
- java.lang.Object
-
- gaiasky.scenegraph.camera.CameraManager
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CameraManager.CameraMode
Convenience enum to describe the camera mode
-
Field Summary
Fields Modifier and Type Field Description ICamera
current
FovCamera
fovCamera
CameraManager.CameraMode
mode
NaturalCamera
naturalCamera
RelativisticCamera
relativisticCamera
SpacecraftCamera
spacecraftCamera
protected double
speed
Current velocity in km/hprotected Vector3d
velocity
Velocity vectorprotected Vector3d
velocitynor
Velocity vector
-
Constructor Summary
Constructors Constructor Description CameraManager(com.badlogic.gdx.assets.AssetManager manager, CameraManager.CameraMode mode, boolean vr)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkClosestBody(IFocus focus)
Called after updating the body's distance to the cam, it updates the closest body in the camera to figure out the camera nearvoid
checkClosestParticle(IFocus particle)
Sets the current closest particle to this camera.float
getAngleEdge()
Gets the angle of the edge of the screen, diagonally.com.badlogic.gdx.graphics.PerspectiveCamera
getCamera()
Returns the perspective camera.com.badlogic.gdx.graphics.PerspectiveCamera
getCameraStereoLeft()
com.badlogic.gdx.graphics.PerspectiveCamera
getCameraStereoRight()
IFocus
getClosest()
Returns the current closest objectIFocus
getClosestBody()
IFocus
getClosestParticle()
Gets the current closest particle to this cameraICamera
getCurrent()
Vector3d
getDirection()
Vector3d[]
getDirections()
double
getDistance()
Gets the distance from the camera to the centre of our reference frame (Sun)double
getFar()
IFocus
getFocus()
Returns the foucs if anyfloat
getFovFactor()
com.badlogic.gdx.graphics.PerspectiveCamera[]
getFrontCameras()
static com.badlogic.gdx.math.Matrix4
getFrustumCornersEye(com.badlogic.gdx.graphics.PerspectiveCamera cam, com.badlogic.gdx.math.Matrix4 frustumCorners)
Stores the normalized rays representing the camera frustum in eye space in a 4x4 matrix.com.badlogic.gdx.math.Matrix4
getFrustumCornersWorld(com.badlogic.gdx.math.Matrix4 frustumCorners)
Stores the normalized rays representing the camera frustum in world space in a 4x4 matrix.Vector3d
getInversePos()
CameraManager
getManager()
CameraManager.CameraMode
getMode()
int
getNCameras()
double
getNear()
Vector3d
getPos()
Vector3d
getPreviousPos()
com.badlogic.gdx.math.Matrix4
getPreviousProjView()
com.badlogic.gdx.math.Matrix4
getProjView()
IFocus
getSecondClosestBody()
Vector3d
getShift()
double
getSpeed()
Gets the current velocity of the camera in km/h.Vector3d
getUp()
Vector3d
getVelocity()
boolean
isFocus(IFocus cb)
Checks if this body is the current focusboolean
isNatural()
boolean
isVisible(ITimeFrameProvider time, double viewAngle, Vector3d pos, double distToCamera)
boolean
isVisible(ITimeFrameProvider time, CelestialBody cb)
boolean
isVisible(ITimeFrameProvider time, Vector3d pos)
void
notify(Events event, java.lang.Object... data)
void
render(int rw, int rh)
void
resize(int width, int height)
void
setCamera(com.badlogic.gdx.graphics.PerspectiveCamera cam)
Sets the active cameravoid
setCameraStereoLeft(com.badlogic.gdx.graphics.PerspectiveCamera cam)
void
setCameraStereoRight(com.badlogic.gdx.graphics.PerspectiveCamera cam)
void
setClosest(IFocus focus)
Sets the closest of allvoid
setDirection(Vector3d dir)
void
setPos(Vector3d pos)
void
setPreviousPos(Vector3d prevpos)
void
setPreviousProjView(com.badlogic.gdx.math.Matrix4 mat)
void
setShift(Vector3d shift)
double
speedScaling()
void
update(double dt, ITimeFrameProvider time)
Update method.void
updateAngleEdge(int width, int height)
void
updateCurrentCamera(CameraManager.CameraMode previousMode)
void
updateFrustumPlanes()
void
updateMode(CameraManager.CameraMode mode, boolean centerFocus, boolean postEvent)
Sets the new camera mode and updates the frustum
-
-
-
Field Detail
-
mode
public CameraManager.CameraMode mode
-
current
public ICamera current
-
naturalCamera
public NaturalCamera naturalCamera
-
fovCamera
public FovCamera fovCamera
-
spacecraftCamera
public SpacecraftCamera spacecraftCamera
-
relativisticCamera
public RelativisticCamera relativisticCamera
-
speed
protected double speed
Current velocity in km/h
-
velocity
protected Vector3d velocity
Velocity vector
-
velocitynor
protected Vector3d velocitynor
Velocity vector
-
-
Constructor Detail
-
CameraManager
public CameraManager(com.badlogic.gdx.assets.AssetManager manager, CameraManager.CameraMode mode, boolean vr)
-
-
Method Detail
-
updateCurrentCamera
public void updateCurrentCamera(CameraManager.CameraMode previousMode)
-
isNatural
public boolean isNatural()
-
getCamera
public com.badlogic.gdx.graphics.PerspectiveCamera getCamera()
Description copied from interface:ICamera
Returns the perspective camera.
-
getFovFactor
public float getFovFactor()
- Specified by:
getFovFactor
in interfaceICamera
-
getPreviousPos
public Vector3d getPreviousPos()
- Specified by:
getPreviousPos
in interfaceICamera
-
setPreviousPos
public void setPreviousPos(Vector3d prevpos)
- Specified by:
setPreviousPos
in interfaceICamera
-
getInversePos
public Vector3d getInversePos()
- Specified by:
getInversePos
in interfaceICamera
-
getVelocity
public Vector3d getVelocity()
- Specified by:
getVelocity
in interfaceICamera
-
getDirection
public Vector3d getDirection()
- Specified by:
getDirection
in interfaceICamera
-
setDirection
public void setDirection(Vector3d dir)
- Specified by:
setDirection
in interfaceICamera
-
update
public void update(double dt, ITimeFrameProvider time)
Update method.
-
updateMode
public void updateMode(CameraManager.CameraMode mode, boolean centerFocus, boolean postEvent)
Sets the new camera mode and updates the frustum- Specified by:
updateMode
in interfaceICamera
- Parameters:
mode
-
-
notify
public void notify(Events event, java.lang.Object... data)
-
getDirections
public Vector3d[] getDirections()
- Specified by:
getDirections
in interfaceICamera
-
getNCameras
public int getNCameras()
- Specified by:
getNCameras
in interfaceICamera
-
getFrontCameras
public com.badlogic.gdx.graphics.PerspectiveCamera[] getFrontCameras()
- Specified by:
getFrontCameras
in interfaceICamera
-
getMode
public CameraManager.CameraMode getMode()
-
updateAngleEdge
public void updateAngleEdge(int width, int height)
- Specified by:
updateAngleEdge
in interfaceICamera
-
getAngleEdge
public float getAngleEdge()
Description copied from interface:ICamera
Gets the angle of the edge of the screen, diagonally. It assumes the vertical angle is the field of view and corrects the horizontal using the aspect ratio. It depends on the viewport size and the field of view itself.- Specified by:
getAngleEdge
in interfaceICamera
- Returns:
- The angle in radians.
-
getManager
public CameraManager getManager()
- Specified by:
getManager
in interfaceICamera
-
getCurrent
public ICamera getCurrent()
- Specified by:
getCurrent
in interfaceICamera
-
getSpeed
public double getSpeed()
Description copied from interface:ICamera
Gets the current velocity of the camera in km/h.
-
isFocus
public boolean isFocus(IFocus cb)
Description copied from interface:ICamera
Checks if this body is the current focus
-
checkClosestBody
public void checkClosestBody(IFocus focus)
Description copied from interface:ICamera
Called after updating the body's distance to the cam, it updates the closest body in the camera to figure out the camera near- Specified by:
checkClosestBody
in interfaceICamera
- Parameters:
focus
- The body to check
-
getFocus
public IFocus getFocus()
Description copied from interface:ICamera
Returns the foucs if any
-
isVisible
public boolean isVisible(ITimeFrameProvider time, CelestialBody cb)
-
isVisible
public boolean isVisible(ITimeFrameProvider time, Vector3d pos)
-
isVisible
public boolean isVisible(ITimeFrameProvider time, double viewAngle, Vector3d pos, double distToCamera)
-
getDistance
public double getDistance()
Description copied from interface:ICamera
Gets the distance from the camera to the centre of our reference frame (Sun)- Specified by:
getDistance
in interfaceICamera
- Returns:
- The distance
-
setCamera
public void setCamera(com.badlogic.gdx.graphics.PerspectiveCamera cam)
Description copied from interface:ICamera
Sets the active camera
-
setCameraStereoLeft
public void setCameraStereoLeft(com.badlogic.gdx.graphics.PerspectiveCamera cam)
- Specified by:
setCameraStereoLeft
in interfaceICamera
-
setCameraStereoRight
public void setCameraStereoRight(com.badlogic.gdx.graphics.PerspectiveCamera cam)
- Specified by:
setCameraStereoRight
in interfaceICamera
-
getCameraStereoLeft
public com.badlogic.gdx.graphics.PerspectiveCamera getCameraStereoLeft()
- Specified by:
getCameraStereoLeft
in interfaceICamera
-
getCameraStereoRight
public com.badlogic.gdx.graphics.PerspectiveCamera getCameraStereoRight()
- Specified by:
getCameraStereoRight
in interfaceICamera
-
getClosestBody
public IFocus getClosestBody()
- Specified by:
getClosestBody
in interfaceICamera
-
getSecondClosestBody
public IFocus getSecondClosestBody()
- Specified by:
getSecondClosestBody
in interfaceICamera
-
getProjView
public com.badlogic.gdx.math.Matrix4 getProjView()
- Specified by:
getProjView
in interfaceICamera
-
getPreviousProjView
public com.badlogic.gdx.math.Matrix4 getPreviousProjView()
- Specified by:
getPreviousProjView
in interfaceICamera
-
setPreviousProjView
public void setPreviousProjView(com.badlogic.gdx.math.Matrix4 mat)
- Specified by:
setPreviousProjView
in interfaceICamera
-
getClosestParticle
public IFocus getClosestParticle()
Description copied from interface:ICamera
Gets the current closest particle to this camera- Specified by:
getClosestParticle
in interfaceICamera
- Returns:
- The closest particle
-
checkClosestParticle
public void checkClosestParticle(IFocus particle)
Description copied from interface:ICamera
Sets the current closest particle to this camera. This will be only set if the given particle is closer than the current.- Specified by:
checkClosestParticle
in interfaceICamera
- Parameters:
particle
- The candidate particle
-
getClosest
public IFocus getClosest()
Description copied from interface:ICamera
Returns the current closest object- Specified by:
getClosest
in interfaceICamera
-
setClosest
public void setClosest(IFocus focus)
Description copied from interface:ICamera
Sets the closest of all- Specified by:
setClosest
in interfaceICamera
- Parameters:
focus
- The new closest object
-
speedScaling
public double speedScaling()
- Specified by:
speedScaling
in interfaceICamera
-
updateFrustumPlanes
public void updateFrustumPlanes()
- Specified by:
updateFrustumPlanes
in interfaceICamera
-
getFrustumCornersWorld
public com.badlogic.gdx.math.Matrix4 getFrustumCornersWorld(com.badlogic.gdx.math.Matrix4 frustumCorners)
Stores the normalized rays representing the camera frustum in world space in a 4x4 matrix. Each row is a vector.- Parameters:
frustumCorners
- The matrix to fill- Returns:
- The same matrix
-
getFrustumCornersEye
public static com.badlogic.gdx.math.Matrix4 getFrustumCornersEye(com.badlogic.gdx.graphics.PerspectiveCamera cam, com.badlogic.gdx.math.Matrix4 frustumCorners)
Stores the normalized rays representing the camera frustum in eye space in a 4x4 matrix. Each row is a vector.- Parameters:
cam
- The perspective camerafrustumCorners
- The matrix to fill- Returns:
- The same matrix
-
-