SetSolid(): Difference between revisions
Jump to navigation
Jump to search
Note:Behaviour can change subtly depending on whether the object is colliding or being collided with.
TomEdwards (talk | contribs) mNo edit summary |
TomEdwards (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
'''<code>SetSolid()</code>''' defines the manner in which collisions between this entity and others are handled. <code>[[SetSolidFlags()]]</code> can be used to tweak behaviour further. | '''<code>SetSolid()</code>''' defines the manner in which collisions between this entity and others are handled. <code>[[SetSolidFlags()]]</code> can be used to tweak behaviour further. | ||
{{note|Behaviour can change subtly depending on whether the object is colliding or being collided ''with''.}} | |||
== SolidTypes == | == SolidTypes == | ||
; <code>SOLID_NONE</code> | ; <code>SOLID_NONE</code> | ||
: | : The entity does not generate its own collisions. Depending on the [[SetMoveType()|MoveType]], its [[origin]] may still collide with [[brush]]es but will <code>[[Touch()]]</code> unreliably. {{tip|Use <code>SetMoveType(MOVETYPE_NOCLIP)</code> to completely disable all movement collision.}} | ||
; <code>SOLID_BSP</code> | ; <code>SOLID_BSP</code> | ||
: The entity has a [[brush]] model. | : The entity has a [[brush]] model defined by the map. Collides with <code>SOLID_BBOX</code> and <code>SOLID_VPHYSICS</code> objects, but not other <code>SOLID_BSP</code>s. | ||
; <code>SOLID_BBOX</code> | ; <code>SOLID_BBOX</code> | ||
: The entity collides with an axis-aligned [[bounding box]]. Required for [[hitbox]] tests. | : The entity collides with an axis-aligned [[bounding box]]. Collides with everything. Required for [[hitbox]] tests. {{tip|Use <code>[[UTIL_SetSize()]]</code> to define the extents of the box. But remember to stop calling it if the entity changes to another SolidType, or you will get a crash that disappears when a debugger is attached!}} | ||
; <code>SOLID_OBB</code> | ; <code>SOLID_OBB</code> | ||
; <code>SOLID_OBB_YAW</code> | ; <code>SOLID_OBB_YAW</code> | ||
: | : The entity collides with an [[object-aligned bounding box]]. <code>OBB_YAW</code> restricts orientation to Z-axis. {{bug|"Not implemented yet". {{confirm|Functions like <code>SOLID_NONE</code> right now.}}}} | ||
; <code>SOLID_CUSTOM</code> | ; <code>SOLID_CUSTOM</code> | ||
: <code>[[TestCollision()]]</code> is called every frame to handle collisions. | : <code>[[TestCollision()]]</code> is called every frame to handle collisions. {{todo|Relationship with <code>FSOLID_CUSTOMRAYTEST</code> and <code>FSOLID_CUSTOMBOXTEST</code>?}} | ||
; <code>SOLID_VPHYSICS</code> | ; <code>SOLID_VPHYSICS</code> | ||
: Use [[VPhysics]] for collisions. Call <code>[[VPhysicsInitNormal()]]</code> or <code>[[VPhysicsInitShadow()]]</code> if you use this! | : Use [[VPhysics]] for collisions. Collides with everything. Call <code>[[VPhysicsInitNormal()]]</code> or <code>[[VPhysicsInitShadow()]]</code> if you use this! | ||
== See also == | == See also == | ||
Revision as of 03:26, 4 September 2009
SetSolid() defines the manner in which collisions between this entity and others are handled. SetSolidFlags() can be used to tweak behaviour further.
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:Use SetMoveType(MOVETYPE_NOCLIP)to completely disable all movement collision. SOLID_BSP- The entity has a brush model defined by the map. Collides with
SOLID_BBOXandSOLID_VPHYSICSobjects, but not otherSOLID_BSPs. SOLID_BBOX- The entity collides with an axis-aligned bounding box. Collides with everything. Required for hitbox tests.
Tip:Use UTIL_SetSize()to define the extents of the box. But remember to stop calling it if the entity changes to another SolidType, or you will get a crash that disappears when a debugger is attached! SOLID_OBBSOLID_OBB_YAW- The entity collides with an object-aligned bounding box.
OBB_YAWrestricts orientation to Z-axis.
Bug:"Not implemented yet". [todo tested in ?]
Confirm:Functions like SOLID_NONEright now. SOLID_CUSTOMTestCollision()is called every frame to handle collisions.Todo: Relationship withFSOLID_CUSTOMRAYTESTandFSOLID_CUSTOMBOXTEST?SOLID_VPHYSICS- Use VPhysics for collisions. Collides with everything. Call
VPhysicsInitNormal()orVPhysicsInitShadow()if you use this!