Иван Грачёв f5192ebfff Finished grip steering
2021-09-19 23:38:05 +05:00

30 lines
817 B
Plaintext

Slave = class('Slave')
function Slave:initialize(options)
options = options or {}
self.entity = options.Entity
self.base = options.Base
self.camber = options.Camber
self.caster = options.Caster
self.ackermann = options.Ackermann
self.isLeft = options.IsLeft
self.offset = options.Offset
end
function Slave:rotate(ang)
if self.entity:isFrozen() == false then
self.entity:setFrozen(1)
end
local ackermann = math.sin(math.rad(ang)) ^ 2 * self.ackermann * (self.isLeft and -1 or 1)
local yaw = self.offset + ang + ackermann
local roll = (self.isLeft and 1 or -1) * self.camber - ang / 270 * self.caster
local angle = Angle(0, yaw, roll)
local transformedAngle = self.base:localToWorldAngles(angle)
self.entity:setAngles(transformedAngle)
end