X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fsound%2Fsample_openal.cxx;h=3c9cb864ad81403fc1d06794c3722046bde1d35f;hb=bcb320b537b6f7e5e3724e8a30d309322171eb43;hp=5c20c1c9493a4180428ebff8bf1d9e27b0c88f7e;hpb=1ac944b7c1e7236e6d3493a7c23ea2c099109261;p=simgear.git diff --git a/simgear/sound/sample_openal.cxx b/simgear/sound/sample_openal.cxx index 5c20c1c9..3c9cb864 100644 --- a/simgear/sound/sample_openal.cxx +++ b/simgear/sound/sample_openal.cxx @@ -27,11 +27,13 @@ #endif #include // rand() +#include #include #include #include -#include +#include +#include #include "soundmgr_openal.hxx" #include "sample_openal.hxx" @@ -48,10 +50,9 @@ SGSoundSample::SGSoundSample() : _direction(SGVec3d::zeros()), _velocity(SGVec3f::zeros()), _orientation(SGQuatd::zeros()), - _rotation(SGQuatd::zeros()), _orivec(SGVec3f::zeros()), _base_pos(SGVec3d::zeros()), - _base_offs(SGVec3d::zeros()), + _rotation(SGQuatd::zeros()), _refname(random_string()), _data(NULL), _format(AL_FORMAT_MONO8), @@ -78,16 +79,15 @@ SGSoundSample::SGSoundSample() : } // constructor -SGSoundSample::SGSoundSample( const char *path, const char *file ) : +SGSoundSample::SGSoundSample(const char *file, const SGPath& currentDir) : _absolute_pos(SGVec3d::zeros()), _relative_pos(SGVec3d::zeros()), _direction(SGVec3d::zeros()), _velocity(SGVec3f::zeros()), _orientation(SGQuatd::zeros()), - _rotation(SGQuatd::zeros()), _orivec(SGVec3f::zeros()), _base_pos(SGVec3d::zeros()), - _base_offs(SGVec3d::zeros()), + _rotation(SGQuatd::zeros()), _refname(file), _data(NULL), _format(AL_FORMAT_MONO8), @@ -111,11 +111,8 @@ SGSoundSample::SGSoundSample( const char *path, const char *file ) : _static_changed(true), _is_file(true) { - SGPath samplepath( path ); - if ( strlen(file) ) { - samplepath.append( file ); - } - _refname = samplepath.str(); + SGPath p = simgear::ResourceManager::instance()->findPath(file, currentDir); + _refname = p.str(); } // constructor @@ -126,10 +123,9 @@ SGSoundSample::SGSoundSample( const unsigned char** data, _direction(SGVec3d::zeros()), _velocity(SGVec3f::zeros()), _orientation(SGQuatd::zeros()), - _rotation(SGQuatd::zeros()), _orivec(SGVec3f::zeros()), _base_pos(SGVec3d::zeros()), - _base_offs(SGVec3d::zeros()), + _rotation(SGQuatd::zeros()), _refname(random_string()), _format(format), _size(len), @@ -163,10 +159,9 @@ SGSoundSample::SGSoundSample( void** data, int len, int freq, int format ) : _direction(SGVec3d::zeros()), _velocity(SGVec3f::zeros()), _orientation(SGQuatd::zeros()), - _rotation(SGQuatd::zeros()), _orivec(SGVec3f::zeros()), _base_pos(SGVec3d::zeros()), - _base_offs(SGVec3d::zeros()), + _rotation(SGQuatd::zeros()), _refname(random_string()), _format(format), _size(len), @@ -196,21 +191,20 @@ SGSoundSample::SGSoundSample( void** data, int len, int freq, int format ) : // destructor SGSoundSample::~SGSoundSample() { - if (_data) free(_data); + if ( _data != NULL ) free(_data); } void SGSoundSample::update_pos_and_orientation() { - _absolute_pos = _base_pos - _base_offs; - if ( _relative_pos[0] || _relative_pos[1] || _relative_pos[2] ) { - _absolute_pos += _rotation.backTransform(_relative_pos); + _absolute_pos = _base_pos; + if (_relative_pos[0] || _relative_pos[1] || _relative_pos[2] ) { + _absolute_pos += _rotation.rotate( _relative_pos ); } + _orivec = SGVec3f::zeros(); if ( _direction[0] || _direction[1] || _direction[2] ) { - _orivec = toVec3f( _rotation.rotate(_direction) ); + _orivec = toVec3f( _rotation.rotate( _direction ) ); } - else - _orivec = SGVec3f::zeros(); } string SGSoundSample::random_string() { @@ -224,3 +218,13 @@ string SGSoundSample::random_string() { return rstr; } +SGPath SGSoundSample::file_path() const +{ + if (!_is_file) { + return SGPath(); + } + + return SGPath(_refname); +} + +