diff --git a/koptilnya/engine_remastered/configs/new_sx240.txt b/koptilnya/engine_remastered/configs/new_sx240.txt index b29ff3c..8ccc60a 100644 --- a/koptilnya/engine_remastered/configs/new_sx240.txt +++ b/koptilnya/engine_remastered/configs/new_sx240.txt @@ -2,9 +2,10 @@ --@author Koptilnya --@server --@include /koptilnya/engine_remastered/vehicle.txt +--@include /koptilnya/engine_remastered/powertrain/differential.txt local Vehicle, POWERTRAIN_COMPONENT = unpack(require('/koptilnya/engine_remastered/vehicle.txt')) - +local Differential = require('/koptilnya/engine_remastered/powertrain/differential.txt') local WheelConfig = { BrakePower = 800, @@ -62,6 +63,7 @@ Vehicle:new({ Input = 'Gearbox', Type = POWERTRAIN_COMPONENT.Differential, Config = { + Type = Differential.TYPES.HLSD, FinalDrive = 3.392, Inertia = 0.01, BiasAB = 0.5, diff --git a/koptilnya/engine_remastered/factories/gearbox.txt b/koptilnya/engine_remastered/factories/gearbox.txt index 9d14a01..25d75e4 100644 --- a/koptilnya/engine_remastered/factories/gearbox.txt +++ b/koptilnya/engine_remastered/factories/gearbox.txt @@ -1,4 +1,4 @@ --- @include ../powertrain/gearboxes/manual.txt +--@include ../powertrain/gearboxes/manual.txt local ManualGearbox = require('../powertrain/gearboxes/manual.txt') diff --git a/koptilnya/engine_remastered/powertrain/differential.txt b/koptilnya/engine_remastered/powertrain/differential.txt index 2f250ab..0deb4db 100644 --- a/koptilnya/engine_remastered/powertrain/differential.txt +++ b/koptilnya/engine_remastered/powertrain/differential.txt @@ -9,6 +9,10 @@ require('/koptilnya/libs/constants.txt') local Differential = class('Differential', PowertrainComponent) +function Differential.getSplitStrategy(type) + return SPLIT_STRATEGIES[type] or SPLIT_STRATEGIES[Differential.TYPES.Open] +end + function Differential:initialize(vehicle, name, config) PowertrainComponent.initialize(self, vehicle, name, config) @@ -24,6 +28,7 @@ function Differential:initialize(vehicle, name, config) self.preload = config.Preload or 10 self.stiffness = config.Stiffness or 0.1 self.slipTorque = config.SlipTorque or 1000 + self.splitStrategy = Differential.getSplitStrategy(config.Type or Differential.TYPES.Open) end function Differential:linkComponent(component) @@ -85,7 +90,7 @@ function Differential:forwardStep(torque, inertia) self.torque = torque * self.finalDrive - local tqA, tqB = self:_openDiffTorqueSplit( + local tqA, tqB = self:splitStrategy( self.torque, aW, bW, @@ -156,4 +161,18 @@ function Differential:_HLSDTorqueSplit(tq, aW, bW, aI, bI, biasAB, preload, stif return tq * (1 - biasAB) - dTq, tq * biasAB + dTq end +Differential.TYPES = { + Open = 'Open', + Locking = 'Locking', + VLSD = 'VLSD', + HLSD = 'HLSD', +} + +SPLIT_STRATEGIES = { + [Differential.TYPES.Open] = Differential._openDiffTorqueSplit, + [Differential.TYPES.Locking] = Differential._lockingDiffTorqueSplit, + [Differential.TYPES.VLSD] = Differential._VLSDTorqueSplit, + [Differential.TYPES.HLSD] = Differential._HLSDTorqueSplit, +} + return Differential