diff options
Diffstat (limited to 'gamemode/shared/itemsystem/weapons_common.lua')
| -rw-r--r-- | gamemode/shared/itemsystem/weapons_common.lua | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gamemode/shared/itemsystem/weapons_common.lua b/gamemode/shared/itemsystem/weapons_common.lua new file mode 100644 index 0000000..5da9b9a --- /dev/null +++ b/gamemode/shared/itemsystem/weapons_common.lua @@ -0,0 +1,59 @@ + +ART = ART or {} + + +function ART.playermovedir(player) + local vel = player:GetVelocity():GetNormalized() + vel.z = 0 + local swings = { + {player:GetForward(),"forward"}, + {-player:GetForward(),"backward"}, + {player:GetRight(),"right"}, + {-player:GetRight(),"left"} + } + table.sort(swings,function(a,b) + return vel:Dot(a[1]) > vel:Dot(b[1]) + end) + return swings[1][2] +end + +local positionset = {} + +function ART.swingarc(player,times,positions,onhit) + local positionpoints = {} + table.insert(positionset,positionpoints) + local hitents = {} + for k,v in ipairs(times) do + timer.Simple(v,function() + local weaponpos = positions[k] + player:GetPos() + table.insert(positionpoints,weaponpos) + if #positionpoints > 1 then + local tr = util.TraceLine({ + start = positionpoints[#positionpoints-1], + endpos = positionpoints[#positionpoints], + }) + if tr.Hit then + onhit(tr) + end + end + end) + end + timer.Simple(times[#times],function() + print("Inserted swing, drawn positions are now:") + PrintTable(positionset) + end) +end + +hook.Add( "HUDPaint", "weaponswings", function() + cam.Start3D() -- Start the 3D function so we can draw onto the screen. + for k,v in pairs(positionset) do + for i = 1,#v-1 do + render.DrawLine( v[i], v[i+1], Color(255,0,0,255), false ) + end + end + --render.SetMaterial( material ) -- Tell render what material we want, in this case the flash from the gravgun + --render.DrawSprite( pos, 16, 16, white ) -- Draw the sprite in the middle of the map, at 16x16 in it's original colour with full alpha. + cam.End3D() +end ) + +return wcommon |
