Collision groups

Collision groups define what types of collision can collide with each other. For example, an entity using COLLISION_GROUP_DEBRIS will only collide with the world and not any dynamic entities.
When the game tests a pair collision groups, the lower collision group is always first in the checks. All collision groups can touch triggers.
== List ==
These are defined in public/const.h:
Name 	Value	Solid to players	Solid to bullets	Solid to projectiles	Solid to physics	Solid to world	Description
COLLISION_GROUP_NONE 	0 	 	 	 	 	 	Default collision group
COLLISION_GROUP_DEBRIS 	1 	 	 	 	 	 	Typically used for small objects that shouldn't interfere with gameplay. Will not touch triggers unless the trigger has the Debris spawnflag enabled. Collides with COLLISION_GROUP_PUSHAWAY.
COLLISION_GROUP_DEBRIS_TRIGGER 	2 	 	 	 	 	 	Despite the name, this is the same as COLLISION_GROUP_DEBRIS, but does not collide with COLLISION_GROUP_PUSHAWAY.
COLLISION_GROUP_INTERACTIVE_DEBRIS	3 	Yes 	 	 	 	 	Same as above, but doesn't collide with other COLLISION_GROUP_INTERACTIVE_DEBRIS. VPhysics props that are asleep will be converted to COLLISION_GROUP_DEBRIS
COLLISION_GROUP_INTERACTIVE 	4 	 	 	 	 	 	Does not collide with debris. Gibs from models not flagged as debris are set to this group. func_door and func_door_rotating use this if set to ignore debris.
COLLISION_GROUP_PLAYER 	5 	 	 	Depends 	 	 	Used by players, but NOT for movement collision. Does not collide with COLLISION_GROUP_PASSABLE_DOOR.
Except in , this will not collide with COLLISION_GROUP_PUSHAWAY. 
In , does not collide with grenade, engineer buildings (except teleporters), combat object groups and tank groups.
COLLISION_GROUP_BREAKABLE_GLASS 	6 	 	 	 	 	 	Used by func_breakable_surf. Does not collide with other COLLISION_GROUP_BREAKABLE_GLASS. NPCs ignore these for weapon LOS checks.
In , crossbow bolts will go through this.
COLLISION_GROUP_VEHICLE 	7 	 	 	 	 	 	Used by driveable vehicles. Always collides against COLLISION_GROUP_VEHICLE_CLIP
COLLISION_GROUP_PLAYER_MOVEMENT 	8 	Depends 	 	No 	 	 	Used by player movement collision tests.
 Behaves identically to COLLISION_GROUP_PLAYER. 
Except in , this will not collide with COLLISION_GROUP_PUSHAWAY. 
In , will not collide with projectile, rocket, grenade, combat object and tank groups. Engineer buildings (except teleporters), players (if tf_avoidteammates is 1), bot_npc_archer, bot_npc_decoy, func_croc, func_forcefield, func_respawnroom, func_respawnroomvisualizer, tf_target_dummy will check for team-specific contents (usually the entity's team number decide these) to consider collision. passtime_ball will not collide with this, but _ballplayertoucher (spawned by the ball) will.
COLLISION_GROUP_NPC 	9 	 	 	 	 	 	Used by NPCs. Always collides with COLLISION_GROUP_DOOR_BLOCKER
COLLISION_GROUP_IN_VEHICLE 	10 	 	 	 	 	 	Set on players/NPCs which enter a vehicle.
COLLISION_GROUP_WEAPON 	11 	 	 	Depends 	 	 	Used by weapons, including when dropped.
In , does not collide with rockets.
COLLISION_GROUP_VEHICLE_CLIP 	12 	 	 	 	 	 	Used by func_vehicleclip. Ony collides with COLLISION_GROUP_VEHICLE.
COLLISION_GROUP_PROJECTILE 	13 	No 	 	Depends 	 	 	Set on projectiles. Does not collide with other projectiles.
In , rockets and grenades have their own collision groups. This will not collide with rockets, however it does collide with grenades!
COLLISION_GROUP_DOOR_BLOCKER 	14 	 	 	Depends 	 	 	Used by prop_door_rotating (creates a entity_blocker entity). Only supposed to collide with COLLISION_GROUP_NPC.
In , also collides with rockets, grenades and certain projectiles.
COLLISION_GROUP_PASSABLE_DOOR 	15 	 	 	 	 	 	Used by func_door and func_door_rotating when the non-solid spawnflag is set.
COLLISION_GROUP_DISSOLVING 	16 	 	 	 	 	 	Set on entities dissolved with env_entity_dissolver. Only collides with COLLISION_GROUP_NONE.
COLLISION_GROUP_PUSHAWAY 	17 	Yes 	 	 	 	 	Set by func_physbox_multiplayer. Also set by prop_physics_multiplayer on spawn and when awakened, if sv_turbophysics is enabled. Collides with COLLISION_GROUP_DEBRIS. Used to push away props from the player in and .
COLLISION_GROUP_NPC_ACTOR 	18 	No 	 	 	 	 	Set on NPCs when they are potentially stuck in a player. Behaves identically to COLLISION_GROUP_NPC if not testing against COLLISION_GROUP_PLAYER.
COLLISION_GROUP_NPC_SCRIPTED 	19 	 	 	 	 	 	Set on NPCs playing out a scripted_sequence, if NPC collisions are set to be disabled.
In , does not collide with other COLLISION_GROUP_NPC_SCRIPTED
Extended collision groups in only:
Name 	Value	Solid to players	Solid to hitscan	Solid to projectiles	Solid to physics	Solid to world	Description
TFCOLLISION_GROUP_GRENADES 	20 	 	 	Depends 	 	 	Set by grenade projectiles. Does not collide with other TFCOLLISIONGROUP_GRENADES and rockets.
TFCOLLISION_GROUP_OBJECT 	21 	Depends 	 	 	 	 	Set by Engineer buildings except teleporters. Uses team-specific contents on players.
TFCOLLISION_GROUP_OBJECT_SOLIDTOPLAYERMOVEMENT 	22 	 	 	 	 	 	Set on teleporters.
TFCOLLISION_GROUP_COMBATOBJECT 	23 	 	 	 	 	 	Set by placed sappers and the medigun shield (entity_medigun_shield).
TFCOLLISION_GROUP_ROCKETS 	24 	 	 	 	 	 	Set by rocket projectiles. Collides with COLLISION_GROUP_PLAYER but not player movement. Does not collide with weapons or any projectiles except rockets. Collides with medigun shields.
TFCOLLISION_GROUP_RESPAWNROOMS 	25 	 	 	 	 	 	Used by func_respawnroom and func_respawnroomvisualizer.
TFCOLLISION_GROUP_PUMPKIN_BOMB 	26 	 	 	 	 	 	Set by team-assigned tf_pumpkin_bombs.
TFCOLLISION_GROUP_ROCKET_BUT_NOT_WITH_OTHER_ROCKETS	27 	 	 	 	 	 	Set by arrows and the Short Circuit's secondary attack (tf_projectile_mechanicalarmorb). Same as TFCOLLISION_GROUP_ROCKETS but doesn't collide with other rockets.
== Table ==