void InitializeAndSubscribeSuspensions() { List <IMyTerminalBlock> units = new List <IMyTerminalBlock>(); ProgramInstance.GridTerminalSystem.GetBlocksOfType <IMyMotorSuspension>(units); foreach (IMyTerminalBlock unit in units) { if (unit.IsSameConstructAs(ProgramInstance.Me) && unit.CubeGrid == ProgramInstance.Me.CubeGrid) { if (unit.CustomName.Contains("Right")) { SuspensionWrapper suspensionWrapper = new SuspensionWrapper(unit as IMyMotorSuspension, ref _controller); ChangeTruckSuspensionParameters += suspensionWrapper.SuspensionParametersChanged; ChangeTruckSuspensionStrength += suspensionWrapper.SuspensionStrengthChanged; _suspensions.Add(suspensionWrapper); } else { SuspensionWrapper suspensionWrapper = new SuspensionWrapper(unit as IMyMotorSuspension, ref _controller) { Side = -1 }; ChangeTruckSuspensionParameters += suspensionWrapper.SuspensionParametersChanged; ChangeTruckSuspensionStrength += suspensionWrapper.SuspensionStrengthChanged; _suspensions.Add(suspensionWrapper); } } } units.Clear(); }
public VehicleWheel(SuspensionWrapper wheel, bool isFront, double steeringAngleMultiplier) { Wheel = wheel; IsFront = isFront; SteeringAngleMultiplier = steeringAngleMultiplier; }