Revision Difference
util.TraceHull#512346
<function name="TraceHull" parent="util" type="libraryfunc">⤶
<description>⤶
Performs an AABB hull (axis-aligned bounding box, aka not rotated) trace with the given trace data.⤶
⤶
<note>Clientside entities will not be hit by traces.</note>⤶
⤶
<note>This function may not always give desired results clientside due to certain physics mechanisms not existing on the client. Use it serverside for accurate results.</note>⤶
</description>⤶
<realm>Shared</realm>⤶
<args>⤶
<arg name="TraceData" type="table">The trace data to use. See <page>HullTrace</page></arg>⤶
</args>⤶
<rets>⤶
<ret name="" type="table">Trace result. See <page>TraceResult</page></ret>⤶
</rets>⤶
</function>⤶
⤶
<example>⤶
<description>From a SWEP:PrimaryAttack()</description>⤶
<code>⤶
local tr = util.TraceHull( {⤶
start = self.Owner:GetShootPos(),⤶
endpos = self.Owner:GetShootPos() + ( self.Owner:GetAimVector() * 100 ),⤶
filter = self.Owner,⤶
mins = Vector( -10, -10, -10 ),⤶
maxs = Vector( 10, 10, 10 ),⤶
mask = MASK_SHOT_HULL⤶
} )⤶
</code>⤶
⤶
</example>⤶
⤶
⤶
<example>⤶
<description>Visual representation of a Hull Trace.</description>⤶
<code>⤶
function ENT:Draw()⤶
⤶
self:DrawModel()⤶
⤶
local ent = self⤶
⤶
local mins = ent:OBBMins()⤶
local maxs = ent:OBBMaxs()⤶
local startpos = ent:GetPos()⤶
local dir = ent:GetUp()⤶
local len = 128⤶
⤶
local tr = util.TraceHull( {⤶
start = startpos,⤶
endpos = startpos + dir * len,⤶
maxs = maxs,⤶
mins = mins,⤶
filter = ent⤶
} )⤶
⤶
render.DrawLine( tr.HitPos, startpos + dir * len, color_white, true )⤶
render.DrawLine( startpos, tr.HitPos, Color( 0, 0, 255 ), true )⤶
⤶
local clr = color_white⤶
if ( tr.Hit ) then⤶
clr = Color( 255, 0, 0 )⤶
end⤶
⤶
render.DrawWireframeBox( startpos, Angle( 0, 0, 0 ), mins, maxs, Color( 255, 255, 255 ), true )⤶
render.DrawWireframeBox( tr.HitPos, Angle( 0, 0, 0 ), mins, maxs, clr, true )⤶
⤶
end⤶
</code>⤶
<output></output>⤶
⤶
</example>⤶
⤶
⤶
<example>⤶
<description>Trace a player sized hull to detect if a player can spawn here without getting stuck inside anything.</description>⤶
<code>⤶
local pos = Entity(1):GetPos() -- Choose your position.⤶
⤶
local tr = {⤶
start = pos,⤶
endpos = pos,⤶
mins = Vector( -16, -16, 0 ),⤶
maxs = Vector( 16, 16, 71 )⤶
}⤶
⤶
local hullTrace = util.TraceHull( tr )⤶
if ( hullTrace.Hit ) then⤶
-- Find a new spawnpoint⤶
end⤶
</code>⤶
⤶
</example>