X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FSound.hh;h=982e9b4065eeca659601fd9015846407a2936fab;hp=cca7dc7e637fd2b9cd61fe3ecac024db9d03a9e6;hb=8a1acac01b444dccf8b57cedf08392ada2e473c1;hpb=bfa6212d09d8735d8fd5e2638188e4a99f21ada4 diff --git a/src/Moof/Sound.hh b/src/Moof/Sound.hh index cca7dc7..982e9b4 100644 --- a/src/Moof/Sound.hh +++ b/src/Moof/Sound.hh @@ -31,13 +31,12 @@ /** * @file Sound.hh - * Image-loading and OpenGL texture loading. + * Load and play sounds, current supports ogg vorbis. */ -#include - #include +#include #include #include @@ -45,36 +44,55 @@ namespace Mf { +class Sound; +typedef boost::shared_ptr SoundP; + + class Sound : public Resource { public: - Sound(const std::string& name); + + static SoundP alloc(const std::string& name) + { + return SoundP(new Sound(name)); + } + + Sound(); + explicit Sound(const std::string& name); + void play(); + void stream(); - static std::string getPath(const std::string& name); + // TODO this API sucks... refactor me!! - struct Exception : std::runtime_error - { - explicit Exception(const std::string& what_arg) : - std::runtime_error(what_arg) {} - }; + void stop(); + void pause(); + void resume(); + void toggle(); -protected: - Sound() {} - class Impl; - boost::shared_ptr impl_; -}; + void setSample(const std::string& name); + void enqueue(const std::string& name); + bool isPlaying() const; -class SoundStream : public Sound -{ -public: - SoundStream(const std::string& name); + void setPosition(const Vector3& position); + void setVelocity(const Vector3& velocity); + void setGain(Scalar gain); + void setPitch(Scalar pitch); + void setLooping(bool looping); - void update(Scalar t, Scalar dt); + static void setListenerPosition(const Vector3& position); + static void setListenerVelocity(const Vector3& velocity); + static void setListenerOrientation(const Vector3& forward, + const Vector3& up); static std::string getPath(const std::string& name); + +private: + + class Impl; + boost::shared_ptr mImpl; };