mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
93
lua/drive/drive_base.lua
Normal file
93
lua/drive/drive_base.lua
Normal file
@@ -0,0 +1,93 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
drive.Register( "drive_base",
|
||||
{
|
||||
--
|
||||
-- You should override these :)
|
||||
-- see drive_noclip.lua for help
|
||||
--
|
||||
Init = function( self, cmd ) end,
|
||||
SetupControls = function( self, cmd ) end,
|
||||
StartMove = function( self, mv, cmd ) end,
|
||||
Move = function( self, mv ) end,
|
||||
FinishMove = function( self, mv ) end,
|
||||
CalcView = function( self, view ) end,
|
||||
|
||||
|
||||
--
|
||||
-- Utility methods
|
||||
--
|
||||
|
||||
|
||||
--
|
||||
-- Call this in your drive method at
|
||||
-- any point to stop driving.
|
||||
--
|
||||
Stop = function( self )
|
||||
self.StopDriving = true
|
||||
end,
|
||||
|
||||
--
|
||||
-- A generic thirdperson view
|
||||
--
|
||||
-- > view - the view passed into CalcView
|
||||
-- > dist - the ideal distance from the center
|
||||
-- > hullsize - the size of the hull to trace so we don't go through walls (0 for no trace)
|
||||
-- > entityfilter - usually the self.Entity - so our trace doesn't hit the entity in question
|
||||
--
|
||||
CalcView_ThirdPerson = function( self, view, dist, hullsize, entityfilter )
|
||||
|
||||
--
|
||||
-- > Get the current position (teh center of teh entity)
|
||||
-- > Move the view backwards the size of the entity
|
||||
--
|
||||
local neworigin = view.origin - self.Player:EyeAngles():Forward() * dist
|
||||
|
||||
|
||||
if ( hullsize && hullsize > 0 ) then
|
||||
|
||||
--
|
||||
-- > Trace a hull (cube) from the old eye position to the new
|
||||
--
|
||||
local tr = util.TraceHull( {
|
||||
start = view.origin,
|
||||
endpos = neworigin,
|
||||
mins = Vector( hullsize, hullsize, hullsize ) * -1,
|
||||
maxs = Vector( hullsize, hullsize, hullsize ),
|
||||
filter = entityfilter
|
||||
} )
|
||||
|
||||
--
|
||||
-- > If we hit something then stop there
|
||||
-- [ stops the camera going through walls ]
|
||||
--
|
||||
if ( tr.Hit ) then
|
||||
neworigin = tr.HitPos
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--
|
||||
-- Set our calculated origin
|
||||
--
|
||||
view.origin = neworigin
|
||||
|
||||
--
|
||||
-- Set the angles to our view angles (not the entities eye angles)
|
||||
--
|
||||
view.angles = self.Player:EyeAngles()
|
||||
|
||||
end
|
||||
|
||||
} )
|
||||
Reference in New Issue
Block a user