Index: trunk/src/lib/graphics/importer/material.cc
===================================================================
--- trunk/src/lib/graphics/importer/material.cc	(revision 8370)
+++ trunk/src/lib/graphics/importer/material.cc	(revision 8376)
@@ -132,14 +132,14 @@
 
     // setting diffuse color
-  glColor4f (diffuse[0], diffuse[1], diffuse[2], this->transparency);
+  glColor4f (diffuse.r(), diffuse.g(), diffuse.b(), diffuse.a());
   // setting ambient color
-  glMaterialfv(GL_FRONT, GL_AMBIENT, this->ambient);
+  glMaterialfv(GL_FRONT, GL_AMBIENT, &this->ambient[0]);
   // setting up Sprecular
-  glMaterialfv(GL_FRONT, GL_SPECULAR, this->specular);
+  glMaterialfv(GL_FRONT, GL_SPECULAR, &this->specular[0]);
   // setting up Shininess
   glMaterialf(GL_FRONT, GL_SHININESS, this->shininess);
 
   // setting the transparency
-  if (this->transparency < 1.0 ||       /* This allows alpha blending of 2D textures with the scene */
+  if (this->diffuse.a() < 1.0 ||       /* This allows alpha blending of 2D textures with the scene */
       (likely(!this->textures.empty() && this->textures[0].hasAlpha())))
   {
@@ -206,9 +206,5 @@
 {
   PRINTF(4)("setting Diffuse Color of Material %s to r=%f g=%f b=%f.\n", this->getName(), r, g, b);
-  this->diffuse[0] = r;
-  this->diffuse[1] = g;
-  this->diffuse[2] = b;
-  this->diffuse[3] = 1.0;
-
+  this->diffuse = Color(r, g, b, this->diffuse.a() );
 }
 
@@ -223,8 +219,5 @@
 {
   PRINTF(4)("setting Ambient Color of Material %s to r=%f g=%f b=%f.\n", this->getName(), r, g, b);
-  this->ambient[0] = r;
-  this->ambient[1] = g;
-  this->ambient[2] = b;
-  this->ambient[3] = 1.0;
+  this->ambient = Color(r, g, b, 1.0);
 }
 
@@ -238,8 +231,5 @@
 {
   PRINTF(4)("setting Specular Color of Material %s to r=%f g=%f b=%f.\n", this->getName(), r, g, b);
-  this->specular[0] = r;
-  this->specular[1] = g;
-  this->specular[2] = b;
-  this->specular[3] = 1.0;
+  this->specular = Color (r, g, b, 1.0);
 }
 
@@ -260,5 +250,5 @@
 {
   PRINTF(4)("setting Transparency of Material %s to %f.\n", this->getName(), trans);
-  this->transparency = trans;
+  this->diffuse.a() = trans;
 }
 
@@ -310,5 +300,5 @@
     Texture* tex = dynamic_cast<Texture*>(ResourceManager::getInstance()->load(dMap, IMAGE, RP_GAME, (int)target));
     if (tex != NULL)
-    this->textures[textureNumber] = *tex;
+      this->textures[textureNumber] = *tex;
     else
       this->textures[textureNumber] = Texture();
@@ -373,5 +363,5 @@
  * @brief Sets the Materials Ambient Map
  * @todo implement this
-*/
+ */
 void Material::setAmbientMap(const std::string& aMap, GLenum target)
 {
@@ -383,6 +373,6 @@
  * @brief Sets the Materials Specular Map
  * @param sMap the Name of the Image to Use
-   @todo implement this
-*/
+ * @todo implement this
+ */
 void Material::setSpecularMap(const std::string& sMap, GLenum target)
 {
@@ -395,5 +385,5 @@
  * @param bump the Name of the Image to Use
  * @todo implemet this
-*/
+ */
 void Material::setBump(const std::string& bump)
 {
Index: trunk/src/lib/graphics/importer/material.h
===================================================================
--- trunk/src/lib/graphics/importer/material.h	(revision 8370)
+++ trunk/src/lib/graphics/importer/material.h	(revision 8376)
@@ -17,4 +17,5 @@
 #include <vector>
 #include "texture.h"
+#include "color.h"
 
 // FORWARD DECLARATIONS //
@@ -35,4 +36,5 @@
     void setIllum (int illum);
     int getIllumModel() const { return this->illumModel; };
+
     void setDiffuse (float r, float g, float b);
     void setAmbient (float r, float g, float b);
@@ -42,5 +44,5 @@
     void setBlendFunc(GLenum sFactor, GLenum tFactor) { this->sFactor = sFactor; this->tFactor = tFactor; };
 
-    void getDiffuseColor(float& r, float& g, float& b) const { r = diffuse[0], g = diffuse[1], b = diffuse[2]; }
+    const Color& getDiffuseColor() const { return diffuse; };
 
     // MAPPING //
@@ -66,9 +68,8 @@
 
     int              illumModel;       //!< The IlluminationModel is either flat or smooth.
-    float            diffuse [4];      //!< The diffuse color of the Material.
-    float            ambient [4];      //!< The ambient color of the Material.
-    float            specular [4];     //!< The specular color of the Material.
+    Color            diffuse;          //!< The diffuse color of the Material. (also transparency.)
+    Color            ambient;          //!< The ambient color of the Material.
+    Color            specular;         //!< The specular color of the Material.
     float            shininess;        //!< The shininess of the Material.
-    float            transparency;     //!< The transperency of the Material.
     GLenum           sFactor;          //!< The Blending Factor for the Source.
     GLenum           tFactor;          //!< The Blending Factor for the Destination.
Index: trunk/src/lib/graphics/importer/texture.cc
===================================================================
--- trunk/src/lib/graphics/importer/texture.cc	(revision 8370)
+++ trunk/src/lib/graphics/importer/texture.cc	(revision 8376)
@@ -163,4 +163,16 @@
 Texture::~Texture()
 {}
+
+/**
+ * @brief copies the Data from texture to this texture.
+ * @param texture the Texture to copy into this one.
+ * @returns the Texture.
+ */
+Texture& Texture::operator=(const Texture& texture)
+{
+  this->data = texture.data;
+
+  return *this;
+}
 
 
Index: trunk/src/lib/graphics/importer/texture.h
===================================================================
--- trunk/src/lib/graphics/importer/texture.h	(revision 8370)
+++ trunk/src/lib/graphics/importer/texture.h	(revision 8376)
@@ -26,4 +26,6 @@
   Texture(const std::string& imageName, GLenum target = GL_TEXTURE_2D);
   Texture(SDL_Surface* surface, GLenum target = GL_TEXTURE_2D);
+
+  Texture& operator=(const Texture& texture);
 
   virtual ~Texture();
Index: trunk/src/lib/util/color.cc
===================================================================
--- trunk/src/lib/util/color.cc	(revision 8370)
+++ trunk/src/lib/util/color.cc	(revision 8376)
@@ -18,7 +18,4 @@
 #include "color.h"
 #include <stdio.h>
-
-using namespace std;
-
 
 /**
Index: trunk/src/lib/util/color.h
===================================================================
--- trunk/src/lib/util/color.h	(revision 8370)
+++ trunk/src/lib/util/color.h	(revision 8376)
@@ -16,16 +16,21 @@
 {
 public:
-  Color(float r, float g, float b, float a) :_r(r), _g(g), _b(b), _a(a) {};
-  Color(const Color& c) { _r = c._r; _g = c._g; _b = c._b; _a = c._a; };
+  Color(float r = 0.0f, float g = 0.0f, float b = 0.0f, float a = 0.0f) { _rgba[0] = r; _rgba[1] = g; _rgba[2] = b; _rgba[3] = a; };
+  Color(const Color& c) { _rgba[0] = c.r(); _rgba[1] = c.g(); _rgba[2] = c.b(); _rgba[3] = c.a(); }
 
-  float r() const { return _r; }
-  float& r() { return _r; }
-  float g() const { return _g; }
-  float& g() { return _g; }
-  float b() const { return _b; }
-  float& b() { return _b; }
-  float a() const { return _a; }
-  float& a() { return _a; }
+  float& operator[](unsigned int i) { return _rgba[i]; }
+  const float& operator[](unsigned int i) const { return _rgba[i]; }
 
+  float r() const { return _rgba[0]; }
+  float& r() { return _rgba[0]; }
+  float g() const { return _rgba[1]; }
+  float& g() { return _rgba[1]; }
+  float b() const { return _rgba[2]; }
+  float& b() { return _rgba[2]; }
+  float a() const { return _rgba[3]; }
+  float& a() { return _rgba[3]; }
+
+
+  /// STATIC TRANSFORMATIONS
 public:
   static Vector RGBtoHSV (const Vector& RGB);
@@ -38,9 +43,11 @@
   static float maxrgb(float r, float g, float b);
 
-  float       _r;     //!< Red Value.
+private:
+  float       _rgba[4]; //!< Color Values
+
+  /*  float       _r;     //!< Red Value.
   float       _g;     //!< Green Value.
   float       _b;     //!< Blue Value.
-  float       _a;     //!< Alpha Value.
-
+  float       _a;     //!< Alpha Value.*/
 };
 
