Index: branches/atmospheric_engine/src/lib/graphics/Makefile.am
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/Makefile.am	(revision 7795)
+++ branches/atmospheric_engine/src/lib/graphics/Makefile.am	(revision 7807)
@@ -10,5 +10,5 @@
 			   render2D/render_2d.cc \
 			   render2D/element_2d.cc \
-			   render2D/billboard.cc \
+			   render2D/image_plane.cc \
 			   \
 			   text_engine/text_engine.cc \
@@ -35,5 +35,5 @@
 		 render2D/render_2d.h \
 		 render2D/element_2d.h \
-		 render2D/billboard.h \
+		 render2D/image_plane.h \
 		 \
 		 text_engine/text_engine.h \
Index: branches/atmospheric_engine/src/lib/graphics/effects/lense_flare.cc
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/effects/lense_flare.cc	(revision 7795)
+++ branches/atmospheric_engine/src/lib/graphics/effects/lense_flare.cc	(revision 7807)
@@ -28,5 +28,5 @@
 #include "state.h"
 
-#include "render2D/billboard.h"
+#include "render2D/image_plane.h"
 
 #include "light.h"
@@ -80,5 +80,5 @@
 LenseFlare::~LenseFlare()
 {
-  std::vector<Billboard*>::iterator it;
+  std::vector<ImagePlane*>::iterator it;
   for( it = flares.begin(); it != flares.end(); it++)
     delete (*it);
@@ -155,9 +155,9 @@
   }
 
-  Billboard* bb = new Billboard(NULL);
+  ImagePlane* bb = new ImagePlane(NULL);
   bb->setTexture(textureName);
   bb->setSize(50, 50);
   this->flares.push_back(bb);
-  PRINTF(4)("Added a Lenseflare Billboard with texture %s\n", textureName.c_str());
+  PRINTF(4)("Added a Lenseflare ImagePlane with texture %s\n", textureName.c_str());
 
   // the first flare belongs to the light source
@@ -178,5 +178,5 @@
   float dist = this->frustumPlane.distancePoint(this->lightSource->getAbsCoor());
   PRINTF(0)("dist: %f\n", dist);
-  std::vector<Billboard*>::const_iterator it;
+  std::vector<ImagePlane*>::const_iterator it;
     for(it = flares.begin(); it != flares.end(); it++)
       (*it)->setVisibility(visibility);
@@ -220,5 +220,5 @@
 
   // now calculate the new coordinates of the billboards
-  std::vector<Billboard*>::iterator it;
+  std::vector<ImagePlane*>::iterator it;
   int i;
   for( it = flares.begin(), i = 0; it != flares.end(); it++, i++)
Index: branches/atmospheric_engine/src/lib/graphics/effects/lense_flare.h
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/effects/lense_flare.h	(revision 7795)
+++ branches/atmospheric_engine/src/lib/graphics/effects/lense_flare.h	(revision 7807)
@@ -20,5 +20,5 @@
 class TiXmlElement;
 class Light;
-class Billboard;
+class ImagePlane;
 
 //! A class that handles LenseFlares. The LenseFlareManager operates on this.
@@ -50,5 +50,5 @@
     float                    isVisible;          //!< Checks visibility
     Light*                   lightSource;        //!< reference to the sun (or primary light source)
-    std::vector<Billboard*>  flares;             //!< the flares array
+    std::vector<ImagePlane*>  flares;             //!< the flares array
 
     Vector2D                 flareVector;        //!< the axis to draw the flares on
Index: branches/atmospheric_engine/src/lib/graphics/effects/lightening_effect.cc
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/effects/lightening_effect.cc	(revision 7795)
+++ branches/atmospheric_engine/src/lib/graphics/effects/lightening_effect.cc	(revision 7807)
@@ -15,7 +15,8 @@
 #include "lightening_effect.h"
 
+#include "state.h"
 #include "util/loading/load_param.h"
 #include "util/loading/factory.h"
-#include "render2D/billboard.h"
+#include "render2D/image_plane.h"
 
 #include "glincl.h"
@@ -31,9 +32,10 @@
   
   
-  lightening = new Billboard(NULL);
-  lightening->setTexture("pictures/lense_flare/lens2.png");
+  lightening = new ImagePlane(NULL);
+  lightening->setTexture("maps/lightning_bolt.png");
   lightening->setSize(50, 50);
-  lightening->setAbsCoor2D(0,0);
+  lightening->setAbsCoor2D(10,10);
   lightening->setVisibility(true);
+  
   
 	this->init();
Index: branches/atmospheric_engine/src/lib/graphics/effects/lightening_effect.h
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/effects/lightening_effect.h	(revision 7795)
+++ branches/atmospheric_engine/src/lib/graphics/effects/lightening_effect.h	(revision 7807)
@@ -15,5 +15,5 @@
 
 
-class Billboard;
+class ImagePlane;
 
 class LighteningEffect : public WeatherEffect
@@ -33,5 +33,5 @@
 
 	private:
-    Billboard* lightening;
+    ImagePlane* lightening;
 
 };
Index: branches/atmospheric_engine/src/lib/graphics/render2D/billboard.cc
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/render2D/billboard.cc	(revision 7795)
+++ 	(revision )
@@ -1,171 +1,0 @@
-/*
-   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
-*/
-
-#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
-
-#include "billboard.h"
-
-#include "util/loading/load_param.h"
-#include "util/loading/factory.h"
-
-#include "graphics_engine.h"
-#include "material.h"
-#include "glincl.h"
-#include "state.h"
-#include "p_node.h"
-
-
-using namespace std;
-
-
-CREATE_FACTORY(Billboard, CL_IMAGE_ENTITY);
-
-
-/**
- * standart constructor
- */
-Billboard::Billboard (const TiXmlElement* root)
-{
-  this->init();
-
-  if( root)
-    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->setSize(GraphicsEngine::getInstance()->getResolutionX()/10.0, GraphicsEngine::getInstance()->getResolutionY()/10.0);
-
-  //this->setBindNode(this);
-  this->material = new Material();
-  this->setTexture("pictures/error_texture.png");
-}
-
-
-/**
- *  load params
- * @param root TiXmlElement object
- */
-void Billboard::loadParams(const TiXmlElement* root)
-{
-  LoadParam(root, "texture", this->material, Material, setDiffuseMap)
-      .describe("the texture-file to load onto the Billboard");
-
-  LoadParam(root, "size", this, Billboard, setSize)
-      .describe("the size of the Billboard in Pixels");
-}
-
-
-/**
- * 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 std::string& textureFile)
-{
-  this->material->setDiffuseMap(textureFile);
-}
-
-
-/**
- * attaches this billboard to a parent
- * @param pNode node to attach to
- */
-void Billboard::attachTo(PNode* pNode)
-{
-  this->source->setParent(pNode);
-}
-
-
-/**
- * ticks the Billboard
- * @param dt the time to ticks
- */
-void Billboard::tick(float dt)
-{
-  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 );
-}
-
-
-/**
- * draws the billboard
- */
-void Billboard::draw() const
-{
-  if( !this->isVisible())
-    return;
-
-  glPushMatrix();
-
-  glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0);
-  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/atmospheric_engine/src/lib/graphics/render2D/billboard.h
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/render2D/billboard.h	(revision 7795)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/*!
- * @file billboard.h
- *  Definition of a billboard
- */
-
-#ifndef _BILLBOARD_H
-#define _BILLBOARD_H
-
-
-#include "element_2d.h"
-
-#include "vector.h"
-
-
-
-class Model;
-class Material;
-class TiXmlElement;
-
-//! A class that enables the
-class Billboard :  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 std::string& textureFile);
-    void attachTo(PNode* pnode);
-
-    virtual void tick(float dt);
-    virtual void draw() const;
-
-
-  private:
-    Material*        material;             //!< a material for the Billboard
-    float            rotationSpeed;        //!< Speed of the Rotation.
-
-    PNode*           source;               //!< the source attached to it
-
-};
-
-#endif /* _BILLBOARD_H */
Index: branches/atmospheric_engine/src/lib/graphics/render2D/image_plane.cc
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/render2D/image_plane.cc	(revision 7807)
+++ branches/atmospheric_engine/src/lib/graphics/render2D/image_plane.cc	(revision 7807)
@@ -0,0 +1,171 @@
+/*
+   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
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
+
+#include "image_plane.h"
+
+#include "util/loading/load_param.h"
+#include "util/loading/factory.h"
+
+#include "graphics_engine.h"
+#include "material.h"
+#include "glincl.h"
+#include "state.h"
+#include "p_node.h"
+
+
+using namespace std;
+
+
+CREATE_FACTORY(ImagePlane, CL_IMAGE_ENTITY);
+
+
+/**
+ * standart constructor
+ */
+ImagePlane::ImagePlane (const TiXmlElement* root)
+{
+  this->init();
+
+  if( root)
+    this->loadParams(root);
+}
+
+
+/**
+ * destroys a ImagePlane
+ */
+ImagePlane::~ImagePlane ()
+{
+  if (this->material)
+    delete this->material;
+}
+
+
+/**
+ * initializes the ImagePlane
+ */
+void ImagePlane::init()
+{
+  this->setClassID(CL_IMAGE_PLANE, "ImagePlane");
+  this->setName("ImagePlane");
+
+  this->setLayer(E2D_LAYER_TOP);
+  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");
+}
+
+
+/**
+ *  load params
+ * @param root TiXmlElement object
+ */
+void ImagePlane::loadParams(const TiXmlElement* root)
+{
+  LoadParam(root, "texture", this->material, Material, setDiffuseMap)
+      .describe("the texture-file to load onto the ImagePlane");
+
+  LoadParam(root, "size", this, ImagePlane, setSize)
+      .describe("the size of the ImagePlane in Pixels");
+}
+
+
+/**
+ * sets the size of the ImagePlane.
+ * @param size the size in pixels
+ */
+void ImagePlane::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 ImagePlane::setTexture(const std::string& textureFile)
+{
+  this->material->setDiffuseMap(textureFile);
+}
+
+
+/**
+ * attaches this image_plane to a parent
+ * @param pNode node to attach to
+ */
+void ImagePlane::attachTo(PNode* pNode)
+{
+  this->source->setParent(pNode);
+}
+
+
+/**
+ * ticks the ImagePlane
+ * @param dt the time to ticks
+ */
+void ImagePlane::tick(float dt)
+{
+  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 );
+}
+
+
+/**
+ * draws the image_plane
+ */
+void ImagePlane::draw() const
+{
+  if( !this->isVisible())
+    return;
+
+  glPushMatrix();
+
+  glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0);
+  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/atmospheric_engine/src/lib/graphics/render2D/image_plane.h
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/render2D/image_plane.h	(revision 7807)
+++ branches/atmospheric_engine/src/lib/graphics/render2D/image_plane.h	(revision 7807)
@@ -0,0 +1,46 @@
+/*!
+ * @file image_plane.h
+ *  Definition of a image_plane
+ */
+
+#ifndef _IMAGE_PLANE_H
+#define _IMAGE_PLANE_H
+
+
+#include "element_2d.h"
+
+#include "vector.h"
+
+
+
+class Material;
+class TiXmlElement;
+
+//! A class that enables the
+class ImagePlane :  public Element2D
+{
+
+  public:
+    ImagePlane(const TiXmlElement* root = NULL);
+    virtual ~ImagePlane();
+
+    void init();
+    void loadParams(const TiXmlElement* root);
+
+    void setSize(float sizeX, float sizeY);
+    void setTexture(const std::string& textureFile);
+    void attachTo(PNode* pnode);
+
+    virtual void tick(float dt);
+    virtual void draw() const;
+
+
+  private:
+    Material*        material;             //!< a material for the ImagePlane
+    float            rotationSpeed;        //!< Speed of the Rotation.
+
+    PNode*           source;               //!< the source attached to it
+
+};
+
+#endif /* _IMAGE_PLANE_H */
