Hosting and domain costs until October 2024 have been generously sponsored by dumptruck_ds. Thank you!
Difference between revisions of "traceline"
From Quake Wiki
m (→Usage) |
|||
Line 9: | Line 9: | ||
*'''trace_fraction''' | *'''trace_fraction''' | ||
:The fraction of the total distance the trace traveled before stopping. Ranges from [0, 1]. | :The fraction of the total distance the trace traveled before stopping. Ranges from [0, 1]. | ||
− | * | + | *'''trace_endpos''' |
:The position the trace stopped. | :The position the trace stopped. | ||
*'''trace_plane_normal''' | *'''trace_plane_normal''' |
Revision as of 12:55, 31 July 2023
void traceline(vector start, vector end, float collisionType, entity ignore)
Usage
Fires out a line from the starting position to the ending position, colliding with anything based on the passed collision type. Sets the following globals:
- trace_allsolid
- If
TRUE
, the trace was stuck entirely in solids.
- trace_startsolid
- If
TRUE
, the trace started inside of a solid.
- trace_fraction
- The fraction of the total distance the trace traveled before stopping. Ranges from [0, 1].
- trace_endpos
- The position the trace stopped.
- trace_plane_normal
- The normal of the plane that the trace hit.
- trace_plane_dist
- The distance from the world origin of the plane that the trace hit. This is d in the plane equation ax + by + cz + d = 0.
- trace_ent
- The entity that the trace hit.
- trace_inopen
- If
TRUE
, the trace traveled through open air.
- trace_inwater
- If
TRUE
, the trace traveled through a liquid.
Parameters
- start
- The starting position of the trace.
- end
- The destination position of the trace.
- collisionType
- The type of entities considered valid when checking collision. Can be one of the following:
- 0 - Collide with everything.
- 1 - Only collide with entities that have a solid type of
SOLID_BSP
. - 2 - Collide with everything but use an extended pseudo bounding box against entities with the
FL_MONSTER
flag.
- ignore
- The entity to ignore collision of with while tracing.
Example
// This fires out a trace to see if it hit an entity. If it did, it deals damage traceline(self.origin, self.origin + v_forward*128, 0, self); if (trace_ent && trace_ent.takedamage != DAMAGE_NO) T_Damage(trace_ent, self, self, 20);