Package gaiasky.scene.view
Class FocusView
java.lang.Object
gaiasky.scene.view.AbstractView
gaiasky.scene.view.BaseView
gaiasky.scene.view.FocusView
- All Implemented Interfaces:
IFocus
,IVisibilitySwitch
-
Field Summary
Fields inherited from class gaiasky.scene.view.AbstractView
entity
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addEntityHitCoordinate
(int screenX, int screenY, int w, int h, int pixelDist, NaturalCamera camera, com.badlogic.gdx.utils.Array<com.badlogic.ashley.core.Entity> hits) void
addEntityHitRay
(Vector3d p0, Vector3d p1, NaturalCamera camera, com.badlogic.gdx.utils.Array<com.badlogic.ashley.core.Entity> hits) void
addHitCoordinate
(int screenX, int screenY, int w, int h, int pixelDist, NaturalCamera camera, com.badlogic.gdx.utils.Array<IFocus> hits) Adds this focus to the hits list if it is hit by the [screenX, screenY] position.void
addHitRay
(Vector3d p0, Vector3d p1, NaturalCamera camera, com.badlogic.gdx.utils.Array<IFocus> hits) Adds this focus to the hits list if it is hit by the given ray.protected void
Contains actions to take after a new entity has been set.protected void
entityCheck
(com.badlogic.ashley.core.Entity entity) Checks whether the given entity is suitable for this view.protected void
This method is called when the entity of this view is cleared.boolean
float
Gets the absolute magnitude.Returns the absolute position of this entity in the native coordinates (equatorial system).getAbsolutePosition
(String name, Vector3b out) Returns the absolute position of the entity identified by name within this entity in the native reference system.double
getAlpha()
Returns the right ascension angle of this focus object.float
Gets the apparent magnitude.long
Returns the id of the focus candidate of this object.Returns the name of the focus candidate of this object.double
Returns the candidate apparent view angle (view angle corrected with the field of view) of this entity, in radians.com.badlogic.ashley.core.Entity
getChildByNameAndArchetype
(String name, Archetype archetype) Same asIFocus.getAbsolutePosition(Vector3b)
.double
Same asIFocus.getDistToCamera()
.Same asIFocus.getName()
.float[]
getColor()
Gets the color of this object.getCt()
Returns the component types of this focus.double
getDelta()
Returns the declination angle of this focus object.double
Returns the current distance to the camera in internal units.double
getElevationAt
(Vector3b camPos) Returns the surface elevation of the projected position of the current camera on this focus object, which is usually the radius plus a value lookup in the height texture (if exists).double
getElevationAt
(Vector3b camPos, boolean useFuturePosition) Same asIFocus.getElevationAt(Vector3b)
but with the option to use the future position of the body instead of the current one.double
getElevationAt
(Vector3b camPos, Vector3b nextPos) Same asIFocus.getElevationAt(Vector3b)
but with the option to use the given future position of the body instead of the current one.getExtra()
com.badlogic.ashley.core.Entity
Gets the first ancestor of this node that is a star.Prepares the candidate with the given name.getGraph()
double
Returns the height scale of this focus, or 0 if it has no height info.int
getHip()
long
getId()
Returns the unique id of this focus.Returns the localized name of this focus.getMag()
double
double
getName()
Returns the first name of this focus.String[]
getNames()
Returns all names of this focus.int
Gets the octant this focus belongs to, if any.com.badlogic.gdx.utils.Array<com.badlogic.ashley.core.Entity>
getOctreeObjects
(com.badlogic.gdx.utils.Array<com.badlogic.ashley.core.Entity> list) Returns the orientation matrix of this focus.Returns the orientation quaternion of this focus.getPos()
Returns the position.void
getPositionAboveSurface
(double longitude, double latitude, double distance, Vector3b out) Returns the cartesian position in the internal reference system above the surface at the given longitude and latitude and distance.Gets the position in equatorial spherical coordinates.getPredictedPosition
(Vector3b out, ITimeFrameProvider time, ICamera camera, boolean force) Gets the position of this entity in the next time step in the internal reference system using the given time provider and the given camera.double
double
Returns the radius of this focus object in internal units.Returns the rotation component of this focus.int
Gets the depth of this focus object in the scene graph.getSet()
double
getSize()
Returns the size (diameter) of this entity in internal units.double
Returns the current view angle of this entity, in radians.double
Returns the current apparent view angle (view angle corrected with the field of view) of this entity, in radians.boolean
Checks whether the focus has the given name.boolean
Checks whether the focus has the given name.boolean
void
highlight
(boolean state, float[] color, boolean allVisible) Highlight using a plain color.void
highlight
(boolean state, int cmi, float cmAlpha, IAttribute cma, double cmMin, double cmMax, boolean allVisible) Highlight using a colormap.boolean
boolean
boolean
Checks whether this focus is within its valid time range, so that it can be used as a focus.boolean
isCopy()
Whether this is a copy or not.boolean
Returns whether this focus object is active or not.boolean
boolean
isForceLabel
(String name) boolean
boolean
isModel()
boolean
isOctree()
boolean
boolean
isPlanet()
boolean
isSameEntity
(FocusView other) boolean
isSet()
Checks whether the entity is a particle or star set.boolean
Returns true if this focus is a single star.boolean
isStar()
Returns whether this focus is a star of any kind (set or single).boolean
boolean
boolean
boolean
isVisibleGroup
(boolean attributeValue) void
Hook that runs when the candidate is actually made focus.void
Marks the element for update in VRAM.protected boolean
Whether position must be recomputed for this entity.void
setDescription
(String description) void
setForceLabel
(Boolean forceLabel, String name) void
setLabelColor
(float[] color) Sets the label color, as an RGBA float array.void
setLabelColor
(float[] color, String name) void
void
void
setVisible
(boolean visible, String name) void
setVisibleGroup
(boolean visibility) Methods inherited from class gaiasky.scene.view.BaseView
componentsCheck, getBase, getBody, getComponent, getComponentType, getOpacity, hasCt, isVisible, isVisible, setColor, setVisible
Methods inherited from class gaiasky.scene.view.AbstractView
check, clearEntity, getEntity, isEmpty, isValid, setEntity
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface gaiasky.scene.api.IVisibilitySwitch
hasCt, isVisible, isVisible, setVisible
-
Field Details
-
extra
Particle component, maybe.
-
-
Constructor Details
-
FocusView
Creates a focus view with the given scene. -
FocusView
public FocusView()Creates an empty focus view. -
FocusView
public FocusView(com.badlogic.ashley.core.Entity entity) Creates an abstract view with the given entity.- Parameters:
entity
- The entity.
-
-
Method Details
-
entityCheck
protected void entityCheck(com.badlogic.ashley.core.Entity entity) Description copied from class:AbstractView
Checks whether the given entity is suitable for this view. This method should throw aRuntimeException
if the entity is not suitable.- Overrides:
entityCheck
in classBaseView
- Parameters:
entity
- The entity.
-
entityChanged
protected void entityChanged()Description copied from class:AbstractView
Contains actions to take after a new entity has been set. This method is typically used to initialize the view components.- Overrides:
entityChanged
in classBaseView
-
entityCleared
protected void entityCleared()Description copied from class:AbstractView
This method is called when the entity of this view is cleared. It should set all component references to null.- Overrides:
entityCleared
in classBaseView
-
setScene
-
isParticle
public boolean isParticle() -
getId
public long getId()Description copied from interface:IFocus
Returns the unique id of this focus. -
getCandidateId
public long getCandidateId()Description copied from interface:IFocus
Returns the id of the focus candidate of this object. Defaults toIFocus.getId()
.- Specified by:
getCandidateId
in interfaceIFocus
- Returns:
- The id of the candidate.
-
getLocalizedName
Description copied from interface:IFocus
Returns the localized name of this focus. If it has no localized name, it returns the default name.- Specified by:
getLocalizedName
in interfaceIFocus
- Returns:
- The localized name.
-
getName
Description copied from interface:IFocus
Returns the first name of this focus.- Specified by:
getName
in interfaceIFocus
- Specified by:
getName
in interfaceIVisibilitySwitch
- Returns:
- The first name.
-
setName
- Specified by:
setName
in interfaceIVisibilitySwitch
-
getNames
Description copied from interface:IFocus
Returns all names of this focus. -
hasName
Description copied from interface:IFocus
Checks whether the focus has the given name. -
hasName
Description copied from interface:IFocus
Checks whether the focus has the given name. -
getDescription
- Specified by:
getDescription
in interfaceIVisibilitySwitch
-
setDescription
- Specified by:
setDescription
in interfaceIVisibilitySwitch
-
getNumParticles
public int getNumParticles() -
getDataFile
-
isVisible
- Specified by:
isVisible
in interfaceIVisibilitySwitch
-
isVisibleGroup
public boolean isVisibleGroup() -
setVisibleGroup
public void setVisibleGroup(boolean visibility) -
isVisibleGroup
public boolean isVisibleGroup(boolean attributeValue) -
setVisible
- Specified by:
setVisible
in interfaceIVisibilitySwitch
- Overrides:
setVisible
in classBaseView
-
getClosestName
Description copied from interface:IFocus
Same asIFocus.getName()
.- Specified by:
getClosestName
in interfaceIFocus
- Returns:
- The name.
-
getCandidateName
Description copied from interface:IFocus
Returns the name of the focus candidate of this object. Defaults toIFocus.getName()
.- Specified by:
getCandidateName
in interfaceIFocus
- Returns:
- The name of the candidate.
-
getCt
Description copied from interface:IFocus
Returns the component types of this focus. -
isFocusActive
public boolean isFocusActive()Description copied from interface:IFocus
Returns whether this focus object is active or not. The active status determines whether the object can be focussed or not.- Specified by:
isFocusActive
in interfaceIFocus
- Returns:
- The active status.
-
getPos
Description copied from interface:IFocus
Returns the position. -
getFirstStarAncestor
- Specified by:
getFirstStarAncestor
in interfaceIFocus
-
getFirstStarAncestor
-
getFirstStarAncestorEntity
public com.badlogic.ashley.core.Entity getFirstStarAncestorEntity()Description copied from interface:IFocus
Gets the first ancestor of this node that is a star.- Specified by:
getFirstStarAncestorEntity
in interfaceIFocus
- Returns:
- The first star ancestor.
-
getAbsolutePosition
Description copied from interface:IFocus
Returns the absolute position of this entity in the native coordinates (equatorial system).- Specified by:
getAbsolutePosition
in interfaceIFocus
- Parameters:
out
- The out vector.- Returns:
- The absolute position, same as aux.
-
getAbsolutePosition
Description copied from interface:IFocus
Returns the absolute position of the entity identified by name within this entity in the native reference system.- Specified by:
getAbsolutePosition
in interfaceIFocus
- Parameters:
name
- The name (lowercase) of the entity to get the position from (useful in case of star groups).out
- Vector3d to put the return value.- Returns:
- The absolute position of the entity if it exists, null otherwise.
-
getPositionAboveSurface
public void getPositionAboveSurface(double longitude, double latitude, double distance, Vector3b out) Returns the cartesian position in the internal reference system above the surface at the given longitude and latitude and distance.- Parameters:
longitude
- The longitude in deglatitude
- The latitude in degdistance
- The distance in kmout
- The vector to store the result
-
getClosestAbsolutePos
Description copied from interface:IFocus
Same asIFocus.getAbsolutePosition(Vector3b)
.- Specified by:
getClosestAbsolutePos
in interfaceIFocus
- Parameters:
out
- Vector3d where to put the return value.- Returns:
- The absolute position, same as aux.
-
getPosSph
Description copied from interface:IFocus
Gets the position in equatorial spherical coordinates. -
mustUpdatePosition
Whether position must be recomputed for this entity. By default, only when time is on- Parameters:
time
- The current time- Returns:
- True if position should be recomputed for this entity
-
getPredictedPosition
public Vector3b getPredictedPosition(Vector3b out, ITimeFrameProvider time, ICamera camera, boolean force) Description copied from interface:IFocus
Gets the position of this entity in the next time step in the internal reference system using the given time provider and the given camera.- Specified by:
getPredictedPosition
in interfaceIFocus
- Parameters:
out
- The out vector where the result will be stored.time
- The time frame provider.camera
- The camera.force
- Whether to force the computation if time is off.- Returns:
- The aux vector for chaining.
-
getDistToCamera
public double getDistToCamera()Description copied from interface:IFocus
Returns the current distance to the camera in internal units.- Specified by:
getDistToCamera
in interfaceIFocus
- Returns:
- The current distance to the camera, in internal units.
-
getClosestDistToCamera
public double getClosestDistToCamera()Description copied from interface:IFocus
Same asIFocus.getDistToCamera()
.- Specified by:
getClosestDistToCamera
in interfaceIFocus
- Returns:
- The distance to the camera in internal units.
-
getSolidAngle
public double getSolidAngle()Description copied from interface:IFocus
Returns the current view angle of this entity, in radians.- Specified by:
getSolidAngle
in interfaceIFocus
- Returns:
- The view angle in radians.
-
getSolidAngleApparent
public double getSolidAngleApparent()Description copied from interface:IFocus
Returns the current apparent view angle (view angle corrected with the field of view) of this entity, in radians.- Specified by:
getSolidAngleApparent
in interfaceIFocus
- Returns:
- The apparent view angle in radians.
-
getCandidateSolidAngleApparent
public double getCandidateSolidAngleApparent()Description copied from interface:IFocus
Returns the candidate apparent view angle (view angle corrected with the field of view) of this entity, in radians.- Specified by:
getCandidateSolidAngleApparent
in interfaceIFocus
- Returns:
- The apparent view angle in radians.
-
getAlpha
public double getAlpha()Description copied from interface:IFocus
Returns the right ascension angle of this focus object. -
getDelta
public double getDelta()Description copied from interface:IFocus
Returns the declination angle of this focus object. -
getSize
public double getSize()Description copied from interface:IFocus
Returns the size (diameter) of this entity in internal units. -
getRadius
public double getRadius()Description copied from interface:IFocus
Returns the radius of this focus object in internal units. -
getElevationAt
Description copied from interface:IFocus
Returns the surface elevation of the projected position of the current camera on this focus object, which is usually the radius plus a value lookup in the height texture (if exists).- Specified by:
getElevationAt
in interfaceIFocus
- Parameters:
camPos
- The camera position.- Returns:
- The height of the projected position of the current camera.
-
getElevationAt
Description copied from interface:IFocus
Same asIFocus.getElevationAt(Vector3b)
but with the option to use the future position of the body instead of the current one.- Specified by:
getElevationAt
in interfaceIFocus
- Parameters:
camPos
- The camera position.useFuturePosition
- Whether to use the future position or the current one.- Returns:
- The height of the projected position of the current camera on the surface.
-
getElevationAt
Description copied from interface:IFocus
Same asIFocus.getElevationAt(Vector3b)
but with the option to use the given future position of the body instead of the current one.- Specified by:
getElevationAt
in interfaceIFocus
- Parameters:
camPos
- The camera position.nextPos
- The future position of this body to use.- Returns:
- The height of the projected position of the current camera on the surface.
-
getHeightScale
public double getHeightScale()Description copied from interface:IFocus
Returns the height scale of this focus, or 0 if it has no height info.- Specified by:
getHeightScale
in interfaceIFocus
- Returns:
- The height scale in internal units.
-
getAppmag
public float getAppmag()Description copied from interface:IFocus
Gets the apparent magnitude. -
getAbsmag
public float getAbsmag()Description copied from interface:IFocus
Gets the absolute magnitude. -
getOrientation
Description copied from interface:IFocus
Returns the orientation matrix of this focus.- Specified by:
getOrientation
in interfaceIFocus
- Returns:
- The orientation matrix. Can be null.
-
getRotationComponent
Description copied from interface:IFocus
Returns the rotation component of this focus.- Specified by:
getRotationComponent
in interfaceIFocus
- Returns:
- The rotation component. Can be null.
-
getOrientationQuaternion
Description copied from interface:IFocus
Returns the orientation quaternion of this focus.- Specified by:
getOrientationQuaternion
in interfaceIFocus
- Returns:
- The orientation quaternion. Can be null.
-
addHitCoordinate
public void addHitCoordinate(int screenX, int screenY, int w, int h, int pixelDist, NaturalCamera camera, com.badlogic.gdx.utils.Array<IFocus> hits) Description copied from interface:IFocus
Adds this focus to the hits list if it is hit by the [screenX, screenY] position.- Specified by:
addHitCoordinate
in interfaceIFocus
- Parameters:
screenX
- The x position of the hit.screenY
- The y position of the hit.w
- The viewport width.h
- The viewport height.pixelDist
- The minimum pixel distance to consider as hit.camera
- The camera.hits
- The list where to add the element.
-
addEntityHitCoordinate
public void addEntityHitCoordinate(int screenX, int screenY, int w, int h, int pixelDist, NaturalCamera camera, com.badlogic.gdx.utils.Array<com.badlogic.ashley.core.Entity> hits) - Specified by:
addEntityHitCoordinate
in interfaceIFocus
-
addHitRay
public void addHitRay(Vector3d p0, Vector3d p1, NaturalCamera camera, com.badlogic.gdx.utils.Array<IFocus> hits) Description copied from interface:IFocus
Adds this focus to the hits list if it is hit by the given ray. -
addEntityHitRay
public void addEntityHitRay(Vector3d p0, Vector3d p1, NaturalCamera camera, com.badlogic.gdx.utils.Array<com.badlogic.ashley.core.Entity> hits) - Specified by:
addEntityHitRay
in interfaceIFocus
-
makeFocus
public void makeFocus()Description copied from interface:IFocus
Hook that runs when the candidate is actually made focus. -
getFocus
Description copied from interface:IFocus
Prepares the candidate with the given name. -
isCoordinatesTimeOverflow
public boolean isCoordinatesTimeOverflow()Description copied from interface:IFocus
Checks whether this focus is within its valid time range, so that it can be used as a focus.- Specified by:
isCoordinatesTimeOverflow
in interfaceIFocus
- Returns:
- Whether the focus object is within its valid time range.
-
getSceneGraphDepth
public int getSceneGraphDepth()Description copied from interface:IFocus
Gets the depth of this focus object in the scene graph.- Specified by:
getSceneGraphDepth
in interfaceIFocus
- Returns:
- The depth of the scene graph.
-
getOctant
Description copied from interface:IFocus
Gets the octant this focus belongs to, if any. This will return null if this focus is not part of an octree. -
getHip
public int getHip() -
setForceLabel
-
isForceLabel
- Specified by:
isForceLabel
in interfaceIFocus
-
equals
-
isForceLabel
public boolean isForceLabel()- Specified by:
isForceLabel
in interfaceIFocus
-
setLabelColor
public void setLabelColor(float[] color) Sets the label color, as an RGBA float array.- Parameters:
color
- The label color.
-
setLabelColor
-
isCopy
public boolean isCopy()Description copied from interface:IFocus
Whether this is a copy or not. -
getColor
public float[] getColor()Description copied from interface:IFocus
Gets the color of this object. -
getGraph
-
getMag
-
getExtra
-
getParticleSet
-
getStarSet
-
isSet
public boolean isSet()Checks whether the entity is a particle or star set.- Returns:
- True if the entity is a particle or star set.
-
isStarSet
public boolean isStarSet() -
getSet
-
isModel
public boolean isModel() -
isCluster
public boolean isCluster() -
isCelestial
public boolean isCelestial() -
hasProperMotion
public boolean hasProperMotion() -
getMuAlpha
public double getMuAlpha() -
getMuDelta
public double getMuDelta() -
getRadialVelocity
public double getRadialVelocity() -
getChildByNameAndArchetype
-
markForUpdate
public void markForUpdate()Marks the element for update in VRAM. -
highlight
public void highlight(boolean state, float[] color, boolean allVisible) Highlight using a plain color.- Parameters:
state
- Whether to highlight.color
- The plain color.allVisible
- All visible.
-
highlight
public void highlight(boolean state, int cmi, float cmAlpha, IAttribute cma, double cmMin, double cmMax, boolean allVisible) Highlight using a colormap.- Parameters:
state
- Whether to highlight.cmi
- Color map index.cmAlpha
- Color map alpha value.cma
- Color map attribute.cmMin
- Min mapping value.cmMax
- Max mapping value.
-
isHighlighted
public boolean isHighlighted() -
isOctree
public boolean isOctree() -
getOctreeObjects
public com.badlogic.gdx.utils.Array<com.badlogic.ashley.core.Entity> getOctreeObjects(com.badlogic.gdx.utils.Array<com.badlogic.ashley.core.Entity> list) -
isPlanet
public boolean isPlanet() -
isSingleStar
public boolean isSingleStar()Returns true if this focus is a single star.- Returns:
- True if this is a single star.
-
isStar
public boolean isStar()Returns whether this focus is a star of any kind (set or single).- Returns:
- True if the focus is a star.
-
isSameEntity
-