public void UpdateParts()
{
// Trigger whenever the number of parts in the vessel changes (like when staging, docking or undocking).
if (vessel.parts.Count == vesselPartCount) return;
var missingHardDisks = false;
var attachedVolumes = new List<Volume>();
var processors = new List<kOSProcessor>();
// Look for all the processors that exists in the vessel
foreach (var partObj in vessel.parts)
{
kOSProcessor processorPart;
if (!PartIsKosProc(partObj, out processorPart)) continue;
processors.Add(processorPart);
// A harddisk may be null because the kOS part haven't been initialized yet
// Wait until the next update and everything should be fine
if (processorPart.HardDisk != null)
{
attachedVolumes.Add(processorPart.HardDisk);
}
else
{
missingHardDisks = true;
break;
}
}
if (missingHardDisks) return;
shared.VolumeMgr.UpdateVolumes(attachedVolumes);
shared.ProcessorMgr.UpdateProcessors(processors);
vesselPartCount = vessel.parts.Count;
}