private void GeneratePresets()
        {
            presets = new List<FARDifficultyAndExactnessSettings>();
            presetNames = new List<string>();

            FARDifficultyAndExactnessSettings tmp = new FARDifficultyAndExactnessSettings(0.6, 0.03, 2, 2, 0);
            presets.Add(tmp);
            presetNames.Add("Low Drag, Lenient Area Ruling");

            tmp = new FARDifficultyAndExactnessSettings(0.7, 0.03, 2, 2, 1);
            presets.Add(tmp);
            presetNames.Add("Moderate Drag, Lenient Area Ruling");

            tmp = new FARDifficultyAndExactnessSettings(0.7, 0.015, 2, 1, 2);
            presets.Add(tmp);
            presetNames.Add("Moderate Drag, Moderate Area Ruling");

            tmp = new FARDifficultyAndExactnessSettings(0.85, 0.015, 2, 1, 3);
            presets.Add(tmp);
            presetNames.Add("High Drag, Moderate Area Ruling");

            tmp = new FARDifficultyAndExactnessSettings(1, 0.015, 2, 1, 4);
            presets.Add(tmp);
            presetNames.Add("Full Drag, Moderate Area Ruling");

            tmp = new FARDifficultyAndExactnessSettings(1, 0.010, 1, 1, 5);
            presets.Add(tmp);
            presetNames.Add("Full Drag, Strict Area Ruling");
        }
        public override void OnLoad(ConfigNode node)
        {
            GeneratePresets();
            int index = 4;
            if (node.HasValue("newGame"))
                newGame = bool.Parse(node.GetValue("newGame"));

            if (node.HasValue("index"))
                index = int.Parse(node.GetValue("index"));

            dropdown = new GUIDropDown<FARDifficultyAndExactnessSettings>(presetNames.ToArray(), presets.ToArray(), index < 0 ? 2 : index);
            voxelSettings = new FARVoxelSettings();

            if (node.HasValue("numVoxelsControllableVessel"))
                voxelSettings.numVoxelsControllableVessel = int.Parse(node.GetValue("numVoxelsControllableVessel"));
            if (node.HasValue("numVoxelsDebrisVessel"))
                voxelSettings.numVoxelsDebrisVessel = int.Parse(node.GetValue("numVoxelsDebrisVessel"));
            if (node.HasValue("minPhysTicksPerUpdate"))
                voxelSettings.minPhysTicksPerUpdate = int.Parse(node.GetValue("minPhysTicksPerUpdate"));

            if (index == -1)
            {
                settings = new FARDifficultyAndExactnessSettings(index);

                if (node.HasValue("fractionTransonicDrag"))
                    settings.fractionTransonicDrag = double.Parse(node.GetValue("fractionTransonicDrag"));
                if (node.HasValue("gaussianVehicleLengthFractionForSmoothing"))
                    settings.gaussianVehicleLengthFractionForSmoothing = double.Parse(node.GetValue("gaussianVehicleLengthFractionForSmoothing"));

                if (node.HasValue("numAreaSmoothingPasses"))
                    settings.numAreaSmoothingPasses = int.Parse(node.GetValue("numAreaSmoothingPasses"));
                if (node.HasValue("numDerivSmoothingPasses"))
                    settings.numDerivSmoothingPasses = int.Parse(node.GetValue("numDerivSmoothingPasses"));

                customSettings = settings;
            }
            else
            {
                settings = presets[index];
                customSettings = new FARDifficultyAndExactnessSettings(-1);
            }
            currentIndex = index;

            Debug.Log("Loading FAR Data");
            flightGUISettings = new List<ConfigNode>();
            if(node.HasNode("FlightGUISettings"))
            {
                foreach (ConfigNode flightGUINode in node.GetNode("FlightGUISettings").nodes)
                    flightGUISettings.Add(flightGUINode);
            }

            FARDebugAndSettings.LoadConfigs(node);
        }
        public override void OnLoad(ConfigNode node)
        {
            Instance = this;
            GeneratePresets();
            int index = 4;
            if (node.HasValue("newGame"))
                newGame = bool.Parse(node.GetValue("newGame"));

            if (node.HasValue("index"))
                index = int.Parse(node.GetValue("index"));

            dropdown = new GUIDropDown<FARDifficultyAndExactnessSettings>(presetNames.ToArray(),
                                                                          presets.ToArray(),
                                                                          index < 0 ? 2 : index);
            voxelSettings = new FARVoxelSettings();

            if (node.HasValue("numVoxelsControllableVessel"))
                voxelSettings.numVoxelsControllableVessel = int.Parse(node.GetValue("numVoxelsControllableVessel"));
            if (node.HasValue("numVoxelsDebrisVessel"))
                voxelSettings.numVoxelsDebrisVessel = int.Parse(node.GetValue("numVoxelsDebrisVessel"));
            if (node.HasValue("minPhysTicksPerUpdate"))
                voxelSettings.minPhysTicksPerUpdate = int.Parse(node.GetValue("minPhysTicksPerUpdate"));
            if (node.HasValue("useHigherResVoxelPoints"))
                voxelSettings.useHigherResVoxelPoints = bool.Parse(node.GetValue("useHigherResVoxelPoints"));
            if (node.HasValue("use32BitIndices"))
                voxelSettings.use32BitIndices = bool.Parse(node.GetValue("use32BitIndices"));

            if (index == -1)
            {
                settings = new FARDifficultyAndExactnessSettings(index);

                if (node.HasValue("fractionTransonicDrag"))
                    settings.fractionTransonicDrag = double.Parse(node.GetValue("fractionTransonicDrag"));
                if (node.HasValue("gaussianVehicleLengthFractionForSmoothing"))
                    settings.gaussianVehicleLengthFractionForSmoothing =
                        double.Parse(node.GetValue("gaussianVehicleLengthFractionForSmoothing"));

                if (node.HasValue("numAreaSmoothingPasses"))
                    settings.numAreaSmoothingPasses = int.Parse(node.GetValue("numAreaSmoothingPasses"));
                if (node.HasValue("numDerivSmoothingPasses"))
                    settings.numDerivSmoothingPasses = int.Parse(node.GetValue("numDerivSmoothingPasses"));


                customSettings = settings;
            }
            else
            {
                settings = presets[index];
                customSettings = new FARDifficultyAndExactnessSettings(-1);
            }

            currentIndex = index;


            FARLogger.Info("Loading FAR Data");
            flightGUISettings = new List<ConfigNode>();
            if (node.HasNode("FlightGUISettings"))
                foreach (ConfigNode flightGUINode in node.GetNode("FlightGUISettings").nodes)
                    flightGUISettings.Add(flightGUINode);

            FARDebugAndSettings.LoadConfigs(node);
        }
        public void DisplaySelection()
        {
            GUILayout.BeginVertical();
            GUILayout.Label("Transonic Drag Settings");
            GUILayout.Label("Absolute magnitude of drag can be scaled, as can how lenient FAR is about enforcing proper area ruling.");

            GUILayout.BeginHorizontal();
            if (currentIndex >= 0)
            {
                dropdown.GUIDropDownDisplay(GUILayout.Width(300));
                settings = dropdown.ActiveSelection;
                currentIndex = settings.index;
            }
            else
            {
                GUILayout.BeginVertical();
                settings = customSettings;
                settings.fractionTransonicDrag = GUIUtils.TextEntryForDouble("Frac Mach 1 Drag: ", 150, settings.fractionTransonicDrag);
                GUILayout.Label("The below are used in controlling leniency of design.  Higher values for all will result in more leniency");
                settings.gaussianVehicleLengthFractionForSmoothing = GUIUtils.TextEntryForDouble("% Vehicle Length for Smoothing", 250, settings.gaussianVehicleLengthFractionForSmoothing);
                settings.numAreaSmoothingPasses = GUIUtils.TextEntryForInt("Smoothing Passes, Cross-Sectional Area", 250, settings.numAreaSmoothingPasses);
                if (settings.numAreaSmoothingPasses < 0)
                    settings.numAreaSmoothingPasses = 0;
                settings.numDerivSmoothingPasses = GUIUtils.TextEntryForInt("Smoothing Passes, area 2nd deriv", 250, settings.numDerivSmoothingPasses);
                if (settings.numDerivSmoothingPasses < 0)
                    settings.numDerivSmoothingPasses = 0;

                customSettings = settings;
                GUILayout.EndVertical();
            }
            if (GUILayout.Button(currentIndex < 0 ? "Switch Back To Presets" : "Choose Custom Settings"))
            {
                if (currentIndex >= 0)
                    currentIndex = -1;
                else
                    currentIndex = 4;
            }
            GUILayout.EndHorizontal();
            GUILayout.Label("Voxel Detail Settings; increasing these will improve accuracy at the cost of performance");

            voxelSettings.numVoxelsControllableVessel = GUIUtils.TextEntryForInt("Voxels Controllable Vessel: ", 200, voxelSettings.numVoxelsControllableVessel);
            if (voxelSettings.numVoxelsControllableVessel < 0)
                voxelSettings.numVoxelsControllableVessel = 100000;

            voxelSettings.numVoxelsDebrisVessel = GUIUtils.TextEntryForInt("Voxels Debris: ", 200, voxelSettings.numVoxelsDebrisVessel);
            if (voxelSettings.numVoxelsDebrisVessel < 0)
                voxelSettings.numVoxelsDebrisVessel = 5000;

            voxelSettings.minPhysTicksPerUpdate = GUIUtils.TextEntryForInt("Min Phys Ticks per Voxel Update: ", 200, voxelSettings.minPhysTicksPerUpdate);
            if (voxelSettings.minPhysTicksPerUpdate < 0)
                voxelSettings.minPhysTicksPerUpdate = 80;

            GUILayout.EndVertical();
        }
예제 #5
0
        public void DisplaySelection()
        {
            GUILayout.BeginVertical();
            GUILayout.Label("Transonic Drag Settings");
            GUILayout.Label("Absolute magnitude of drag can be scaled, as can how lenient FAR is about enforcing proper area ruling.");

            GUILayout.BeginHorizontal();
            if (currentIndex >= 0)
            {
                dropdown.GUIDropDownDisplay(GUILayout.Width(300));
                settings     = dropdown.ActiveSelection;
                currentIndex = settings.index;
            }
            else
            {
                GUILayout.BeginVertical();
                settings = customSettings;
                settings.fractionTransonicDrag = GUIUtils.TextEntryForDouble("Frac Mach 1 Drag: ", 150, settings.fractionTransonicDrag);
                GUILayout.Label("The below are used in controlling leniency of design.  Higher values for all will result in more leniency");
                settings.gaussianVehicleLengthFractionForSmoothing = GUIUtils.TextEntryForDouble("% Vehicle Length for Smoothing", 250, settings.gaussianVehicleLengthFractionForSmoothing);
                settings.numAreaSmoothingPasses = GUIUtils.TextEntryForInt("Smoothing Passes, Cross-Sectional Area", 250, settings.numAreaSmoothingPasses);
                if (settings.numAreaSmoothingPasses < 0)
                {
                    settings.numAreaSmoothingPasses = 0;
                }
                settings.numDerivSmoothingPasses = GUIUtils.TextEntryForInt("Smoothing Passes, area 2nd deriv", 250, settings.numDerivSmoothingPasses);
                if (settings.numDerivSmoothingPasses < 0)
                {
                    settings.numDerivSmoothingPasses = 0;
                }

                customSettings = settings;
                GUILayout.EndVertical();
            }
            if (GUILayout.Button(currentIndex < 0 ? "Switch Back To Presets" : "Choose Custom Settings"))
            {
                if (currentIndex >= 0)
                {
                    currentIndex = -1;
                }
                else
                {
                    currentIndex = 4;
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.Label("Voxel Detail Settings; increasing these will improve accuracy at the cost of performance");

            voxelSettings.numVoxelsControllableVessel = GUIUtils.TextEntryForInt("Voxels Controllable Vessel: ", 200, voxelSettings.numVoxelsControllableVessel);
            if (voxelSettings.numVoxelsControllableVessel < 0)
            {
                voxelSettings.numVoxelsControllableVessel = 100000;
            }

            voxelSettings.numVoxelsDebrisVessel = GUIUtils.TextEntryForInt("Voxels Debris: ", 200, voxelSettings.numVoxelsDebrisVessel);
            if (voxelSettings.numVoxelsDebrisVessel < 0)
            {
                voxelSettings.numVoxelsDebrisVessel = 5000;
            }

            voxelSettings.minPhysTicksPerUpdate = GUIUtils.TextEntryForInt("Min Phys Ticks per Voxel Update: ", 200, voxelSettings.minPhysTicksPerUpdate);
            if (voxelSettings.minPhysTicksPerUpdate < 0)
            {
                voxelSettings.minPhysTicksPerUpdate = 80;
            }

            GUILayout.BeginHorizontal();
            GUILayout.Label("Use Higher Res SubVoxels: ");
            voxelSettings.useHigherResVoxelPoints = GUILayout.Toggle(voxelSettings.useHigherResVoxelPoints, voxelSettings.useHigherResVoxelPoints ? "High Res SubVoxels" : "Low Res SubVoxels");
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();
        }