Package gaiasky.scenegraph
Class SceneGraphNode
java.lang.Object
gaiasky.scenegraph.SceneGraphNode
- All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable
,IStarContainer
,IVisibilitySwitch
,IPosition
- Direct Known Subclasses:
Area
,Axes
,BillboardGroup
,CelestialBody
,Constellation
,ConstellationBoundaries
,CosmicRuler
,FadeNode
,Loc
,MilkyWay
,ShapeObject
,StarCluster
,StubModel
,VertsObject
An object in the scene graph. Serves as a top class which provides the basic functionality.
-
Field Summary
Modifier and TypeFieldDescriptionprotected static TLV3B
protected static TLV3B
protected static TLV3B
protected static TLV3B
float[]
Base RGB colorcom.badlogic.gdx.utils.Array<SceneGraphNode>
List of children entities.boolean
Flag indicating whether the object has been computed in this step.protected IBodyCoordinates
Coordinates provider.boolean
Is this just a copy?Component types, for managing visibilityprotected static TLV3D
protected static TLV3D
protected static TLV3D
protected static TLV3D
double
The distance to the camera from the focus center.protected static TLV3
protected static TLV3
protected static TLV3
protected static TLV3
protected boolean
Force to render the label of this entity, bypassing the solid angle checklong
The internal identifierfloat[]
protected long
Time of last visibility change in millisecondsint
The index of the localized name in thenames
array.com.badlogic.gdx.math.Matrix4
Local transform matrix.String[]
The name(s) of the node, if any.int
The total number of descendants under this node.Its pageThe id of the octant it belongs to, if anyfloat
The ownOpacity value (alpha)This transform stores only the orientation of the object.The parent entity.The first name of the parent object.Position of this entity in the local reference system.Position in the equatorial system; ra, dec.static final String
float
Size factor in internal units.Cumulative translation object.double
The view angle, in radians.double
The view angle corrected with the field of view angle, in radians.protected boolean
Is this node visible? -
Constructor Summary
ConstructorDescriptionSceneGraphNode
(int id) SceneGraphNode
(SceneGraphNode parent) SceneGraphNode
(String name) SceneGraphNode
(String[] names, SceneGraphNode parent) SceneGraphNode
(String name, SceneGraphNode parent) -
Method Summary
Modifier and TypeMethodDescriptionfinal void
add
(SceneGraphNode... children) Adds the given SceneGraphNode list as children to this node.void
add
(List<? extends SceneGraphNode> children) Adds the given list of children as child nodes.final void
addChild
(SceneGraphNode child, boolean updateAncestorCount) Adds a child to the given node and updates the number of children in this node and in all ancestors.final void
addChild
(SceneGraphNode child, boolean updateAncestorCount, int numChildren) Adds a child to the given node and updates the number of children in this node and in all ancestors.void
addFocusableObjects
(com.badlogic.gdx.utils.Array<IFocus> list) Adds all the children that are focusable objects to the list.int
Adds a name to the list of names.void
addNodes
(com.badlogic.gdx.utils.Array<SceneGraphNode> nodes) protected void
addToIndex
(Map<String, SceneGraphNode> map) Special actions to be taken for this object when adding to the index.protected boolean
addToRender
(IRenderable renderable, SceneGraphRenderer.RenderGroup rg) Adds the given renderable to the given render group list.protected void
addToRenderLists
(ICamera camera) Adds this entity to the necessary render lists after the distance to the camera and the view angle have been determined.void
dispose()
void
doneLoading
(com.badlogic.gdx.assets.AssetManager manager) Returns the absolute position of this entity in the native coordinates (equatorial system) and internal unitsgetAbsolutePosition
(String name, Vector3b aux) int
Gets the number of nodes contained in this node, including itself.double
getAlpha()
getChildByName
(String name) getChildByNameAndType
(String name, Class<? extends SceneGraphNode> clazz) com.badlogic.gdx.utils.Array<SceneGraphNode>
getChildrenByComponentType
(ComponentTypes.ComponentType ct, com.badlogic.gdx.utils.Array<SceneGraphNode> list) com.badlogic.gdx.utils.Array<SceneGraphNode>
getChildrenByType
(Class<? extends SceneGraphNode> clazz, com.badlogic.gdx.utils.Array<SceneGraphNode> list) float[]
getColor()
getCt()
double
getDelta()
double
Returns the current distance to the camera in internal units.Gets the first ancestor of this node that is of typeStar
.double
double
double
double
long
getId()
float[]
<T extends SceneGraphNode>
TgetName()
String[]
getNames()
getNext
(ITimeFrameProvider time, ICamera camera, boolean force) Gets a copy of this entity which mimics its state in the next time step with position, orientation, etc.getNode
(int id) float
getPos()
getPosition
(Vector3d aux) Returns the position of this entity in the internal reference system.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
Returns the radius in internal unitsgetRoot()
int
<T extends SceneGraphNode>
TGets a copy of this object but does not copy its parent or children.double
getSize()
Returns the size (diameter) of this entity in internal units.int
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.protected float
boolean
boolean
boolean
void
static boolean
insert
(SceneGraphNode node, boolean addToIndex) Inserts the given node into the default scene graph, if it exists.boolean
isCopy()
boolean
boolean
isForceLabel
(String name) protected boolean
isInRender
(IRenderable renderable, SceneGraphRenderer.RenderGroup rg) protected boolean
isInRender
(IRenderable renderable, SceneGraphRenderer.RenderGroup... rgs) boolean
Returns whether the current position is valid (usually, when there is no coordinates overflow).boolean
boolean
boolean
isVisible
(boolean attributeValue) boolean
boolean
boolean
isVisibleGroup
(boolean attributeValue) protected long
boolean
Whether to add this node to the index.protected boolean
Whether position must be recomputed for this entity.final void
removeChild
(SceneGraphNode child, boolean updateAncestorCount) Removes the given child from this node, if it exists.protected void
Special actions to be taken for this object when removing from the index.protected boolean
removeFromRender
(IRenderable renderable, SceneGraphRenderer.RenderGroup rg) Removes the given renderable from the given render group list.protected void
render2DLabel
(ExtSpriteBatch batch, ExtShaderProgram shader, RenderingContext rc, BitmapFont font, ICamera camera, String label, float x, float y) protected void
render2DLabel
(ExtSpriteBatch batch, ExtShaderProgram shader, RenderingContext rc, BitmapFont font, ICamera camera, String label, float x, float y, float scale) protected void
render2DLabel
(ExtSpriteBatch batch, ExtShaderProgram shader, RenderingContext rc, BitmapFont font, ICamera camera, String label, float x, float y, float scale, int align) protected void
render2DLabel
(ExtSpriteBatch batch, ExtShaderProgram shader, RenderingContext rc, BitmapFont font, ICamera camera, String label, Vector3d pos3d) protected void
render3DLabel
(ExtSpriteBatch batch, ExtShaderProgram shader, BitmapFont font, ICamera camera, RenderingContext rc, String label, Vector3d pos, double distToCamera, float scale, double size, boolean forceLabel) protected void
render3DLabel
(ExtSpriteBatch batch, ExtShaderProgram shader, BitmapFont font, ICamera camera, RenderingContext rc, String label, Vector3d pos, double distToCamera, float scale, double size, float minSizeDegrees, float maxSizeDegrees, boolean forceLabel) void
void
setColor
(double[] color) Sets the object color, as an RGBA double array.void
setColor
(float[] color) Sets the object color, as an RGBA float array.void
setComputedFlag
(com.badlogic.gdx.utils.Array<SceneGraphNode> nodes, boolean computed) Sets the computed flag of the list of nodes and their children to the given value.void
setCoordinates
(IBodyCoordinates coord) void
void
void
setDescription
(String description) void
setForcelabel
(Boolean forceLabel) void
setForceLabel
(Boolean forceLabel) void
setForceLabel
(Boolean forceLabel, String name) void
void
setLabelcolor
(double[] color) Sets the label color, as an RGBA double array.void
setLabelcolor
(float[] color) Sets the label color, as an RGBA float array.void
setLabelcolor
(float[] color, String name) void
void
Sets the given index in the names list to the given name.void
void
void
setPos
(double[] pos) void
Sets the absolute size (diameter) of this entityvoid
Sets the absolute size (diameter) of this entityvoid
setUp
(ISceneGraph sceneGraph) void
setVisible
(boolean visible) void
setVisible
(boolean visible, String name) void
setVisibleGroup
(boolean visibility) protected boolean
toString()
void
update
(ITimeFrameProvider time, Vector3b parentTransform, ICamera camera) void
update
(ITimeFrameProvider time, Vector3b parentTransform, ICamera camera, float opacity) void
updateLocal
(ITimeFrameProvider time, ICamera camera) Updates the transform matrix with the transformations that will apply to the children and the local transform matrix with the transformations that will apply only to this object.void
void
Recursively updates the localized names for this node and its children using the current Locale setting.void
updateLocalValues
(ITimeFrameProvider time, ICamera camera) This function updates all the local values before the localTransform is updated.
-
Field Details
-
ROOT_NAME
- See Also:
-
D31
-
D32
-
D33
-
D34
-
B31
-
B32
-
B33
-
B34
-
F31
-
F32
-
F33
-
F34
-
id
public long idThe internal identifier -
parent
The parent entity. -
children
List of children entities. -
translation
Cumulative translation object. In contrast with the position, which contains the position relative to the parent, this contains the absolute position in the internal reference system. -
localTransform
public com.badlogic.gdx.math.Matrix4 localTransformLocal transform matrix. Contains the transform matrix and the transformations that will be applied to this object and not to its children. -
orientation
This transform stores only the orientation of the object. For example in planets, it stores their orientation with respect to their equatorial plane, but not other transformations applied to the object such as the size or the rotation angle at the time. -
names
The name(s) of the node, if any. -
localizedNameIndex
public int localizedNameIndexThe index of the localized name in thenames
array. -
parentName
The first name of the parent object. -
numChildren
public int numChildrenThe total number of descendants under this node. -
computed
public boolean computedFlag indicating whether the object has been computed in this step. -
visible
protected boolean visibleIs this node visible? -
forceLabel
protected boolean forceLabelForce to render the label of this entity, bypassing the solid angle check -
lastStateChangeTimeMs
protected long lastStateChangeTimeMsTime of last visibility change in milliseconds -
opacity
public float opacityThe ownOpacity value (alpha) -
ct
Component types, for managing visibility -
pos
Position of this entity in the local reference system. The units areConstants.U_TO_KM
by default. -
coordinates
Coordinates provider. Provides position coordinates depending on time. -
posSph
Position in the equatorial system; ra, dec. -
size
public float sizeSize factor in internal units. -
distToCamera
public double distToCameraThe distance to the camera from the focus center. -
viewAngle
public double viewAngleThe view angle, in radians. -
viewAngleApparent
public double viewAngleApparentThe view angle corrected with the field of view angle, in radians. -
cc
public float[] ccBase RGB color -
labelcolor
public float[] labelcolor -
copy
public boolean copyIs this just a copy? -
octantId
The id of the octant it belongs to, if any -
octant
Its page
-
-
Constructor Details
-
SceneGraphNode
public SceneGraphNode() -
SceneGraphNode
public SceneGraphNode(int id) -
SceneGraphNode
-
SceneGraphNode
-
SceneGraphNode
-
SceneGraphNode
-
SceneGraphNode
-
-
Method Details
-
insert
Inserts the given node into the default scene graph, if it exists.- Parameters:
node
- The node to insertaddToIndex
- Whether to add to the index- Returns:
- True if it was inserted, false otherwise
-
add
Adds the given SceneGraphNode list as children to this node.- Parameters:
children
- The children nodes to add.
-
addChild
Adds a child to the given node and updates the number of children in this node and in all ancestors.- Parameters:
child
- The child node to add.updateAncestorCount
- Whether to update the ancestors number of children.
-
removeChild
Removes the given child from this node, if it exists.- Parameters:
child
- The child node to remove.updateAncestorCount
- Whether to update the ancestors number of children.
-
addChild
Adds a child to the given node and updates the number of children in this node and in all ancestors.- Parameters:
child
- The child node to add.updateAncestorCount
- Whether to update the ancestors number of children.numChildren
- The number of children this will hold.
-
add
Adds the given list of children as child nodes.- Parameters:
children
- The children nodes to add.
-
getChildByNameAndType
-
getChildByName
-
getChildrenByType
public com.badlogic.gdx.utils.Array<SceneGraphNode> getChildrenByType(Class<? extends SceneGraphNode> clazz, com.badlogic.gdx.utils.Array<SceneGraphNode> list) -
getChildrenByComponentType
public com.badlogic.gdx.utils.Array<SceneGraphNode> getChildrenByComponentType(ComponentTypes.ComponentType ct, com.badlogic.gdx.utils.Array<SceneGraphNode> list) -
getNode
-
getNode
-
update
-
update
public void update(ITimeFrameProvider time, Vector3b parentTransform, ICamera camera, float opacity) -
updateLocal
Updates the transform matrix with the transformations that will apply to the children and the local transform matrix with the transformations that will apply only to this object. -
addToRenderLists
Adds this entity to the necessary render lists after the distance to the camera and the view angle have been determined. -
updateLocalValues
This function updates all the local values before the localTransform is updated. Position, rotations and scale must be updated in here. -
initialize
public void initialize() -
doneLoading
public void doneLoading(com.badlogic.gdx.assets.AssetManager manager) -
getPos
-
isCopy
public boolean isCopy() -
getPosition
Returns the position of this entity in the internal reference system.- Parameters:
aux
- The vector where the result will be put.- Returns:
- The aux vector with the position.
-
setNames
-
setName
- Specified by:
setName
in interfaceIVisibilitySwitch
-
updateLocalizedName
public void updateLocalizedName() -
updateLocalizedNameRecursive
public void updateLocalizedNameRecursive()Recursively updates the localized names for this node and its children using the current Locale setting. -
getDescription
- Specified by:
getDescription
in interfaceIVisibilitySwitch
-
setDescription
- Specified by:
setDescription
in interfaceIVisibilitySwitch
-
addName
Adds a name to the list of names.- Parameters:
name
- The name.- Returns:
- The index of the added name.
-
setName
Sets the given index in the names list to the given name. If the index is out of bounds, nothing happens.- Parameters:
name
- The new name.index
- The index in the names list.
-
getNames
-
getName
- Specified by:
getName
in interfaceIVisibilitySwitch
-
getLocalizedName
-
namesConcat
-
hasName
-
hasName
-
setId
-
getId
public long getId() -
setParent
-
dispose
public void dispose()- Specified by:
dispose
in interfacecom.badlogic.gdx.utils.Disposable
-
addFocusableObjects
Adds all the children that are focusable objects to the list. -
addNodes
-
setUp
-
setCt
-
setCt
-
getCt
-
getComponentType
-
hasCt
- Specified by:
hasCt
in interfaceIVisibilitySwitch
-
getAggregatedChildren
public int getAggregatedChildren()Gets the number of nodes contained in this node, including itself.- Returns:
- The number of children of this node and its descendants.
-
getLineCopy
-
getSimpleCopy
Gets a copy of this object but does not copy its parent or children.- Returns:
- The copied object.
-
getRoot
-
toString
-
returnToPool
public void returnToPool() -
setComputedFlag
Sets the computed flag of the list of nodes and their children to the given value.- Parameters:
nodes
- List of nodes to set the flag to. May be null.computed
- The computed value.
-
addToRender
Adds the given renderable to the given render group list.- Parameters:
renderable
- The renderable to add.rg
- The render group that identifies the renderable list.- Returns:
- True if added, false otherwise.
-
removeFromRender
Removes the given renderable from the given render group list.- Parameters:
renderable
- The renderable to remove.rg
- The render group to remove from.- Returns:
- True if removed, false otherwise.
-
isInRender
-
isInRender
-
getFirstStarAncestor
Gets the first ancestor of this node that is of typeStar
.- Returns:
- The first ancestor of type
Star
.
-
getStarCount
public int getStarCount()- Specified by:
getStarCount
in interfaceIStarContainer
-
getVelocity
- Specified by:
getVelocity
in interfaceIPosition
-
getOrientation
-
isVisibilityOn
public boolean isVisibilityOn() -
getOpacity
public float getOpacity() -
getSceneGraphDepth
public int getSceneGraphDepth() -
addToIndex
Special actions to be taken for this object when adding to the index.- Parameters:
map
- The index.
-
removeFromIndex
Special actions to be taken for this object when removing from the index. Must implement if addToIndex is implemented.- Parameters:
map
- The index.
-
mustAddToIndex
public boolean mustAddToIndex()Whether to add this node to the index.- Returns:
- True if the node needs to be added to the index.
-
isValidPosition
public boolean isValidPosition()Returns whether the current position is valid (usually, when there is no coordinates overflow). -
getNext
Gets a copy of this entity which mimics its state in the next time step with position, orientation, etc.- Returns:
- A copy of this entity in the next time step
-
getPredictedPosition
public Vector3b 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.- 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.
-
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
-
getAbsolutePosition
Returns the absolute position of this entity in the native coordinates (equatorial system) and internal units- Parameters:
out
- Auxiliary vector to put the result in- Returns:
- The vector with the position
-
getAbsolutePosition
-
getAbsoluteOrientation
-
getRadius
public double getRadius()Returns the radius in internal units- Returns:
- The radius of the object, in internal units
-
getHeight
-
getHeight
-
getHeight
-
getHeightScale
public double getHeightScale() -
getSize
public double getSize()Returns the size (diameter) of this entity in internal units.- Returns:
- The size in internal units.
-
setSize
Sets the absolute size (diameter) of this entity- Parameters:
size
- The diameter in internal units
-
setSize
Sets the absolute size (diameter) of this entity- Parameters:
size
- The diameter in internal units
-
getPosSph
-
getAlpha
public double getAlpha() -
getDelta
public double getDelta() -
setColor
public void setColor(double[] color) Sets the object color, as an RGBA double array.- Parameters:
color
- The color.
-
setColor
public void setColor(float[] color) Sets the object color, as an RGBA float array.- Parameters:
color
- The color.
-
getColor
public float[] getColor() -
setLabelcolor
public void setLabelcolor(double[] color) Sets the label color, as an RGBA double array.- Parameters:
color
- The label color.
-
setLabelcolor
public void setLabelcolor(float[] color) Sets the label color, as an RGBA float array.- Parameters:
color
- The label color.
-
setLabelcolor
-
getLabelcolor
public float[] getLabelcolor() -
getOctant
-
computeFuturePosition
-
getDistToCamera
public double getDistToCamera()Returns the current distance to the camera in internal units.- Returns:
- The current distance to the camera, in internal units.
-
getViewAngle
public double getViewAngle()Returns the current view angle of this entity, in radians.- Returns:
- The view angle in radians.
-
getViewAngleApparent
public double getViewAngleApparent()Returns the current apparent view angle (view angle corrected with the field of view) of this entity, in radians.- Returns:
- The apparent view angle in radians.
-
render2DLabel
protected void render2DLabel(ExtSpriteBatch batch, ExtShaderProgram shader, RenderingContext rc, BitmapFont font, ICamera camera, String label, Vector3d pos3d) -
render2DLabel
protected void render2DLabel(ExtSpriteBatch batch, ExtShaderProgram shader, RenderingContext rc, BitmapFont font, ICamera camera, String label, float x, float y) -
render2DLabel
protected void render2DLabel(ExtSpriteBatch batch, ExtShaderProgram shader, RenderingContext rc, BitmapFont font, ICamera camera, String label, float x, float y, float scale) -
render2DLabel
protected void render2DLabel(ExtSpriteBatch batch, ExtShaderProgram shader, RenderingContext rc, BitmapFont font, ICamera camera, String label, float x, float y, float scale, int align) -
render3DLabel
protected void render3DLabel(ExtSpriteBatch batch, ExtShaderProgram shader, BitmapFont font, ICamera camera, RenderingContext rc, String label, Vector3d pos, double distToCamera, float scale, double size, boolean forceLabel) -
render3DLabel
protected void render3DLabel(ExtSpriteBatch batch, ExtShaderProgram shader, BitmapFont font, ICamera camera, RenderingContext rc, String label, Vector3d pos, double distToCamera, float scale, double size, float minSizeDegrees, float maxSizeDegrees, boolean forceLabel) -
setCoordinates
-
getCoordinates
-
setPos
public void setPos(double[] pos) -
getPosition
- Specified by:
getPosition
in interfaceIPosition
-
getUnrotatedPos
-
setVisible
public void setVisible(boolean visible) - Specified by:
setVisible
in interfaceIVisibilitySwitch
-
isVisible
public boolean isVisible()- Specified by:
isVisible
in interfaceIVisibilitySwitch
-
isVisible
public boolean isVisible(boolean attributeValue) - Specified by:
isVisible
in interfaceIVisibilitySwitch
-
setVisible
- Specified by:
setVisible
in interfaceIVisibilitySwitch
-
isVisible
- Specified by:
isVisible
in interfaceIVisibilitySwitch
-
isVisibleGroup
public boolean isVisibleGroup() -
isVisibleGroup
public boolean isVisibleGroup(boolean attributeValue) -
setVisibleGroup
public void setVisibleGroup(boolean visibility) -
msSinceStateChange
protected long msSinceStateChange() -
getVisibilityOpacityFactor
protected float getVisibilityOpacityFactor() -
shouldRender
protected boolean shouldRender() -
setForceLabel
-
setForcelabel
-
setForceLabel
-
isForceLabel
public boolean isForceLabel() -
isForceLabel
-