Index: orxonox/trunk/src/Makefile.am
===================================================================
--- orxonox/trunk/src/Makefile.am	(revision 4502)
+++ orxonox/trunk/src/Makefile.am	(revision 4504)
@@ -1,5 +1,4 @@
 MAINSRCDIR=.
 include $(MAINSRCDIR)/defs/include_paths.am
-
 
 
@@ -67,4 +66,5 @@
 		 lib/graphics/importer/material.cc \
 		 lib/graphics/importer/texture.cc \
+		 lib/sound/sound_engine.cc \
 		 lib/lang/base_object.cc \
 		 lib/util/ini_parser.cc \
@@ -116,4 +116,5 @@
 		 defs/sdlincl.h \
 		 defs/glincl.h \
+		 defs/alincl.h \
 		 defs/comincl.h \
 		 defs/confincl.h \
@@ -137,4 +138,5 @@
 		 lib/graphics/importer/material.h \
 		 lib/graphics/importer/texture.h \
+		 lib/sound/sound_engine.h \
 		 lib/lang/base_object.h \
 		 lib/util/ini_parser.h \
Index: orxonox/trunk/src/Makefile.in
===================================================================
--- orxonox/trunk/src/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/Makefile.in	(revision 4504)
@@ -69,7 +69,7 @@
 	text_engine.$(OBJEXT) array.$(OBJEXT) objModel.$(OBJEXT) \
 	md2Model.$(OBJEXT) primitive_model.$(OBJEXT) model.$(OBJEXT) \
-	material.$(OBJEXT) texture.$(OBJEXT) base_object.$(OBJEXT) \
-	ini_parser.$(OBJEXT) substring.$(OBJEXT) vector.$(OBJEXT) \
-	curve.$(OBJEXT) glmenu_imagescreen.$(OBJEXT) \
+	material.$(OBJEXT) texture.$(OBJEXT) sound_engine.$(OBJEXT) \
+	base_object.$(OBJEXT) ini_parser.$(OBJEXT) substring.$(OBJEXT) \
+	vector.$(OBJEXT) curve.$(OBJEXT) glmenu_imagescreen.$(OBJEXT) \
 	benchmark.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
@@ -102,5 +102,6 @@
 @AMDEP_TRUE@	./$(DEPDIR)/resource_manager.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/satellite.Po ./$(DEPDIR)/skybox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/skysphere.Po ./$(DEPDIR)/state.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/skysphere.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/sound_engine.Po ./$(DEPDIR)/state.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/story_entity.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/substring.Po ./$(DEPDIR)/terrain.Po \
@@ -296,4 +297,5 @@
 		 lib/graphics/importer/material.cc \
 		 lib/graphics/importer/texture.cc \
+		 lib/sound/sound_engine.cc \
 		 lib/lang/base_object.cc \
 		 lib/util/ini_parser.cc \
@@ -345,4 +347,5 @@
 		 defs/sdlincl.h \
 		 defs/glincl.h \
+		 defs/alincl.h \
 		 defs/comincl.h \
 		 defs/confincl.h \
@@ -366,4 +369,5 @@
 		 lib/graphics/importer/material.h \
 		 lib/graphics/importer/texture.h \
+		 lib/sound/sound_engine.h \
 		 lib/lang/base_object.h \
 		 lib/util/ini_parser.h \
@@ -402,7 +406,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/Makefile
+	  $(AUTOMAKE) --gnu  src/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -491,4 +495,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skybox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skysphere.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound_engine.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/story_entity.Po@am__quote@
@@ -1210,4 +1215,20 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o texture.obj `if test -f 'lib/graphics/importer/texture.cc'; then $(CYGPATH_W) 'lib/graphics/importer/texture.cc'; else $(CYGPATH_W) '$(srcdir)/lib/graphics/importer/texture.cc'; fi`
+
+sound_engine.o: lib/sound/sound_engine.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sound_engine.o -MD -MP -MF "$(DEPDIR)/sound_engine.Tpo" -c -o sound_engine.o `test -f 'lib/sound/sound_engine.cc' || echo '$(srcdir)/'`lib/sound/sound_engine.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/sound_engine.Tpo" "$(DEPDIR)/sound_engine.Po"; else rm -f "$(DEPDIR)/sound_engine.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/sound/sound_engine.cc' object='sound_engine.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/sound_engine.Po' tmpdepfile='$(DEPDIR)/sound_engine.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sound_engine.o `test -f 'lib/sound/sound_engine.cc' || echo '$(srcdir)/'`lib/sound/sound_engine.cc
+
+sound_engine.obj: lib/sound/sound_engine.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT sound_engine.obj -MD -MP -MF "$(DEPDIR)/sound_engine.Tpo" -c -o sound_engine.obj `if test -f 'lib/sound/sound_engine.cc'; then $(CYGPATH_W) 'lib/sound/sound_engine.cc'; else $(CYGPATH_W) '$(srcdir)/lib/sound/sound_engine.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/sound_engine.Tpo" "$(DEPDIR)/sound_engine.Po"; else rm -f "$(DEPDIR)/sound_engine.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/sound/sound_engine.cc' object='sound_engine.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/sound_engine.Po' tmpdepfile='$(DEPDIR)/sound_engine.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o sound_engine.obj `if test -f 'lib/sound/sound_engine.cc'; then $(CYGPATH_W) 'lib/sound/sound_engine.cc'; else $(CYGPATH_W) '$(srcdir)/lib/sound/sound_engine.cc'; fi`
 
 base_object.o: lib/lang/base_object.cc
@@ -1445,5 +1466,5 @@
 
 distdir: $(DISTFILES)
-	$(mkdir_p) $(distdir)/defs $(distdir)/glmenu $(distdir)/lib/coord $(distdir)/lib/graphics $(distdir)/lib/graphics/importer $(distdir)/lib/lang $(distdir)/lib/math $(distdir)/lib/util $(distdir)/proto $(distdir)/story_entities $(distdir)/subprojects $(distdir)/util $(distdir)/util/animation $(distdir)/util/loading $(distdir)/util/track $(distdir)/world_entities
+	$(mkdir_p) $(distdir)/defs $(distdir)/glmenu $(distdir)/lib/coord $(distdir)/lib/graphics $(distdir)/lib/graphics/importer $(distdir)/lib/lang $(distdir)/lib/math $(distdir)/lib/sound $(distdir)/lib/util $(distdir)/proto $(distdir)/story_entities $(distdir)/subprojects $(distdir)/util $(distdir)/util/animation $(distdir)/util/loading $(distdir)/util/track $(distdir)/world_entities
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
Index: orxonox/trunk/src/defs/alincl.h
===================================================================
--- orxonox/trunk/src/defs/alincl.h	(revision 4504)
+++ orxonox/trunk/src/defs/alincl.h	(revision 4504)
@@ -0,0 +1,21 @@
+/*!
+  \file alincl.h
+  \brief This file includes al Headers.
+  
+  no Class is defined here, but the openAL Headers
+*/
+
+#ifndef _ALINCL_H
+#define _ALINCL_H
+
+#ifndef __APPLE__
+#include <AL/al.h>
+#include <AL/alu.h>
+#include <AL/alut.h>
+#else
+#include <OpenAL/al.h>
+#include <OpenAL/alu.h>
+#include <OpenAL/alut.h>
+#endif
+
+#endif /* _ALINCL_H */
Index: orxonox/trunk/src/defs/include_paths.am
===================================================================
--- orxonox/trunk/src/defs/include_paths.am	(revision 4502)
+++ orxonox/trunk/src/defs/include_paths.am	(revision 4504)
@@ -16,4 +16,5 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/physics
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/physics/fields
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/sound
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/defs
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/font
Index: orxonox/trunk/src/lib/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/lib/Makefile.in	(revision 4504)
@@ -186,7 +186,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/lib/event/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/event/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/lib/event/Makefile.in	(revision 4504)
@@ -212,7 +212,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/event/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/event/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/event/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/event/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/lib/graphics/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/graphics/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/lib/graphics/Makefile.in	(revision 4504)
@@ -177,7 +177,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/graphics/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/graphics/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/graphics/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/lib/graphics/importer/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/lib/graphics/importer/Makefile.in	(revision 4504)
@@ -181,7 +181,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/graphics/importer/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/graphics/importer/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/graphics/importer/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/graphics/importer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/lib/gui/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/gui/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/lib/gui/Makefile.in	(revision 4504)
@@ -241,7 +241,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/gui/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/gui/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/gui/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/lib/particles/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/particles/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/lib/particles/Makefile.in	(revision 4504)
@@ -209,7 +209,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/particles/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/particles/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/particles/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/particles/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/lib/physics/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/physics/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/lib/physics/Makefile.in	(revision 4504)
@@ -217,7 +217,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/physics/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/physics/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/physics/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/physics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/lib/sound/sound_engine.cc
===================================================================
--- orxonox/trunk/src/lib/sound/sound_engine.cc	(revision 4504)
+++ orxonox/trunk/src/lib/sound/sound_engine.cc	(revision 4504)
@@ -0,0 +1,467 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+
+   code has been taken from http://www.devmaster.net/articles.php?catID=6
+   The code has been applied to our needs, and many things have been changed.
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
+
+#include "sound_engine.h"
+
+//#include <AL/alc.h> // maybe later
+
+#include "p_node.h"
+#include "list.h"
+#include "resource_manager.h"
+#include "debug.h"
+
+using namespace std;
+
+
+//////////////////
+/* SOUND-BUFFER */
+//////////////////
+/**
+   \brief Creates a Soundbuffer out of an inputfile
+   \param fileName The name of the File
+*/
+SoundBuffer::SoundBuffer(const char* fileName)
+{
+  SoundEngine::getInstance()->addBuffer(this);
+
+  ALenum format;
+  ALvoid* data;
+  ALsizei freq;
+  
+  ALenum result;
+
+  // generate a Buffer
+  alGenBuffers(1, &this->bufferID);
+  if ((result = alGetError()) != AL_NO_ERROR)
+    SoundEngine::PrintALErrorString(result);
+
+  // read in the wav data
+  alutLoadWAVFile((ALbyte*)fileName, &format, &data, &this->size, &freq, &this->loop);
+  if ((result = alGetError()) != AL_NO_ERROR)
+    SoundEngine::PrintALErrorString(result);
+  
+  // send the loaded wav data to the buffer
+  alBufferData(this->bufferID, format, data, this->size, freq);
+  if ((result = alGetError()) != AL_NO_ERROR)
+    SoundEngine::PrintALErrorString(result);
+
+  // remove the wav data (redundant)
+  alutUnloadWAV(format, data, this->size, freq);
+  if ((result = alGetError()) != AL_NO_ERROR)
+    SoundEngine::PrintALErrorString(result);
+}
+
+SoundBuffer::~SoundBuffer(void)
+{
+  SoundEngine::getInstance()->removeBuffer(this);
+  alDeleteBuffers(1, &this->bufferID);
+}
+
+//////////////////
+/* SOUND-SOURCE */
+//////////////////
+/**
+   \brief creates a SoundSource at position sourceNode with the SoundBuffer buffer
+*/
+SoundSource::SoundSource(SoundBuffer* buffer, PNode* sourceNode)
+{
+  ALenum result;
+
+  // adding the Source to the SourcesList of the SoundEngine
+  SoundEngine::getInstance()->addSource(this);
+
+  this->buffer = buffer;
+  this->sourceNode = sourceNode;
+
+  alGenSources(1, &this->sourceID);
+  if ((result = alGetError()) != AL_NO_ERROR)
+    SoundEngine::PrintALErrorString(result);
+  alSourcei (this->sourceID, AL_BUFFER,   this->buffer->getID());
+  alSourcef (this->sourceID, AL_PITCH,    1.0      );
+  alSourcef (this->sourceID, AL_GAIN,     1.0      );
+  alSourcei (sourceID, AL_LOOPING,  AL_FALSE     );
+}
+
+/**
+   \brief deletes a SoundSource
+*/
+SoundSource::~SoundSource(void)
+{
+  SoundEngine::getInstance()->removeSource(this);
+  alDeleteSources(1, &this->sourceID);
+}
+
+
+/**
+   \brief Plays back a SoundSource
+*/
+void SoundSource::play()
+{
+  alSourcePlay(this->sourceID);
+}
+
+/**
+   \brief Stops playback of a SoundSource
+*/
+void SoundSource::stop()
+{
+  alSourceStop(this->sourceID);
+}
+
+/**
+   \brief Pauses Playback of a SoundSource
+*/
+void SoundSource::pause()
+{
+  alSourcePause(this->sourceID);
+}
+
+/**
+   \brief Rewinds Playback of a SoundSource
+*/
+void SoundSource::rewind()
+{
+  alSourceRewind(this->sourceID);
+}
+
+/**
+   \brief sets the RolloffFactor of the Sound emitted from the SoundSource
+   \param rolloffFactor The Factor described
+
+   this tells openAL how fast the Sounds decay outward from the Source
+*/
+void SoundSource::setRolloffFactor(ALfloat rolloffFactor)
+{
+  alSourcef(this->sourceID, AL_ROLLOFF_FACTOR, rolloffFactor);
+}
+
+
+
+//////////////////
+/* SOUND-ENGINE */
+//////////////////
+/**
+   \brief standard constructor
+*/
+SoundEngine::SoundEngine () 
+{
+  this->setClassName ("SoundEngine");
+  
+  this->listener = NULL;
+  this->bufferList = new tList<SoundBuffer>;
+  this->sourceList = new tList<SoundSource>;
+}
+
+/**
+   \brief the singleton reference to this class
+*/
+SoundEngine* SoundEngine::singletonRef = NULL;
+
+/**
+   \returns a Pointer to this Class
+*/
+SoundEngine* SoundEngine::getInstance(void)
+{
+  if (!SoundEngine::singletonRef)
+    SoundEngine::singletonRef = new SoundEngine();
+  return SoundEngine::singletonRef;
+}
+
+/**
+   \brief standard deconstructor
+
+*/
+SoundEngine::~SoundEngine () 
+{
+  SoundEngine::singletonRef = NULL;
+
+  // deleting all the SoundSources
+  tIterator<SoundSource>* sourceIterator = this->sourceList->getIterator();
+  SoundSource* enumSource = sourceIterator->nextElement();
+  while (enumSource)
+    {
+      delete enumSource;
+      enumSource = sourceIterator->nextElement();
+    }
+  delete sourceIterator;
+
+  // deleting all the SoundBuffers
+  tIterator<SoundBuffer>* bufferIterator = this->bufferList->getIterator();
+  SoundBuffer* enumBuffer = bufferIterator->nextElement();
+  while (enumBuffer)
+    {
+      ResourceManager::getInstance()->unload(enumBuffer);
+      enumBuffer = bufferIterator->nextElement();
+    }
+  delete bufferIterator;
+
+  // removing openAL from AudioResource
+  alutExit();
+}
+
+/**
+   \brief creates a new SoundSource.
+   \param fileName The Name to load the SoundBuffer from
+   \param sourceNode The sourceNode to bind this SoundSource to.
+   \returns The newly created SoundSource
+
+   acctualy this is nothing more than a wrapper around the ResourceManager.
+*/
+SoundSource* SoundEngine::createSource(const char* fileName, PNode* sourceNode)
+{
+  return new SoundSource((SoundBuffer*)ResourceManager::getInstance()->load(fileName, WAV, RP_LEVEL), sourceNode);
+}
+
+
+/**
+   \brief sets The listener (normaly the Camera)
+*/
+void SoundEngine::setListener(PNode* listener)
+{
+  this->listener = listener;
+}
+
+/**
+   \brief Sets the doppler values of openAL
+   \param dopplerFactor the extent of the doppler-effect
+   \param the Speed the sound travels
+*/
+void SoundEngine::setDopplerValues(ALfloat dopplerFactor, ALfloat dopplerVelocity)
+{
+  alDopplerFactor(dopplerFactor);
+  alDopplerVelocity(dopplerVelocity);
+}
+
+
+/**
+   \brief adds a SoundBuffer to the bufferList of the SoundEngine
+   \param buffer The buffer to add to the bufferList
+*/
+void SoundEngine::addBuffer(SoundBuffer* buffer)
+{
+  this->bufferList->add(buffer);
+}
+
+/**
+   \brief removes a SoundBuffer from the bufferList of the SoundEngine
+   \param buffer The buffer to delete from the SoundEngine
+*/
+void SoundEngine::removeBuffer(SoundBuffer* buffer)
+{
+  // look if there are any sources that have the buffer still loaded
+  tIterator<SoundSource>* sourceIterator = this->sourceList->getIterator();
+  SoundSource* enumSource = sourceIterator->nextElement();
+  while (enumSource)
+    {
+      if (buffer == enumSource->getBuffer())
+	delete enumSource;
+      enumSource = sourceIterator->nextElement();
+    }
+  delete sourceIterator;
+
+  // remove the Buffer
+  this->bufferList->remove(buffer);
+}
+
+/**
+   \brief adds a SoundSource to the sourceList of the SoundEngine
+   \param source The source to add to the sourceList
+*/
+void SoundEngine::addSource(SoundSource* source)
+{
+  this->sourceList->add(source);
+}
+
+/**
+   \brief removes a SoundSource from the sourceList of the SoundEngine
+   \param source The source to delete from the SoundEngine
+*/
+void SoundEngine::removeSource(SoundSource* source)
+{
+  this->sourceList->remove(source);
+}
+
+
+/**
+   \brief updates all The positions, Directions and Velocities of all Sounds
+*/
+void SoundEngine::update(void)
+{
+
+  // updating the Listeners Position
+  if (likely(this->listener != NULL))
+    {
+      alListener3f(AL_POSITION,
+		   this->listener->getAbsCoor().x,
+		   this->listener->getAbsCoor().y,
+		   this->listener->getAbsCoor().z);
+      alListener3f(AL_VELOCITY,
+		   this->listener->getVelocity().x,
+		   this->listener->getVelocity().y,
+		   this->listener->getVelocity().z);
+      Vector absDirV = this->listener->getAbsDirV();
+      ALfloat orientation [6] = {1,0,0, absDirV.x, absDirV.y, absDirV.z};
+      alListenerfv(AL_ORIENTATION, orientation);
+    }
+  else
+    PRINTF(2)("no listener defined\n");
+
+  // updating all the Sources positions
+  tIterator<SoundSource>* iterator = this->sourceList->getIterator();
+  SoundSource* enumSource = iterator->nextElement();
+  while (enumSource)
+    {
+      if (likely(enumSource->getNode()!=NULL))
+      {
+	alSource3f(enumSource->getID(), AL_POSITION,
+		   enumSource->getNode()->getAbsCoor().x,
+		   enumSource->getNode()->getAbsCoor().y,
+		   enumSource->getNode()->getAbsCoor().z);
+	alSource3f(enumSource->getID(), AL_VELOCITY,
+		   enumSource->getNode()->getVelocity().x,
+		   enumSource->getNode()->getVelocity().y,
+		   enumSource->getNode()->getVelocity().z);
+      }
+      enumSource = iterator->nextElement();
+    }
+  delete iterator;
+}
+
+/**
+   \brief Removes all the Buffers that are not anymore needed by any Sources
+*/
+void SoundEngine::flushUnusedBuffers(void)
+{
+  tIterator<SoundBuffer>* bufferIterator = this->bufferList->getIterator();
+  SoundBuffer* enumBuffer = bufferIterator->nextElement();
+  while (enumBuffer)
+    {
+      tIterator<SoundSource>* sourceIterator = this->sourceList->getIterator();
+      SoundSource* enumSource = sourceIterator->nextElement();
+      while (enumSource)
+	{
+	  if (enumBuffer == enumSource->getBuffer())
+	    break;
+	  enumSource = sourceIterator->nextElement();
+	}
+      delete sourceIterator;
+      if (enumSource == NULL)
+	ResourceManager::getInstance()->unload(enumBuffer);
+      enumBuffer = bufferIterator->nextElement();
+    }
+  delete bufferIterator;
+}
+
+/**
+   \brief SourceEngine::flushAllBuffers
+*/
+void SoundEngine::flushAllBuffers(void)
+{
+    tIterator<SoundBuffer>* bufferIterator = this->bufferList->getIterator();
+  SoundBuffer* enumBuffer = bufferIterator->nextElement();
+  while (enumBuffer)
+    {
+      ResourceManager::getInstance()->unload(enumBuffer, RP_LEVEL);
+      enumBuffer = bufferIterator->nextElement();
+    }
+  delete bufferIterator;
+}
+
+/**
+   \brief initializes Audio in general
+*/
+bool SoundEngine::initAudio(void)
+{
+  ALenum result;
+
+  PRINTF(3)("Initialisazing openAL sound library\n");
+
+  alutInit(NULL, 0);
+  if ((result = alGetError()) != AL_NO_ERROR)
+    SoundEngine::PrintALErrorString(result);
+
+  this->setDopplerValues(SOUND_DOPPLER_FACTOR, SOUND_DOPPLER_VELOCITY);
+}
+
+/**
+   \brief Transforms AL-errors into something readable
+   \param err The error found
+*/
+void SoundEngine::PrintALErrorString(ALenum err)
+{
+  switch(err)
+    {
+    case AL_NO_ERROR:
+      PRINTF(4)("AL_NO_ERROR\n");
+      break;
+      
+    case AL_INVALID_NAME:
+      PRINTF(2)("AL_INVALID_NAME\n");
+      break;
+
+    case AL_INVALID_ENUM:
+      PRINTF(2)("AL_INVALID_ENUM\n");
+      break;
+
+    case AL_INVALID_VALUE:
+      PRINTF(2)("AL_INVALID_VALUE\n");
+      break;
+
+    case AL_INVALID_OPERATION:
+      PRINTF(2)("AL_INVALID_OPERATION\n");
+      break;
+
+    case AL_OUT_OF_MEMORY:
+      PRINTF(2)("AL_OUT_OF_MEMORY\n");
+      break;
+    };
+}
+
+/*
+void SoundEngine::PrintALCErrorString(ALenum err)
+{
+  switch(err)
+    {
+    case ALC_NO_ERROR:
+      PRINTF(4)("AL_NO_ERROR\n");
+      break;
+
+    case ALC_INVALID_DEVICE:
+      PRINTF(2)("ALC_INVALID_DEVICE\n");
+      break;
+
+    case ALC_INVALID_CONTEXT:
+      PRINTF(2)("ALC_INVALID_CONTEXT\n");
+      break;
+
+    case ALC_INVALID_ENUM:
+      PRINTF(2)("ALC_INVALID_ENUM\n");
+      break;
+
+    case ALC_INVALID_VALUE:
+      PRINTF(2)("ALC_INVALID_VALUE\n");
+      break;
+
+    case ALC_OUT_OF_MEMORY:
+      PRINTF(2)("ALC_OUT_OF_MEMORY\n");
+      break;
+    };
+}
+*/
Index: orxonox/trunk/src/lib/sound/sound_engine.h
===================================================================
--- orxonox/trunk/src/lib/sound/sound_engine.h	(revision 4504)
+++ orxonox/trunk/src/lib/sound/sound_engine.h	(revision 4504)
@@ -0,0 +1,110 @@
+/*! 
+    \file sound_engine.h
+    \brief Definition of the SoundEngine singleton Class  
+*/
+
+#ifndef _SOUND_ENGINE_H
+#define _SOUND_ENGINE_H
+
+#include "base_object.h"
+#include "alincl.h"
+
+
+#define SOUND_DOPPLER_FACTOR     0.001          //!< A factor for the audible doppler effect
+#define SOUND_DOPPLER_VELOCITY   5000000     //!< A factor for the TravelSpeed of sound
+
+// FORWARD DEFINITION
+class PNode;
+template<class T> class tList;
+
+
+//! A class that represents a datastructure to play Sounds.
+class SoundBuffer
+{
+ public:
+  SoundBuffer(const char* fileName);
+  ~SoundBuffer(void);
+
+  /** \returns the ID of the buffer */
+  inline ALuint getID(void) { return this->bufferID; }
+
+ private:
+  ALuint bufferID;              //!< The address of the Buffer.
+
+  ALsizei size;                 //!< The size of the Buffer.
+  ALboolean loop;               //!< loop information.
+};
+
+//! A class that represents a SoundSource
+class SoundSource
+{
+ public:
+  SoundSource(SoundBuffer* buffer, PNode* sourceNode = NULL);
+  ~SoundSource(void);
+
+  // user interaction
+  void play();
+  void stop();
+  void pause();
+  void rewind();
+
+  // development functions
+  /** \returns The ID of this Source */
+  inline ALuint getID(void) const { return this->sourceID; }
+  /** \returns the SoundBuffer of this Source */
+  inline SoundBuffer* getBuffer(void) const { return this->buffer; } 
+  /** \returns the SourceNode of this Source */
+  inline PNode* getNode(void) const { return this->sourceNode;}
+
+  void setRolloffFactor(ALfloat rolloffFactor);
+
+ private:
+  ALuint sourceID;              //!< The ID of the Source
+  SoundBuffer* buffer;          //!< The buffer to play in this source.
+  PNode* sourceNode;            //!< The SourceNode represente the position/velocity... of this source.
+};
+
+
+
+//! A class that handles audio via the openAudioLibrary
+class SoundEngine : public BaseObject {
+
+ public:
+  static SoundEngine* getInstance(void);
+  virtual ~SoundEngine(void);
+
+  SoundSource* createSource(const char* fileName, PNode* sourceNode = NULL);
+
+  void setListener(PNode* listener);
+  void setDopplerValues(ALfloat dopplerFactor, ALfloat dopplerVelocity);
+
+
+  void addBuffer(SoundBuffer* buffer);
+  void removeBuffer(SoundBuffer* buffer);
+  void addSource(SoundSource* source);
+  void removeSource(SoundSource* source);
+
+  void update(void);
+
+  // administrative
+  void flushUnusedBuffers(void);
+  void flushAllBuffers(void);
+  bool initAudio(void);
+
+  // error handling:
+  static void PrintALErrorString(ALenum err);
+  //  static void PrintALCErrorString(ALenum err);
+
+
+ private:
+  SoundEngine(void);
+  static SoundEngine* singletonRef;
+
+
+  PNode* listener;                 //!< The listener of the Scene
+  tList<SoundBuffer>* bufferList;  //!< A list of buffers
+  tList<SoundSource>* sourceList;  //!< A list for all the sources in the scene.
+
+};
+
+#endif /* _SOUND_ENGINE_H */
Index: orxonox/trunk/src/lib/tinyxml/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/tinyxml/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/lib/tinyxml/Makefile.in	(revision 4504)
@@ -204,7 +204,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/tinyxml/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/tinyxml/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/tinyxml/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/tinyxml/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/orxonox.cc
===================================================================
--- orxonox/trunk/src/orxonox.cc	(revision 4502)
+++ orxonox/trunk/src/orxonox.cc	(revision 4504)
@@ -33,4 +33,5 @@
 #include "game_loader.h"
 #include "graphics_engine.h"
+#include "sound_engine.h"
 #include "resource_manager.h"
 #include "object_manager.h"
@@ -72,4 +73,6 @@
   Orxonox::singletonRef = NULL;
   delete GraphicsEngine::getInstance(); // deleting the Graphics
+  delete TextEngine::getInstance();
+  delete SoundEngine::getInstance();
   delete ResourceManager::getInstance(); // deletes the Resource Manager
   delete ObjectManager::getInstance();
@@ -121,7 +124,7 @@
   if( initVideo() == -1) return -1;
   if( initSound() == -1) return -1;
-  printf("> Initializing input\n");
+  PRINT(3)("> Initializing input\n");
   if( initInput() == -1) return -1;
-  printf("> Initializing networking\n");
+  PRINT(3)("> Initializing networking\n");
   if( initNetworking () == -1) return -1;
   //printf("> Initializing world\n");
@@ -149,7 +152,7 @@
 int Orxonox::initSound() 
 {
-  printf("> Initializing sound\n");
+  PRINT(3)("> Initializing sound\n");
   // SDL_Init(SDL_INIT_AUDIO);
-  printf("Not yet implemented\n");
+  SoundEngine::getInstance()->initAudio();
   return 0;
 }
Index: orxonox/trunk/src/story_entities/world.cc
===================================================================
--- orxonox/trunk/src/story_entities/world.cc	(revision 4502)
+++ orxonox/trunk/src/story_entities/world.cc	(revision 4504)
@@ -65,4 +65,6 @@
 #include "event_handler.h"
 
+#include "sound_engine.h"
+
 using namespace std;
 
@@ -182,4 +184,6 @@
   delete this->particleEngine;
   TextEngine::getInstance()->flush();
+  SoundEngine::getInstance()->flushAllBuffers();
+
   delete AnimationPlayer::getInstance(); // this should be at the end of the unloading sequence.
   delete PhysicsEngine::getInstance();
@@ -468,4 +472,5 @@
   this->spawn(terrain);
 
+  SoundEngine::getInstance()->setListener(this->localCamera);
 
 
@@ -1079,4 +1084,6 @@
   this->garbageCollector->update();
   this->nullParent->update (this->dtS);
+
+  SoundEngine::getInstance()->update();
 }
 
Index: orxonox/trunk/src/subprojects/Makefile.in
===================================================================
--- orxonox/trunk/src/subprojects/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/subprojects/Makefile.in	(revision 4504)
@@ -186,7 +186,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/subprojects/gui/Makefile.in
===================================================================
--- orxonox/trunk/src/subprojects/gui/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/subprojects/gui/Makefile.in	(revision 4504)
@@ -194,5 +194,4 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = ../..
-AM_CXXFLAGS = -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/graphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/graphics/particles -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/gui/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/lib/tinyxml -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai -I$(MAINSRCDIR)/util -I$(MAINSRCDIR)/util/animation -I$(MAINSRCDIR)/util/common -I$(MAINSRCDIR)/util/loading -I$(MAINSRCDIR)/util/track -I$(MAINSRCDIR)/subprojects
 AM_LDFLAGS = $(MWINDOWS)
 gui_DEPENDENCIES = $(MAINSRCDIR)/lib/gui/gui/libORXgui.a
@@ -229,7 +228,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/gui/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/gui/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/gui/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -688,4 +687,5 @@
 	uninstall-am uninstall-binPROGRAMS uninstall-info-am
 
+include $(MAINSRCDIR)/defs/include_paths.am
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
Index: orxonox/trunk/src/subprojects/importer/Makefile.in
===================================================================
--- orxonox/trunk/src/subprojects/importer/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/subprojects/importer/Makefile.in	(revision 4504)
@@ -237,7 +237,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/importer/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/importer/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/importer/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/importer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/subprojects/particles/Makefile.in
===================================================================
--- orxonox/trunk/src/subprojects/particles/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/subprojects/particles/Makefile.in	(revision 4504)
@@ -260,7 +260,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/particles/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/particles/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/particles/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/particles/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: orxonox/trunk/src/subprojects/testmain/Makefile.in
===================================================================
--- orxonox/trunk/src/subprojects/testmain/Makefile.in	(revision 4502)
+++ orxonox/trunk/src/subprojects/testmain/Makefile.in	(revision 4504)
@@ -180,5 +180,4 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = ../..
-AM_CXXFLAGS = -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/gaphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai
 AM_LDFLAGS = $(MWINDOWS)
 testmain_SOURCES = testmain.cc
@@ -197,7 +196,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/testmain/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/testmain/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/testmain/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/testmain/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -435,4 +434,5 @@
 	uninstall-am uninstall-binPROGRAMS uninstall-info-am
 
+include $(MAINSRCDIR)/defs/include_paths.am
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
Index: orxonox/trunk/src/util/resource_manager.cc
===================================================================
--- orxonox/trunk/src/util/resource_manager.cc	(revision 4502)
+++ orxonox/trunk/src/util/resource_manager.cc	(revision 4504)
@@ -24,4 +24,5 @@
 #include "texture.h"
 #include "text_engine.h"
+#include "sound_engine.h"
 
 #include "list.h"
@@ -312,4 +313,8 @@
 	  else
 	    PRINTF(2)("Sorry, %s does not exist. Not loading Font\n", fullName);
+	  break;
+	case WAV:
+	  if(isFile(fullName))
+	    tmpResource->pointer = new SoundBuffer(fullName);
 	  break;
 	case IMAGE:
@@ -407,4 +412,7 @@
 	      delete (Texture*)resource->pointer;
 	      break;
+	    case WAV:
+	      delete (SoundBuffer*)resource->pointer;
+	      break;
 	    case TTF:
 	      delete (Font*)resource->pointer;
Index: orxonox/trunk/src/world_entities/test_gun.cc
===================================================================
--- orxonox/trunk/src/world_entities/test_gun.cc	(revision 4502)
+++ orxonox/trunk/src/world_entities/test_gun.cc	(revision 4504)
@@ -31,4 +31,5 @@
 #include "list.h"
 #include "animation3d.h"
+#include "sound_engine.h"
 
 #include "object_manager.h"
@@ -89,5 +90,8 @@
       this->animation3->addKeyFrame(Vector(-2.6, 0.1, -2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
     }
-
+  
+  this->fireSound = (SoundBuffer*)ResourceManager::getInstance()->load("sound/shot1.wav", WAV);
+  this->weaponSource = new SoundSource(this->fireSound, this);
+  this->weaponSource->setRolloffFactor(.1);
   Projectile* p = new TestBullet(this);
   ObjectManager::getInstance()->cache(CL_TEST_BULLET, 100, p);
@@ -146,4 +150,6 @@
 
   Projectile* pj = dynamic_cast<Projectile*>(ObjectManager::getInstance()->getFromDeadList(CL_TEST_BULLET));
+  weaponSource->play();
+
   pj->setAbsCoor(this->getAbsCoor() + this->projectileOffset);
   pj->setAbsDir(this->getAbsDir());
Index: orxonox/trunk/src/world_entities/weapon.h
===================================================================
--- orxonox/trunk/src/world_entities/weapon.h	(revision 4502)
+++ orxonox/trunk/src/world_entities/weapon.h	(revision 4504)
@@ -175,4 +175,8 @@
   int leftRight;   // this will become an enum
 
+  SoundBuffer* fireSound;
+  SoundSource* weaponSource;
+
+
  private:
   bool enabled;                    //<! states if the weapon is enabled or not
Index: orxonox/trunk/src/world_entities/world_entity.h
===================================================================
--- orxonox/trunk/src/world_entities/world_entity.h	(revision 4502)
+++ orxonox/trunk/src/world_entities/world_entity.h	(revision 4504)
@@ -13,8 +13,11 @@
 #include "load_param.h"
 
-
 //class CollisionCluster;
 class CharacterAttributes;
 class Model;
+class SoundEngine;
+class SoundBuffer;
+class SoundSource;
+
 //! Basic class from which all interactive stuff in the world is derived from
 class WorldEntity : public PNode
