Index: code/branches/particles2/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- code/branches/particles2/src/modules/weapons/projectiles/Rocket.cc	(revision 6081)
+++ code/branches/particles2/src/modules/weapons/projectiles/Rocket.cc	(revision 6082)
@@ -55,7 +55,8 @@
         this->setVelocity(0,0,-100);
         this->model_ = new Model(this);
-        this->model_->setMeshSource("can.mesh");
+        this->model_->setMeshSource("rocket_test.mesh");
         this->attach(this->model_);
         this->lifetime_ = 100;
+        this->bDestroy_ = false;
         
         if (GameMode::isMaster())
@@ -74,5 +75,5 @@
         
         this->camPosition_ = new CameraPosition(this);
-        this->camPosition_->setPosition(0,0,0);
+        this->camPosition_->setPosition(0,10,40);
         this->attach( this->camPosition_ );
         this->addCameraPosition( this->camPosition_ );
@@ -90,6 +91,6 @@
             this->model_->destroy();
             
-            if (GameMode::isMaster() && this->owner_)
-                this->owner_->getPlayer()->startControl(this->originalControllableEntity_);
+            if (GameMode::isMaster() && this->player_)
+                this->player_->stopTemporaryControl();
             this->camPosition_->destroy();
         }
@@ -109,8 +110,8 @@
     {
         this->owner_ = owner;
-            
+        
         this->originalControllableEntity_ = this->owner_->getPlayer()->getControllableEntity();
-        this->originalControllableEntity_->setDestroyWhenPlayerLeft( false );
-        this->owner_->getPlayer()->startControl(this);
+        this->player_ = this->owner_->getPlayer();
+        this->owner_->getPlayer()->startTemporaryControl(this);
     }
 
@@ -126,17 +127,9 @@
         
         this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_);
-        this->setVelocity( (this->getOrientation()*WorldEntity::FRONT)*100 );
+        this->setVelocity( this->getOrientation()*WorldEntity::FRONT*this->getVelocity().length() );
         this->localAngularVelocity_ = 0;
-//         this->localLinearAcceleration_.setX(this->localLinearAcceleration_.x() * getMass() * this->auxilaryThrust_);
-//         this->localLinearAcceleration_.setY(this->localLinearAcceleration_.y() * getMass() * this->auxilaryThrust_);
-//         if (this->localLinearAcceleration_.z() > 0)
-//             this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() * getMass() * this->auxilaryThrust_);
-//         else
-//             this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() * getMass() * this->primaryThrust_);
-//         this->physicalBody_->applyCentralForce(physicalBody_->getWorldTransform().getBasis() * this->localLinearAcceleration_);
-//         this->localLinearAcceleration_.setValue(0, 0, 0);
-//     
-//         this->localAngularAcceleration_ *= this->getLocalInertia() * this->rotationThrust_;
-//         this->physicalBody_->applyTorque(physicalBody_->getWorldTransform().getBasis() * this->localAngularAcceleration_);
+        
+        if( this->bDestroy_ )
+            this->destroy();
     }
     
@@ -147,5 +140,5 @@
             if (otherObject == this->owner_)
                 return false;
-
+            
             this->bDestroy_ = true;
 
@@ -177,4 +170,5 @@
             if (victim)
                 victim->damage(dmg, this->owner_);
+//             this->destroy();
         }
         return false;
@@ -195,5 +189,5 @@
     void Rocket::rotateYaw(const Vector2& value)
     {
-        this->localAngularVelocity_.y = value.x;
+        this->localAngularVelocity_.y += value.x;
     }
 
@@ -206,5 +200,5 @@
     void Rocket::rotatePitch(const Vector2& value)
     {
-        this->localAngularVelocity_.x = value.x;
+        this->localAngularVelocity_.x += value.x;
     }
 
@@ -217,5 +211,5 @@
     void Rocket::rotateRoll(const Vector2& value)
     {
-        this->localAngularVelocity_.z = value.x;
+        this->localAngularVelocity_.z += value.x;
     }
     
Index: code/branches/particles2/src/modules/weapons/projectiles/Rocket.h
===================================================================
--- code/branches/particles2/src/modules/weapons/projectiles/Rocket.h	(revision 6081)
+++ code/branches/particles2/src/modules/weapons/projectiles/Rocket.h	(revision 6082)
@@ -110,5 +110,5 @@
             inline float getDamage() const
                 { return this->damage_; }
-            virtual void fire(unsigned int firemode) {}
+            virtual void fire(unsigned int firemode) { this->destroy(); }
             
         private:
@@ -122,4 +122,5 @@
             CameraPosition* camPosition_;
             ConeCollisionShape* collisionShape_;
+            PlayerInfo* player_;
             Timer destroyTimer_;
             float lifetime_;
