Package gaiasky.scenegraph.camera
Class AbstractCamera
java.lang.Object
gaiasky.scenegraph.camera.AbstractCamera
- All Implemented Interfaces:
ICamera
- Direct Known Subclasses:
FovCamera
,NaturalCamera
,RelativisticCamera
,SpacecraftCamera
public abstract class AbstractCamera extends java.lang.Object implements ICamera
-
Field Summary
Fields Modifier and Type Field Description protected float
angleEdgeRad
Angle from the center to the corner of the screen in scene coordinates, in radiansprotected float
ar
Aspect ratiodouble
CAM_FAR
Camera far valuedouble
CAM_NEAR
Camera near valuecom.badlogic.gdx.graphics.PerspectiveCamera
camera
The main cameraprotected com.badlogic.gdx.graphics.PerspectiveCamera[]
cameras
Vector with all perspective camerasprotected com.badlogic.gdx.graphics.PerspectiveCamera
camLeft
Stereoscopic mode camerasprotected com.badlogic.gdx.graphics.PerspectiveCamera
camRight
Stereoscopic mode camerasprotected IFocus
closest
The closest betweenclosestBody
andclosestStar
protected IFocus
closestBody
Closest non-star body to the cameraprotected IFocus
closestStar
The closest particle to the cameraprotected Matrix4d
combined
protected double
distance
Distance of camera to centerfloat
fovFactor
protected Frustumd
frustumd
protected static Logger.Log
logger
protected CameraManager
parent
The parentVector3b
pos
Vector3b
posinv
protected com.badlogic.gdx.math.Matrix4
prevCombined
Vector3b
prevpos
protected Matrix4d
projection
protected Proximity
proximity
Vector3d
shift
Vector3d
tmp
protected Matrix4d
view
-
Constructor Summary
Constructors Constructor Description AbstractCamera(CameraManager parent)
-
Method Summary
Modifier and Type Method Description void
checkClosestBody(IFocus cb)
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 star)
Sets the current closest particle to this camera.protected boolean
computeVisibleFovs(CelestialBody cb, FovCamera fCamera)
Returns true if a body with the given position is observed in any of the given directions using the given cone anglevoid
copyParamsFrom(AbstractCamera other)
float
getAngleEdge()
Gets the angle of the edge of the screen, diagonally.float
getAngleEdge(int width, int height, float angle)
com.badlogic.gdx.graphics.PerspectiveCamera
getCameraStereoLeft()
com.badlogic.gdx.graphics.PerspectiveCamera
getCameraStereoRight()
IFocus
getCloseLightSource(int i)
Gets the current i-close light source to this cameraIFocus
getClosest()
Returns the current closest objectIFocus
getClosestBody()
IFocus
getClosestParticle()
Gets the current closest particle to this cameraICamera
getCurrent()
double
getDistance()
Gets the distance from the camera to the centre of our reference frame (Sun)double
getFar()
float
getFovFactor()
Vector3b
getInversePos()
CameraManager
getManager()
double
getNear()
Vector3b
getPos()
Vector3b
getPreviousPos()
com.badlogic.gdx.math.Matrix4
getPreviousProjView()
com.badlogic.gdx.math.Matrix4
getProjView()
IFocus
getSecondClosestBody()
Vector3d
getShift()
Vector3d
getVelocity()
boolean
isVisible(double viewAngle, Vector3b pos, double distToCamera)
boolean
isVisible(double viewAngle, Vector3d pos, double distToCamera)
boolean
isVisible(CelestialBody cb)
void
render(int rw, int rh)
void
setCameraStereoLeft(com.badlogic.gdx.graphics.PerspectiveCamera cam)
void
setCameraStereoRight(com.badlogic.gdx.graphics.PerspectiveCamera cam)
void
setClosest(IFocus focus)
Sets the closest of allprotected void
setFrustumPlanes(com.badlogic.gdx.graphics.PerspectiveCamera cam)
void
setPos(Vector3b pos)
void
setPos(Vector3d pos)
void
setPreviousPos(Vector3b pos)
void
setPreviousPos(Vector3d prevpos)
void
setPreviousProjView(com.badlogic.gdx.math.Matrix4 mat)
void
setShift(Vector3d shift)
void
swapBuffers()
void
update(com.badlogic.gdx.graphics.PerspectiveCamera cam, Vector3d position, Vector3d direction, Vector3d up)
void
updateAngleEdge(int width, int height)
void
updateFrustumPlanes()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface gaiasky.scenegraph.camera.ICamera
getCamera, getDirection, getDirections, getFocus, getFrontCameras, getMode, getNCameras, getSpeed, getUp, isFocus, resize, setCamera, setDirection, speedScaling, update, updateMode
-
Field Details
-
logger
-
CAM_FAR
public double CAM_FARCamera far value -
CAM_NEAR
public double CAM_NEARCamera near value -
pos
-
posinv
-
prevpos
-
tmp
-
shift
-
angleEdgeRad
protected float angleEdgeRadAngle from the center to the corner of the screen in scene coordinates, in radians -
ar
protected float arAspect ratio -
distance
protected double distanceDistance of camera to center -
parent
The parent -
camera
public com.badlogic.gdx.graphics.PerspectiveCamera cameraThe main camera -
camLeft
protected com.badlogic.gdx.graphics.PerspectiveCamera camLeftStereoscopic mode cameras -
camRight
protected com.badlogic.gdx.graphics.PerspectiveCamera camRightStereoscopic mode cameras -
cameras
protected com.badlogic.gdx.graphics.PerspectiveCamera[] camerasVector with all perspective cameras -
projection
-
view
-
combined
-
frustumd
-
fovFactor
public float fovFactor -
closestBody
Closest non-star body to the camera -
closestStar
The closest particle to the camera -
proximity
-
prevCombined
protected com.badlogic.gdx.math.Matrix4 prevCombined -
closest
The closest betweenclosestBody
andclosestStar
-
-
Constructor Details
-
AbstractCamera
-
-
Method Details
-
updateAngleEdge
public void updateAngleEdge(int width, int height)- Specified by:
updateAngleEdge
in interfaceICamera
-
getAngleEdge
public float getAngleEdge(int width, int height, float angle) -
getFovFactor
public float getFovFactor()- Specified by:
getFovFactor
in interfaceICamera
-
getPos
-
setPos
-
setPos
-
setPreviousPos
- Specified by:
setPreviousPos
in interfaceICamera
-
getPreviousPos
- Specified by:
getPreviousPos
in interfaceICamera
-
setPreviousPos
- Specified by:
setPreviousPos
in interfaceICamera
-
getInversePos
- Specified by:
getInversePos
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
- Specified by:
getManager
in interfaceICamera
-
render
public void render(int rw, int rh) -
getCurrent
- Specified by:
getCurrent
in interfaceICamera
-
isVisible
-
isVisible
-
isVisible
-
computeVisibleFovs
Returns true if a body with the given position is observed in any of the given directions using the given cone angle- Parameters:
cb
- The body.fCamera
- The FovCamera.- Returns:
- True if the body is observed. False otherwise.
-
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
-
copyParamsFrom
-
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
-
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
-
setShift
-
getShift
-
update
-
checkClosestBody
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:
cb
- The body to check
-
getClosestBody
- Specified by:
getClosestBody
in interfaceICamera
-
getSecondClosestBody
- Specified by:
getSecondClosestBody
in interfaceICamera
-
getClosestParticle
Description copied from interface:ICamera
Gets the current closest particle to this camera- Specified by:
getClosestParticle
in interfaceICamera
- Returns:
- The closest particle
-
getCloseLightSource
Description copied from interface:ICamera
Gets the current i-close light source to this camera- Specified by:
getCloseLightSource
in interfaceICamera
- Returns:
- The i close light source (star?)
-
checkClosestParticle
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:
star
- The candidate particle
-
swapBuffers
public void swapBuffers()- Specified by:
swapBuffers
in interfaceICamera
-
getClosest
Description copied from interface:ICamera
Returns the current closest object- Specified by:
getClosest
in interfaceICamera
-
setClosest
Description copied from interface:ICamera
Sets the closest of all- Specified by:
setClosest
in interfaceICamera
- Parameters:
focus
- The new closest object
-
getVelocity
- Specified by:
getVelocity
in interfaceICamera
-
updateFrustumPlanes
public void updateFrustumPlanes()- Specified by:
updateFrustumPlanes
in interfaceICamera
-
setFrustumPlanes
protected void setFrustumPlanes(com.badlogic.gdx.graphics.PerspectiveCamera cam) -
getNear
public double getNear() -
getFar
public double getFar() -
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
-