|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.jme3.scene.Spatial
com.jme3.scene.Node
public class Node
Node
defines an internal node of a scene graph. The internal
node maintains a collection of children and handles merging said children
into a single bound to allow for very fast culling of multiple nodes. Node
allows for any number of children to be attached.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class com.jme3.scene.Spatial |
---|
Spatial.BatchHint, Spatial.CullHint |
Field Summary | |
---|---|
protected SafeArrayList<Spatial> |
children
This node's children. |
Fields inherited from class com.jme3.scene.Spatial |
---|
batchHint, controls, cullHint, frustrumIntersects, key, localLights, localTransform, name, parent, queueBucket, queueDistance, refreshFlags, RF_BOUND, RF_LIGHTLIST, RF_TRANSFORM, shadowMode, userData, worldBound, worldLights, worldTransform |
Constructor Summary | |
---|---|
Node()
Serialization only. |
|
Node(java.lang.String name)
Constructor instantiates a new Node with a default empty
list for containing children. |
Method Summary | ||
---|---|---|
int |
attachChild(Spatial child)
attachChild attaches a child to this node. |
|
int |
attachChildAt(Spatial child,
int index)
attachChildAt attaches a child to this node at an index. |
|
protected void |
breadthFirstTraversal(SceneGraphVisitor visitor,
java.util.Queue<Spatial> queue)
|
|
Node |
clone(boolean cloneMaterials)
|
|
int |
collideWith(Collidable other,
CollisionResults results)
Check collision with another Collidable. |
|
Spatial |
deepClone()
|
|
void |
depthFirstTraversal(SceneGraphVisitor visitor)
Visit each scene graph element ordered by DFS |
|
|
descendantMatches(java.lang.Class<T> spatialSubclass)
Convenience wrapper. |
|
|
descendantMatches(java.lang.Class<T> spatialSubclass,
java.lang.String nameRegex)
Returns flat list of Spatials implementing the specified class AND with name matching the specified pattern. |
|
|
descendantMatches(java.lang.String nameRegex)
Convenience wrapper. |
|
void |
detachAllChildren()
detachAllChildren removes all children attached to this
node. |
|
int |
detachChild(Spatial child)
detachChild removes a given child from the node's list. |
|
Spatial |
detachChildAt(int index)
detachChildAt removes a child at a given index. |
|
int |
detachChildNamed(java.lang.String childName)
detachChild removes a given child from the node's list. |
|
Spatial |
getChild(int i)
getChild returns a child at a given index. |
|
Spatial |
getChild(java.lang.String name)
getChild returns the first child found with exactly the
given name (case sensitive.) |
|
int |
getChildIndex(Spatial sp)
getChildIndex returns the index of the given spatial
in this node's list of children. |
|
java.util.List<Spatial> |
getChildren()
Returns all children to this node. |
|
int |
getQuantity()
getQuantity returns the number of children this node
maintains. |
|
int |
getTriangleCount()
getTriangleCount returns the number of triangles contained
in all sub-branches of this node that contain geometry. |
|
int |
getVertexCount()
getVertexCount returns the number of vertices contained
in all sub-branches of this node that contain geometry. |
|
boolean |
hasChild(Spatial spat)
determines if the provided Spatial is contained in the children list of this node. |
|
void |
read(JmeImporter e)
|
|
protected void |
setLightListRefresh()
|
|
void |
setLodLevel(int lod)
Sets the level of detail to use when rendering this Spatial, this call propagates to all geometries under this Spatial. |
|
void |
setMaterial(Material mat)
Applies the given material to the Spatial, this will propagate the material down to the geometries in the scene graph. |
|
void |
setModelBound(BoundingVolume modelBound)
setModelBound sets the bounding object for this Spatial. |
|
protected void |
setTransformRefresh()
Indicate that the transform of this spatial has changed and that a refresh is required. |
|
void |
swapChildren(int index1,
int index2)
More efficient than e.g detaching and attaching as no updates are needed. |
|
void |
updateGeometricState()
updateGeometricState updates the lightlist,
computes the world transforms, and computes the world bounds
for this Spatial. |
|
void |
updateLogicalState(float tpf)
updateLogicalState calls the update() method
for all controls attached to this Spatial. |
|
void |
updateModelBound()
updateModelBound recalculates the bounding object for this
Spatial. |
|
protected void |
updateWorldBound()
Should be overridden by Node and Geometry. |
|
void |
write(JmeExporter e)
|
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected SafeArrayList<Spatial> children
Constructor Detail |
---|
public Node()
public Node(java.lang.String name)
Node
with a default empty
list for containing children.
name
- the name of the scene element. This is required for
identification and comparision purposes.Method Detail |
---|
public int getQuantity()
getQuantity
returns the number of children this node
maintains.
protected void setTransformRefresh()
Spatial
setTransformRefresh
in class Spatial
protected void setLightListRefresh()
setLightListRefresh
in class Spatial
protected void updateWorldBound()
Spatial
updateWorldBound
in class Spatial
public void updateLogicalState(float tpf)
Spatial
updateLogicalState
calls the update()
method
for all controls attached to this Spatial.
updateLogicalState
in class Spatial
tpf
- Time per frame.Spatial.addControl(com.jme3.scene.control.Control)
public void updateGeometricState()
Spatial
updateGeometricState
updates the lightlist,
computes the world transforms, and computes the world bounds
for this Spatial.
Calling this when the Spatial is attached to a node
will cause undefined results. User code should only call this
method on Spatials having no parent.
updateGeometricState
in class Spatial
Spatial.getWorldLightList()
,
Spatial.getWorldTransform()
,
Spatial.getWorldBound()
public int getTriangleCount()
getTriangleCount
returns the number of triangles contained
in all sub-branches of this node that contain geometry.
getTriangleCount
in class Spatial
public int getVertexCount()
getVertexCount
returns the number of vertices contained
in all sub-branches of this node that contain geometry.
getVertexCount
in class Spatial
public int attachChild(Spatial child)
attachChild
attaches a child to this node. This node
becomes the child's parent. The current number of children maintained is
returned.
child
- the child to attach to this node.
java.lang.NullPointerException
- If child is null.public int attachChildAt(Spatial child, int index)
attachChildAt
attaches a child to this node at an index. This node
becomes the child's parent. The current number of children maintained is
returned.
child
- the child to attach to this node.
java.lang.NullPointerException
- if child is null.public int detachChild(Spatial child)
detachChild
removes a given child from the node's list.
This child will no longer be maintained.
child
- the child to remove.
public int detachChildNamed(java.lang.String childName)
detachChild
removes a given child from the node's list.
This child will no longe be maintained. Only the first child with a
matching name is removed.
childName
- the child to remove.
public Spatial detachChildAt(int index)
detachChildAt
removes a child at a given index. That child
is returned for saving purposes.
index
- the index of the child to be removed.
public void detachAllChildren()
detachAllChildren
removes all children attached to this
node.
public int getChildIndex(Spatial sp)
getChildIndex
returns the index of the given spatial
in this node's list of children.
sp
- The spatial to look up
public void swapChildren(int index1, int index2)
index1
- The index of the first child to swapindex2
- The index of the second child to swappublic Spatial getChild(int i)
getChild
returns a child at a given index.
i
- the index to retrieve the child from.
public Spatial getChild(java.lang.String name)
getChild
returns the first child found with exactly the
given name (case sensitive.)
name
- the name of the child to retrieve. If null, we'll return null.
public boolean hasChild(Spatial spat)
spat
- the child object to look for.
public java.util.List<Spatial> getChildren()
public void setMaterial(Material mat)
Spatial
setMaterial
in class Spatial
mat
- The material to set.public void setLodLevel(int lod)
Spatial
setLodLevel
in class Spatial
lod
- The lod level to set.public int collideWith(Collidable other, CollisionResults results)
Collidable
collideWith
in interface Collidable
other
- The object to check collision againstresults
- Will contain the list of CollisionResult
s.
public <T extends Spatial> java.util.List<T> descendantMatches(java.lang.Class<T> spatialSubclass, java.lang.String nameRegex)
Note that we are matching the pattern, therefore the pattern must match the entire pattern (i.e. it behaves as if it is sandwiched between "^" and "$"). You can set regex modes, like case insensitivity, by using the (?X) or (?X:Y) constructs.
By design, it is always safe to code loops like:
for (Spatial spatial : node.descendantMatches(AClass.class, "regex"))
"Descendants" does not include self, per the definition of the word.
To test for descendants AND self, you must do a
node.matches(aClass, aRegex)
+
node.descendantMatches(aClass, aRegex)
.
spatialSubclass
- Subclass which matching Spatials must implement.
Null causes all Spatials to qualify.nameRegex
- Regular expression to match Spatial name against.
Null causes all Names to qualify.
Pattern
,
Spatial.matches(java.lang.Class, java.lang.String)
public <T extends Spatial> java.util.List<T> descendantMatches(java.lang.Class<T> spatialSubclass)
descendantMatches(java.lang.Class, java.lang.String)
public <T extends Spatial> java.util.List<T> descendantMatches(java.lang.String nameRegex)
descendantMatches(java.lang.Class, java.lang.String)
public Node clone(boolean cloneMaterials)
clone
in class Spatial
Mesh.cloneForAnim()
public Spatial deepClone()
deepClone
in class Spatial
Spatial.clone()
public void write(JmeExporter e) throws java.io.IOException
write
in interface Savable
write
in class Spatial
java.io.IOException
public void read(JmeImporter e) throws java.io.IOException
read
in interface Savable
read
in class Spatial
java.io.IOException
public void setModelBound(BoundingVolume modelBound)
Spatial
setModelBound
sets the bounding object for this Spatial.
setModelBound
in class Spatial
modelBound
- the bounding object for this spatial.public void updateModelBound()
Spatial
updateModelBound
recalculates the bounding object for this
Spatial.
updateModelBound
in class Spatial
public void depthFirstTraversal(SceneGraphVisitor visitor)
Spatial
depthFirstTraversal
in class Spatial
protected void breadthFirstTraversal(SceneGraphVisitor visitor, java.util.Queue<Spatial> queue)
breadthFirstTraversal
in class Spatial
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |