X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FSound.hh;h=e5d312a776acfe26533a2224260a16c95bd1d2e6;hp=3f64162f0ca4b2a690f3b7be7005095ee00a3f7c;hb=ca0f7bdfba63140dca0bd20586d31980f3938eb2;hpb=fdfba4553433b9b2804c2772c7645211b828c2ea diff --git a/src/Moof/Sound.hh b/src/Moof/Sound.hh index 3f64162..e5d312a 100644 --- a/src/Moof/Sound.hh +++ b/src/Moof/Sound.hh @@ -31,11 +31,9 @@ /** * @file Sound.hh - * Image-loading and OpenGL texture loading. + * Load and play sounds, current supports ogg vorbis. */ -#include - #include #include @@ -52,8 +50,6 @@ typedef boost::shared_ptr SoundP; class Sound : public Resource { -protected: - Sound() {} class Impl; boost::shared_ptr impl_; @@ -64,13 +60,36 @@ public: return SoundP(new Sound(name)); } - Sound(const std::string& name); + explicit Sound(const std::string& name); + void play(); + void stream(); + + // TODO - i don't like how there are two different methods that essentially + // do the same thing; the API should be exactly the same for both types of + // sounds; need a different way to distinguish how to handle the sound + + void stop(); void pause(); - void togglePlayPause(); + void resume(); + void toggle(); + void setSample(const std::string& name); + void enqueue(const std::string& name); + + bool isPlaying() const; + + 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); @@ -103,17 +122,6 @@ public: }; -class SoundStream : public Sound -{ -public: - SoundStream(const std::string& name); - - void update(Scalar t, Scalar dt); - - static std::string getPath(const std::string& name); -}; - - } // namespace Mf #endif // _MOOF_SOUND_HH_