-- @name Steering -- @author DarkSupah -- @server -- @include ./steering_controller.txt -- @include ./steer_axle.txt -- @include ../libs/constants.txt -- @include ../libs/table.txt require("./steering_controller.txt") require("./steer_axle.txt") require("../libs/constants.txt") require("../libs/table.txt") local frontConfig = { Camber = -5, Caster = 5, Ackermann = 1.1, Lock = 50 } local rearConfig = { Camber = -5, Caster = -5, Ackermann = 1.2, Lock = 5 } -- Fucking slaves, get you ass back here local SLAVES = { E1 = "entity", E2 = "entity", E3 = "entity", E4 = "entity" } local AXLES = {SteerAxle:new(frontConfig, wire.ports.E1, wire.ports.E2), SteerAxle:new(rearConfig, wire.ports.E3, wire.ports.E4)} local INPUTS = { Base = "entity", Seat = "entity" } local OUTPUTS = { SteerNormalized = "number", Driver = "entity" } local ALL_INPUTS = table.merge(INPUTS, SLAVES) wire.adjustPorts(ALL_INPUTS, OUTPUTS) local steeringController = SteeringController:new(wire.ports.Base) hook.add("PlayerEnteredVehicle", "onEnter", function(ply, veh) if veh == steeringController.seat then steeringController:setDriver(ply) end end) hook.add("PlayerLeaveVehicle", "onLeave", function(ply, veh) if veh == steeringController.seat then steeringController:setDriver(NULL_ENTITY) end end) hook.add("think", "update", function() steeringController.seat = wire.ports.Seat wire.ports.Driver = steeringController.driver steeringController:update() end)