X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FSound.hh;h=bbfef127434d19b3884399f6b63a43176bec497e;hp=982e9b4065eeca659601fd9015846407a2936fab;hb=2f239b9ba2a556a5ca810cfffc60552a56a4fe86;hpb=8a1acac01b444dccf8b57cedf08392ada2e473c1 diff --git a/src/Moof/Sound.hh b/src/Moof/Sound.hh index 982e9b4..bbfef12 100644 --- a/src/Moof/Sound.hh +++ b/src/Moof/Sound.hh @@ -1,30 +1,13 @@ -/******************************************************************************* - - Copyright (c) 2009, Charles McGarvey - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*******************************************************************************/ +/*] Copyright (c) 2009-2010, Charles McGarvey [************************** +**] All rights reserved. +* +* vi:ts=4 sw=4 tw=75 +* +* Distributable under the terms and conditions of the 2-clause BSD license; +* see the file COPYING for a complete text of the license. +* +**************************************************************************/ #ifndef _MOOF_SOUND_HH_ #define _MOOF_SOUND_HH_ @@ -34,9 +17,10 @@ * Load and play sounds, current supports ogg vorbis. */ +#include + #include -#include #include #include @@ -47,6 +31,9 @@ namespace Mf { class Sound; typedef boost::shared_ptr SoundP; +class SoundStream; +typedef boost::shared_ptr SoundStreamP; + class Sound : public Resource { @@ -60,20 +47,16 @@ public: Sound(); explicit Sound(const std::string& name); + virtual ~Sound() {} - void play(); - void stream(); - - // TODO this API sucks... refactor me!! + // this implicitly stops the sound if it is playing + void setSample(const std::string& name); + virtual void play(); void stop(); void pause(); - void resume(); - void toggle(); - - void setSample(const std::string& name); - void enqueue(const std::string& name); + void toggle(); bool isPlaying() const; void setPosition(const Vector3& position); @@ -85,20 +68,37 @@ public: static void setListenerPosition(const Vector3& position); static void setListenerVelocity(const Vector3& velocity); static void setListenerOrientation(const Vector3& forward, - const Vector3& up); + const Vector3& up); - static std::string getPath(const std::string& name); + static bool getPath(std::string& name); -private: +protected: class Impl; boost::shared_ptr mImpl; }; +class SoundStream : public Sound +{ +public: + + static SoundStreamP alloc(const std::string& name) + { + return SoundStreamP(new SoundStream(name)); + } + + SoundStream(); + explicit SoundStream(const std::string& name) : + Sound(name) {} + + void enqueue(const std::string& name); + + void play(); +}; + + } // namespace Mf #endif // _MOOF_SOUND_HH_ -/** vim: set ts=4 sw=4 tw=80: *************************************************/ -