Index: branches/network/src/lib/graphics/Makefile.am
===================================================================
--- branches/network/src/lib/graphics/Makefile.am	(revision 6777)
+++ branches/network/src/lib/graphics/Makefile.am	(revision 6779)
@@ -13,5 +13,6 @@
 			   text_engine/font.cc \
 			   effects/graphics_effect.cc \
-			   effects/fog_effect.cc
+			   effects/fog_effect.cc \
+			   effects/lense_flare.cc
 
 noinst_HEADERS = graphics_engine.h \
@@ -24,5 +25,6 @@
 		 text_engine/font.h \
 		 effects/graphics_effect.h \
-		 effects/fog_effect.h
+		 effects/fog_effect.h \
+		 effects/lense_flare.h
 
 
Index: branches/network/src/lib/graphics/effects/lense_flare.cc
===================================================================
--- branches/network/src/lib/graphics/effects/lense_flare.cc	(revision 6777)
+++ branches/network/src/lib/graphics/effects/lense_flare.cc	(revision 6779)
@@ -23,5 +23,5 @@
 
 #include "glincl.h"
-
+#include "texture.h"
 
 
@@ -58,6 +58,6 @@
   GraphicsEffect::loadParams(root);
 
-//    LoadParam(root, "fog-effect", this, LenseFlare, setFogMode)
-//        .describe("sets the the fog mode {GL_LINEAR, GL_EXP, GL_EXP2}");
+    LoadParam(root, "add-flare-texture", this, LenseFlare, addFlare)
+        .describe("adds a lensflare texture to the engine");
 
 }
@@ -98,2 +98,15 @@
 {}
 
+
+/**
+ * adds a texture flare
+ * @param textureName the name of the flare texture
+ */
+void addFlare(const char* textureName)
+{
+  Texture* texture = new Texture (textureName, GL_TEXTURE);
+
+
+}
+
+
Index: branches/network/src/lib/graphics/effects/lense_flare.h
===================================================================
--- branches/network/src/lib/graphics/effects/lense_flare.h	(revision 6777)
+++ branches/network/src/lib/graphics/effects/lense_flare.h	(revision 6779)
@@ -9,8 +9,10 @@
 #include "graphics_effect.h"
 
-#include <list>
+#include <vector>
 
 
 class TiXmlElement;
+class Light;
+class Element2D;
 
 //! A class that handles LenseFlares. The LenseFlareManager operates on this.
@@ -30,4 +32,6 @@
     virtual void draw() const;
 
+    void addFlare(const char* textureName);
+
 
   private:
Index: branches/network/src/lib/graphics/render2D/billboard.cc
===================================================================
--- branches/network/src/lib/graphics/render2D/billboard.cc	(revision 6779)
+++ branches/network/src/lib/graphics/render2D/billboard.cc	(revision 6779)
@@ -0,0 +1,179 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+### File Specific:
+   main-programmer: Patrick Boenzli
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
+
+#include "image_entity.h"
+
+#include "load_param.h"
+#include "factory.h"
+
+#include "graphics_engine.h"
+#include "material.h"
+#include "glincl.h"
+#include "state.h"
+
+
+using namespace std;
+
+
+CREATE_FACTORY(Billboard, CL_IMAGE_ENTITY);
+
+
+/**
+ * standart constructor
+ */
+Billboard::Billboard (const TiXmlElement* root)
+{
+  this->init();
+  this->loadParams(root);
+}
+
+
+/**
+ * destroys a Billboard
+ */
+Billboard::~Billboard ()
+{
+  if (this->material)
+    delete this->material;
+}
+
+
+/**
+ * initializes the Billboard
+ */
+void Billboard::init()
+{
+  this->setClassID(CL_BILLBOARD, "Billboard");
+  this->setName("Billboard");
+
+  this->setLayer(E2D_LAYER_TOP);
+  this->setRotationSpeed(5);
+  this->setSize(GraphicsEngine::getInstance()->getResolutionX()/10.0, GraphicsEngine::getInstance()->getResolutionY()/10.0);
+
+  this->setBindNode(this);
+  this->material = new Material;
+  this->setTexture("pictures/error_texture.png");
+  this->bBillboarding = false;
+}
+
+
+void Billboard::loadParams(const TiXmlElement* root)
+{
+  PNode::loadParams(root);
+
+  LoadParam(root, "texture", this, Billboard, setTexture)
+      .describe("the texture-file to load onto the Billboard");
+
+  LoadParam(root, "size", this, Billboard, setSize)
+      .describe("the size of the Billboard in Pixels");
+
+  LoadParam(root, "rotation-speed", this, Billboard, setRotationSpeed)
+      .describe("the Speed with which the Billboard should rotate");
+
+  LoadParam(root, "billboarding", this, Billboard, toggleBillboard)
+      .describe("sets the Billboard to always look in the direction of the Player");
+}
+
+
+/**
+ * sets the size of the Billboard.
+ * @param size the size in pixels
+ */
+void Billboard::setSize(float sizeX, float sizeY)
+{
+  this->setSize2D(sizeX, sizeY);
+}
+
+
+/**
+ * sets the material to load
+ * @param textureFile The texture-file to load onto the crosshair
+ */
+void Billboard::setTexture(const char* textureFile)
+{
+  this->material->setDiffuseMap(textureFile);
+}
+
+
+/** this turns on/off the billboarding of this WorldEntity
+ *
+ * This means that the image will always look in the direction of the Player
+ */
+void Billboard::toggleBillboard()
+{
+  this->bBillboarding = !this->bBillboarding;
+}
+
+
+/**
+ * ticks the Billboard
+ * @param dt the time to ticks
+ */
+void Billboard::tick(float dt)
+{
+  // let the crosshair rotate
+  //this->shiftDir2D(dt * rotationSpeed);
+
+
+  float z = 0.0f;
+  glReadPixels ((int)this->getAbsCoor2D().x,
+                 GraphicsEngine::getInstance()->getResolutionY()-(int)this->getAbsCoor2D().y-1,
+                 1,
+                 1,
+                 GL_DEPTH_COMPONENT,
+                 GL_FLOAT,
+                 &z);
+
+
+  GLdouble objX=.0, objY=.0, objZ=.0;
+  gluUnProject(this->getAbsCoor2D().x,
+               GraphicsEngine::getInstance()->getResolutionY()-this->getAbsCoor2D().y-1,
+               .99,  // z
+               GraphicsEngine::modMat,
+               GraphicsEngine::projMat,
+               GraphicsEngine::viewPort,
+               &objX,
+               &objY,
+               &objZ );
+
+  //this->setAbsCoor(objX, objY, objZ);
+}
+
+
+/**
+ * draws the crosshair
+ */
+void Billboard::draw() const
+{
+  glPushMatrix();
+  glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0);
+
+  //glRotatef(this->getAbsDir2D(), 0,0,1);
+  this->material->select();
+  glBegin(GL_TRIANGLE_STRIP);
+  glTexCoord2f(0, 0);
+  glVertex2f(-this->getSizeX2D(), -this->getSizeY2D());
+  glTexCoord2f(1, 0);
+  glVertex2f(this->getSizeX2D(), -this->getSizeY2D());
+  glTexCoord2f(0, 1);
+  glVertex2f(-this->getSizeX2D(), this->getSizeY2D());
+  glTexCoord2f(1, 1);
+  glVertex2f(this->getSizeX2D(), this->getSizeY2D());
+  glEnd();
+  glPopMatrix();
+
+}
Index: branches/network/src/lib/graphics/render2D/billboard.h
===================================================================
--- branches/network/src/lib/graphics/render2D/billboard.h	(revision 6779)
+++ branches/network/src/lib/graphics/render2D/billboard.h	(revision 6779)
@@ -0,0 +1,46 @@
+/*!
+ * @file billboard.h
+ *  Definition of a billboard
+ */
+
+#ifndef _IMAGE_ENTITY_H
+#define _IMAGE_ENTITY_H
+
+#include "p_node.h"
+#include "element_2d.h"
+#include "event_listener.h"
+
+#include "vector.h"
+
+
+// FORWARD DECLARATION
+class Model;
+class Material;
+class TiXmlElement;
+
+//! A class that enables the
+class Billboard : public PNode, public Element2D {
+
+  public:
+    Billboard(const TiXmlElement* root = NULL);
+    virtual ~Billboard();
+
+    void init();
+    void loadParams(const TiXmlElement* root);
+
+    void setSize(float sizeX, float sizeY);
+    void setTexture(const char* textureFile);
+    /** @param rotationSpeed the speed at what the crosshair should rotate */
+    void setRotationSpeed(float rotationSpeed) { this->rotationSpeed = rotationSpeed; };
+    void toggleBillboard();
+
+    virtual void tick(float dt);
+    virtual void draw() const;
+
+  private:
+    Material*        material;             //!< a material for the Aim.
+    float            rotationSpeed;        //!< Speed of the Rotation.
+    bool             bBillboarding;        //!< true if billboarding is on
+};
+
+#endif /* _IMAGE_ENTITY_H */
