construction
Class Map

java.lang.Object
  extended byjavax.media.j3d.SceneGraphObject
      extended byjavax.media.j3d.Node
          extended byjavax.media.j3d.Group
              extended byjavax.media.j3d.BranchGroup
                  extended byconstruction.Map

public class Map
extends javax.media.j3d.BranchGroup

Eine Map ist eine BranchGroup mit speziellen Funktionen zur Verwaltung von Sektoren. Sie stellt ein globalen Koordinatensystem zur Verfügung, in welchem die Sektoren beschrieben werden können. Sie erstellt aus den übergebenen Daten die Sektoren, transformiert sie an die richtige Position und gliedert sie in den Szenegraph ein.

Version:
1.0 (2005/01/31)
Author:
Martin Hedler

Field Summary
 
Fields inherited from class javax.media.j3d.BranchGroup
ALLOW_DETACH
 
Fields inherited from class javax.media.j3d.Group
ALLOW_CHILDREN_EXTEND, ALLOW_CHILDREN_READ, ALLOW_CHILDREN_WRITE, ALLOW_COLLISION_BOUNDS_READ, ALLOW_COLLISION_BOUNDS_WRITE
 
Fields inherited from class javax.media.j3d.Node
ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING
 
Constructor Summary
Map()
          Erstellt eine leere Map.
 
Method Summary
 javax.media.j3d.Node cloneNode(boolean arg0)
           
 Block createSector(javax.vecmath.Point2f[] cornerPoints, float floorHeight, float ceilingHeight)
          Erstellt einen neuen Sektor und fügt diesen in den Szenegraphen ein.
 Block createSector(javax.vecmath.Point2f[] cornerPoints, float floorHeight, float ceilingHeight, javax.vecmath.AxisAngle4f floorAngle, javax.vecmath.AxisAngle4f ceilingAngle)
          Erstellt einen neuen Sektor und fügt diesen in den Szenegraphen ein.
 void duplicateNode(javax.media.j3d.Node arg0, boolean arg1)
           
 java.util.Iterator getSectors()
          Liefert einen Iterator aller Sektoren der Karte zurück.
static void printSceneGraph(javax.media.j3d.Group g, boolean all)
          Erstellt einen Ausdruck (auf der Standardausgabe) des Szenegraph der übergebenen Group.
 void setDefaultTextures(javax.media.j3d.Texture[] tex)
          Setzt die Texturen, welche die Sektoren bei ihrer Erstellung erhalten sollen.
 void updateNodeReferences(javax.media.j3d.NodeReferenceTable arg0)
           
 
Methods inherited from class javax.media.j3d.BranchGroup
compile, detach, pickAll, pickAllSorted, pickAny, pickClosest
 
Methods inherited from class javax.media.j3d.Group
addChild, getAllChildren, getAlternateCollisionTarget, getChild, getCollisionBounds, indexOfChild, insertChild, moveTo, numChildren, removeAllChildren, removeChild, removeChild, setAlternateCollisionTarget, setChild, setCollisionBounds
 
Methods inherited from class javax.media.j3d.Node
cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, getBounds, getBoundsAutoCompute, getCollidable, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable
 
Methods inherited from class javax.media.j3d.SceneGraphObject
clearCapability, clearCapabilityIsFrequent, getCapability, getCapabilityIsFrequent, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setUserData
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Map

public Map()
Erstellt eine leere Map.

Method Detail

setDefaultTextures

public void setDefaultTextures(javax.media.j3d.Texture[] tex)
Setzt die Texturen, welche die Sektoren bei ihrer Erstellung erhalten sollen. Diese Texturen werden nur bei den Sektoren gesetzt, die nach dem Aufruf dieser Methode erstellt werden.
Um für einzelne Sektoren die Texturen zu setzen, muss auf das Sector Objekt direkt zugegriffen werden. Siehe hierzu die Methode Block.setPlaneTexture(Texture[]).

Parameters:
tex - Array von Texturen. Die Anzahl der Texturen im Array bestimmt für was die Texturen verwendet werden:
  • Befindet sich nur eine Textur im Array, so wird die Textur für alle Wände, den Boden und die Decke verwendet.
  • Befinden sich zwei Texturen im Array, so wird die erste Textur für den Boden und die Decke verwendet und die zweite Textur für alle Wände.
  • Bei drei Texturen, wird die erste Textur für den Boden, die zweite Textur für die Decke und die dritte Textur für alle Wände verwendet.
Bei mehr als drei Texturen, findet der dritte Fall Anwendung und alle weiteren Texturen werden ignoriert.
See Also:
Block.setPlaneTexture(Texture[])

printSceneGraph

public static void printSceneGraph(javax.media.j3d.Group g,
                                   boolean all)
                            throws javax.media.j3d.CapabilityNotSetException
Erstellt einen Ausdruck (auf der Standardausgabe) des Szenegraph der übergebenen Group.

Parameters:
g - Die Group, von der ausgehend der Graph ausgedruckt werden soll.
all - Gibt an, ob alle Objekte des Szenegraph angezeigt werden sollen, oder nur Sektoren.
Throws:
javax.media.j3d.CapabilityNotSetException - Wenn die Group Teil eines lebenen Szenegraph ist und die benötigte Capability nicht gesetzt ist.

createSector

public Block createSector(javax.vecmath.Point2f[] cornerPoints,
                          float floorHeight,
                          float ceilingHeight)
Erstellt einen neuen Sektor und fügt diesen in den Szenegraphen ein.

Parameters:
cornerPoints - Die globalen Koordinaten der Ecken des Sektors. Die Punkte sind im Uhrzeigersinn angeordnet, wenn ein positiver Sektor entstehen soll und gegen den Uhrzeigersinn, wenn ein negativer Sektor entstehen soll. Die Eckpunkte liegen alle in der xz-Ebene, d.h. das Attribut y von Point2f entspricht z.
floorHeight - Die globale Höhe des Bodens.
ceilingHeight - Die globale Höhe der Decke.
Returns:
Der erstellte Sektor.

createSector

public Block createSector(javax.vecmath.Point2f[] cornerPoints,
                          float floorHeight,
                          float ceilingHeight,
                          javax.vecmath.AxisAngle4f floorAngle,
                          javax.vecmath.AxisAngle4f ceilingAngle)
Erstellt einen neuen Sektor und fügt diesen in den Szenegraphen ein.

Parameters:
cornerPoints - Die globalen Koordinaten der Ecken des Sektors. Die Punkte sind im Uhrzeigersinn angeordnet, wenn ein positiver Sektor entstehen soll und gegen den Uhrzeigersinn, wenn ein negativer Sektor entstehen soll. Die Eckpunkte liegen alle in der xz-Ebene, d.h. das Attribut y von Point2f entspricht z.
floorHeight - Die globale Höhe des Bodens.
ceilingHeight - Die globale Höhe der Decke.
floorAngle - Die Neigung des Bodens. Die Neigungsachse muss in der xz-Ebene liegen.
ceilingAngle - Die Neigung der Decke. Die Neigungsachse muss in der xz-Ebene liegen.
Returns:
Der erstellte Sektor.

getSectors

public java.util.Iterator getSectors()
Liefert einen Iterator aller Sektoren der Karte zurück.

Returns:
Der Iterator.

cloneNode

public javax.media.j3d.Node cloneNode(boolean arg0)

duplicateNode

public void duplicateNode(javax.media.j3d.Node arg0,
                          boolean arg1)

updateNodeReferences

public void updateNodeReferences(javax.media.j3d.NodeReferenceTable arg0)