Index: trunk/src/world_entities/test_entity.cc
===================================================================
--- trunk/src/world_entities/test_entity.cc	(revision 5497)
+++ trunk/src/world_entities/test_entity.cc	(revision 5498)
@@ -72,7 +72,4 @@
 }
 
-void TestEntity::hit (WorldEntity* weapon, Vector* loc) {}
-
-
 void TestEntity::destroy () {}
 
Index: trunk/src/world_entities/test_entity.h
===================================================================
--- trunk/src/world_entities/test_entity.h	(revision 5497)
+++ trunk/src/world_entities/test_entity.h	(revision 5498)
@@ -22,5 +22,4 @@
 
   virtual void tick (float time);
-  virtual void hit (WorldEntity* weapon, Vector* loc);
   virtual void destroy ();
   virtual void collidesWith(WorldEntity* entity, const Vector& location);
Index: trunk/src/world_entities/weapons/projectile.h
===================================================================
--- trunk/src/world_entities/weapons/projectile.h	(revision 5497)
+++ trunk/src/world_entities/weapons/projectile.h	(revision 5498)
@@ -1,20 +1,9 @@
 /*!
  * @file projectile.h
-  *  a projectile, that is been shooted by a weapon
-
-    You can use this class to make some shoots, but this isn't the real idea. If you want to just test, if the
-    shooting funcions work, use the Projectile class. But if you want to implement your own shoots its
-    different:<br>
-    Make a new class and derive it from Projectile. To have a weapon work well, reimplement the functions
-    - void tick()
-    - void draw()
-    - void hit() (only if you have working collision detection)
-    When you have implemented these functions you have just to add the projectiles to your weapon. You ll want
-    to make this by looking into the function
-    - Weapon::fire()
-    there you just change the line:
-    Projectile* pj = new Projectile();    TO     Projectile* pj = new MyOwnProjectileClass();
-    and schwups it works... :)
-*/
+ * a projectile, that is been shooted by a weapon
+ *
+ * You can use this class to make some Projectiles/Bullets/Lasers/Rockets/etc.
+ *
+ */
 
 #ifndef _PROJECTILE_H
@@ -22,6 +11,4 @@
 
 #include "world_entity.h"
-
-class FastFactory;
 
 class Projectile : public WorldEntity
@@ -57,6 +44,6 @@
   protected:
     // energy
-    float                 energyMin;
-    float                 energyMax;
+    float                 energyMin;                 //!< The minimal Energy a Projectile needs to be emitted.
+    float                 energyMax;                 //!< The maximal Energy a Projectile can take, before being emitted.
     bool                  bChargeable;               //!< if the Projectile is Charegeable
 
Index: trunk/src/world_entities/weapons/test_gun.cc
===================================================================
--- trunk/src/world_entities/weapons/test_gun.cc	(revision 5497)
+++ trunk/src/world_entities/weapons/test_gun.cc	(revision 5498)
@@ -192,22 +192,9 @@
 }
 
-
-/**
- *  is called, when the weapon gets hit (=collide with something)
- * @param from which entity it is been hit
- * @param where it is been hit
-
-   this may not be used, since it would make the game relay complicated when one
-   can destroy the weapons of enemies or vice versa.
-*/
-void TestGun::hit (WorldEntity* entity, Vector* position)
-{}
-
-
 /**
  *  is called, when the weapon is destroyed
-
-   this is in conjunction with the hit function, so when a weapon is able to get
-   hit, it can also be destoryed.
+ *
+ * this is in conjunction with the hit function, so when a weapon is able to get
+ * hit, it can also be destoryed.
 */
 void TestGun::destroy ()
Index: trunk/src/world_entities/weapons/test_gun.h
===================================================================
--- trunk/src/world_entities/weapons/test_gun.h	(revision 5497)
+++ trunk/src/world_entities/weapons/test_gun.h	(revision 5498)
@@ -49,5 +49,4 @@
 
     virtual void fire();
-    virtual void hit (WorldEntity* weapon, Vector* loc);
     virtual void destroy();
 
Index: trunk/src/world_entities/weapons/weapon.cc
===================================================================
--- trunk/src/world_entities/weapons/weapon.cc	(revision 5497)
+++ trunk/src/world_entities/weapons/weapon.cc	(revision 5498)
@@ -65,38 +65,44 @@
 /**
  * initializes the Weapon with ALL default values
+ *
+ * This Sets the default values of the Weapon
  */
 void Weapon::init()
 {
-  this->currentState     = WS_INACTIVE;
-  this->requestedAction  = WA_NONE;
-  this->stateDuration    = 0.0;
-  for (int i = 0; i < WS_STATE_COUNT; i++)
+  this->currentState     = WS_INACTIVE;            //< Normaly the Weapon is Inactive
+  this->requestedAction  = WA_NONE;                //< No action is requested by default
+  this->stateDuration    = 0.0;                    //< All the States have zero duration
+  for (int i = 0; i < WS_STATE_COUNT; i++)         //< Every State has:
     {
-      this->times[i] = 0.0;
-      this->animation[i] = NULL;
+      this->times[i] = 0.0;                        //< An infinitesimal duration
+      this->animation[i] = NULL;                   //< No animation
     }
   for (int i = 0; i < WA_ACTION_COUNT; i++)
-    this->soundBuffers[i] = NULL;
-
-  this->soundSource = new SoundSource(this);
-  this->emissionPoint.setParent(this);
-
-  this->projectile = CL_NULL;
-  this->projectileFactory = NULL;
-
-  this->hideInactive = true;
-
-  this->minCharge = 1.0;
-  this->maxCharge = 1.0;
-
-  this->energyLoaded = .0;
-  this->energyLoadedMax = 5.0;
-  this->energy = .0;
-  this->energyMax = 10.0;
-  this->capability = WTYPE_ALL;
-
-  this->setWeaponManager(NULL);
-}
-
+    this->soundBuffers[i] = NULL;                  //< No Sounds
+
+  this->soundSource = new SoundSource(this);       //< Every Weapon has exacty one SoundSource.
+  this->emissionPoint.setParent(this);             //< One EmissionPoint, that is a PNode connected to the weapon. You can set this to the exitting point of the Projectiles
+
+  this->projectile = CL_NULL;                      //< No Projectile Class is Connected to this weapon
+  this->projectileFactory = NULL;                  //< No Factory generating Projectiles is selected.
+
+  this->hideInactive = true;                       //< The Weapon will be hidden if it is inactive (by default)
+
+  this->minCharge = 1.0;                           //< The minimum charge the Weapon can hold is 1 unit.
+  this->maxCharge = 1.0;                           //< The maximum charge is also one unit.
+
+  this->energyLoaded = .0;                         //< How much energy is loaded in the Gun. (Weapons must be charged befor usage)
+  this->energyLoadedMax = 5.0;                     //< Each Weapon has a Maximum energy that can be charged onto it
+  this->energy = .0;                               //< The secondary Buffer (before we have to reload)
+  this->energyMax = 10.0;                          //< How much energy can be carried
+  this->capability = WTYPE_ALL;                    //< The Weapon has all capabilities @see W_Capability.
+
+  this->setWeaponManager(NULL);                    //< By default the Weapon is free, and unhandled by a WeaponManager (this is good for small enemies).
+}
+
+/**
+ * loads the Parameters of a Weapon
+ * @param root the XML-Element to load the Weapons settings from
+ */
 void Weapon::loadParams(const TiXmlElement* root)
 {
@@ -121,5 +127,6 @@
  * @returns true, if it was sucessfull, false on error
  *
- * be aware, that this function does not create Factories, as this is job of Bullet-classes.
+ * be aware, that this function does not create Factories, as this is job of Projecitle/Bullet-classes.
+ * What it does, is telling the Weapon what Projectiles it can Emit.
  */
 void Weapon::setProjectileType(ClassID projectile)
@@ -166,5 +173,5 @@
 /**
  * prepares Projectiles of the Weapon
- * @param count how many Projectiles to create
+ * @param count how many Projectiles to create (they will be stored in the ProjectileFactory)
  */
 void Weapon::prepareProjectiles(unsigned int count)
@@ -178,5 +185,8 @@
 /**
  * resurects and returns a Projectile
- * @returns a Projectile on success, NULL on error (ProjectileFastFactory not Found)
+ * @returns a Projectile on success, NULL on error
+ *
+ * errors: 1. (ProjectileFastFactory not Found)
+ *         2. No more Projectiles availiable.
  */
 Projectile* Weapon::getProjectile()
@@ -186,5 +196,5 @@
   else
   {
-    PRINTF(2)("No projectile defined for Weapon %s(%s) cant return any\n", this->getName(), this->getClassName());
+    PRINTF(2)("No projectile defined for Weapon %s(%s) can't return any\n", this->getName(), this->getClassName());
     return NULL;
   }
@@ -307,7 +317,11 @@
 }
 
-//////////////////////
-// WEAPON INTERNALS //
-//////////////////////
+////////////////////////////////////////////////////////////
+// WEAPON INTERNALS                                       //
+// These are functions, that no other Weapon should over- //
+// write. No class has direct Access to them, as it is    //
+// quite a complicated process, handling a Weapon from    //
+// the outside                                            //
+////////////////////////////////////////////////////////////
 /**
  * executes an action, and with it starts a new State.
@@ -531,5 +545,5 @@
 /**
  * checks wether all the Weapons functions are valid, and if it is possible to go to action with it.
- *
+ * @todo IMPLEMENT the Weapons Check
  */
 bool Weapon::check() const
@@ -561,6 +575,7 @@
 }
 
-
-// static
+////////////////////////////////////////////////////////
+// static Definitions (transormators for readability) //
+////////////////////////////////////////////////////////
 /**
  * Converts a String into an Action.
Index: trunk/src/world_entities/world_entity.cc
===================================================================
--- trunk/src/world_entities/world_entity.cc	(revision 5497)
+++ trunk/src/world_entities/world_entity.cc	(revision 5498)
@@ -35,5 +35,8 @@
 /**
  *  Loads the WordEntity-specific Part of any derived Class
-*/
+ *
+ * @param root: Normally NULL, as the Derived Entities define a loadParams Function themeselves,
+ *              that can calls WorldEntities loadParams for itself.
+ */
 WorldEntity::WorldEntity(const TiXmlElement* root)
 {
@@ -54,14 +57,21 @@
 WorldEntity::~WorldEntity ()
 {
-  // if( collisioncluster != NULL) delete collisioncluster;
+  // Delete the model (unregister it with the ResourceManager)
   if (likely(this->model != NULL))
     ResourceManager::getInstance()->unload(this->model);
+  // Delete the obbTree
   if( this->obbTree != NULL)
     delete this->obbTree;
 }
 
+/**
+ * loads the WorldEntity Specific Parameters.
+ * @param root: the XML-Element to load the Data From
+ */
 void WorldEntity::loadParams(const TiXmlElement* root)
 {
+  // Do the PNode loading stuff
   static_cast<PNode*>(this)->loadParams(root);
+
   // Model Loading
   LoadParam<WorldEntity>(root, "model", this, &WorldEntity::loadModel)
@@ -77,4 +87,6 @@
  * @param fileName the name of the model to load
  * @param scaling the Scaling of the model
+ *
+ * @todo fix this, so it only has one loadModel-Function.
 */
 void WorldEntity::loadModelWithScale(const char* fileName, float scaling)
@@ -126,14 +138,6 @@
  * these attributes don't have to be set, only use them, if you need them
 */
-void WorldEntity::setCharacterAttributes(CharacterAttributes* charAttr)
-{}
-
-
-/**
- * gets the Character attributes of this worldentity
- * @returns character attributes
-*/
-CharacterAttributes* WorldEntity::getCharacterAttributes()
-{}
+//void WorldEntity::setCharacterAttributes(CharacterAttributes* charAttr)
+//{}
 
 
@@ -146,23 +150,20 @@
 void WorldEntity::collidesWith(WorldEntity* entity, const Vector& location)
 {
+  /**
+   * THIS IS A DEFAULT COLLISION-Effect.
+   * IF YOU WANT TO CREATE A SPECIFIC COLLISION ON EACH OBJECT
+   * USE::
+   * if (entity->isA(CL_WHAT_YOU_ARE_LOOKING_FOR)) { printf "dothings"; };
+   *
+   * You can always define a default Action.... don't be affraid just test it :)
+   */
 //  PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getClassName(), entity->getClassName(), location.x, location.y, location.z);
 }
 
-/**
- *  this function is called, when the ship is hit by a waepon
- * @param weapon: the laser/rocket/shoot that hits.
- * @param loc: place where it is hit
- *
- * calculate the damage depending
-*/
-void WorldEntity::hit(WorldEntity* weapon, Vector* loc) {}
-
-
-/**
- *  this is called immediately after the Entity has been constructed and initialized
- *
- * Put any initialisation code that requires knowledge of location (placement if the Entity is free) and owner of the entity here.
- * DO NOT place such code in the constructor, those variables are set AFTER the entity is constucted.
-*/
+
+/**
+ *  this is called immediately after the Entity has been constructed, initialized and then Spawned into the World
+ *
+ */
 void WorldEntity::postSpawn ()
 {
@@ -175,5 +176,7 @@
  * For free entities this means it left the Track boundaries. With bound entities it means its Location adresses a
  * place that is not in the world anymore. In both cases you might have to take extreme measures (a.k.a. call destroy).
-*/
+ *
+ * NOT YET IMPLEMENTED
+ */
 void WorldEntity::leftWorld ()
 {
@@ -190,4 +193,5 @@
 {
 }
+
 
 /**
@@ -216,5 +220,9 @@
 }
 
-
+/**
+ * DEBUG-DRAW OF THE BV-Tree.
+ * @param depth What depth to draw
+ * @param drawMode the mode to draw this entity under
+ */
 void WorldEntity::drawBVTree(unsigned int depth, int drawMode)
 {
Index: trunk/src/world_entities/world_entity.h
===================================================================
--- trunk/src/world_entities/world_entity.h	(revision 5497)
+++ trunk/src/world_entities/world_entity.h	(revision 5498)
@@ -11,9 +11,9 @@
 
 // FORWARD DECLARATION
-class CharacterAttributes;
-class SoundEngine;
 class SoundBuffer;
 class SoundSource;
 class BVTree;
+
+//class CharacterAttributes;
 
 
@@ -28,5 +28,6 @@
 
   /** @see loadModelWithScale(const char*, float) @param fileName the File to load */
-  void loadModel(const char* fileName) { this->loadModelWithScale(fileName, 1.0); };
+  void loadModel(const char* fileName) { this->loadModelWithScale(fileName, 1.0f); };
+
   void loadModelWithScale(const char* fileName, float scaling);
 
@@ -42,6 +43,6 @@
   bool isVisible() const { return this->bVisible; };
 
-  void setCharacterAttributes(CharacterAttributes* charAttr);
-  CharacterAttributes* getCharacterAttributes();
+//  void setCharacterAttributes(CharacterAttributes* charAttr);
+//  CharacterAttributes* getCharacterAttributes();
 
   /** @returns a reference to the obb tree of this worldentity */
@@ -51,5 +52,4 @@
   virtual void leftWorld ();
 
-  virtual void hit (WorldEntity* weapon, Vector* loc);
   virtual void collidesWith (WorldEntity* entity, const Vector& location);
 
@@ -63,6 +63,6 @@
  protected:
   Model*                  model;            //!< The model that should be loaded for this entity.
-  CharacterAttributes*    charAttr;         //!< the character attributes of a world_entity
   BVTree*                 obbTree;          //!< this is the obb tree reference needed for collision detection
+  //  CharacterAttributes*    charAttr;         //!< the character attributes of a world_entity
 
  private:
