Пример #1
0
 /// <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());
            }
        }