SetSolidFlags(): Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
(other functions)
Line 1: Line 1:
'''<code>SetSolidFlags()</code>''' defines various [[flag]]s that affect the precise nature of an entity's solidity. It is used in conjunction with <code>[[SetSolid()]]</code>.
'''<code>SetSolidFlags()</code>''' implements various [[flag]]s that affect the precise nature of an entity's solidity. It is used in conjunction with <code>[[SetSolid()]]</code>.


Call '''<code>IsSolidFlagSet()</code>''' to test for existing flags.
{{tip|An entity with <code>SetSolidFlags(FSOLID_NOT_SOLID <nowiki>|</nowiki> FSOLID_TRIGGER)</code> generates <code>[[Touch()]]</code> calls without colliding with other objects. This is the behaviour of [[trigger]]s.}}


{{tip|An entity with <code>SetSolidFlags(FSOLID_NOT_SOLID <nowiki>|</nowiki> FSOLID_TRIGGER)</code> generates <code>[[Touch()]]</code> calls without colliding with other objects. This is the behaviour of [[trigger]]s.}}
== Other functions ==
 
; <code>void AddSolidFlags()</code>
; <code>void RemoveSolidFlags()</code>
: Adds or removes flags without affecting those already active.
; <code>[[bool]] IsSolidFlagSet()</code>
: Tests whether a particular flag is set.
; <code>[[int]] GetSolidFlags</code>
: Get the complete SolidFlags [[bitstring]].


== Flags ==
== Flags ==
Line 12: Line 20:
: Ignore solid type + always call into the entity for swept box tests. {{todo}}
: Ignore solid type + always call into the entity for swept box tests. {{todo}}
; <code>FSOLID_NOT_SOLID</code>
; <code>FSOLID_NOT_SOLID</code>
: Allows entity to go non-solid without losing its underlying solid type. {{todo|Any different to <code>[[SetSolid()|SOLID_NONE]]</code>?}}
: Entity becomes non-solid (without losing its underlying SolidType). {{todo|Any different from <code>[[SetSolid()|SOLID_NONE]]</code>?}}
; <code>FSOLID_TRIGGER</code>
; <code>FSOLID_TRIGGER</code>
: <code>[[Touch()]]</code> is triggered even if collisions are disabled.
: <code>[[Touch()]]</code> is triggered even if collisions are disabled.

Revision as of 03:00, 4 September 2009

SetSolidFlags() implements various flags that affect the precise nature of an entity's solidity. It is used in conjunction with SetSolid().

Tip.pngTip:An entity with SetSolidFlags(FSOLID_NOT_SOLID | FSOLID_TRIGGER) generates Touch() calls without colliding with other objects. This is the behaviour of triggers.

Other functions

void AddSolidFlags()
void RemoveSolidFlags()
Adds or removes flags without affecting those already active.
bool IsSolidFlagSet()
Tests whether a particular flag is set.
int GetSolidFlags
Get the complete SolidFlags bitstring.

Flags

FSOLID_CUSTOMRAYTEST
Ignore solid type + always call into the entity for ray tests. [Todo]
FSOLID_CUSTOMBOXTEST
Ignore solid type + always call into the entity for swept box tests. [Todo]
FSOLID_NOT_SOLID
Entity becomes non-solid (without losing its underlying SolidType).
Todo: Any different from SOLID_NONE?
FSOLID_TRIGGER
Touch() is triggered even if collisions are disabled.
FSOLID_NOT_STANDABLE
Players can't stand on this.
Todo: What happens when they try to?
FSOLID_VOLUME_CONTENTS
Contains a volumetric substance like water.
FSOLID_FORCE_WORLD_ALIGNED
Forces the collision rep to be world-aligned even if it's SOLID_BSP or SOLID_VPHYSICS. [Todo]
FSOLID_USE_TRIGGER_BOUNDS
Uses a special trigger bounds separate from the normal OBB. [Todo]
FSOLID_ROOT_PARENT_ALIGNED
Collisions are defined in the root parent's local coordinate space.
FSOLID_TRIGGER_TOUCH_DEBRIS
This FSOLID_TRIGGER entity will also Touch() debris objects.

See also