Garry's Mod Wiki

Revision Difference

GM:DrawPhysgunBeam#511356

<function name="DrawPhysgunBeam" parent="GM" type="hook">⤶ <ishook>yes</ishook>⤶ <description>⤶ Allows you to override physgun beam drawing.⤶ ⤶ <bug issue="3294">This is still called when physgun_drawbeams is disabled.</bug>⤶ </description>⤶ <realm>Client</realm>⤶ <predicted>No</predicted>⤶ <args>⤶ <arg name="ply" type="Player">Physgun owner</arg>⤶ <arg name="physgun" type="Weapon">The physgun</arg>⤶ <arg name="enabled" type="boolean">Is the beam enabled</arg>⤶ <arg name="target" type="Entity">Entity we are grabbing. This will be NULL if nothing is being held</arg>⤶ <arg name="physBone" type="number">ID of the physics bone (&lt;page&gt;PhysObj&lt;/page&gt;) we are grabbing at. Use &lt;page&gt;Entity:TranslatePhysBoneToBone&lt;/page&gt; to translate to an actual bone.</arg>⤶ <arg name="hitPos" type="Vector">Beam hit position relative to the physics bone (&lt;page&gt;PhysObj&lt;/page&gt;) we are grabbing.</arg>⤶ </args>⤶ <rets>⤶ <ret name="" type="boolean">Return false to hide default beam</ret>⤶ </rets>⤶ </function>⤶ ⤶ <example>⤶ <description>Example code that will draw a direct line from the physgun to the target.</description>⤶ <code>⤶ hook.Add( "DrawPhysgunBeam", "test", function( ply, wep, enabled, target, bone, deltaPos )⤶ ⤶ -- Draw any physgun effects here that are not the beam.⤶ ⤶ -- Not "firing" the physgun? Don't draw anything.⤶ if ( !enabled ) then return false end⤶ ⤶ local clr = Color( 255, 0, 0 )⤶ ⤶ -- White when not "firing" physgun, this will not work with the "if" above⤶ if ( !enabled ) then clr = Color( 255, 255, 255, 255 ) end⤶ ⤶ local hitpos = ply:GetEyeTrace().HitPos⤶ if ( IsValid( target ) ) then⤶ local mt = target:GetBoneMatrix( bone )⤶ if ( target:TranslatePhysBoneToBone( bone ) &amp;gt;= 0 ) then⤶ mt = target:GetBoneMatrix( target:TranslatePhysBoneToBone( bone ) )⤶ end⤶ ⤶ hitpos = LocalToWorld( deltaPos, Angle( 0, 0, 0 ), mt:GetTranslation(), mt:GetAngles() )⤶ end⤶ ⤶ local srcPos = wep:GetAttachment( 1 ).Pos⤶ if ( !ply:ShouldDrawLocalPlayer() ) then⤶ srcPos = ply:GetViewModel():GetAttachment( 1 ).Pos⤶ end⤶ ⤶ render.DrawLine( srcPos, hitpos, clr )⤶ ⤶ return false -- Hide original physics gun beam⤶ ⤶ end )⤶ </code>⤶ ⤶ </example>