SetSolid()

From Valve Developer Community
Revision as of 12:30, 22 May 2011 by TomEdwards (talk | contribs)
Jump to navigation Jump to search

SetSolid() defines the manner in which this entity's collisions are handled. SetSolidFlags() can be used to tweak behaviour further.

An entity's solid type has no effect whatsoever on its motion (VPhysics or otherwise).

Note.pngNote:Behaviour can change subtly depending on whether the object is colliding or being collided with.

SolidTypes

SOLID_NONE
The entity does not generate its own collisions. Depending on the MoveType, its origin may still collide with brushes but will Touch() unreliably.
Tip.pngTip:Use SetMoveType(MOVETYPE_NOCLIP) to completely disable all movement collision.
SOLID_BSP
The entity has a brush model defined by the map. Does not collide with other SOLID_BSP entities.
SOLID_BBOX
The entity collides with an axis-aligned bounding box. Collides with everything. Required for hitbox tests.
Use UTIL_SetSize() to define the extents of the box.
Icon-Bug.pngBug:Stop calling SetSize if the entity changes to another SolidType, or you will get a crash that disappears when a debugger is attached!  [todo tested in ?]
SOLID_OBB
SOLID_OBB_YAW
The entity collides with an object-aligned bounding box. OBB_YAW restricts orientation to the Z-axis. UTIL_SetSize() can be used to define the box's extents.
SOLID_CUSTOM
TestCollision() is called every frame to handle collisions.
Todo: Relationship with FSOLID_CUSTOMRAYTEST and FSOLID_CUSTOMBOXTEST?
SOLID_VPHYSICS
Loads a collision mesh from the entity's model. This results in the same collision shape as VPhysics would have, without actually enabling VPhysics collisions or simulation.

See also