Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.amcgala;
  
 
 import java.util.Map;
 
 import static com.google.common.base.Preconditions.checkArgument;

Ein Scene Objekt verwaltet alle Objekte und den dazugehörigen org.amcgala.framework.scenegraph.DefaultSceneGraph, der über die Klasse Framework dargestellt werden kann. Folgende Objekte werden von jeder Szene selbstständig verwaltet und beim Laden durch das Framework zur Darstellung verwendet:
  • Ein Szenengraph, der sich um die hierarchische Verwaltung der Szene kümmert. Die Szene bietet dafür Methoden an, die den Umgang mit dem Szenengraph vereinfachen.
  • Eine virtuelle Kamera, die für die Projektion der Szene verwendet wird. Hier können in jeder Szene unterschiedliche Implementierungen verwendet werden.
  • Ein Renderer, die sich um die Darstellung der projezierten Geometrien kümmert. Auch hier können, abhängig von den Anforderungen der jeweiligen Szene, unterschiedliche Implementierungen verwendet werden.
  • Ein Eventbus, der zum Message-Handling zwischen unterschiedlichen Objekten der Szene und zur Reaktion auf Key- oder Mouse-Events verwendet werden kann.

Author(s):
Robert Giacinto
Since:
2.0
 
 public class Scene {
     private static final Logger log = LoggerFactory.getLogger(Scene.class);
     private SceneGraph sceneGraph;
     private Camera camera;
     private Renderer renderer;
     private EventBus eventBus;
     private String label;
     private Map<StringInputHandlerinputHandlers;
     private RGBColor background = new RGBColor(0, 0, 0);

    
Erstellt eine neue Szene mit einem bestimmten Bezeichner.

Parameters:
label der Bezeichner der Szene
 
     public Scene(String label) {
         this. = label;
          = new DefaultSceneGraph();
          = new DefaultRenderer();
          = new EventBus();
          = new HashMap<StringInputHandler>();
     }

    
Fügt das AbstractShape dem Rootknoten des org.amcgala.framework.scenegraph.DefaultSceneGraph hinzu.

Parameters:
shape das hinzuzufügende Objekt
 
     public void addShape(Shape shape) {
         .addShape(shape);
     }

    
Fügt dem Rootknoten des org.amcgala.framework.scenegraph.DefaultSceneGraph ein org.amcgala.framework.scenegraph.Node hinzu.

Parameters:
node der neue Knoten
 
     public void addNode(Node node) {
         .addNode(node);
     }

    
Fügt der Szene ein neues Shapeobjekt hinzu. Dieses wird dem Szenengraph an dem übergebenen Knoten angehängt. TODO das ist verwirrend, dass man erst den Knoten der Szene hinzufügen muss, um ein Shape dranhängen zu können.

Parameters:
shape das Shape, das der Szene hinzugefügt werden soll
node der Knoten, an dem das Shape angehängt werden soll
 
     public void add(Shape shapeNode node) {
         .addShape(shapenode);
     }

    
Fügt der Szene ein neues Shapeobjekt hinzu. Es wird dem Knoten mit dem übergebenen Label angehängt.

Parameters:
shape das Shape, das der Szene hinzugefügt werden soll
nodeLabel das Label des Knotens
    public void addShape(Shape shapeString nodeLabel) {
        .addShape(shapenodeLabel);
    }

    
Fügt der Szene einen neuen Knoten hinzu und hängt diesen an den Elternknoten mit dem übergebenen Label.

Parameters:
node der neue Knoten, der hinzugefügt werden soll
parentLabel das Label des Elternknotens
    public void addNode(Node nodeString parentLabel) {
        .addNode(nodeparentLabel);
    }

    
Fügt einem Elternknoten einen neuen Kindsknoten im Szenengraph hinzu. TODO das Erweitern der Baumhierarchie über eine Methode in einer Szene ist umständlich. Die Hierarchie sollte automatisch aktualisiert werden, wenn ein neuer Knoten hinzufügt wird.

Parameters:
child der neue Kindsknoten
parent der Elternknoten
    public void addNode(Node childNode parent) {
        .addNode(childparent);
    }

    
Fügt dem root org.amcgala.framework.scenegraph.Node des org.amcgala.framework.scenegraph.SceneGraph eine Transformation hinzu,

Parameters:
transformation die Transformation, die hinzugefügt werden soll
    public void addTransformation(Transformation transformation) {
        .addTransformation(transformation);
    }

    
Gibt die gerade aktive Kamera der Szene zurück.

Returns:
die innerhalb der Szene verwendete Kamera
    public Camera getCamera() {
        return ;
    }

    
Ändert die von der Szene verwendete org.amcgala.framework.camera.Camera.

Parameters:
camera die neue Kamera
    public void setCamera(Camera camera) {
        this. = camera;
    }

    
Gibt den von der Szene verwendete Renderer zurück.

Returns:
der verwendete Renderer
    public Renderer getRenderer() {
        return ;
    }

    
Ändert den von der Szene verwendeten org.amcgala.framework.renderer.Renderer.

Parameters:
renderer der neue Renderer
    public void setRenderer(Renderer renderer) {
        this. = renderer;
    }

    
Gibt den com.google.common.eventbus.EventBus der Szene zurück.

Returns:
der in der Szene verwendete com.google.common.eventbus.EventBus
    public EventBus getEventBus() {
        return ;
    }

    
Gibt das Label der Szene zurück.

Returns:
das Label der Szene
    public String getLabel() {
        return ;
    }

    
Registriert einen neuen Eventhandler bei der EventQueue.

Parameters:
inputHandler der neue Inputhandler
label Name des neuen Inputhandlers
    public void addInputHandler(InputHandler inputHandlerString label) {
        .put(labelinputHandler);
        .register(inputHandler);
    }

    
Entfernt einen Eventhandler aus der Liste der Subscriber.

Parameters:
label Name des InputHandler der entfernt werden soll
    public void removeInputHandler(String label) {
        checkArgument(.containsKey(label), "InputHandler mit Namen " + label + " konnte nicht gefunden werden");
        .unregister(.get(label));
    }

    
Entfernt ein Shape aus der Szene.

Parameters:
label das Label des Shapes, das entfernt werden soll
    public void removeShape(String label) {
        .removeShape(label);
    }
    protected SceneGraph getSceneGraph() {
        return ;
    }
    @Override
    public boolean equals(Object o) {
        if (this == oreturn true;
        if (o == null || getClass() != o.getClass()) return false;
        Scene scene = (Sceneo;
        return !( != null ? !.equals(scene.label) : scene.label != null);
    }
    @Override
    public int hashCode() {
        return  != null ? .hashCode() : 0;
    }

    
Fügt der Szene ein neues Licht hinzu.

Parameters:
light das neue Licht
    public void addLight(Light light) {
        .addLight(light);
    }

    
Prüft, ob Lichter in der Szene vorhanden sind.

Returns:
true, wenn Lichter der Szene hinzugefügt wurden
    public boolean hasLights() {
        return .hasLight();
    }

    
Gibt die Hintergrundfarbe der Szene zurück. Diese Methode ist zur Zeit nur für die Raytracing Implementierung relevant.

Returns:
die Hintergrundfarbe
    public RGBColor getBackground() {
        return ;
    }

    
Ändert die Farbe des Szenenhintergrunds.

Parameters:
background die Farbe des Szenenhintergrunds
    public void setBackground(RGBColor background) {
        this. = background;
    }
    public Collection<ShapegetShapes() {
        return .getAllShapes();
    }
New to GrepCode? Check out our FAQ X