zombiesurvival-evolved/gamemodes/zombiesurvival/entities/weapons/weapon_zs_cameracontrol/cl_init.lua

104 lines
3.3 KiB
Lua
Raw Permalink Normal View History

INC_CLIENT()
SWEP.ViewModelFOV = 45
SWEP.ViewModelFlip = false
SWEP.BobScale = 0.15
SWEP.SwayScale = 0.15
SWEP.ShowViewModel = false
SWEP.ShowWorldModel = false
SWEP.VElements = {
["base"] = { type = "Model", model = "models/props_c17/tv_monitor01.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "", pos = Vector(7.791, 3.635, -1.558), angle = Angle(0, -118.053, 180), size = Vector(0.1, 0.5, 0.5), color = Color(255, 255, 255, 255), surpresslightning = false, material = "", skin = 0, bodygroup = {} }
}
SWEP.WElements = {
["base"] = { type = "Model", model = "models/props_c17/tv_monitor01.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "", pos = Vector(4.675, 4.5, -1.558), angle = Angle(0, 180, 180), size = Vector(0.1, 0.4, 0.4), color = Color(255, 255, 255, 255), surpresslightning = false, material = "", skin = 0, bodygroup = {} },
["base+"] = { type = "Model", model = "models/props_c17/tv_monitor01_screen.mdl", bone = "ValveBiped.Bip01_R_Hand", rel = "base", pos = Vector(0, 0, 0), angle = Angle(0, 0, 0), size = Vector(0.1, 0.4, 0.4), color = Color(255, 255, 255, 255), surpresslightning = false, material = "effects/tvscreen_noise003a", skin = 0, bodygroup = {} }
}
SWEP.ViewModelBoneMods = {
["ValveBiped.Bip01_R_UpperArm"] = { scale = Vector(1, 1, 1), pos = Vector(0, 4, 3), angle = Angle(0, 0, 0) }
}
function SWEP:Initialize()
self.BaseClass.Initialize(self)
if self:GetOwner() == MySelf then
hook.Add("RenderScene", self, self.RenderScene)
end
end
function SWEP:DrawWeaponSelection(x, y, w, h, alpha)
self:BaseDrawWeaponSelection(x, y, w, h, alpha)
end
local w, h = 320, 256
local x, y = -w / 2, -h / 2
local CamPos = Vector(8, -4, -2)
local CamAng = Angle(180, -28, 90)
local CamScale = 0.025
local CamData = {x = 0, y = 0, w = h * 2, h = h * 2, drawhud = false, drawmonitors = false, drawviewmodel = false, aspectratio = w / h}
local rt = GetRenderTarget("prop_camera", w * 2, h * 2)
local matRT = Material("prop_camera")
local matStatic = Material("zombiesurvival/filmgrain/filmgrain")
local matNoSignal = Material("effects/tvscreen_noise003a")
function SWEP:PostDrawViewModel(vm)
self.BaseClass.PostDrawViewModel(self, vm)
if not vm or not vm:IsValid() then return end
local boneid = vm:LookupBone("ValveBiped.Bip01_R_Hand")
if not boneid or boneid == 0 then return end
local bpos, bang = vm:GetBonePositionMatrixed(boneid)
bpos, bang = LocalToWorld(CamPos, CamAng, bpos, bang)
cam.Start3D2D(bpos, bang, CamScale)
surface.SetDrawColor(255, 255, 255, 255)
local camera = self:GetCamera()
if camera:IsValid() then
matRT:SetTexture("$basetexture", rt)
surface.SetMaterial(matRT)
surface.DrawTexturedRect(x, y, w, h)
surface.SetDrawColor(30, 30, 30, 200)
surface.SetMaterial(matStatic)
surface.DrawTexturedRectUV(x, y, w, h, 2, 2, 0, 0)
else
surface.SetMaterial(matNoSignal)
surface.DrawTexturedRect(x, y, w, h)
end
cam.End3D2D()
end
function SWEP:RenderScene(origin, angles, fov)
if FROM_CAMERA then return end
local camera = self:GetCamera()
if not camera:IsValid() then return end
FROM_CAMERA = camera
CamData.origin = camera:GetPos() + camera:GetUp() * -16
CamData.angles = angles
local originalRT = render.GetRenderTarget()
render.SetRenderTarget(rt)
render.RenderView(CamData)
render.SetRenderTarget(originalRT)
FROM_CAMERA = nil
end
function SWEP:Draw3DHUD(vm, pos, ang)
end
function SWEP:Draw2DHUD()
end