/// <summary> /// Initializes this module. Loads custom curve data from persistence if necessary, and updates the engine module with the currently loaded curve. /// </summary> private void initialize() { if (initialized) { return; } initialized = true; if (!string.IsNullOrEmpty(customCurveData)) { //load currentCurve from customCurveData currentCurve = new FloatCurve(); currentCurve.loadSingleLine(customCurveData); } else if (usePresetCurve && !string.IsNullOrEmpty(presetCurveName)) { //load currentCurve from PresetCurve data loadPresetCurve(presetCurveName); customCurveData = ""; } else { //uninitialized module; no custom or preset curve specified, and at least one of the two is mandatory //init to 'linear' curve type usePresetCurve = true; presetCurveName = "Constant"; customCurveData = ""; //load currentCurve from PresetCurve data loadPresetCurve(presetCurveName); } updateEngineCurve(); }
/// <summary> /// Initializes this module. Loads custom curve data from persistence if necessary, and updates the engine module with the currently loaded curve. /// </summary> private void initialize() { if (initialized) { return; } initialized = true; ROELog.debug("Initializing..."); if (currentCurve == null) { ROELog.debug("currentCurve is null"); if (!string.IsNullOrEmpty(customCurveData)) { ROELog.debug("Using customCurveData"); //load currentCurve from customCurveData currentCurve = new FloatCurve(); currentCurve.loadSingleLine(customCurveData); savedCurve = currentCurve.ToStringSingleLine(); thrustCurveName = part.partInfo.title + " Custom"; } else if (usePresetCurve && !string.IsNullOrEmpty(presetCurveName)) { ROELog.debug("Using presetCurve: " + presetCurveName); //load currentCurve from PresetCurve data loadPresetCurve(presetCurveName); thrustCurveName = presetCurveName; customCurveData = ""; } else { ROELog.debug("Using curve from existing Engine Module"); //init to the curve that exists in the engine already ModuleEnginesRF pm = part.Modules.GetModule <ModuleEnginesRF>(); usePresetCurve = true; thrustCurveName = part.partInfo.title + " Curve"; currentCurve = new FloatCurve(); currentCurve.loadSingleLine(pm.thrustCurve.ToStringSingleLine()); savedCurve = currentCurve.ToStringSingleLine(); } } updateEngineCurve(); }
/// <summary> /// Applies the 'currentCurve' to the engine module as its active thrust curve. /// </summary> private void updateEngineCurve() { ROELog.debug("Updating engine curve"); if (currentCurve == null) // Code Error { ROELog.error("currentCurve is null"); return; } foreach (ModuleEnginesRF eng in part.FindModulesImplementing <ModuleEnginesRF>()) { ROELog.debug("currentCurve: " + currentCurve.ToStringSingleLine()); ROELog.debug("savedCurve: " + savedCurve); ROELog.debug("Engine curve set to: " + thrustCurveName); currentCurve = new FloatCurve(); currentCurve.loadSingleLine(savedCurve); eng.thrustCurve = currentCurve; ROELog.debug("savedCurve: " + savedCurve); ROELog.debug("New Curve: " + eng.thrustCurve.ToStringSingleLine()); } }