#ifndef _SG_SAMPLE_HXX
#define _SG_SAMPLE_HXX 1
-#ifndef __cplusplus
-# error This library requires C++
-#endif
-
#include <string>
-#include <cstdlib>
#include <simgear/compiler.h>
-#include <simgear/debug/logstream.hxx>
#include <simgear/structure/SGReferenced.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/math/SGMath.hxx>
-
+
class SGPath;
+#ifndef AL_FORMAT_MONO8
+ #define AL_FORMAT_MONO8 0x1100
+#endif
+
+
/**
* manages everything we need to know for an individual audio sample
*/
/**
* Constructor
- * @param path Path name to sound
* @param file File name of sound
Buffer data is freed by the sample group
*/
- SGSoundSample( const char *path, const char *file );
+ SGSoundSample(const char *file, const SGPath& currentDir);
/**
* Constructor.
/**
* Destructor
*/
- ~SGSoundSample ();
+ virtual ~SGSoundSample ();
/**
- * Detect wheter this audio sample holds the information of a sound file.
+ * Detect whether this audio sample holds the information of a sound file.
* @return Return true if this audio sample is to be constructed from a file.
*/
inline bool is_file() const { return _is_file; }
}
/**
- * Test if static dataa of audio sample configuration has changed.
+ * Test if static data of audio sample configuration has changed.
* Calling this function will reset the flag so calling it a second
* time in a row will return false.
* @return Return true is the static data has changed in the mean time.
* @param _loop Define whether this sound should be played in a loop.
*/
void play( bool loop = false ) {
- _playing = true; _loop = loop; _changed = true;
+ _playing = true; _loop = loop; _changed = true; _static_changed = true;
}
/**
*/
inline bool is_playing() { return _playing; }
+
+ /**
+ * Set this sample to out-of-range (or not) and
+ * Schedule this audio sample to stop (or start) playing.
+ */
+ inline void set_out_of_range(bool oor = true) {
+ _out_of_range = oor; _playing = (!oor && _loop); _changed = true;
+ }
+
+ /**
+ * Test if this sample to out-of-range or not.
+ */
+ inline bool test_out_of_range() {
+ return _out_of_range;
+ }
+
/**
* Set the data associated with this audio sample
* @param data Pointer to a memory block containg this audio sample data.
bool _playing;
bool _changed;
bool _static_changed;
+ bool _out_of_range;
bool _is_file;
- string random_string();
+ std::string random_string();
};