Index: /branches/hud/src/util/hud.cc
===================================================================
--- /branches/hud/src/util/hud.cc	(revision 10684)
+++ /branches/hud/src/util/hud.cc	(revision 10685)
@@ -11,5 +11,5 @@
    ### File Specific:
    main-programmer: Benjamin Grauer
-   co-programmer: ...
+   co-programmer: Benjamin Knecht
 */
 
@@ -52,5 +52,5 @@
   this->energyWidget = NULL;
   this->shieldWidget = NULL;
-  this->armorWidget = NULL;
+  this->healthWidget = NULL;
   //this->leftRect = NULL;
   //this->rightRect = NULL;
@@ -60,12 +60,18 @@
   this->overlayPercentage = 40;
   this->overlayActive = false;
-  this->rightRect = new OrxGui::GLGuiImage();
-  this->leftRect = new OrxGui::GLGuiImage();
-
-  this->inputLine = new OrxGui::GLGuiInputLine();
-  this->inputLine->setParent2D(this);
+  //this->rightRect = new OrxGui::GLGuiImage();
+  //this->leftRect = new OrxGui::GLGuiImage();
+  this->topRect = new OrxGui::GLGuiImage();
+  this->bottomRect = new OrxGui::GLGuiImage();
+  this->middleRect = new OrxGui::GLGuiImage();
+
+  //this->inputLine = new OrxGui::GLGuiInputLine();
+  //this->inputLine->setParent2D(this);
   this->notifier = new OrxGui::GLGuiNotifier();
-  this->notifier->setParent2D(this);
-  notifier->setAbsCoor2D(100,100);
+  this->notifier->setParent2D(this->bottomRect);
+  notifier->setRelCoor2D(5,5);
+  
+  this->barSocket = new OrxGui::GLGuiImage();
+  this->barSocket->setParent2D(this->bottomRect);
 
   this->_radar = new OrxGui::GLGuiRadar();
@@ -90,4 +96,7 @@
   delete this->rightRect;
   delete this->leftRect;
+  delete this->topRect;
+  delete this->bottomRect;
+  delete this->middleRect;
   //if (this->shipValuesBox != NULL)
     //delete this->shipValuesBox;
@@ -135,8 +144,8 @@
   }
 
-  this->updateResolution();
-}
-
-void Hud::setShiledWidget(OrxGui::GLGuiWidget* widget)
+  this->updateResolution();  
+}
+
+void Hud::setShieldWidget(OrxGui::GLGuiWidget* widget)
 {
   /*
@@ -169,28 +178,67 @@
 }
 
-void Hud::setArmorWidget(OrxGui::GLGuiWidget* widget)
-{
-  /*
-  if (this->shipValuesBox == NULL)
-    this->createShipValuesBox();
-  */
-
-// decopple old widget
-  if (this->armorWidget != NULL)
-  {
-    this->armorWidget->hide();
-  }
-
-  this->armorWidget = widget;
-  if (this->armorWidget != NULL)
-  {
-    //this->armorWidget->shiftDir2D(270);
-    //this->shipValuesBox->pack(this->armorWidget);
-    //dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (this->armorWidget)->setStandardSettings();
-    this->armorWidget->setParent2D(this->leftRect);
-    dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (this->armorWidget)->setDisplayedImage("textures/gui/gui_health_icon.png");
-    this->armorWidget->show();
-    /*    this->armorWidget->frontMaterial().setDiffuseMap("hud_energy_bar.png");
-        this->armorWidget->frontMaterial().setBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);*/
+void Hud::setHealthWidget(OrxGui::GLGuiWidget* widget)
+{
+	if( this->playmode == FirstPerson )
+	{
+		this->healthWidget = new OrxGui::GLGuiBar();
+		this->healthWidget->setMaximum(widget->getBarWidget()->maximum());
+    	this->healthWidget->setValue(widget->getBarWidget()->value());
+    	this->healthWidget->setParent2D(this->barSocket);
+	}
+	else
+	{
+	  /*
+	  if (this->shipValuesBox == NULL)
+	    this->createShipValuesBox();
+	  */
+	
+	// decopple old widget
+	  if (this->healthWidget != NULL)
+	  {
+	    this->healthWidget->hide();
+	  }
+	
+	  this->healthWidget = widget;
+	  if (this->healthWidget != NULL)
+	  {
+	    //this->healthWidget->shiftDir2D(270);
+	    //this->shipValuesBox->pack(this->healthWidget);
+	    //dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (this->healthWidget)->setStandardSettings();
+	    this->healthWidget->setParent2D(this->leftRect);
+	    //dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (this->healthWidget)->setDisplayedImage("textures/gui/gui_health_icon.png");
+	    this->healthWidget->show();
+	    /*    this->healthWidget->frontMaterial().setDiffuseMap("hud_energy_bar.png");
+	        this->healthWidget->frontMaterial().setBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);*/
+	  }
+	}
+
+  this->updateResolution();
+}
+
+
+void Hud::setImplantWidget(OrxGui::GLGuiWidget* widget)
+{
+  //if (this->shipValuesBox == NULL)
+    //this->createShipValuesBox();
+
+  // decopple old widget
+  if (this->implantWidget != NULL)
+  {
+    this->implantWidget->hide();
+  }
+
+  this->implantWidget = widget;
+  if (this->implantWidget != NULL)
+  {
+    //this->energyWidget->shiftDir2D(270);
+    //dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (this->energyWidget)->setDisplayedName("Electronics");
+    //this->shipValuesBox->pack(this->energyWidget);
+    //dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (this->energyWidget)->setStandardSettings();
+    this->implantWidget->setParent2D(this->leftRect);
+    dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (this->implantWidget)->setDisplayedImage("textures/gui/gui_electronics_icon.png");
+    this->implantWidget->show();
+    /*    this->energyWidget->frontMaterial().setDiffuseMap("hud_energy_bar.png");
+        this->energyWidget->frontMaterial().setBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);*/
   }
 
@@ -341,6 +389,9 @@
 
   this->setSize2D(.2 * this->resX, this->resY);
-  this->notifier->setAbsCoor2D(0.7 * this->resX, 0.3 * this->resY);
-  this->notifier->setWidgetSize(0.25 * this->resX, 0.6 * this->resY);
+  if( this->playmode != FirstPerson )
+  {
+	  this->notifier->setAbsCoor2D(0.7 * this->resX, 0.3 * this->resY);
+	  this->notifier->setWidgetSize(0.25 * this->resX, 0.6 * this->resY);
+  }
 
   int overlayWidth = 0;
@@ -354,21 +405,35 @@
   this->rightRect->hide();
   this->leftRect->hide();
-
-  this->leftRect->setParent2D(this);
-  this->leftRect->setWidgetSize(float(overlayWidth), float(this->resY));
-  this->leftRect->setAbsCoor2D(0,0);
-  this->leftRect->setBackgroundTexture(Texture());
-  this->leftRect->setBackgroundColor(Color(0,0,0.7,0.2));
-  this->leftRect->setForegroundTexture(Texture());
-  this->leftRect->setForegroundColor(Color(0,0,0,0));
-
-  this->rightRect->setParent2D(this);
-  this->rightRect->setWidgetSize(float(overlayWidth), float(this->resY));
-  this->rightRect->setAbsCoor2D(this->resX - overlayWidth,0);
-  this->rightRect->setBackgroundTexture(Texture());
-  this->rightRect->setBackgroundColor(Color(0,0,0.7,0.2));
-  this->rightRect->setForegroundTexture(Texture());
-  this->rightRect->setForegroundColor(Color(0,0,0,0));
-
+  
+  if( this->playmode != FirstPerson )
+  {
+	  this->leftRect->setParent2D(this);
+	  this->leftRect->setWidgetSize(float(overlayWidth), float(this->resY));
+	  this->leftRect->setAbsCoor2D(0,0);
+	  this->leftRect->setBackgroundTexture(Texture());
+	  this->leftRect->setBackgroundColor(Color(0,0,0.7,0.2));
+	  this->leftRect->setForegroundTexture(Texture());
+	  this->leftRect->setForegroundColor(Color(0,0,0,0));
+	
+	  this->rightRect->setParent2D(this);
+	  this->rightRect->setWidgetSize(float(overlayWidth), float(this->resY));
+	  this->rightRect->setAbsCoor2D(this->resX - overlayWidth,0);
+	  this->rightRect->setBackgroundTexture(Texture());
+	  this->rightRect->setBackgroundColor(Color(0,0,0.7,0.2));
+	  this->rightRect->setForegroundTexture(Texture());
+	  this->rightRect->setForegroundColor(Color(0,0,0,0));
+  }
+  else
+  {
+	  this->bottomRect->setParent2D(this);
+	  this->bottomRect->setWidgetSize(float(this->resX), float(overlayWidth));
+	  this->bottomRect->setAbsCoor2D(0, this->resY - overlayWidth);
+	  this->topRect->setParent2D(this);
+	  this->topRect->setWidgetSize(float(this->resX), float(overlayWidth));
+	  this->topRect->setAbsCoor2D(0, 0);
+	  this->middleRect->setParent2D(this);
+	  this->middleRect->setWidgetSize(float(this->resY)/2, float(this->resY)/2);
+	  this->middleRect->setAbsCoor2D(float(this->resX - this->resY/2)/2, float(this->resY)/4);
+  }
 
   if (this->overlayActive == true)
@@ -382,5 +447,8 @@
   {
     PRINTF(4)("UPDATING RADAR\n");
-    this->_radar->setParent2D(this->leftRect);
+    if( this->playmode != FirstPerson )
+    	this->_radar->setParent2D(this->leftRect);
+    else
+    	this->_radar->setParent2D(this->topRect);
     if (radarCenterNode == NULL)
       this->_radar->setCenterNode(State::getPlayer()->getPlayable());
@@ -397,63 +465,75 @@
     
     int statWidgetsNumber = 0;
-    float expectedArmorSizeX = 0;
-    float expectedArmorSizeY = 0;
+    float expectedHealthSizeX = 0;
+    float expectedHealthSizeY = 0;
     float newSizeY = 0; float newSizeX = 0;
     float moduloWidth = 0;
 
-    if (this->armorWidget != NULL)
-    {
-      expectedArmorSizeX = 150;
-      expectedArmorSizeY = 50;
-      statWidgetsNumber++;
-    }
-
+	if( this->playmode != FirstPerson )
+	{
+	    if (this->healthWidget != NULL)
+	    {
+	      expectedHealthSizeX = 150;
+	      expectedHealthSizeY = 50;
+	      statWidgetsNumber++;
+	    }
+
+	    if (this->shieldWidget != NULL)
+	      statWidgetsNumber++;
+	    
+	    if (this->energyWidget != NULL)
+	      statWidgetsNumber++;
+	
+	    if (expectedHealthSizeY * statWidgetsNumber > overlayWidth)
+	    {
+	      newSizeY = overlayWidth / float(statWidgetsNumber);
+	      newSizeX = expectedHealthSizeX;
+	      PRINTF(0)("Statwidgets resized\n");
+	    }
+	    else
+	    {
+	      newSizeY = expectedHealthSizeY;
+	      newSizeX = expectedHealthSizeX;
+	      moduloWidth = int(overlayWidth) % int(expectedHealthSizeY * statWidgetsNumber);
+	    }
+	
+	    float posY = overlayWidth + newSizeX;
+	
+	    if (this->healthWidget != NULL)
+	    {
+	      this->healthWidget->setSize2D(newSizeX, newSizeY);
+	      this->healthWidget->setRelCoor2D((statWidgetsNumber - 1) * newSizeY + 3 * moduloWidth / (statWidgetsNumber + 1),posY);
+	    }
+	    if (this->shieldWidget != NULL)
+	    {
+	      this->shieldWidget->setSize2D(newSizeX, newSizeY);
+	      this->shieldWidget->setRelCoor2D((statWidgetsNumber - 2) * newSizeY + 2 *moduloWidth / (statWidgetsNumber + 1),posY);
+	    }
+	    if (this->energyWidget != NULL)
+	    {
+	      this->energyWidget->setSize2D(newSizeX, newSizeY);
+	      this->energyWidget->setRelCoor2D(moduloWidth / (statWidgetsNumber + 1),posY);
+	    }
+	}
+	else
+	{
+		this->barSocket->setParent2D(this->bottomRect);
+		this->barSocket->setWidgetSize( float(overlayWidth), float(overlayWidth));
+		this->barSocket->setRelCoor2D(0,this->resX - float(overlayWidth));
+		
+		this->healthWidget->setRelCoor2D(10,-20);
+	}
+	
+
+    /*
+    if (this->healthWidget != NULL)
+      this->healthWidget->setRelCoor2D(100,0.2*this->resY + this->healthWidget->getSizeX2D());
     if (this->shieldWidget != NULL)
-      statWidgetsNumber++;
-    
+      this->shieldWidget->setRelCoor2D(60,0.2*this->resY + this->healthWidget->getSizeX2D());
     if (this->energyWidget != NULL)
-      statWidgetsNumber++;
-
-    if (expectedArmorSizeY * statWidgetsNumber > overlayWidth)
-    {
-      newSizeY = overlayWidth / float(statWidgetsNumber);
-      newSizeX = expectedArmorSizeX;
-      PRINTF(0)("Statwidgets resized\n");
-    }
-    else
-    {
-      newSizeY = expectedArmorSizeY;
-      newSizeX = expectedArmorSizeX;
-      moduloWidth = int(overlayWidth) % int(expectedArmorSizeY * statWidgetsNumber);
-    }
-
-    float posY = overlayWidth + newSizeX;
-
-    if (this->armorWidget != NULL)
-    {
-      this->armorWidget->setSize2D(newSizeX, newSizeY);
-      this->armorWidget->setRelCoor2D((statWidgetsNumber - 1) * newSizeY + 3 * moduloWidth / (statWidgetsNumber + 1),posY);
-    }
-    if (this->shieldWidget != NULL)
-    {
-      this->shieldWidget->setSize2D(newSizeX, newSizeY);
-      this->shieldWidget->setRelCoor2D((statWidgetsNumber - 2) * newSizeY + 2 *moduloWidth / (statWidgetsNumber + 1),posY);
-    }
-    if (this->energyWidget != NULL)
-    {
-      this->energyWidget->setSize2D(newSizeX, newSizeY);
-      this->energyWidget->setRelCoor2D(moduloWidth / (statWidgetsNumber + 1),posY);
-    }
-
-    /*
-    if (this->armorWidget != NULL)
-      this->armorWidget->setRelCoor2D(100,0.2*this->resY + this->armorWidget->getSizeX2D());
-    if (this->shieldWidget != NULL)
-      this->shieldWidget->setRelCoor2D(60,0.2*this->resY + this->armorWidget->getSizeX2D());
-    if (this->energyWidget != NULL)
-      this->energyWidget->setRelCoor2D(20,0.2*this->resY + this->armorWidget->getSizeX2D());
+      this->energyWidget->setRelCoor2D(20,0.2*this->resY + this->healthWidget->getSizeX2D());
     */
-    //this->shieldWidget->setRelCoor2D(0.1*this->resX + this->armorWidget->getSizeX2D(),0);
-    //this->energyWidget->setRelCoor2D(0.1*this->resX + this->armorWidget->getSizeX2D() + this->shieldWidget->getSizeX2D(),0);
+    //this->shieldWidget->setRelCoor2D(0.1*this->resX + this->healthWidget->getSizeX2D(),0);
+    //this->energyWidget->setRelCoor2D(0.1*this->resX + this->healthWidget->getSizeX2D() + this->shieldWidget->getSizeX2D(),0);
   }
 
Index: /branches/hud/src/util/hud.h
===================================================================
--- /branches/hud/src/util/hud.h	(revision 10684)
+++ /branches/hud/src/util/hud.h	(revision 10685)
@@ -28,4 +28,15 @@
 
 public:
+
+  typedef enum {
+    Vertical         =  1,       //!< Vertical (seen from left or right/move in x-z)
+    Horizontal       =  2,       //!< Horizontal (seet from the top/move in x-y)
+    FromBehind       =  4,       //!< Seen from behind (move in z-y)
+    Full3D           =  8,       //!< Full featured 3D-mode. (move in all directions x-y-z)
+    FirstPerson      = 16,
+
+    PlaymodeCount    =  5,
+  } Playmode;
+  
   Hud();
   virtual ~Hud();
@@ -36,12 +47,16 @@
   void notifyUser(const std::string& message);
 
+  inline void setMode(Hud::Playmode playmode) {this->playmode = playmode;};
+  inline Hud::Playmode getMode() {return this->playmode;};
 
   void setBackGround();
   void setEnergyWidget(OrxGui::GLGuiWidget* widget);
-  void setShiledWidget(OrxGui::GLGuiWidget* widget);
-  void setArmorWidget(OrxGui::GLGuiWidget* widget);
+  void setShieldWidget(OrxGui::GLGuiWidget* widget);
+  void setHealthWidget(OrxGui::GLGuiWidget* widget);
+  void setImplantWidget(OrxGui::GLGuiWidget* widget);
   inline OrxGui::GLGuiWidget* getEnergyWidget() {return this->energyWidget;};
   inline OrxGui::GLGuiWidget* getShieldWidget() {return this->shieldWidget;};
-  inline OrxGui::GLGuiWidget* getArmorWidget() {return this->armorWidget;};
+  inline OrxGui::GLGuiWidget* getHealthWidget() {return this->healthWidget;};
+  inline OrxGui::GLGuiWidget* getImplantWidget() {return this->implantWidget;};
 
   void setWeaponManager(WeaponManager* weaponMan, WeaponManager* weaponManSec = NULL);
@@ -82,4 +97,6 @@
   unsigned int             resX;
   unsigned int             resY;
+  
+  Hud::Playmode				playmode; 
 
   float                    travelZoneWidth; //the percentage of the screen, the player has got for his movements. should always be a value between 0 and 1;
@@ -87,5 +104,6 @@
   OrxGui::GLGuiWidget*     energyWidget;
   OrxGui::GLGuiWidget*     shieldWidget;
-  OrxGui::GLGuiWidget*     armorWidget;
+  OrxGui::GLGuiWidget*     healthWidget;
+  OrxGui::GLGuiWidget*     implantWidget;
 
   OrxGui::GLGuiNotifier*   notifier;
@@ -96,4 +114,8 @@
   OrxGui::GLGuiWidget*     rightRect;
   OrxGui::GLGuiWidget*     leftRect;
+  OrxGui::GLGuiWidget*		topRect;
+  OrxGui::GLGuiWidget*		bottomRect;
+  OrxGui::GLGuiWidget*		middleRect;
+  OrxGui::GLGuiWidget*		barSocket;
   bool                     overlayActive;
   int                      overlayPercentage; //the percentage of the screen, the player has got for his movements. should always be a value between 0 and 1;
Index: /branches/hud/src/world_entities/creatures/fps_player.cc
===================================================================
--- /branches/hud/src/world_entities/creatures/fps_player.cc	(revision 10684)
+++ /branches/hud/src/world_entities/creatures/fps_player.cc	(revision 10685)
@@ -20,4 +20,5 @@
 #include "state.h"
 #include "tools/camera.h"
+#include "player.h"
 
 #include "src/lib/util/loading/factory.h"
@@ -52,4 +53,5 @@
 			    ->addMethod("getAbsCoorY", Executor0ret<PNode, lua_State*, float>(&PNode::getAbsCoorY))
 			    ->addMethod("getAbsCoorZ", Executor0ret<PNode, lua_State*, float>(&PNode::getAbsCoorZ))
+			    ->addMethod("displayHUDText", Executor1<FPSPlayer, lua_State*, const std::string&>(&FPSPlayer::displayHUDText))
                        );
 
@@ -352,5 +354,4 @@
   {
     this->getWeaponManager().fire();
-    PRINTF(0)("Crosshair at position: %f, %f, %f\n", this->getWeaponManager().getFixedTarget()->getAbsCoor().x, this->getWeaponManager().getFixedTarget()->getAbsCoor().y, this->getWeaponManager().getFixedTarget()->getAbsCoor().z);
   }
 
@@ -604,2 +605,6 @@
 }
 
+void FPSPlayer::displayHUDText( const std::string& message )
+{
+	State::getPlayer()->hud().notifyUser(message);
+}
Index: /branches/hud/src/world_entities/creatures/fps_player.h
===================================================================
--- /branches/hud/src/world_entities/creatures/fps_player.h	(revision 10684)
+++ /branches/hud/src/world_entities/creatures/fps_player.h	(revision 10685)
@@ -36,4 +36,6 @@
     virtual void tick(float time);
     virtual void draw() const;
+    
+    void displayHUDText( const std::string& message );
 
 
Index: /branches/hud/src/world_entities/player.cc
===================================================================
--- /branches/hud/src/world_entities/player.cc	(revision 10684)
+++ /branches/hud/src/world_entities/player.cc	(revision 10685)
@@ -19,4 +19,5 @@
 
 #include "event_handler.h"
+#include "fps_player.h"
 
 #include "state.h"
@@ -74,9 +75,19 @@
     PRINTF(4)("Enter new Playable\n");
     this->playable = playable;
-    this->_hud.setArmorWidget(this->playable->getHealthWidget());
-    if (dynamic_cast<SpaceShip*>(this->playable) != 0)
+    
+    if( playable->isA(FpsPlayer::staticClassID()) )
+    {
+    	this->_hud.setMod(Hud::Playmode FirstPerson);
+    	this->_hud.setHealthWidget(this->playable->getHealthWidget());
+    }
+    else
+    {
+    	this->_hud.setMode(Hud::Playmode Full3D);
+    	this->_hud.setHealthWidget(this->playable->getHealthWidget());
+    }
+    /*if (dynamic_cast<SpaceShip*>(this->playable) != 0)
       this->_hud.setWeaponManager(&this->playable->getWeaponManager(), &dynamic_cast<SpaceShip*>(this->playable)->getWeaponManagerSecondary());
     else
-      this->_hud.setWeaponManager(&this->playable->getWeaponManager());
+      this->_hud.setWeaponManager(&this->playable->getWeaponManager());*/
 
     this->playable->setPlayer(this);
Index: /branches/hud/src/world_entities/world_entity.cc
===================================================================
--- /branches/hud/src/world_entities/world_entity.cc	(revision 10684)
+++ /branches/hud/src/world_entities/world_entity.cc	(revision 10685)
@@ -813,4 +813,24 @@
 }
 
+/**
+ * @brief creates the ImplantWidget
+ *
+ * since not all entities need an ImpantWidget, it is only created on request.
+ */
+void WorldEntity::createImplantWidget()
+{
+  if (this->implantWidget == NULL)
+  {
+    this->implantWidget = new OrxGui::GLGuiEnergyWidgetVertical();
+    //this->impantWidget->setDisplayedName("Implant");
+    //this->impantWidget->setSize2D(100,20);
+    //this->impantWidget->setAbsCoor2D(100,200);
+
+    //this->updateImplantWidget();
+  }
+  else
+    PRINTF(3)("Allready created the ImlpantWidget for %s::%s\n", this->getClassCName(), this->getCName());
+}
+
 void WorldEntity::increaseHealthMax(float increaseHealth)
 {
@@ -824,4 +844,11 @@
   this->createHealthWidget();
   return this->healthWidget;
+}
+
+
+OrxGui::GLGuiWidget* WorldEntity::getImplantWidget()
+{
+  this->createImplantWidget();
+  return this->implantWidget;
 }
 
Index: /branches/hud/src/world_entities/world_entity.h
===================================================================
--- /branches/hud/src/world_entities/world_entity.h	(revision 10684)
+++ /branches/hud/src/world_entities/world_entity.h	(revision 10685)
@@ -161,4 +161,5 @@
   void increaseHealthMax(float increaseHealth);
   OrxGui::GLGuiWidget* getHealthWidget();
+  OrxGui::GLGuiWidget* getImplantWidget();
   bool hasHealthWidget() const { return this->healthWidget != NULL; };
 
@@ -187,4 +188,5 @@
   void setHealthMax(float healthMax);
   void createHealthWidget();
+  void createImplantWidget();
     //  CharacterAttributes*    charAttr;         //!< the character attributes of a world_entity
 
@@ -206,9 +208,11 @@
 
 private:
-  /// TODO maybe we will move the following three entries and the corresponding functions to Playable AND NPC
+  /// TODO maybe we will move the following eight entries and the corresponding functions to Playable AND NPC
   float                   damage;             //!< the damage dealt to other objects by colliding.
   float                   health;             //!< The Energy of this Entity, if the Entity has any energy at all.
-  float                   healthMax;          //!< The Maximal energy this entity can take.
+  float                   healthMax;          //!< The Maximal energy this entity can take. 
+  float						implantEnergy;		//!< energy of implants
   OrxGui::GLGuiEnergyWidgetVertical* healthWidget;    //!< The Slider (if wanted).
+  OrxGui::GLGuiEnergyWidgetVertical* implantWidget; 
 
   std::vector<Model*>     models;             //!< The model that should be loaded for this entity.
@@ -247,4 +251,6 @@
   float                   healthMax_write;
   int                     healthMax_handle;
+  
+
 
 
