From ca83cc251580dafa2e2896f61d5097b0645be758 Mon Sep 17 00:00:00 2001 From: Nikita Kruglickiy Date: Thu, 28 Jul 2022 16:06:48 +0300 Subject: [PATCH] Added direction option to wheel config --- koptilnya/engine_remastered/differential.txt | 2 +- koptilnya/engine_remastered/wheel.txt | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/koptilnya/engine_remastered/differential.txt b/koptilnya/engine_remastered/differential.txt index e1d8dea..02f02c1 100644 --- a/koptilnya/engine_remastered/differential.txt +++ b/koptilnya/engine_remastered/differential.txt @@ -24,7 +24,7 @@ function Differential:initialize(config, order) CalculateInertia = true } self.outputA = Wheel:new(wheelConfig, prefix .. 'Left') - self.outputB = Wheel:new(wheelConfig, prefix .. 'Right') + self.outputB = Wheel:new(table.merge(wheelConfig, { Direction = -1 }), prefix .. 'Right') table.merge(self.wireInputs, self.outputA.wireInputs) table.merge(self.wireInputs, self.outputB.wireInputs) diff --git a/koptilnya/engine_remastered/wheel.txt b/koptilnya/engine_remastered/wheel.txt index 8be36fd..50f2491 100644 --- a/koptilnya/engine_remastered/wheel.txt +++ b/koptilnya/engine_remastered/wheel.txt @@ -12,12 +12,13 @@ function Wheel:initialize(config, prefix) PowertrainComponent.initialize(self) self.prefix = prefix + self.direction = config.Direction or 1 self.wireInputs = { [prefix .. 'Wheel'] = 'entity' } self.wireOutputs = { - [prefix .. 'RPM'] = 'number' + [prefix .. 'WheelRPM'] = 'number' } self.entity = NULL_ENTITY @@ -41,7 +42,7 @@ function Wheel:initialize(config, prefix) end function Wheel:updateWireOutputs() - wire.ports[self.prefix .. 'RPM'] = self:selfRPM() + wire.ports[self.prefix .. 'WheelRPM'] = self:getRPM() end function Wheel:queryAngularVelocity() @@ -54,8 +55,8 @@ function Wheel:forwardStep(torque, inertia) end --self.entity:setInertia(self.entity:getInertia():setY(inertia)) - self.entity:applyTorque(torque * self.entity:getRight()) - self.angularVelocity = self.entity:getAngleVelocity().y + self.entity:applyTorque(torque * self.direction * self.entity:getRight()) + self.angularVelocity = self.entity:getAngleVelocity().y * self.direction * TICK_INTERVAL return self.angularVelocity * self.inertia end