/////////////////////////////////////////////////////////////////////
| 1087 | |
| 1088 | ////////////////////////////////////////////////////////////////////////// |
| 1089 | void CSoundSystem::AddToSoundSystem(CSound *pSound,int dwFlags) |
| 1090 | { |
| 1091 | GUARD_HEAP; |
| 1092 | pSound->m_nFlags=dwFlags; |
| 1093 | |
| 1094 | bool bLoop; |
| 1095 | if (dwFlags & FLAG_SOUND_LOOP) |
| 1096 | { |
| 1097 | pSound->SetLoopMode(true); |
| 1098 | bLoop = true; |
| 1099 | } |
| 1100 | else |
| 1101 | { |
| 1102 | bLoop = false; |
| 1103 | pSound->SetLoopMode(false); |
| 1104 | } |
| 1105 | |
| 1106 | if (dwFlags & FLAG_SOUND_UNSCALABLE) |
| 1107 | { |
| 1108 | pSound->RemoveFromScaleGroup(SOUNDSCALE_SCALEABLE); |
| 1109 | pSound->RemoveFromScaleGroup(SOUNDSCALE_MISSIONHINT); |
| 1110 | } |
| 1111 | |
| 1112 | //m_vecSounds.push_back(pSound); |
| 1113 | m_vecSounds.insert(pSound); |
| 1114 | |
| 1115 | std::pair<SoundListItor,bool> pr; |
| 1116 | // check if the sound has a radius, and add it to a separate list |
| 1117 | // to speed up the checks, occlusions and sound system update |
| 1118 | //if (dwFlags & (FLAG_SOUND_RADIUS | FLAG_SOUND_OCCLUSION | FLAG_SOUND_INDOOR | FLAG_SOUND_OUTDOOR)) |
| 1119 | if (dwFlags & (FLAG_SOUND_ACTIVELIST) && bLoop) |
| 1120 | { |
| 1121 | if (m_bValidPos && (dwFlags & FLAG_SOUND_RADIUS)) |
| 1122 | { |
| 1123 | float fDist2=GetSquaredDistance(pSound->m_RealPos, m_vPos); |
| 1124 | if (fDist2>pSound->m_fPreloadRadius2) |
| 1125 | { |
| 1126 | //m_vecSoundSpotsInactive.push_back(pSound); // move sound to inactive list... |
| 1127 | pr=m_lstSoundSpotsInactive.insert(pSound); |
| 1128 | m_itLastInactivePos=pr.first; |
| 1129 | m_nInactiveSoundSpotsSize++; |
| 1130 | |
| 1131 | pSound->m_State=eSoundState_Inactive; |
| 1132 | } |
| 1133 | } |
| 1134 | if (pSound->m_State!=eSoundState_Inactive) |
| 1135 | { |
| 1136 | //m_vecSoundSpotsActive.push_back(pSound); // move sound to active list... |
| 1137 | m_lstSoundSpotsActive.insert(pSound); |
| 1138 | pSound->m_State=eSoundState_Active; |
| 1139 | } |
| 1140 | } |
| 1141 | } |
| 1142 | |
| 1143 | ////////////////////////////////////////////////////////////////////////// |
| 1144 | void CSoundSystem::RegisterAutoStopSound( CSound *pSound ) |
nothing calls this directly
no test coverage detected