public void Start() { if (!HighLogic.LoadedSceneIsEditor) { RPMVesselComputer comp = RPMVesselComputer.Instance(vessel); comp.SetVesselDescription(vesselDescription); // Make sure we have the description strings parsed. string[] descriptionStrings = vesselDescription.UnMangleConfigText().Split(JUtil.LineSeparator, StringSplitOptions.None); for (int i = 0; i < descriptionStrings.Length; i++) { if (descriptionStrings[i].StartsWith("AG", StringComparison.Ordinal) && descriptionStrings[i][3] == '=') { uint groupID; if (uint.TryParse(descriptionStrings[i][2].ToString(), out groupID)) { descriptionStrings[i] = string.Empty; } } } vesselDescriptionForDisplay = string.Join(Environment.NewLine, descriptionStrings).MangleConfigText(); if (string.IsNullOrEmpty(vesselDescriptionForDisplay)) { vesselDescriptionForDisplay = " "; // Workaround for issue #466. } // Now let's parse our stored strings... if (!string.IsNullOrEmpty(storedStrings)) { var storedStringsArray = storedStrings.Split('|'); comp.SetStoredStrings(storedStringsArray); } // TODO: If there are triggered events, register for an undock // callback so we can void and rebuild the callbacks after undocking. // Although it didn't work when I tried it... if (!string.IsNullOrEmpty(triggeredEvents)) { string[] varstring = triggeredEvents.Split('|'); for (int i = 0; i < varstring.Length; ++i) { comp.AddTriggeredEvent(varstring[i].Trim()); } } } }