/*] 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_ /** * \file sound.hh * Load and play sounds, current supports ogg vorbis. */ #include #include #include #include namespace moof { class sound; typedef resource_handle sound_handle; class sound_stream; typedef resource_handle sound_stream_handle; class sound : public resource { public: //sound(); explicit sound(const std::string& path); virtual ~sound() {} // this implicitly stops the sound if it is playing void sample(const std::string& path); virtual void play(); void stop(); void pause(); void toggle(); bool is_playing() const; void position(const vector3& position); void velocity(const vector3& velocity); void gain(scalar gain); void pitch(scalar pitch); void loop(bool looping); static void listener_position(const vector3& position); static void listener_velocity(const vector3& velocity); static void listener_orientation(const vector3& forward, const vector3& up); protected: class impl; boost::shared_ptr impl_; }; class sound_stream : public sound { public: //sound_stream(); explicit sound_stream(const std::string& path) : sound(path) {} void enqueue(const std::string& path); void play(); }; } // namespace moof #endif // _MOOF_SOUND_HH_