Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* 
   * Copyright 2011 Cologne University of Applied Sciences Licensed under the
   * Educational Community License, Version 2.0 (the "License"); you may
   * not use this file except in compliance with the License. You may
   * obtain a copy of the License at
   *
   * http://www.osedu.org/licenses/ECL-2.0
   *
   * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an "AS IS"
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
 package org.amcgala;
 
 
 import javax.swing.*;
 import java.util.List;

Die Hauptklasse des Frameworks, die die Hauptaufgaben übernimmt. Sie initialisiert die wichtigsten Datenstrukturen und ermöglicht ihren Zugriff.

Author(s):
Robert Giacinto
 
 public abstract class Framework {
 
     private static final Logger log = LoggerFactory.getLogger(Framework.class);
     private SceneGraph scenegraph;
     private Camera camera;
     private Animator animator;
     private List<Visitorvisitors;
     private RenderVisitor rv;
     private WASDController wasdController;
     private double aspectRatio;
     private double fieldOfView;
     private int screenWidth;
     private int screenHeight;
     private JFrame frame;
     private EventBus inputEventBus;
     private String id;

    
Erstellt ein neues Framework, das eine grafische Ausgabe in der Auflösung width x height hat.

Parameters:
width die Breite der Auflösung
height die Höhe der Auflösung
 
     public Framework(int widthint height) {
         .info("Initialising framework");
          = new EventBus("Input");
          = width;
          = height;
 
          = new ArrayList<Visitor>(10);
          = new SceneGraph();
          = width / height;
          = Math.toRadians(76);
 
          = new JFrame("amCGAla Framework");
         .setSize(widthheight);
         .setResizable(false);
         .addWindowListener(new WindowAdapter() {
 
             @Override
             public void windowClosing(WindowEvent e) {
                 super.windowClosing(e);
                 .info("Shutting down...");
                 shutdown();
             }
         });
 
         .setBackground(...);
         .setVisible(true);
 
 
          = new WASDController();
         = new org.amcgala.framework.renderer.Renderer(widthheight);
        .add(new InterpolationVisitor());
         = new Animator(60, 60);
        AnimationVisitor animationVisitor = new AnimationVisitor();
        .add(animationVisitor);
        UpdateVisitor updateVisitor = new UpdateVisitor();
        .add(updateVisitor);
         = new RenderVisitor();
        .setCamera();
        .setRenderer();
        .add();
        .addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                .post(e);
            }
            @Override
            public void keyReleased(KeyEvent e) {
                .post(e);
            }
        });
        .addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                .post(e);
            }
            @Override
            public void mousePressed(MouseEvent e) {
                .post(e);
            }
            @Override
            public void mouseReleased(MouseEvent e) {
                .post(e);
            }
            @Override
            public void mouseEntered(MouseEvent e) {
                .post(e);
            }
            @Override
            public void mouseExited(MouseEvent e) {
                .post(e);
            }
        });
            @Override
            public void mouseDragged(MouseEvent e) {
                .post(e);
            }
            @Override
            public void mouseMoved(MouseEvent e) {
                .post(e);
            }
        });
            @Override
            public void mouseWheelMoved(MouseWheelEvent e) {
                .post(e);
            }
        });
        // TODO eigentlich unschön. Besser wäre es, würde man das Framework final deklarieren und man übergibt eine Szene, die vom Framework gerendet wird.
        initGraph();
    }

    
Jedes Programm, das auf das Framework zurückgreift implementiert diese Methode. Hier findet die spezifische Initialisierung des Szenengraphs statt. Hier können zum Beispiel Objekte an den Szenengraph gehängt werden.
    public abstract void initGraph();

    
Fügt der Szene ein neues zeichenbares Objekt hinzu. Dieses wird an den Root-Knoten angehängt.

Parameters:
shape das Grafikobjekt, das der Szene hinzugefügt wird
    public void add(Shape shape) {
        .addShape(shape);
    }

    
Fügt dem Szenengraph einen neuen Knoten hinzu.

Parameters:
node der neue Knoten
    public void add(Node node) {
        .addNode(node);
    }
    
    
Fügt einen Knoten an einen anderen bestimmten Knoten hinzu.

Parameters:
label der Name des Knotens
node der Knoten der angehängt wird
    public void add(String labelNode node) {
    	.addNode(nodelabel);
    }
    
    
Fügt dem benannten Knoten das Shapeobjekt hinzu.

Parameters:
label der name des Knotens
shape das Shapeobjekt
    public void add(String labelShape shape) {
    	.addShape(labelshape);
    }

    
Ändert den Renderer des Frameworks. Damit ist es möglich die Ausgabe des Frameworks zu verändern. Abhängig von der Implementierung des Renderers.

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

    
Ändert den Szenengraph, der vom Framework verwendet wird.

Parameters:
scenegraph der neue Szenengraph
    public void setScenegraph(SceneGraph scenegraph) {
        this. = scenegraph;
    }

    
Das Seitenverhältnis der Ausgabe. Diese wird innerhalb der Kamera benötigt.

Returns:
das Seitenverhältnis der Ausgabe
    public double getAspectRatio() {
        return ;
    }
    private void setAspectRatio(double aspectRatio) {
        this. = aspectRatio;
    }

    
Gibt die Höhe der Ausgabe zurück.

Returns:
die Höhe in Pixeln
    public int getScreenHeight() {
        return ;
    }

    
Ändert die Höhe der Bildschirmausgabe.

Parameters:
screenHeight die Höhe der Bildschirmausgabe in Pixeln
    public void setScreenHeight(int screenHeight) {
        this. = screenHeight;
        setAspectRatio( / screenHeight);
    }

    
Gibt die Breite der Bildschirmausgabe in Pixeln zurück.

Returns:
die Breite der Bildschirmausgabe in Pixeln
    public int getScreenWidth() {
        return ;
    }

    
Ändert die Breite der Bildschirmausgabe.

Parameters:
screenWidth die neue Breite der Bildschirmausgabe in Pixeln
    public void setScreenWidth(int screenWidth) {
        this. = screenWidth;
        setAspectRatio(screenWidth / );
    }

    
Gibt den Animator zurück.

Returns:
der Animator des Frameworks
    public Animator getAnimator() {
        return ;
    }

    
Gibt die Kamera zurück.

Returns:
die Kamera des Frameworks
    public Camera getCamera() {
        return ;
    }

    
Gibt den Renderer zurück.

Returns:
der Renderer des Frameworks
        return ;
    }

    
Gibt den Szenengraphen zurück.

Returns:
der Szenengraph des Frameworks
    public SceneGraph getScenegraph() {
        return ;
    }

    
Gibt die Liste der registrierten Visitor zurück.

Returns:
die registrierten Visitor
    public List<VisitorgetVisitors() {
        return Collections.unmodifiableList();
    }

    
Aktualisiert den Szenengraphen, in dem die einzelnen, registrierten Visitor den Szenengraphen besuchen.
    public void update() {
        if ( != null) {
            for (Visitor v : ) {
                .accept(v);
            }
        }
    }

    
Rendert den Szenengraphen mithilfe des registrierten Renderers.
    public void show() {
        if ( != null) {
            .show();
        }
    }

    
Startet das Framework und aktualisiert den Szenengraphen mithilfe eines Animators.
    public void start() {
        if ( == null) {
            update();
            show();
        } else {
            .setFramework(this);
            .start();
        }
    }

    
Pausiert die Aktualisierung des Frameworks.
    public void pause() {
        if ( != null) {
            .stop();
        }
    }

    
Beendet ein laufendes Framework. Falls es etwas aufzuräumen gibt, dann passiert das hier.
    public void shutdown() {
        System.exit(0);
    }

    
Fügt dem Framework einen neuen KeyAdapter hinzu, der KeyEvents abfängt und behandelt.

Deprecated:
wird zum Ende des Semesters entfernt, da auf den Eventbus zurückgegriffen wird.
Parameters:
keyAdapter der KeyAdapter, der dem Framework hinzugefügt werden soll
    public void addKeyAdapter(KeyAdapter keyAdapter) {
        .addKeyListener(keyAdapter);
    }

    
Entfernt einen KeyListener aus dem Framework.

Deprecated:
wird zum Ende des Semesters entfernt, da auf den Eventbus zurückgegriffen wird.
Parameters:
keyAdapter der KeyListener, der entfernt werden soll
    public void removeKeyAdapter(KeyAdapter keyAdapter) {
        .removeKeyListener(keyAdapter);
    }

    
Entfernt einen MouseAdapter aus dem Framework.

Deprecated:
wird zum Ende des Semesters entfernt, da auf den Eventbus zurückgegriffen wird.
Parameters:
mouseAdapter der MouseAdapter, der entfernt werden soll
    public void removeMouseAdapter(MouseAdapter mouseAdapter) {
        .removeMouseListener(mouseAdapter);
        .removeMouseMotionListener(mouseAdapter);
        .removeMouseWheelListener(mouseAdapter);
    }

    
Fügt dem Framework einen neuen MouseAdapter hinzu, der die MouseEvents abfängt und behandelt.

Deprecated:
wird zum Ende des Semesters entfernt, da auf den Eventbus zurückgegriffen wird.
Parameters:
mouseAdapter der MouseAdapter, der dem Framework hinzugefügt werden soll
    public void addMouseAdapter(MouseInputAdapter mouseAdapter) {
        .addMouseListener(mouseAdapter);
        .addMouseMotionListener(mouseAdapter);
        .addMouseWheelListener(mouseAdapter);
    }

    
Ändert die Kamera.

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

    
Registriert einen neuen Eventhandler bei der EventQueue.

Parameters:
handler der neue Inputhandler
    public void registerInputEventHandler(InputHandler handler) {
        .register(handler);
    }

    
Entfernt einen Eventhandler aus der Liste der Subscriber.

Parameters:
handler der Inputhandler, der entfernt werden soll
    public void unregisterInputEventHandler(InputHandler handler) {
        .unregister(handler);
    }
New to GrepCode? Check out our FAQ X