Hosting and domain costs until October 2024 have been generously sponsored by dumptruck_ds. Thank you!

traceline

From Quake Wiki

void traceline(vector start, vector end, float collisionType, entity ignore)

Usage[edit]

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[edit]

  • 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 while tracing.

Example[edit]

// 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);