mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-18 14:13:46 +03:00
Upload
This commit is contained in:
86
lua/pac3/core/client/parts/camera.lua
Normal file
86
lua/pac3/core/client/parts/camera.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
local LerpAngle = LerpAngle
|
||||
|
||||
local BUILDER, PART = pac.PartTemplate("base_movable")
|
||||
|
||||
PART.ClassName = "camera"
|
||||
PART.Group = 'entity'
|
||||
PART.Icon = 'icon16/camera.png'
|
||||
|
||||
BUILDER:StartStorableVars()
|
||||
BUILDER:GetSet("EyeAnglesLerp", 1)
|
||||
BUILDER:GetSet("DrawViewModel", false)
|
||||
|
||||
BUILDER:GetSet("NearZ", -1)
|
||||
BUILDER:GetSet("FarZ", -1)
|
||||
BUILDER:GetSet("FOV", -1)
|
||||
BUILDER:EndStorableVars()
|
||||
|
||||
for i, ply in ipairs(player.GetAll()) do
|
||||
ply.pac_cameras = nil
|
||||
end
|
||||
|
||||
function PART:OnShow()
|
||||
local owner = self:GetRootPart():GetOwner()
|
||||
if not owner:IsValid() then return end
|
||||
|
||||
owner.pac_cameras = owner.pac_cameras or {}
|
||||
owner.pac_cameras[self] = self
|
||||
end
|
||||
|
||||
function PART:CalcView(_, _, eyeang, fov, nearz, farz)
|
||||
local pos, ang = self:GetDrawPosition(nil, true)
|
||||
|
||||
ang = LerpAngle(self.EyeAnglesLerp, ang, eyeang)
|
||||
|
||||
if self.NearZ > 0 then
|
||||
nearz = self.NearZ
|
||||
end
|
||||
|
||||
if self.FarZ > 0 then
|
||||
farz = self.FarZ
|
||||
end
|
||||
|
||||
if self.FOV > 0 then
|
||||
fov = self.FOV
|
||||
end
|
||||
|
||||
return pos, ang, fov, nearz, farz
|
||||
end
|
||||
|
||||
BUILDER:Register()
|
||||
|
||||
local temp = {}
|
||||
|
||||
pac.AddHook("CalcView", "camera_part", function(ply, pos, ang, fov, nearz, farz)
|
||||
if not ply.pac_cameras then return end
|
||||
if ply:GetViewEntity() ~= ply then return end
|
||||
|
||||
for _, part in pairs(ply.pac_cameras) do
|
||||
if part:IsValid() then
|
||||
part:CalcShowHide()
|
||||
|
||||
if not part:IsHidden() then
|
||||
pos, ang, fov, nearz, farz = part:CalcView(ply, pos, ang, fov, nearz, farz)
|
||||
temp.origin = pos
|
||||
temp.angles = ang
|
||||
temp.fov = fov
|
||||
temp.znear = nearz
|
||||
temp.zfar = farz
|
||||
temp.drawviewer = not part.DrawViewModel
|
||||
return temp
|
||||
end
|
||||
else
|
||||
ply.pac_cameras[part] = nil
|
||||
end
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user