Forgot staged files

This commit is contained in:
Иван Грачёв 2021-06-06 21:57:41 +05:00
parent bacc7c617f
commit e893f7fcb2
4 changed files with 230 additions and 6 deletions

View File

@ -0,0 +1,47 @@
-- @shared
-- @name Light
-- @include ../helpers/helpers.txt
require("../helpers/helpers.txt")
Light = class("Light")
function Light:initialize(params)
self.target = 0
self.entity = params.Entity
self.colors = params.Colors
self.lerpSpeed = params.LerpSpeed or 0.2
self.active = false
self.entity:setColor(self.colors.Off)
self.entity:suppressEngineLighting(true)
end
function Light:_process()
local targetColor = self.colors.Off
if self.active == true and self.colors.Active then
targetColor = self.target > 0 and self.colors.On or self.colors.Active
elseif self.target > 0 then
targetColor = self.colors.On
end
self.entity:setColor(lerpColor(self.lerpSpeed, self.entity:getColor(), targetColor))
end
function Light:setActive(val)
self.active = val
end
function Light:use(val)
self.target = val or 0
end
function Light:update()
self:_process()
end

View File

@ -0,0 +1,11 @@
function lerpColor(t, from, to)
local clampedT = math.clamp(t, 0, 1)
local outColor = Color(0, 0, 0, 0)
outColor.r = math.lerp(t, from.r, to.r)
outColor.g = math.lerp(t, from.g, to.g)
outColor.b = math.lerp(t, from.b, to.b)
outColor.a = math.lerp(t, from.a, to.a)
return outColor
end

View File

@ -0,0 +1,119 @@
-- @shared
-- @name Lights Controller
-- @include ./entities/light.txt
require("./entities/light.txt")
LightsController = class("LightsController")
function LightsController:initialize(config)
-- self.leftTurnLights = Light:new({ Entity = config.Lights.LeftTurnLights, Colors = config.Colors.TurnLights })
-- self.rightTurnLights = Light:new({ Entity = config.Lights.RightTurnLights, Colors = config.Colors.TurnLights })
self.stopLights = {}
self.reverseLights = {}
self.highBeamLights = {}
self.lowBeamLights = {}
self.fogLights = {}
if config.StopLights then
for _, v in pairs(config.StopLights.Entities) do
table.insert(self.stopLights, Light:new({Entity = v, Colors = config.StopLights.Colors, LerpSpeed = config.StopLights.LerpSpeed}))
end
end
if config.ReverseLights then
for _, v in pairs(config.ReverseLights.Entities) do
table.insert(self.reverseLights, Light:new({Entity = v, Colors = config.ReverseLights.Colors, LerpSpeed = config.StopLights.LerpSpeed}))
end
end
if config.LowBeamLights then
for _, v in pairs(config.LowBeamLights.Entities) do
table.insert(self.lowBeamLights, Light:new({Entity = v, Colors = config.LowBeamLights.Colors, LerpSpeed = config.StopLights.LerpSpeed}))
end
end
if config.HighBeamLights then
for _, v in pairs(config.HighBeamLights.Entities) do
table.insert(self.highBeamLights, Light:new({Entity = v, Colors = config.HighBeamLights.Colors, LerpSpeed = config.StopLights.LerpSpeed}))
end
end
if config.FogLights then
for _, v in pairs(config.FogLights.Entities) do
table.insert(self.fogLights, Light:new({Entity = v, Colors = config.FogLights.Colors, LerpSpeed = config.StopLights.LerpSpeed}))
end
end
-- self.stopLights = Light:new({Entity = config.Lights.StopLights, Colors = config.Colors.StopLights})
-- self.reverseLights = Light:new({Entity = config.Lights.ReverseLights, Colors = config.Colors.ReverseLights})
self.active = false
-- self.colors = config.Colors
-- self.stopLights:setColor(self.colors.StopLight.Off)
-- self.reverseLights:setColor(self.colors.ReverseLights.Off)
self.allLights = {}
table.add(self.allLights, self.stopLights)
table.add(self.allLights, self.reverseLights)
table.add(self.allLights, self.lowBeamLights)
table.add(self.allLights, self.highBeamLights)
table.add(self.allLights, self.fogLights)
end
function LightsController:useStopLights(on)
for _, v in pairs(self.stopLights) do
v:use(on)
end
end
function LightsController:useReverseLights(on)
for _, v in pairs(self.reverseLights) do
v:use(on)
end
end
function LightsController:useLowBeam(on)
for _, v in pairs(self.lowBeamLights) do
v:use(on)
end
end
function LightsController:useHighBeam(on)
for _, v in pairs(self.highBeamLights) do
v:use(on)
end
end
function LightsController:setActive(val)
if self.active ~= val then
local lights = {}
table.add(lights, self.lowBeamLights)
table.add(lights, self.stopLights)
for _, v in pairs(lights) do
v:setActive(val)
end
self.active = val
end
end
function LightsController:update()
for _, v in pairs(self.allLights) do
v:update()
end
-- self.stopLights:update()
-- self.reverseLights:update()
end

View File

@ -2,7 +2,9 @@
-- @name Ford Mustang GT 2015 -- @name Ford Mustang GT 2015
-- @author Opti1337, DarkSupah -- @author Opti1337, DarkSupah
-- @include /koptilnya/mesh_loader/builder.txt -- @include /koptilnya/mesh_loader/builder.txt
-- @include /koptilnya/car_systems/lights_controller.txt
require("/koptilnya/mesh_loader/builder.txt") require("/koptilnya/mesh_loader/builder.txt")
require("/koptilnya/car_systems/lights_controller.txt")
DEBUG_MODE = true DEBUG_MODE = true
@ -23,7 +25,8 @@ local MATERIALS = {
MirrorsAndExhaust = "models/debug/debugwhite", MirrorsAndExhaust = "models/debug/debugwhite",
Lights = "models/debug/debugwhite", Lights = "models/debug/debugwhite",
Glass = "phoenix_storms/glass", Glass = "phoenix_storms/glass",
ExteriorDetails2 = "models/debug/debugwhite" ExteriorDetails2 = "models/debug/debugwhite",
LightsBase = "models/debug/debugwhite"
} }
local COLORS = { local COLORS = {
Interior = Color(40, 40, 40), Interior = Color(40, 40, 40),
@ -40,13 +43,19 @@ local COLORS = {
MirrorsAndExhaust = Color(255, 255, 255), MirrorsAndExhaust = Color(255, 255, 255),
Lights = Color(255, 255, 255), Lights = Color(255, 255, 255),
Glass = Color(255, 255, 255), Glass = Color(255, 255, 255),
ExteriorDetails2 = Color(130, 130, 130) ExteriorDetails2 = Color(130, 130, 130),
LightsBase = Color(255, 255, 255)
} }
local builder = {} local builder = {}
local lightsController = {}
if SERVER then if SERVER then
builder = MeshBuilder:new(LINK) builder = MeshBuilder:new(LINK)
builder.onObjectParsed = function(builder, objectsNames)
printTable(objectsNames)
end
builder:build("Interior_body1_model0", Vector(0), Angle(0), SCALE, COLORS.Interior, MATERIALS.Interior, chip(), chip()) builder:build("Interior_body1_model0", Vector(0), Angle(0), SCALE, COLORS.Interior, MATERIALS.Interior, chip(), chip())
builder:build("Torpedo_body1_model0.001", Vector(0), Angle(0), SCALE, COLORS.Torpedo, MATERIALS.Torpedo, chip(), chip()) builder:build("Torpedo_body1_model0.001", Vector(0), Angle(0), SCALE, COLORS.Torpedo, MATERIALS.Torpedo, chip(), chip())
@ -63,13 +72,50 @@ if SERVER then
builder:build("Lights_body1_model0.012", Vector(0), Angle(0), SCALE, COLORS.Lights, MATERIALS.Lights, chip(), chip()) builder:build("Lights_body1_model0.012", Vector(0), Angle(0), SCALE, COLORS.Lights, MATERIALS.Lights, chip(), chip())
builder:build("Glass_body1_model0.013", Vector(0), Angle(0), SCALE, COLORS.Glass, MATERIALS.Glass, chip(), chip()) builder:build("Glass_body1_model0.013", Vector(0), Angle(0), SCALE, COLORS.Glass, MATERIALS.Glass, chip(), chip())
builder:build("ExteriorDetails_body1_model0.014", Vector(0), Angle(0), SCALE, COLORS.ExteriorDetails, MATERIALS.ExteriorDetails, chip(), chip()) builder:build("ExteriorDetails_body1_model0.014", Vector(0), Angle(0), SCALE, COLORS.ExteriorDetails, MATERIALS.ExteriorDetails, chip(), chip())
builder:build("DoorPanels_body1_model0.003", Vector(0), Angle(0), SCALE, COLORS.Interior, MATERIALS.Interior, chip(), chip())
-- Lights
local StopLights = builder:build("StopLights_body1_model0.016", Vector(0), Angle(0), SCALE, COLORS.LightsBase, MATERIALS.LightsBase, chip(), chip())
local ReverseLights = builder:build("ReverseLight_body1_model0.015", Vector(0), Angle(0), SCALE, COLORS.LightsBase, MATERIALS.LightsBase, chip(), chip())
local LowBeamLights = builder:build("LowBeamLights_body1_model0.006", Vector(0), Angle(0), SCALE, COLORS.LightsBase, MATERIALS.LightsBase, chip(), chip())
local HighBeamLights = builder:build("HighBeamLights_body1_model0.017", Vector(0), Angle(0), SCALE, COLORS.LightsBase, MATERIALS.LightsBase, chip(), chip())
local FogLights = builder:build("FogLights_body1_model0.018", Vector(0), Angle(0), SCALE, COLORS.LightsBase, MATERIALS.LightsBase, chip(), chip())
local result = builder:getResult() local result = builder:getResult()
local lights = {
StopLights = {Entities = {StopLights}, LerpSpeed = 0.2, Colors = {On = Color(250, 0, 0), Off = Color(30, 0, 0), Active = Color(90, 0, 0)}},
ReverseLights = {Entities = {ReverseLights}, LerpSpeed = 0.1, Colors = {On = Color(255, 255, 255), Off = Color(20, 20, 20)}},
LowBeamLights = {Entities = {LowBeamLights}, LerpSpeed = 0.1, Colors = {On = Color(255, 255, 255), Off = Color(20, 20, 20)}},
HighBeamLights = {Entities = {HighBeamLights}, LerpSpeed = 0.1, Colors = {On = Color(255, 255, 255), Off = Color(20, 20, 20)}},
FogLights = {Entities = {FogLights}, LerpSpeed = 0.1, Colors = {On = Color(255, 255, 255), Off = Color(20, 20, 20)}}
}
-- local lightsEntities = {StopLights = {StopLights}, ReverseLights = {ReverseLights}, LowBeamLights = {LowBeamLights}, HighBeamLights = {HighBeamLights}}
-- local lightColors = {StopLights = {On = Color(250, 0, 0), Off = Color(30, 0, 0), Active = Color(90, 0, 0)}, ReverseLights = {On = Color(255, 255, 255), Off = Color(20, 20, 20), Active = Color(20, 20, 20)}}
-- local lights = {Lights = lightsEntities, Colors = lightColors}
lightsController = LightsController:new(lights)
wire.adjustPorts({LightInputs = "table"}, {})
hook.add("think", "lights", function()
lightsController:useStopLights(wire.ports.LightInputs.Stop)
lightsController:useReverseLights(wire.ports.LightInputs.Reverse)
lightsController:useLowBeam(wire.ports.LightInputs.LowBeam)
lightsController:useHighBeam(wire.ports.LightInputs.HighBeam)
lightsController:setActive(wire.ports.LightInputs.LowBeam == 1)
lightsController:update()
end
)
else else
function init() function init()
builder = MeshBuilder:new(LINK) builder = MeshBuilder:new(LINK)
end end
if hasPermission("http.get") and hasPermission("mesh") and hasPermission("entities.setRenderProperty", chip()) then if hasPermission("http.get") and hasPermission("mesh") and hasPermission("entities.setRenderProperty", chip()) then
init() init()
else else
@ -79,6 +125,7 @@ else
if permissionRequestSatisfied() then if permissionRequestSatisfied() then
init() init()
end end
end) end
)
end end
end end