Index: trunk/src/world_entities/projectiles/bomb.cc
===================================================================
--- trunk/src/world_entities/projectiles/bomb.cc	(revision 7083)
+++ trunk/src/world_entities/projectiles/bomb.cc	(revision 7084)
@@ -79,4 +79,6 @@
   this->detonationMaterial = new Material();
   this->detonationMaterial->setDiffuse(1, 0, 0);
+
+  this->loadExplosionSound("sound/explosions/explosion_7_far.wav");
   //   this->detonationMaterial->setTransparency(.1);
   /**
Index: trunk/src/world_entities/projectiles/projectile.cc
===================================================================
--- trunk/src/world_entities/projectiles/projectile.cc	(revision 7083)
+++ trunk/src/world_entities/projectiles/projectile.cc	(revision 7084)
@@ -22,4 +22,5 @@
 #include "world_entities/weapons/weapon.h"
 #include "model.h"
+#include "resource_manager.h"
 
 using namespace std;
@@ -37,4 +38,7 @@
   this->target = NULL;
   this->removeNode();
+
+  this->explosionBuffer = NULL;
+  this->engineBuffer = NULL;
 }
 
@@ -45,4 +49,8 @@
 Projectile::~Projectile ()
 {
+  if (this->explosionBuffer != NULL)
+    ResourceManager::getInstance()->unload(this->explosionBuffer);
+  if (this->engineBuffer != NULL)
+    ResourceManager::getInstance()->unload(this->engineBuffer);
   /*
      do not delete the test projectModel, since it is pnode
@@ -50,4 +58,48 @@
   */
   //delete this->projectileModel;
+}
+
+
+void Projectile::loadExplosionSound(const char* explosionSound)
+{
+  if (this->explosionBuffer != NULL)
+    ResourceManager::getInstance()->unload(this->explosionBuffer);
+
+  else if (explosionSound != NULL)
+  {
+    this->explosionBuffer = (SoundBuffer*)ResourceManager::getInstance()->load(explosionSound, WAV);
+    if (this->explosionBuffer != NULL)
+    {
+      PRINTF(4)("Loaded sound %s to Pickup: %s.\n", explosionSound, this->getName());
+    }
+    else
+    {
+      PRINTF(2)("Failed to load sound %s to explosion %s.\n.", explosionSound, this->getName());
+    }
+  }
+  else
+    this->explosionBuffer = NULL;
+}
+
+
+void Projectile::loadEngineSound(const char* engineSound)
+{
+  if (this->engineBuffer != NULL)
+    ResourceManager::getInstance()->unload(this->engineBuffer);
+
+  else if (engineSound != NULL)
+  {
+    this->engineBuffer = (SoundBuffer*)ResourceManager::getInstance()->load(engineSound, WAV);
+    if (this->engineBuffer != NULL)
+    {
+      PRINTF(4)("Loaded sound %s to Pickup: %s.\n", engineSound, this->getName());
+    }
+    else
+    {
+      PRINTF(2)("Failed to load sound %s to engine %s.\n.", engineSound, this->getName());
+    }
+  }
+  else
+    this->engineBuffer = NULL;
 }
 
@@ -114,4 +166,7 @@
 */
 void Projectile::destroy ()
-{}
+{
+  if (this->explosionBuffer != NULL)
+    this->soundSource.play(this->explosionBuffer);
+}
 
Index: trunk/src/world_entities/projectiles/projectile.h
===================================================================
--- trunk/src/world_entities/projectiles/projectile.h	(revision 7083)
+++ trunk/src/world_entities/projectiles/projectile.h	(revision 7084)
@@ -12,4 +12,7 @@
 #include "world_entity.h"
 
+#include "sound_source.h"
+#include "sound_buffer.h"
+
 class Projectile : public WorldEntity
 {
@@ -22,5 +25,6 @@
     void setLifeSpan(float lifeSpan);
 
-
+    void loadExplosionSound(const char* explosionSound);
+    void loadEngineSound(const char* engineSound);
     void setMinEnergy(float energyMin);
     /** @returns the minimal charched energy */
@@ -58,4 +62,9 @@
 
     PNode*                target;                    //!< A target for guided Weapons.
+
+    SoundSource          soundSource;
+  private:
+    SoundBuffer*          explosionBuffer;
+    SoundBuffer*          engineBuffer;
 };
 
Index: trunk/src/world_entities/weapons/test_gun.cc
===================================================================
--- trunk/src/world_entities/weapons/test_gun.cc	(revision 7083)
+++ trunk/src/world_entities/weapons/test_gun.cc	(revision 7084)
@@ -97,5 +97,6 @@
 {
   this->init();
-  this->loadParams(root);
+  if (root != NULL)
+    this->loadParams(root);
 }
 
