Revision Difference
game.CleanUpMap#561193
<function name="CleanUpMap" parent="game" type="libraryfunc">
<description>
If called serverside it will remove **ALL** entities which were not created by the map (not players or weapons held by players).
It won't remove Entities who have the <page text="EFL_KEEP_ON_RECREATE_ENTITIES">enums/EFL</page> Flag set.
On the client it will remove decals, sounds, gibs, dead NPCs, and entities created via <page>ents.CreateClientProp</page>.
This function calls <page>GM:PreCleanupMap</page> before cleaning up the map and <page>GM:PostCleanupMap</page> after cleaning up the map.
⤶
<bug issue="1142">Calling this in a <page>ENTITY:StartTouch</page> or <page>ENTITY:Touch</page> hook will crash the game.</bug>⤶
⤶
Beware of calling this function in hooks that may be called on map clean up (such as <page>ENTITY:StartTouch</page>) to avoid infinite loops.⤶
<bug issue="2874">Calling this destroys all BASS streams.</bug>
<bug issue="3637">This can crash when removing `_firesmoke` entities. **You can use the example below to workaround this issue.**</bug>
</description>
<realm>Shared</realm>
<args>
<arg name="dontSendToClients" type="boolean" default="false">If set to `true`, don't run this functions on all clients.</arg>
<arg name="extraFilters" type="table" default="{}">Entity classes not to reset during cleanup.</arg>
<arg name="callback" type="function" default="nil" added="2024.01.04">If set, delays the map cleanup until the end of a server tick, allowing bypassing the entity limit on maps with large amounts of them. The callback function will be called after the map cleanup has been performed.</arg>
</args>
</function>
<example>
<description>Quick fix for issue [#3637](https://github.com/Facepunch/garrysmod-issues/issues/3637) (from [Garry's Mod Github](https://github.com/Facepunch/garrysmod-issues/issues/3637#issuecomment-702478260)).</description>
<code>game.CleanUpMap( false, { "env_fire", "entityflame", "_firesmoke" } )</code>
</example>