Files
wnsrc/lua/drive/drive_base.lua

93 lines
2.1 KiB
Lua
Raw Normal View History

2024-08-04 22:55:00 +03:00
--[[
| 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
} )