#include <boost/shared_ptr.hpp>
#include <moof/math.hh>
-#include <moof/resource.hh>
namespace moof {
-class sound;
-typedef resource_handle<sound> sound_handle;
-class sound_stream;
-typedef resource_handle<sound_stream> sound_stream_handle;
-
-
-class sound : public resource
+class sound
{
public:
- //sound();
- explicit sound(const std::string& path);
+ sound();
+ explicit sound(const std::string& name);
- virtual ~sound() {}
+ void sample(const std::string& name);
+ void enqueue(const std::string& name);
- // this implicitly stops the sound if it is playing
- void sample(const std::string& path);
-
- virtual void play();
+ void play();
+ void stream();
void stop();
void pause();
+ void rewind();
void toggle();
bool is_playing() const;
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:
+
+private:
class impl;
boost::shared_ptr<impl> 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_