From aa596db8b752ec0f8edda2e315ab1760bdbb8393 Mon Sep 17 00:00:00 2001 From: Ivan Grachyov Date: Mon, 22 May 2023 21:14:00 +0300 Subject: [PATCH] Added wheels rotation; config for model and offset requires fixing --- .../engine_remastered/configs/new_sx240.txt | 4 ++- .../engine_remastered/powertrain/wheel.txt | 28 +++++++++++-------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/koptilnya/engine_remastered/configs/new_sx240.txt b/koptilnya/engine_remastered/configs/new_sx240.txt index c4a864a..f59ddd0 100644 --- a/koptilnya/engine_remastered/configs/new_sx240.txt +++ b/koptilnya/engine_remastered/configs/new_sx240.txt @@ -8,7 +8,9 @@ local Vehicle, POWERTRAIN_COMPONENT = unpack(require('/koptilnya/engine_remaster local WheelConfig = { BrakePower = 800, - CustomWheel = {} + CustomWheel = {}, + Offset = 90, + Model = 'models/sprops/trans/wheel_d/t_wheel25.mdl' } local FrontWheelsConfig = table.merge(table.copy(WheelConfig), { SteerLock = 10 }) local RearWheelsConfig = table.merge(table.copy(WheelConfig), { HandbrakePower = 2000 }) diff --git a/koptilnya/engine_remastered/powertrain/wheel.txt b/koptilnya/engine_remastered/powertrain/wheel.txt index d26d798..8913c82 100644 --- a/koptilnya/engine_remastered/powertrain/wheel.txt +++ b/koptilnya/engine_remastered/powertrain/wheel.txt @@ -24,11 +24,15 @@ function Wheel:initialize(vehicle, name, config) self.wireOutputs = { [string.format('%s_RPM', self.name)] = 'number', [string.format('%s_Mz', self.name)] = 'number', - [string.format('%s_Fz', self.name)] = 'number' + [string.format('%s_Fz', self.name)] = 'number', } + self.rot = 0 + self.offset = config.Offset or 0 + self.entity = config.Entity or NULL_ENTITY - self.holo = self:createHolo(self.entity) + + self.holo = self:createHolo(self.entity, config.Model or 'models/sprops/trans/wheel_b/t_wheel15.mdl', self.offset) self.customWheel = CustomWheel:new(config.CustomWheel) @@ -58,14 +62,18 @@ function Wheel:getEntityRadius() return self.entity:getModelRadius() * UNITS_TO_METERS end -function Wheel:createHolo(entity) +function Wheel:createHolo(entity, model, offset) if not isValid(entity) then return NULL_ENTITY end - local holo = holograms.create(entity:getPos(), entity:getAngles(), 'models/props_c17/pulleywheels_small01.mdl') + print(model) + + local holo = holograms.create(entity:getPos(), entity:getAngles() + Angle(0, offset, 0), model) holo:setParent(entity) + entity:setColor(Color(0,0,0,0)) + return holo end @@ -105,15 +113,11 @@ function Wheel:forwardStep(torque, inertia) end if isValid(self.holo) then - local angles = self.holo:getAngles() - --local rot = angles:rotateAroundAxis(self.entity:getForward(), nil, 1) - local rot = angles:rotateAroundAxis(self.entity:getRight(), nil, -self.angularVelocity * TICK_INTERVAL) - --local steer = Angle():rotateAroundAxis(self.entity:getUp(), self.customWheel.steerAngle) - --local rot = self.entity:getRight():getQuaternionFromAxis(-self.angularVelocity * TICK_INTERVAL) - --local steer = self.entity:getUp():getQuaternionFromAxis(self.steerAngle) + self.rot = self.rot + math.deg(self.angularVelocity) * TICK_INTERVAL - --self.holo:setAngles(self.entity:localToWorldAngles(Angle(0, 90 - self.customWheel.steerAngle, 0))) - self.holo:setAngles(rot) + local angle = self.entity:localToWorldAngles(Angle(0, self.offset - self.customWheel.steerAngle, self.rot)) + + self.holo:setAngles(angle) end return self.customWheel.counterTorque