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(); }
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(); }