Files
wnsrc/lua/entities/lvs_base/cl_init.lua

227 lines
4.3 KiB
Lua
Raw Normal View History

2024-08-04 23:54:45 +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/
--]]
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 )