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