| 758 | //----------------------------------------------------------------------------- |
| 759 | |
| 760 | void SFXSystem::_update() |
| 761 | { |
| 762 | PROFILE_SCOPE( SFXSystem_Update ); |
| 763 | |
| 764 | getEventSignal().trigger( SFXSystemEvent_Update ); |
| 765 | |
| 766 | for( U32 i = 0; i < mPlugins.size(); ++ i ) |
| 767 | mPlugins[ i ]->update(); |
| 768 | |
| 769 | const U32 SOURCE_UPDATE_MS = TickMs * 2; |
| 770 | const U32 PARAMETER_UPDATE_MS = TickMs * 3; |
| 771 | const U32 AMBIENT_UPDATE_MS = TickMs * 4; |
| 772 | |
| 773 | static AutoPtr< PlatformTimer > sTimer; |
| 774 | if( sTimer.isNull() ) |
| 775 | sTimer = PlatformTimer::create(); |
| 776 | |
| 777 | // The update of the sources can be a bit expensive |
| 778 | // and it does not need to be updated every frame. |
| 779 | const U32 currentTime = Platform::getRealMilliseconds(); |
| 780 | if( ( currentTime - mLastSourceUpdateTime ) >= SOURCE_UPDATE_MS ) |
| 781 | { |
| 782 | S32 tick = sTimer->getElapsedMs(); |
| 783 | |
| 784 | _updateSources(); |
| 785 | mLastSourceUpdateTime = currentTime; |
| 786 | |
| 787 | mStatSourceUpdateTime = ( sTimer->getElapsedMs() - tick ); |
| 788 | } |
| 789 | if( ( currentTime - mLastParameterUpdateTime ) >= PARAMETER_UPDATE_MS ) |
| 790 | { |
| 791 | S32 tick = sTimer->getElapsedMs(); |
| 792 | |
| 793 | SimSet* set = Sim::getSFXParameterGroup(); |
| 794 | for( SimSet::iterator iter = set->begin(); iter != set->end(); ++ iter ) |
| 795 | { |
| 796 | SFXParameter* parameter = dynamic_cast< SFXParameter* >( *iter ); |
| 797 | if( parameter ) |
| 798 | parameter->update(); |
| 799 | } |
| 800 | |
| 801 | mLastParameterUpdateTime = currentTime; |
| 802 | mStatParameterUpdateTime = ( sTimer->getElapsedMs() - tick ); |
| 803 | } |
| 804 | if( mSoundscapeMgr && ( currentTime - mLastAmbientUpdateTime ) >= AMBIENT_UPDATE_MS ) |
| 805 | { |
| 806 | S32 tick = sTimer->getElapsedMs(); |
| 807 | |
| 808 | mSoundscapeMgr->update(); |
| 809 | mLastAmbientUpdateTime = currentTime; |
| 810 | |
| 811 | mStatAmbientUpdateTime = ( sTimer->getElapsedMs() - tick ); |
| 812 | } |
| 813 | |
| 814 | // If we have a device then update it. |
| 815 | if( mDevice ) |
| 816 | mDevice->update(); |
| 817 | } |
no test coverage detected