mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
226
lua/entities/lvs_base/cl_init.lua
Normal file
226
lua/entities/lvs_base/cl_init.lua
Normal file
@@ -0,0 +1,226 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
include("shared.lua")
|
||||
include( "sh_weapons.lua" )
|
||||
include( "cl_effects.lua" )
|
||||
include( "cl_hud.lua" )
|
||||
include( "cl_seatswitcher.lua" )
|
||||
include( "cl_trailsystem.lua" )
|
||||
include( "cl_boneposeparemeter.lua" )
|
||||
|
||||
local Zoom = 0
|
||||
|
||||
function ENT:LVSCalcFov( fov, ply )
|
||||
|
||||
local TargetZoom = ply:lvsKeyDown( "ZOOM" ) and 0 or 1
|
||||
|
||||
Zoom = Zoom + (TargetZoom - Zoom) * RealFrameTime() * 10
|
||||
|
||||
local newfov = fov * Zoom + (self.ZoomFov or 40) * (1 - Zoom)
|
||||
|
||||
return newfov
|
||||
end
|
||||
|
||||
function ENT:LVSCalcView( ply, pos, angles, fov, pod )
|
||||
return LVS:CalcView( self, ply, pos, angles, fov, pod )
|
||||
end
|
||||
|
||||
function ENT:PreDraw( flags )
|
||||
return true
|
||||
end
|
||||
|
||||
function ENT:PreDrawTranslucent( flags )
|
||||
return true
|
||||
end
|
||||
|
||||
function ENT:PostDraw( flags )
|
||||
end
|
||||
|
||||
function ENT:PostDrawTranslucent( flags )
|
||||
end
|
||||
|
||||
function ENT:Draw( flags )
|
||||
if self:PreDraw( flags ) then
|
||||
if self.lvsLegacyDraw then
|
||||
self:DrawModel() -- ugly, but required in order to fix old addons. Refract wont work on these.
|
||||
else
|
||||
self:DrawModel( flags )
|
||||
end
|
||||
end
|
||||
|
||||
self:PostDraw( flags )
|
||||
end
|
||||
|
||||
function ENT:DrawTranslucent( flags )
|
||||
self:DrawTrail()
|
||||
|
||||
if self:PreDrawTranslucent( flags ) then
|
||||
self:DrawModel( flags )
|
||||
else
|
||||
self.lvsLegacyDraw = true -- insert puke simley
|
||||
end
|
||||
|
||||
self:PostDrawTranslucent( flags )
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:OnSpawn()
|
||||
|
||||
if not istable( self.GibModels ) then return end
|
||||
|
||||
for _, modelName in ipairs( self.GibModels ) do
|
||||
util.PrecacheModel( modelName )
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:OnSpawn()
|
||||
end
|
||||
|
||||
function ENT:OnFrameActive()
|
||||
end
|
||||
|
||||
function ENT:OnFrame()
|
||||
end
|
||||
|
||||
function ENT:OnEngineActiveChanged( Active )
|
||||
end
|
||||
|
||||
function ENT:OnActiveChanged( Active )
|
||||
end
|
||||
|
||||
ENT._oldActive = false
|
||||
ENT._oldEnActive = false
|
||||
|
||||
function ENT:HandleActive()
|
||||
local EntTable = self:GetTable()
|
||||
|
||||
local Active = self:GetActive()
|
||||
local EngineActive = self:GetEngineActive()
|
||||
local ActiveChanged = false
|
||||
|
||||
if EntTable._oldActive ~= Active then
|
||||
EntTable._oldActive = Active
|
||||
EntTable:OnActiveChanged( Active )
|
||||
ActiveChanged = true
|
||||
end
|
||||
|
||||
if EntTable._oldEnActive ~= EngineActive then
|
||||
EntTable._oldEnActive = EngineActive
|
||||
self:OnEngineActiveChanged( EngineActive )
|
||||
ActiveChanged = true
|
||||
end
|
||||
|
||||
if ActiveChanged then
|
||||
if Active or EngineActive then
|
||||
self:StartWindSounds()
|
||||
else
|
||||
self:StopWindSounds()
|
||||
end
|
||||
end
|
||||
|
||||
if Active or EngineActive then
|
||||
self:DoVehicleFX()
|
||||
end
|
||||
|
||||
self:FlyByThink()
|
||||
|
||||
return EngineActive
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
if not self:IsInitialized() then return end
|
||||
|
||||
if self:HandleActive() then
|
||||
self:OnFrameActive()
|
||||
end
|
||||
|
||||
self:HandleTrail()
|
||||
self:OnFrame()
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
self:StopEmitter()
|
||||
self:StopWindSounds()
|
||||
self:StopFlyBy()
|
||||
self:StopDeathSound()
|
||||
|
||||
self:OnRemoved()
|
||||
end
|
||||
|
||||
function ENT:OnRemoved()
|
||||
end
|
||||
|
||||
function ENT:CalcDoppler( Ent )
|
||||
if not IsValid( Ent ) then return 1 end
|
||||
|
||||
if Ent:IsPlayer() then
|
||||
local ViewEnt = Ent:GetViewEntity()
|
||||
local Vehicle = Ent:lvsGetVehicle()
|
||||
|
||||
if IsValid( Vehicle ) then
|
||||
if Ent == ViewEnt then
|
||||
Ent = Vehicle
|
||||
end
|
||||
else
|
||||
if IsValid( ViewEnt ) then
|
||||
Ent = ViewEnt
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local sVel = self:GetVelocity()
|
||||
local oVel = Ent:GetVelocity()
|
||||
|
||||
local SubVel = oVel - sVel
|
||||
local SubPos = self:GetPos() - Ent:GetPos()
|
||||
|
||||
local DirPos = SubPos:GetNormalized()
|
||||
local DirVel = SubVel:GetNormalized()
|
||||
|
||||
local A = math.acos( math.Clamp( DirVel:Dot( DirPos ) ,-1,1) )
|
||||
|
||||
return (1 + math.cos( A ) * SubVel:Length() / 13503.9)
|
||||
end
|
||||
|
||||
function ENT:GetCrosshairFilterEnts()
|
||||
if not self:IsInitialized() then return { self } end -- wait for the server to be ready
|
||||
|
||||
if not istable( self.CrosshairFilterEnts ) then
|
||||
self.CrosshairFilterEnts = {self}
|
||||
|
||||
-- lets ask the server to build the filter for us because it has access to constraint.GetAllConstrainedEntities()
|
||||
net.Start( "lvs_player_request_filter" )
|
||||
net.WriteEntity( self )
|
||||
net.SendToServer()
|
||||
end
|
||||
|
||||
return self.CrosshairFilterEnts
|
||||
end
|
||||
|
||||
function ENT:FlyByThink()
|
||||
end
|
||||
|
||||
function ENT:StopFlyBy()
|
||||
end
|
||||
|
||||
function ENT:StopDeathSound()
|
||||
end
|
||||
|
||||
function ENT:OnDestroyed()
|
||||
end
|
||||
|
||||
net.Receive( "lvs_vehicle_destroy", function( len )
|
||||
local ent = net.ReadEntity()
|
||||
|
||||
if not IsValid( ent ) or not isfunction( ent.OnDestroyed ) then return end
|
||||
|
||||
ent:OnDestroyed()
|
||||
end )
|
||||
Reference in New Issue
Block a user