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