X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FSound.hh;h=4f655822100b5bdbb394c5ab101909127061b2b6;hp=bc669bcd5df6dcf629ab26a97b564b23e6151b3a;hb=25aefe01ef7dbdb603c51411e04b0d6a6107684f;hpb=5fa5f117f28922a7e539a432367960c1a61f837d diff --git a/src/Moof/Sound.hh b/src/Moof/Sound.hh index bc669bc..4f65582 100644 --- a/src/Moof/Sound.hh +++ b/src/Moof/Sound.hh @@ -34,8 +34,6 @@ * Image-loading and OpenGL texture loading. */ -#include - #include #include @@ -46,19 +44,49 @@ namespace Mf { +class Sound; +typedef boost::shared_ptr SoundP; + + class Sound : public Resource { + class Impl; + boost::shared_ptr impl_; + public: - Sound(const std::string& name); + + static SoundP alloc(const std::string& name) + { + return SoundP(new Sound(name)); + } + + explicit Sound(const std::string& name); + void play(); + + void stream(); + void update(Scalar t, Scalar dt); + + 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(Vector3 position); + void setVelocity(Vector3 velocity); void setGain(Scalar gain); + void setPitch(Scalar pitch); + void setLooping(bool looping); static std::string getPath(const std::string& name); + struct Exception : public Mf::Exception { enum @@ -84,22 +112,6 @@ public: return Mf::Exception::what(); } }; - -protected: - Sound() {} - class Impl; - boost::shared_ptr impl_; -}; - - -class SoundStream : public Sound -{ -public: - SoundStream(const std::string& name); - - void update(Scalar t, Scalar dt); - - static std::string getPath(const std::string& name); };