#include <stdio.h>
#include <string.h>
#include <assert.h>
-#include <math.h>
+#include <cmath>
#include <string>
#include <sstream>
// FGVoicePlayer::Voice::SampleElement ///////////////////////////
/////////////////////////////////////////////////////////////////////////
+FGVoicePlayer::Voice::SampleElement::SampleElement (SGSharedPtr<SGSoundSample> sample, float volume)
+: _sample(sample), _volume(volume)
+{
+ silence = false;
+}
+
void FGVoicePlayer::Voice::SampleElement::play (float volume)
{
if (_sample && (volume > 0.05)) { set_volume(volume); _sample->play_once(); }
: volume(1.0), voice(NULL), next_voice(NULL), paused(false),
dev_name(_dev_name), dir_prefix(""),
speaker(this,properties_handler)
-{}
+{
+ _sgr = NULL;
+}
FGVoicePlayer::~FGVoicePlayer ()
{
void
FGVoicePlayer::init ()
{
- SGSoundMgr *smgr = globals->get_soundmgr();
+ SGSoundMgr *smgr = globals->get_subsystem<SGSoundMgr>();
_sgr = smgr->find("avionics", true);
_sgr->tie_to_listener();
speaker.update_configuration();
if (! sample)
{
string filename = dir_prefix + string(name) + ".wav";
- try
- {
- sample = new SGSoundSample(filename.c_str(), SGPath());
- }
- catch (const sg_exception &e)
- {
- SG_LOG(SG_SOUND, SG_ALERT, "Error loading sound sample \"" + filename + "\": " + e.getFormattedMessage());
- exit(1);
- }
-
+ sample = new SGSoundSample(filename.c_str(), SGPath());
+
_sgr->add(sample, refname);
samples[refname] = sample;
}
}
}
}
+
+void
+FGVoicePlayer::append (Voice *voice, const char *sample_name)
+{
+ voice->append(new Voice::SampleElement(get_sample(sample_name)));
+}
+