Index: trunk/src/world_entities/effects/billboard.cc
===================================================================
--- trunk/src/world_entities/effects/billboard.cc	(revision 10368)
+++ trunk/src/world_entities/effects/billboard.cc	(revision 10433)
@@ -24,5 +24,5 @@
 
 
-
+#include "debug.h"
 
 
@@ -66,4 +66,6 @@
   //this->setVisibiliy(true);
   this->setSize(5, 5);
+
+  this->texColor = NULL;
 }
 
@@ -147,4 +149,9 @@
 //v += this->getAbsCoor();
     //PRINTF(0)("sizeX: %f sizeY: %f\n", sizeX, sizeY);
+
+  // changes the color of the texture (if any is set)
+  if(this->texColor != NULL)
+    glColor4ub((GLubyte)this->texColor->r()*255, (GLubyte)this->texColor->g()*255, (GLubyte)this->texColor->b()*255, (GLubyte)(this->texColor->a()*255));
+
   glBegin(GL_QUADS);
   glTexCoord2f(0.0f, 0.0f);
@@ -171,2 +178,12 @@
   glPopAttrib();
 }
+
+
+/**
+ * changes the texture color
+ * @param col color for the texture
+ */
+void Billboard::colorTexture(const Color col)
+{
+  this->texColor = new Color(col.r(), col.g(), col.b(), col.a());
+}
Index: trunk/src/world_entities/effects/billboard.h
===================================================================
--- trunk/src/world_entities/effects/billboard.h	(revision 10368)
+++ trunk/src/world_entities/effects/billboard.h	(revision 10433)
@@ -10,4 +10,5 @@
 class Material;
 class TiXmlElement;
+class Color;
 
 class Billboard : public WorldEntity
@@ -23,4 +24,5 @@
     void setSize(float sizeX, float sizeY);
     void setTexture(const std::string& textureFile);
+    void colorTexture(const Color col);
 
     virtual void tick(float dt);
@@ -29,4 +31,5 @@
   private:
     Material*        material;
+    Color*           texColor;
     float sizeX;
     float sizeY;
Index: trunk/src/world_entities/effects/blink.cc
===================================================================
--- trunk/src/world_entities/effects/blink.cc	(revision 10433)
+++ trunk/src/world_entities/effects/blink.cc	(revision 10433)
@@ -0,0 +1,117 @@
+/*
+
+   Copyright (C) 2006 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: Lieni
+*/
+
+#include "blink.h"
+
+#include "util/loading/load_param.h"
+#include "util/loading/factory.h"
+#include "debug.h"
+#include "state.h"
+#include "effects/billboard.h"
+
+
+
+
+ObjectListDefinition(Blink);
+CREATE_FACTORY(Blink);
+
+/**
+ * standart constructor
+ */
+Blink::Blink (const TiXmlElement* root)
+{
+  this->init();
+
+  if(root)
+    this->loadParams(root);
+}
+
+
+/**
+ * destroys a Blink
+ */
+Blink::~Blink ()
+{
+  if(bBoard)
+    delete bBoard;
+}
+
+
+/**
+ * initializes the Blink
+ */
+void Blink::init()
+{
+  this->registerObject(this, Blink::_objectList);
+  this->setName("Blink");
+
+  this->toList(OM_COMMON);
+
+  this->bBoard = new Billboard;
+  this->bBoard->setVisibiliy(true);
+  this->bBoard->setTexture("maps/star_alpha.png");
+
+  /// Standard values
+  this->bBoard->setAbsCoor(0, 0, 0);
+  // default position if not set in xml
+  this->color = Color(1, 0, 0);
+  // 10x10 pxl if not defined in xml
+  this->size = 10;
+  // default angular rate
+  this->omega = 10;
+
+  // random start angle, blinkies shouldn't blink synchronous
+  this->angle = (float)rand()/(float)RAND_MAX * 2 * M_PI;
+}
+
+
+/**
+ *  load params
+ * @param root TiXmlElement object
+ */
+void Blink::loadParams(const TiXmlElement* root)
+{
+  WorldEntity::loadParams(root);
+
+  LoadParam(root, "position", this, Blink, setPosition);
+  LoadParam(root, "size", this, Blink, setSize);
+  LoadParam(root, "color", this, Blink, setColor);
+  LoadParam(root, "omega", this, Blink, setOmega);
+}
+
+
+/**
+ * ticks the Blink
+ * @param dt the time to ticks
+ */
+void Blink::tick(float dt)
+{
+  this->angle += dt * this->omega;
+
+  while (this->angle > 2 * M_PI)
+    this->angle -= 2 * M_PI;
+
+  // blinkStr should be element of [0, 1]
+  this->blinkStr = (sinf(angle) + 1) / 2;
+
+  this->bBoard->colorTexture(Color(color.r(), color.g(), color.b(), this->blinkStr));
+}
+
+
+/**
+ * draws the blink
+ */
+void Blink::draw() const
+{
+
+}
Index: trunk/src/world_entities/effects/blink.h
===================================================================
--- trunk/src/world_entities/effects/blink.h	(revision 10433)
+++ trunk/src/world_entities/effects/blink.h	(revision 10433)
@@ -0,0 +1,43 @@
+/*!
+ * @file blink.h
+ */
+
+#ifndef _BLINK_H
+#define _BLINK_H
+
+#include "world_entity.h"
+#include "effects/billboard.h"
+#include "color.h"
+
+class Material;
+class TiXmlElement;
+//class Billboard;
+
+class Blink : public WorldEntity
+{
+  ObjectListDeclaration(Blink);
+  public:
+    Blink(const TiXmlElement* root = NULL);
+    virtual ~Blink();
+
+    void init();
+    void loadParams(const TiXmlElement* root);
+
+    void setPosition(float x, float y, float z) { this->bBoard->setAbsCoor(x, y, z); }
+    void setSize(float s) { this->size = s; this->bBoard->setSize(this->size, this->size); }
+    void setOmega(float w) { this->omega = w; }
+    void setColor(float r, float g, float b) { this->color = Color(r/255, g/255, b/255); }
+
+    virtual void tick(float dt);
+    virtual void draw() const;
+
+  private:
+    Billboard*        bBoard;
+    Color             color;
+    float             angle;
+    float             omega;
+    float             blinkStr;
+    float             size;             //! only one float caus' its quadratical
+};
+
+#endif /* _BLINK_H */
