X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fsound%2Fsample_group.hxx;h=d2d47394d4530a32a33f68db431e4212f5e6638b;hb=1f37095087fa7aa3d210ba134058b86c3bd6d69e;hp=645e18b80c3ab6c28c2977770737d274b60ae195;hpb=c89db53ebfab014fc3966d62c3abe22b32c81fa8;p=simgear.git diff --git a/simgear/sound/sample_group.hxx b/simgear/sound/sample_group.hxx index 645e18b8..d2d47394 100644 --- a/simgear/sound/sample_group.hxx +++ b/simgear/sound/sample_group.hxx @@ -128,6 +128,11 @@ public: */ SGSoundSample *find( const string& refname ); + /** + * Stop all playing samples and set the source id to invalid. + */ + void stop(); + /** * Request to stop playing all audio samples until further notice. */ @@ -189,20 +194,26 @@ public: * This is in the local frame coordinate system; x=north, y=east, z=down * @param vel Velocity vector */ - void set_velocity( const SGVec3f& vel ); + void set_velocity( const SGVec3d& vel ) { + _velocity = vel; _changed = true; + } /** * Set the position of this sample group. * This is in the same coordinate system as OpenGL; y=up, z=back, x=right. * @param pos Base position */ - void set_position_geod( const SGGeod& pos ); + void set_position_geod( const SGGeod& pos ) { + _base_pos = pos; _changed = true; + } /** * Set the orientation of this sample group. * @param ori Quaternation containing the orientation information */ - void set_orientation( const SGQuatd& ori ); + void set_orientation( const SGQuatd& ori ) { + _orientation = ori; _changed = true; + } /** * Tie this sample group to the listener position, orientation and velocity @@ -215,13 +226,14 @@ protected: bool _active; private: + bool _changed; bool _pause; float _volume; bool _tied_to_listener; - SGVec3f _velocity; + SGVec3d _velocity; + SGGeod _base_pos; SGQuatd _orientation; - SGGeod _position; sample_map _samples; std::vector< SGSharedPtr > _removed_samples; @@ -229,6 +241,7 @@ private: bool testForALError(string s); bool testForError(void *p, string s); + void update_pos_and_orientation(); void update_sample_config( SGSoundSample *sound ); };