mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
93 lines
2.1 KiB
Lua
93 lines
2.1 KiB
Lua
|
|
--[[
|
||
|
|
| 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
|
||
|
|
|
||
|
|
} )
|