| 1178 | } |
| 1179 | |
| 1180 | void FreeLevel(bool partial) |
| 1181 | { |
| 1182 | if (FirstLevel) |
| 1183 | { |
| 1184 | FirstLevel = false; |
| 1185 | return; |
| 1186 | } |
| 1187 | |
| 1188 | // Should happen before resetting items. |
| 1189 | if (partial) |
| 1190 | ResetRoomData(); |
| 1191 | |
| 1192 | g_Level.Items.resize(0); |
| 1193 | g_Level.AIObjects.resize(0); |
| 1194 | g_Level.Cameras.resize(0); |
| 1195 | g_Level.Sinks.resize(0); |
| 1196 | g_Level.SoundSources.resize(0); |
| 1197 | g_Level.VolumeEventSets.resize(0); |
| 1198 | g_Level.GlobalEventSets.resize(0); |
| 1199 | g_Level.LoopedEventSetIndices.resize(0); |
| 1200 | |
| 1201 | g_GameScript->FreeLevelScripts(); |
| 1202 | g_GameScriptEntities->FreeEntities(); |
| 1203 | |
| 1204 | if (partial) |
| 1205 | return; |
| 1206 | |
| 1207 | g_Renderer.FreeRendererData(); |
| 1208 | |
| 1209 | MoveablesIds.resize(0); |
| 1210 | SpriteSequencesIds.resize(0); |
| 1211 | |
| 1212 | g_Level.RoomTextures.resize(0); |
| 1213 | g_Level.MoveablesTextures.resize(0); |
| 1214 | g_Level.StaticsTextures.resize(0); |
| 1215 | g_Level.AnimatedTextures.resize(0); |
| 1216 | g_Level.SpritesTextures.resize(0); |
| 1217 | g_Level.AnimatedTexturesSequences.resize(0); |
| 1218 | g_Level.Rooms.resize(0); |
| 1219 | g_Level.Bones.resize(0); |
| 1220 | g_Level.Meshes.resize(0); |
| 1221 | g_Level.PathfindingBoxes.resize(0); |
| 1222 | g_Level.Overlaps.resize(0); |
| 1223 | g_Level.Sprites.resize(0); |
| 1224 | g_Level.Mirrors.resize(0); |
| 1225 | g_Level.SoundDetails.resize(0); |
| 1226 | g_Level.SoundMap.resize(0); |
| 1227 | g_Level.FloorData.resize(0); |
| 1228 | g_Level.Materials.resize(0); |
| 1229 | |
| 1230 | for (int i = 0; i < 2; i++) |
| 1231 | { |
| 1232 | for (int j = 0; j < (int)ZoneType::MaxZone; j++) |
| 1233 | g_Level.Zones[j][i].clear(); |
| 1234 | } |
| 1235 | |
| 1236 | FreeSamples(); |
| 1237 | } |
no test coverage detected