Index: trunk/src/lib/collision_reaction/cr_engine.h
===================================================================
--- trunk/src/lib/collision_reaction/cr_engine.h	(revision 7842)
+++ trunk/src/lib/collision_reaction/cr_engine.h	(revision 7843)
@@ -46,5 +46,5 @@
 
   /** @returns an instance to a collision object. instead of creating new object this ones can be resycled */
-  inline Collision* getCollisionObject() { /* return the first element of the cache list*/ }
+inline Collision* getCollisionObject() { /* return the first element of the cache list*/ }
   /** @param collision: returns the Collision object back to the cache list */
   inline void putCollisionObject(Collision* collision) { this->cachedCollisions.push_back(collision); }
@@ -52,10 +52,11 @@
 
 private:
-  CREngine(void);
-  static CREngine*                    singletonRef;             //!< the reference to the CREngine object (singleton)
 
   std::vector<CollisionHandle*>       collisionHandles;         //!< list with the collision handles
   std::vector<Collision*>             cachedCollisions;         //!< a list of unused, cached collision events
 #endif
+private:
+  CREngine(void);
+  static CREngine*                    singletonRef;             //!< the reference to the CREngine object (singleton)
 };
 
Index: trunk/src/lib/graphics/effects/lense_flare.cc
===================================================================
--- trunk/src/lib/graphics/effects/lense_flare.cc	(revision 7842)
+++ trunk/src/lib/graphics/effects/lense_flare.cc	(revision 7843)
@@ -41,5 +41,5 @@
 
 /**
- *  default constructor
+ * @brief default constructor
  * @param root The XML-element to load the LenseFlare from
  */
@@ -128,5 +128,5 @@
 
 /**
- * converts a gl mode char to a GLint
+ * @brief converts a gl mode char to a GLint
  * @param mode the mode character
  */
@@ -136,5 +136,5 @@
 
 /**
- * adds a texture flare
+ * @brief adds a texture flare
  * @param textureName the name of the flare texture
  *
@@ -169,4 +169,5 @@
     bb->setVisibility(true);
   }
+
   PRINTF(4)("Finished adding\n");
 }
@@ -175,6 +176,6 @@
 void LenseFlare::setSourceVisibility(bool visibility)
 {
-  if (this->isVisible == visibility)
-    return;
+//   if (this->isVisible == visibility)
+//     return;
 
   float dist = this->frustumPlane.distancePoint(this->lightSource->getAbsCoor());
@@ -205,10 +206,10 @@
     //set the frustum plane
 
-  this->frustumPlane = State::getCamera()->getViewFrustum();
-
-  if (State::getCamera()->distance(lightSource) < 0)
-    this->setSourceVisibility(false);
-  else
-    this->setSourceVisibility(true);
+//   this->frustumPlane = State::getCamera()->getViewFrustum();
+//
+//   if (State::getCamera()->distance(lightSource) < 0)
+//     this->setSourceVisibility(false);
+//   else
+//     this->setSourceVisibility(true);
 
 
@@ -233,6 +234,4 @@
     (*it)->setSize2D(50.0f * this->flareMatrix[i * 2 + 1], 50.0f * this->flareMatrix[i * 2 + 1]);
     PRINTF(5)("Tick flare %i @ (%f, %f)\n", i, (*it)->getAbsCoor2D().x, (*it)->getAbsCoor2D().y);
-    // tick them
-    (*it)->tick(dt);
   }
 }
Index: trunk/src/lib/graphics/render2D/element_2d.cc
===================================================================
--- trunk/src/lib/graphics/render2D/element_2d.cc	(revision 7842)
+++ trunk/src/lib/graphics/render2D/element_2d.cc	(revision 7843)
@@ -21,5 +21,9 @@
 #include <algorithm>
 
+// ONLY IF PNODE ENABLED //
+#include "state.h"
 #include "p_node.h"
+#include "camera.h"
+///////////////////////////
 
 #include "graphics_engine.h"
@@ -45,4 +49,5 @@
 
   this->setVisibility(true);
+  this->bCurrentlyVisible = true;
   this->activate2D();
   this->setAlignment(E2D_ALIGN_NONE);
@@ -240,4 +245,14 @@
 
 
+/**
+ * @brief sets a node, this 2D-Element should be shown upon
+ * @param bindNode the Node of the Node. (if NULL it will be unset).
+ */
+void Element2D::setBindNode(const PNode* bindNode)
+{
+  this->bindNode = bindNode;
+  if (bindNode == NULL)
+    this->bCurrentlyVisible = true;
+}
 
 /**
@@ -863,4 +878,12 @@
     else if (unlikely(this->bindNode != NULL))
     {
+      if (State::getCamera()->distance(this->bindNode) < 0)
+        this->bCurrentlyVisible = false;
+      else
+      {
+        this->bCurrentlyVisible = true;
+        printf("OK \n");
+      }
+
       GLdouble projectPos[3] = {0.0, 0.0, 0.0};
       gluProject(this->bindNode->getAbsCoor().x,
@@ -1011,5 +1034,5 @@
 void Element2D::draw2D(E2D_LAYER from, E2D_LAYER to) const
 {
-  if (this->bVisible)
+  if (this->bVisible && this->bCurrentlyVisible)
     this->draw();
   if (this->children.size() > 0)
Index: trunk/src/lib/graphics/render2D/element_2d.h
===================================================================
--- trunk/src/lib/graphics/render2D/element_2d.h	(revision 7842)
+++ trunk/src/lib/graphics/render2D/element_2d.h	(revision 7843)
@@ -116,10 +116,10 @@
     inline void setVisibility(bool visible) { this->bVisible = visible; };
     /** @returns the visibility state */
-    inline bool isVisible() const { return this->bVisible; };
+    inline bool isVisible() const { return (this->bVisible && this->bCurrentlyVisible);  };
 
 
     // POSITIONAL (E2D-specials) //
     /** @param bindNode the Node this 2D-element should follow. if NULL the Element will not follow anything */
-    inline void setBindNode(const PNode* bindNode) { this->bindNode = bindNode; };
+    void setBindNode(const PNode* bindNode);
     void setBindNode(const std::string& bindNode);
     inline const PNode* getBindNode() const { return this->bindNode; };
@@ -244,6 +244,7 @@
     E2D_ALIGNMENT           alignment;          //!< How the Element is aligned around its Position
 
-    bool                    bVisible;            //!< If the given Element2D is visible.
-    bool                    bActive;             //!< If the given Element2D is active.
+    bool                    bVisible;           //!< If the given Element2D is visible.
+    bool                    bCurrentlyVisible;  //!< Evaluated in the TICK process, to see if the Element is Currently visible.
+    bool                    bActive;            //!< If the given Element2D is active.
     E2D_LAYER               layer;              //!< What layer this Element2D is on.
 
Index: trunk/src/lib/graphics/render2D/image_plane.cc
===================================================================
--- trunk/src/lib/graphics/render2D/image_plane.cc	(revision 7842)
+++ trunk/src/lib/graphics/render2D/image_plane.cc	(revision 7843)
@@ -21,7 +21,5 @@
 
 #include "graphics_engine.h"
-#include "material.h"
 #include "glincl.h"
-#include "state.h"
 #include "p_node.h"
 
@@ -50,6 +48,4 @@
 ImagePlane::~ImagePlane ()
 {
-  if (this->material)
-    delete this->material;
 }
 
@@ -67,5 +63,4 @@
 
   //this->setBindNode(this);
-  this->material = new Material();
   this->setTexture("pictures/error_texture.png");
 }
@@ -78,5 +73,5 @@
 void ImagePlane::loadParams(const TiXmlElement* root)
 {
-  LoadParam(root, "texture", this->material, Material, setDiffuseMap)
+  LoadParam(root, "texture", &this->material, Material, setDiffuseMap)
       .describe("the texture-file to load onto the ImagePlane");
 
@@ -102,5 +97,5 @@
 void ImagePlane::setTexture(const std::string& textureFile)
 {
-  this->material->setDiffuseMap(textureFile);
+  this->material.setDiffuseMap(textureFile);
 }
 
@@ -149,11 +144,8 @@
 void ImagePlane::draw() const
 {
-  if( !this->isVisible())
-    return;
-
   glPushMatrix();
 
   glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0);
-  this->material->select();
+  this->material.select();
 
   glBegin(GL_TRIANGLE_STRIP);
Index: trunk/src/lib/graphics/render2D/image_plane.h
===================================================================
--- trunk/src/lib/graphics/render2D/image_plane.h	(revision 7842)
+++ trunk/src/lib/graphics/render2D/image_plane.h	(revision 7843)
@@ -11,9 +11,6 @@
 
 #include "vector.h"
+#include "material.h"
 
-
-
-class Material;
-class TiXmlElement;
 
 //! A class that enables the
@@ -37,5 +34,5 @@
 
   private:
-    Material*        material;             //!< a material for the ImagePlane
+    Material         material;             //!< a material for the ImagePlane
     float            rotationSpeed;        //!< Speed of the Rotation.
 
