Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

soundsystem.h

Go to the documentation of this file.
00001 /* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*-
00002 
00003    this file is part of rcssserver3D
00004    Fri May 9 2003
00005    Copyright (C) 2002,2003 Koblenz University
00006    Copyright (C) 2003 RoboCup Soccer Server 3D Maintenance Group
00007    $Id: soundsystem.h,v 1.3 2003/11/14 14:05:52 fruit Exp $
00008 
00009    This program is free software; you can redistribute it and/or modify
00010    it under the terms of the GNU General Public License as published by
00011    the Free Software Foundation; version 2 of the License.
00012 
00013    This program is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with this program; if not, write to the Free Software
00020    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00021 */
00022 #ifndef KEROSIN_SOUNDSYSTEM_H
00023 #define KEROSIN_SOUNDSYSTEM_H
00024 
00025 #include <zeitgeist/leaf.h>
00026 
00027 namespace kerosin
00028 {
00029 
00030 class SoundEffect;
00031 class SoundStream;
00032 class SoundModule;
00033 class SoundServer;
00034 
00035 /*      SoundSystem
00036 
00037         Here we define the interface which an actual SoundSystem will need to
00038         implement. Actual SoundSystems would be derived from this interface as
00039         ClassServer plugins. You would (in general) associate a SoundSystem with
00040         a SoundLibrary, such as FMOD or BASS.
00041 
00042         NOTE:
00043 
00044         HISTORY:
00045                 18.09.01 - MK
00046                         - Initial version
00047 
00048         TODO:
00049                 - much more functionality (volume control, 3D sounds)
00050 
00051         TOFIX:
00052 */
00053 class SoundSystem : public zeitgeist::Leaf
00054 {
00055 public:
00056     SoundSystem() : zeitgeist::Leaf()   {}
00057     virtual ~SoundSystem()      {}
00058     virtual bool                        Init(int inFreq) = 0;
00059     virtual void                        Shutdown() = 0;
00060 
00061     virtual float                       GetCPU() = 0;
00062 
00063     virtual SoundEffect*        CreateEffect(SoundServer &soundServer) = 0;
00064     virtual SoundStream*        CreateStream(SoundServer &soundServer) = 0;
00065     virtual SoundModule*        CreateModule(SoundServer &soundServer) = 0;
00066 };
00067 
00068 } //namespace kerosin
00069 
00070 #endif //KEROSIN_SOUNDSYSTEM_H

Generated on Thu Apr 6 15:25:40 2006 for rcssserver3d by  doxygen 1.4.4