//----------------------------------------------------------------------------- // Copyright (c) 2012 GarageGames, LLC // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS // IN THE SOFTWARE. //----------------------------------------------------------------------------- #include "sfx/null/sfxNullVoice.h" #include "sfx/null/sfxNullBuffer.h" #include "sfx/sfxInternal.h" SFXNullVoice::SFXNullVoice( SFXNullBuffer* buffer ) : Parent( buffer ), mIsLooping( false ) { } SFXNullVoice::~SFXNullVoice() { } SFXStatus SFXNullVoice::_status() const { if( !mIsLooping && mPlayTimer.isStarted() && !mPlayTimer.isPaused() && mPlayTimer.getPosition() >= mBuffer->getDuration() ) mPlayTimer.stop(); if( mPlayTimer.isPaused() ) return SFXStatusPaused; else if( mPlayTimer.isStarted() ) return SFXStatusPlaying; else return SFXStatusStopped; } void SFXNullVoice::_play() { mPlayTimer.start(); } void SFXNullVoice::_pause() { mPlayTimer.pause(); } void SFXNullVoice::_stop() { mPlayTimer.stop(); } void SFXNullVoice::_seek( U32 sample ) { const U32 sampleTime = mBuffer->getFormat().getDuration( sample ); mPlayTimer.setPosition( sampleTime ); } void SFXNullVoice::play( bool looping ) { mIsLooping = looping; mPlayTimer.start(); } U32 SFXNullVoice::_tell() const { U32 ms = _getPlayTime(); const SFXFormat& format = mBuffer->getFormat(); return ( format.getDataLength( ms ) / format.getBytesPerSample() ); } SFXStatus SFXNullVoice::getStatus() const { return _status(); } void SFXNullVoice::setPosition( U32 sample ) { _seek( sample ); } void SFXNullVoice::setMinMaxDistance( F32 min, F32 max ) { } void SFXNullVoice::setVelocity( const VectorF& velocity ) { } void SFXNullVoice::setTransform( const MatrixF& transform ) { } void SFXNullVoice::setVolume( F32 volume ) { } void SFXNullVoice::setPitch( F32 pitch ) { } void SFXNullVoice::setCone( F32 innerAngle, F32 outerAngle, F32 outerVolume ) { }