X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FSound.hh;h=982e9b4065eeca659601fd9015846407a2936fab;hp=4f655822100b5bdbb394c5ab101909127061b2b6;hb=8a1acac01b444dccf8b57cedf08392ada2e473c1;hpb=25aefe01ef7dbdb603c51411e04b0d6a6107684f diff --git a/src/Moof/Sound.hh b/src/Moof/Sound.hh index 4f65582..982e9b4 100644 --- a/src/Moof/Sound.hh +++ b/src/Moof/Sound.hh @@ -31,7 +31,7 @@ /** * @file Sound.hh - * Image-loading and OpenGL texture loading. + * Load and play sounds, current supports ogg vorbis. */ #include @@ -50,9 +50,6 @@ typedef boost::shared_ptr SoundP; class Sound : public Resource { - class Impl; - boost::shared_ptr impl_; - public: static SoundP alloc(const std::string& name) @@ -60,13 +57,14 @@ public: return SoundP(new Sound(name)); } + Sound(); explicit Sound(const std::string& name); void play(); - void stream(); - void update(Scalar t, Scalar dt); + + // TODO this API sucks... refactor me!! void stop(); void pause(); @@ -78,40 +76,23 @@ public: bool isPlaying() const; - void setPosition(Vector3 position); - void setVelocity(Vector3 velocity); + void setPosition(const Vector3& position); + void setVelocity(const Vector3& velocity); void setGain(Scalar gain); void setPitch(Scalar pitch); void setLooping(bool looping); + 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: - struct Exception : public Mf::Exception - { - enum - { - BAD_AUDIO_FORMAT = 1024 - }; - - explicit Exception(unsigned error) : - Mf::Exception(error) {} - - void raise() - { - throw *this; - } - - const char* what() const throw() - { - switch (code) - { - case BAD_AUDIO_FORMAT: - return "unknown audio format"; - } - return Mf::Exception::what(); - } - }; + class Impl; + boost::shared_ptr mImpl; };