#include <boost/shared_ptr.hpp>
#include <moof/math.hh>
-#include <moof/resource.hh>
namespace moof {
-class sound;
-typedef boost::shared_ptr<sound> sound_ptr;
+class script;
-class sound_stream;
-typedef boost::shared_ptr<sound_stream> sound_stream_ptr;
-
-class sound : public resource
+class sound
{
public:
- static sound_ptr alloc(const std::string& name)
- {
- return sound_ptr(new sound(name));
- }
-
sound();
explicit sound(const std::string& name);
- virtual ~sound() {}
-
- // this implicitly stops the sound if it is playing
void sample(const std::string& name);
+ void queue(const std::string& name);
- virtual void play();
+ void play();
void stop();
void pause();
void toggle();
bool is_playing() const;
+ void buffer_size(scalar seconds);
+
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);
- static bool find_path(std::string& name);
+ static void import(script& script, const std::string& nspace = "");
-protected:
+private:
class impl;
boost::shared_ptr<impl> impl_;
};
-class sound_stream : public sound
-{
-public:
-
- static sound_stream_ptr alloc(const std::string& name)
- {
- return sound_stream_ptr(new sound_stream(name));
- }
-
- sound_stream();
- explicit sound_stream(const std::string& name) :
- sound(name) {}
-
- void enqueue(const std::string& name);
-
- void play();
-};
-
-
} // namespace moof
#endif // _MOOF_SOUND_HH_