using System; using System.Collections.Generic; using System.Numerics; using System.Text; namespace CommonUsage.Chassis { public class DiffSteerWheel:SteerWheel { public DiffSteerWheel(float wheelDistance,Vector2 position, float angleLowerLimit, float angleUpperLimit, Action speedWriter, Func speedReader, Action angleWriter, Func angleReader, Action leftSpeedWriter, Action rightSpeedWriter, float angleLimitMarginDeg = 15f) : base(position, angleLowerLimit, angleUpperLimit, speedWriter, speedReader, angleWriter, angleReader, angleLimitMarginDeg) { _leftSpeedWriter = leftSpeedWriter; _rightSpeedWriter = rightSpeedWriter; WheelDistance = wheelDistance; } public float GetLeftSendSpeed() { return _leftSendSpeed; } public float GetRightSendSpeed() { return _rightSendSpeed; } public void WriteLeftSpeed(float speed) { _leftSpeedWriter(_leftSendSpeed = speed); } public void WriteRightSpeed(float speed) { _rightSpeedWriter(_rightSendSpeed = speed); } public float WheelDistance; private readonly Action _leftSpeedWriter; private readonly Action _rightSpeedWriter; private float _leftSendSpeed; private float _rightSendSpeed; } }