Index: /code/branches/pickup/data/levels/includes/pickups.oxi
===================================================================
--- /code/branches/pickup/data/levels/includes/pickups.oxi	(revision 8553)
+++ /code/branches/pickup/data/levels/includes/pickups.oxi	(revision 8554)
@@ -202,5 +202,5 @@
 <PickupRepresentation
     pickupName = "Drone Pickup"
-    pickupDescription = "Adds a Drone to the Players Spaceship"
+    pickupDescription = "Adds a Drone to the Player's Spaceship"
     spawnerTemplate = "dronepickupRepresentation"
 >
@@ -213,6 +213,6 @@
 
 <PickupRepresentation
-    pickupName = "Shrink Pickup"
-    pickupDescription = "Adds a Drone to the Players Spaceship"
+    pickupName = "Small Shrink"
+    pickupDescription = "Shrinks the Ship by a bit"
     spawnerTemplate = "smallshrinkpickupRepresentation"
 >
@@ -222,2 +222,22 @@
 </PickupRepresentation>
 
+<PickupRepresentation
+    pickupName = "Medium Shrink"
+    pickupDescription = "Shrinks the Ship"
+    spawnerTemplate = "mediumshrinkpickupRepresentation"
+>
+    <pickup>
+        <ShrinkPickup template=mediumshrinkpickup />
+    </pickup>
+</PickupRepresentation>
+
+<PickupRepresentation
+    pickupName = "Huge Shrink"
+    pickupDescription = "Shrinks the Ship considerably"
+    spawnerTemplate = "hugeshrinkpickupRepresentation"
+>
+    <pickup>
+        <ShrinkPickup template=hugeshrinkpickup />
+    </pickup>
+</PickupRepresentation>
+
Index: /code/branches/pickup/data/levels/pickups.oxw
===================================================================
--- /code/branches/pickup/data/levels/pickups.oxw	(revision 8553)
+++ /code/branches/pickup/data/levels/pickups.oxw	(revision 8554)
@@ -190,9 +190,30 @@
     </PickupSpawner>
 
-    <PickupSpawner position="-30,-30,-30" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
+    <PickupSpawner position="-25,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
       <pickup>
         <ShrinkPickup template ="smallshrinkpickup"/>
       </pickup>
     </PickupSpawner>
+
+    <PickupSpawner position="0,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
+      <pickup>
+        <ShrinkPickup template ="mediumshrinkpickup"/>
+      </pickup>
+    </PickupSpawner>
+
+    <PickupSpawner position="25,-50,-125" respawnTime="60" triggerDistance="20" maxSpawnedItems="5">
+      <pickup>
+        <ShrinkPickup template ="hugeshrinkpickup"/>
+      </pickup>
+    </PickupSpawner>
+
+    <!--StaticEntity position="0,-200,0" direction="0,-1,0" collisionType=static mass=500 friction=0.01 >
+      <attached>
+        <Model position="0,0,0" mesh="cube.mesh" scale3D="10,10,10" />
+      </attached>
+      <collisionShapes>
+        <BoxCollisionShape position="0,0,0" halfExtents="10,10,10" />
+      </collisionShapes>
+  </StaticEntity-->
 
   </Scene>
Index: /code/branches/pickup/data/levels/templates/pickupRepresentationTemplates.oxt
===================================================================
--- /code/branches/pickup/data/levels/templates/pickupRepresentationTemplates.oxt	(revision 8553)
+++ /code/branches/pickup/data/levels/templates/pickupRepresentationTemplates.oxt	(revision 8554)
@@ -403,5 +403,5 @@
                     <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Sphere2" scale=0.1>
                         <attached>
-                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=0.9 />
+                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=0.4 />
                         </attached>
                     </Billboard>
@@ -414,5 +414,6 @@
 <Template name=smallshrinkpickup>
   <InvisiblePickup 
-    duration = 20.0
+    duration = 10.0
+    shrinkFactor = 2.5
     activaionType = "immediate"
     durationType = "continuous"
@@ -425,7 +426,7 @@
             <StaticEntity>
                 <attached>
-                    <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Sphere2" scale=0.2>
-                        <attached>
-                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=2.0 />
+                    <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Sphere2" scale=0.1>
+                        <attached>
+                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=0.7 />
                         </attached>
                     </Billboard>
@@ -438,5 +439,6 @@
 <Template name=mediumshrinkpickup>
   <InvisiblePickup 
-    duration = 20.0
+    duration = 30.0
+    shrinkFactor = 5.0
     activaionType = "immediate"
     durationType = "continuous"
@@ -449,7 +451,7 @@
             <StaticEntity>
                 <attached>
-                    <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Sphere2" scale=0.3>
-                        <attached>
-                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=3.0 />
+                    <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Sphere2" scale=0.1>
+                        <attached>
+                            <Billboard position="0,0,0" colour="1.0,0.55,1.0" material="Shrink" scale=1.0 />
                         </attached>
                     </Billboard>
@@ -462,5 +464,6 @@
 <Template name=hugeshrinkpickup>
   <InvisiblePickup 
-    duration = 20.0
+    duration = 60.0
+    shrinkFactor = 10.0
     activaionType = "immediate"
     durationType = "continuous"
Index: /code/branches/pickup/src/libraries/util/SubString.h
===================================================================
--- /code/branches/pickup/src/libraries/util/SubString.h	(revision 8553)
+++ /code/branches/pickup/src/libraries/util/SubString.h	(revision 8554)
@@ -169,5 +169,5 @@
         /// Returns the number of tokens stored in this SubString
         inline unsigned int size() const { return this->tokens_.size(); }
-        /// Returns the i'th token from the subset of strings @param index The index of the requested doken
+        /// Returns the i'th token from the subset of strings @param index The index of the requested token
         inline const std::string& operator[](unsigned int index) const { return this->tokens_[index]; }
         /// Returns the i'th token from the subset of strings @param index The index of the requested token
Index: /code/branches/pickup/src/modules/objects/collisionshapes/BoxCollisionShape.h
===================================================================
--- /code/branches/pickup/src/modules/objects/collisionshapes/BoxCollisionShape.h	(revision 8553)
+++ /code/branches/pickup/src/modules/objects/collisionshapes/BoxCollisionShape.h	(revision 8554)
@@ -51,4 +51,5 @@
         Reto Grieder
 
+    @see btBoxShape
     @ingroup Collisionshapes
     */
Index: /code/branches/pickup/src/modules/objects/collisionshapes/ConeCollisionShape.h
===================================================================
--- /code/branches/pickup/src/modules/objects/collisionshapes/ConeCollisionShape.h	(revision 8553)
+++ /code/branches/pickup/src/modules/objects/collisionshapes/ConeCollisionShape.h	(revision 8554)
@@ -49,5 +49,6 @@
         Reto Grieder
 
-    @ingroup Collisionshapes.
+    @see btConeShape
+    @ingroup Collisionshapes
     */
     class _ObjectsExport ConeCollisionShape : public CollisionShape
Index: /code/branches/pickup/src/modules/objects/collisionshapes/PlaneCollisionShape.h
===================================================================
--- /code/branches/pickup/src/modules/objects/collisionshapes/PlaneCollisionShape.h	(revision 8553)
+++ /code/branches/pickup/src/modules/objects/collisionshapes/PlaneCollisionShape.h	(revision 8554)
@@ -51,4 +51,5 @@
         Martin Stypinski
 
+    @see btStaticPlaneShape
     @ingroup Collisionshapes
     */
Index: /code/branches/pickup/src/modules/objects/collisionshapes/SphereCollisionShape.h
===================================================================
--- /code/branches/pickup/src/modules/objects/collisionshapes/SphereCollisionShape.h	(revision 8553)
+++ /code/branches/pickup/src/modules/objects/collisionshapes/SphereCollisionShape.h	(revision 8554)
@@ -49,4 +49,5 @@
         Reto Grieder
 
+    @see btSphereShape
     @ingroup Collisionshapes
     */
Index: /code/branches/pickup/src/modules/pickup/PickupPrereqs.h
===================================================================
--- /code/branches/pickup/src/modules/pickup/PickupPrereqs.h	(revision 8553)
+++ /code/branches/pickup/src/modules/pickup/PickupPrereqs.h	(revision 8554)
@@ -82,5 +82,5 @@
     class SpeedPickup;
     class ShieldPickup;
-	class ShrinkPickup;
+    class ShrinkPickup;
 
 }
Index: /code/branches/pickup/src/modules/pickup/items/ShrinkPickup.cc
===================================================================
--- /code/branches/pickup/src/modules/pickup/items/ShrinkPickup.cc	(revision 8553)
+++ /code/branches/pickup/src/modules/pickup/items/ShrinkPickup.cc	(revision 8554)
@@ -51,5 +51,5 @@
     CreateFactory(ShrinkPickup);
 
-		/**
+        /**
     @brief
         Constructor: Initializes the Pickup.
@@ -60,4 +60,7 @@
 
         this->initialize();
+        this->shrinkFactor_ = 5.0;
+        this->shrinkSpeed_ = 5.0;
+        this->duration_ = 5.0;
         isActive_ = false;
         isTerminating_ = false;
@@ -92,5 +95,5 @@
    /**
     @brief
-        Method for creating a HealthPickup object through XML.
+        Method for creating a ShrinkhPickup object through XML.
     */
     void ShrinkPickup::XMLPort(Element& xmlelement, orxonox::XMLPort::Mode mode)
@@ -143,5 +146,5 @@
     }
 
-		/**
+    /**
     @brief
         Prepares for shrinking (collecting several informations).
@@ -153,11 +156,11 @@
         if(this->isUsed())
         {
-            this->pawn = this->carrierToPawnHelper();
-            if(pawn == NULL) // If the PickupCarrier is no Pawn, then this pickup is useless and therefore is destroyed.
+            this->pawn_ = this->carrierToPawnHelper();
+            if(pawn_ == NULL) // If the PickupCarrier is no Pawn, then this pickup is useless and therefore is destroyed.
                 this->Pickupable::destroy();
 
             //Collect scaling information.
-            defaultScale_ = this->pawn->getScale3D();
-            defaultMass_ = this->pawn->getMass();
+            defaultScale_ = this->pawn_->getScale3D();
+            defaultMass_ = this->pawn_->getMass();
 
             smallScale_ = defaultScale_ / shrinkFactor_;
@@ -167,12 +170,12 @@
             actualMass_ = defaultMass_;
 
-            cameraPositions_ = this->pawn->getCameraPositions();
+            cameraPositions_ = this->pawn_->getCameraPositions();
             size_ = cameraPositions_.size();
             isActive_ = true;    //start shrinking now.
-            durationTimer.setTimer(duration_, false, createExecutor(createFunctor(&ShrinkPickup::terminate, this)));    //Set timer for termination.
+            durationTimer_.setTimer(duration_, false, createExecutor(createFunctor(&ShrinkPickup::terminate, this)));    //Set timer for termination.
         }
     }
 
-	/**
+    /**
     @brief
         Updates the scales of the ship.
@@ -189,10 +192,10 @@
             actualMass_ /= factor_;
 
-            this->pawn->setScale3D(actualScale_);
-            this->pawn->setMass(actualMass_);
+            this->pawn_->setScale3D(actualScale_);
+            this->pawn_->setMass(actualMass_);
 
             for(int index = 0; index < size_; index++)
             {
-                CameraPosition* cameraPos_ = this->pawn->getCameraPosition(index);
+                CameraPosition* cameraPos_ = this->pawn_->getCameraPosition(index);
                 if(cameraPos_ == NULL)
                 continue;
@@ -209,10 +212,10 @@
             actualMass_ *= factor_;
 
-            this->pawn->setScale3D(actualScale_);
-            this->pawn->setMass(actualMass_);
+            this->pawn_->setScale3D(actualScale_);
+            this->pawn_->setMass(actualMass_);
 
             for(int index = 0; index < size_; index++)
             {
-                CameraPosition* cameraPos_ = this->pawn->getCameraPosition(index);
+                CameraPosition* cameraPos_ = this->pawn_->getCameraPosition(index);
                 if(cameraPos_ == NULL)
                 continue;
@@ -225,5 +228,5 @@
     }
 
-	/**
+    /**
     @brief
         Initializes the termination.
@@ -244,5 +247,5 @@
     }
 
-	/**
+    /**
     @brief
         Creates a duplicate of the input OrxonoxClass.
Index: /code/branches/pickup/src/modules/pickup/items/ShrinkPickup.h
===================================================================
--- /code/branches/pickup/src/modules/pickup/items/ShrinkPickup.h	(revision 8553)
+++ /code/branches/pickup/src/modules/pickup/items/ShrinkPickup.h	(revision 8554)
@@ -48,5 +48,5 @@
 
     /**
-	@author
+    @author
         Sandro Sgier
 
@@ -101,5 +101,5 @@
         private:
             void initialize(void);
-            float duration_;			//!< determines how long the pickup will be active
+            float duration_;            //!< determines how long the pickup will be active
             float shrinkFactor_;        //shrink factor of the space ship
             float shrinkSpeed_;         //speed of shrinking
@@ -114,8 +114,8 @@
             float defaultMass_;
             float actualMass_;
-            float smallMass_;			
+            float smallMass_;            
             Pawn* carrierToPawnHelper(void);
-            Pawn* pawn;
-            Timer durationTimer;
+            Pawn* pawn_;
+            Timer durationTimer_;
             void terminate(void);
     };
Index: /code/branches/pickup/src/orxonox/collisionshapes/CompoundCollisionShape.cc
===================================================================
--- /code/branches/pickup/src/orxonox/collisionshapes/CompoundCollisionShape.cc	(revision 8553)
+++ /code/branches/pickup/src/orxonox/collisionshapes/CompoundCollisionShape.cc	(revision 8554)
@@ -261,5 +261,31 @@
         CollisionShape::changedScale();
 
-        // Iterate through all attached CollisionShapes.
+        std::vector<CollisionShape*> shapes;
+        // Iterate through all attached CollisionShapes and add them to the list of shapes.
+        for(std::map<CollisionShape*, btCollisionShape*>::iterator it = this->attachedShapes_.begin(); it != this->attachedShapes_.end(); it++)
+            shapes.push_back(it->first);
+
+        // Delete the compound shape and create a new one.
+        delete this->compoundShape_;
+        this->compoundShape_ = new btCompoundShape();
+
+        // Re-attach all CollisionShapes.
+        for(std::vector<CollisionShape*>::iterator it = shapes.begin(); it != shapes.end(); it++)
+        {
+            CollisionShape* shape = *it;
+            shape->setScale3D(this->getScale3D());
+            // Only actually attach if we didn't pick a CompoundCollisionShape with no content.
+            if (shape->getCollisionShape())
+            {
+                btTransform transf(multi_cast<btQuaternion>(shape->getOrientation()), multi_cast<btVector3>(shape->getPosition()));
+                // Add the btCollisionShape of the CollisionShape as a child shape to the btCompoundShape of the CompoundCollisionShape.
+                this->compoundShape_->addChildShape(transf, shape->getCollisionShape());
+            }
+        }
+
+        this->updatePublicShape();
+
+        /*
+        // Iterate through all attached CollisionShapes
         for(std::map<CollisionShape*, btCollisionShape*>::const_iterator it = this->attachedShapes_.begin(); it != this->attachedShapes_.end(); it++)
         {
@@ -269,5 +295,5 @@
         }
 
-        this->updatePublicShape();
+        this->updatePublicShape();*/
     }
 }
Index: /code/branches/pickup/src/orxonox/collisionshapes/CompoundCollisionShape.h
===================================================================
--- /code/branches/pickup/src/orxonox/collisionshapes/CompoundCollisionShape.h	(revision 8553)
+++ /code/branches/pickup/src/orxonox/collisionshapes/CompoundCollisionShape.h	(revision 8554)
@@ -52,4 +52,5 @@
         Reto Grieder
 
+    @see btCompoundShape
     @ingroup Collisionshapes
     */
Index: /code/branches/pickup/src/orxonox/worldentities/WorldEntity.cc
===================================================================
--- /code/branches/pickup/src/orxonox/worldentities/WorldEntity.cc	(revision 8553)
+++ /code/branches/pickup/src/orxonox/worldentities/WorldEntity.cc	(revision 8554)
@@ -643,8 +643,8 @@
     {
         // If physics is enabled scale the attached CollisionShape.
-        if (false && this->hasPhysics() && this->collisionShape_ != NULL)
+        /*if (this->hasPhysics() && this->collisionShape_ != NULL)
         {
             this->collisionShape_->setScale3D(scale);
-        }
+        }*/
 
         this->node_->setScale(scale);
