1
0
mirror of https://github.com/metrostroi-repo/MetrostroiAddon.git synced 2026-05-02 00:42:29 +00:00
Files
MetrostroiAddon/lua/entities/gmod_subway_81-7036/cl_init.lua
g_brzhezinskiy 1d05caf866 init
2021-01-02 12:51:45 +03:00

182 lines
5.0 KiB
Lua

include("shared.lua")
--------------------------------------------------------------------------------
ENT.ClientProps = {}
ENT.ButtonMap = {}
--[[
ENT.ButtonMap["TestDraw"] = {
pos = Vector(455,5,7),
ang = Angle(0,-90,80),
width = 512,
height = 512,
scale = 0.024,
}]]
--------------------------------------------------------------------------------
ENT.ClientPropsInitialized = false
ENT.ClientProps["door1"] = {
model = "models/props_junk/PopCan01a.mdl",
pos = Vector(410,71.1,55.2),
ang = Angle(90,-0,0)
}
--------------------------------------------------------------------------------
-- Add doors
local function GetDoorPosition(i,k,j)
if j == 0
then return Vector(349.0 - 32*k - 230*i,-65*(1-2*k),-2.8)
else return Vector(349.0 - 32*(1-k) - 230*i,-65*(1-2*k),-2.8)
end
end
for i=0,3 do
for k=0,1 do
ENT.ClientProps["door"..i.."x"..k.."a"] = {
model = "models/metrostroi/81/81-7036_door1.mdl",
pos = GetDoorPosition(i,k,0),
ang = Angle(0,180*(1-k),0)
}
ENT.ClientProps["door"..i.."x"..k.."b"] = {
model = "models/metrostroi/81/81-7036_door2.mdl",
pos = GetDoorPosition(i,k,1),
ang = Angle(0,180*(1-k),0)
}
end
end
table.insert(ENT.ClientProps,{
model = "models/metrostroi/81/81-7036_door4.mdl",
pos = Vector(-487.0,-2.2,-4.5),
ang = Angle(0,0,0)
})
table.insert(ENT.ClientProps,{
model = "models/metrostroi/81/81-7036_door3.mdl",
pos = Vector(414.0,65.0,-1.8),
ang = Angle(0,0,0)
})
table.insert(ENT.ClientProps,{
model = "models/metrostroi/81/81-7036_door5.mdl",
pos = Vector(414.3,-65.0,-1.8),
ang = Angle(0,0,0)
})
Metrostroi.RTQuele = {
entries = {}
}
Metrostroi.RTQueleFrame = 0
Metrostroi.PixVisHandle = util.GetPixelVisibleHandle()
local drawn = true
hook.Add("RenderScene","MetrostroiParallelView",function()
Metrostroi.RTQueleFrame = Metrostroi.RTQueleFrame + 1
if #Metrostroi.RTQuele > 0 and Metrostroi.RTQueleFrame > 1/FrameTime()/20*#Metrostroi.RTQuele then
local id = table.remove(Metrostroi.RTQuele,1)
Metrostroi.RTQuele.entries[id]()
Metrostroi.RTQuele.entries[id] = nil
Metrostroi.RTQueleFrame = 0
--print("draw",1/FrameTime())
drawn = false
else
--print("nodraw",1/FrameTime())
end
end)
function Metrostroi.CanRenderCam(RT,func,draw)
if not Metrostroi.RTQuele.entries[RT] and draw then
table.insert(Metrostroi.RTQuele,RT)
Metrostroi.RTQuele.entries[RT] = func
return true
end
return false
end
--------------------------------------------------------------------------------
function ENT:Initialize()
self.BaseClass.Initialize(self)
--[[
self.Cams = {}
for i=1,3 do
self.Cams[i] = self:CreateRT("cam"..i,false,128,128)
end
self.Test = self:CreateRT("cam",true)]]
end
function ENT:Think()
self.BaseClass.Think(self)
--[[
Metrostroi.CanRenderCam("7036cam1", function()
if not IsValid(self) then return end
render.PushRenderTarget(self.Cams[1].rt,0,0,128, 128)
render.Clear(0, 0, 0, 0)
cam.Start2D()
surface.SetDrawColor(200,0,0)
surface.DrawRect(0,0,64,64)
render.RenderView({
origin = self:LocalToWorld(Vector(410,73.1,55.2)), -- change to your liking
angles = self:LocalToWorldAngles(Angle( 0, 180+10, 0 )), -- change to your liking
x = 0,
y = 0,
w = 128,
h = 128,
fov = 70,
} )
surface.SetDrawColor(255,0,0)
surface.DrawRect(0,0,64,64)
cam.End2D()
render.PopRenderTarget()
end,self)
Metrostroi.CanRenderCam("7036cam2", function()
if not IsValid(self) then return end
render.PushRenderTarget(self.Cams[2].rt,0,0,128, 128)
render.Clear(0, 0, 0, 0)
cam.Start2D()
render.RenderView({
origin = self:LocalToWorld(Vector(410,-73.1,55.2)), -- change to your liking
angles = self:LocalToWorldAngles(Angle( 0, 180-10, 0 )), -- change to your liking
x = 0,
y = 0,
w = 128,
h = 128,
fov = 70,
} )
cam.End2D()
render.PopRenderTarget()
end,self)
Metrostroi.CanRenderCam("7036cam3", function()
if not IsValid(self) then return end
render.PushRenderTarget(self.Cams[3].rt,0,0,128, 128)
render.Clear(0, 0, 0, 0)
cam.Start2D()
render.RenderView( {
origin = self:LocalToWorld(Vector(410,0,55.2)), -- change to your liking
angles = self:LocalToWorldAngles(Angle( 0, 180-10, 0 )), -- change to your liking
x = 0,
y = 0,
w = 128,
h = 128,
fov = 70,
} )
cam.End2D()
render.PopRenderTarget()
end)]]
end
function ENT:Draw()
self.BaseClass.Draw(self)
end
function ENT:DrawPost(special)
--[[self:DrawOnPanel("TestDraw",function(...)
surface.SetMaterial(self.Cams[1].mat)
surface.SetDrawColor(255,255,255)
surface.DrawTexturedRect(0,0,256,256,0)
surface.SetMaterial(self.Cams[2].mat)
surface.SetDrawColor(255,255,255)
surface.DrawTexturedRect(256,0,256,256,0)
surface.SetMaterial(self.Cams[3].mat)
surface.SetDrawColor(255,255,255)
surface.DrawTexturedRect(0,256,256,256,0)
end)]]
end
function ENT:OnButtonPressed(button)
if button == "ShowHelp" then
RunConsoleCommand("metrostroi_train_manual")
end
end