private void ChangeColor(string colorTitle, ref Color input, ref Texture2D texture) { GUILayout.BeginHorizontal(); GUILayout.Label(colorTitle + " (r,g,b):", GUILayout.Width(80)); bool updateTexture = false; GUILayout.BeginHorizontal(GUILayout.Width(150)); float tmp = input.r; input.r = (float)FARGUIUtils.TextEntryForDouble("", 0, input.r); updateTexture |= tmp != input.r; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.Width(150)); tmp = input.g; input.g = (float)FARGUIUtils.TextEntryForDouble("", 0, input.g); updateTexture |= tmp != input.g; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.Width(150)); tmp = input.b; input.b = (float)FARGUIUtils.TextEntryForDouble("", 0, input.b); updateTexture |= tmp != input.b; GUILayout.EndHorizontal(); if (updateTexture) { ReColorTexture(ref input, ref texture); } Rect textRect = GUILayoutUtility.GetRect(25, 15); textRect.Set(textRect.x, textRect.y + 10, textRect.width, textRect.height); GUI.DrawTexture(textRect, texture); GUILayout.EndHorizontal(); }
private void AeroStressTab(GUIStyle buttonStyle, GUIStyle boxStyle) { int i = 0; int removeIndex = -1; GUILayout.BeginHorizontal(); GUILayout.BeginVertical(boxStyle); for (i = 0; i < FARAeroStress.StressTemplates.Count; i++) { GUILayout.BeginHorizontal(); bool active = GUILayout.Toggle(i == aeroStressIndex, FARAeroStress.StressTemplates[i].name, buttonStyle, GUILayout.Width(150)); if (GUILayout.Button("-", buttonStyle, GUILayout.Width(30), GUILayout.Height(30))) { removeIndex = i; } GUILayout.EndHorizontal(); if (active) { aeroStressIndex = i; } } if (removeIndex >= 0) { FARAeroStress.StressTemplates.RemoveAt(removeIndex); if (aeroStressIndex == removeIndex) { aeroStressIndex--; } removeIndex = -1; } if (GUILayout.Button("+", buttonStyle, GUILayout.Width(30), GUILayout.Height(30))) { FARPartStressTemplate newTemplate = new FARPartStressTemplate(); newTemplate.XZmaxStress = 500; newTemplate.YmaxStress = 500; newTemplate.name = "default"; newTemplate.isSpecialTemplate = false; newTemplate.minNumResources = 0; newTemplate.resources = new List <string>(); newTemplate.excludeResources = new List <string>(); newTemplate.rejectUnlistedResources = false; newTemplate.crewed = false; newTemplate.flowModeNeeded = false; newTemplate.flowMode = ResourceFlowMode.NO_FLOW; FARAeroStress.StressTemplates.Add(newTemplate); } GUILayout.EndVertical(); GUILayout.BeginVertical(boxStyle); FARPartStressTemplate activeTemplate = FARAeroStress.StressTemplates[aeroStressIndex]; string tmp; FARGUIUtils.TextEntryField("Name:", 80, ref activeTemplate.name); activeTemplate.YmaxStress = FARGUIUtils.TextEntryForDouble("Axial (Y-axis) Max Stress:", 240, activeTemplate.YmaxStress); activeTemplate.XZmaxStress = FARGUIUtils.TextEntryForDouble("Lateral (X,Z-axis) Max Stress:", 240, activeTemplate.XZmaxStress); activeTemplate.crewed = GUILayout.Toggle(activeTemplate.crewed, "Requires Crew Compartment"); tmp = activeTemplate.minNumResources.ToString(); FARGUIUtils.TextEntryField("Min Num Resources:", 80, ref tmp); tmp = Regex.Replace(tmp, @"[^\d]", ""); activeTemplate.minNumResources = Convert.ToInt32(tmp); GUILayout.Label("Req Resources:"); StringListUpdateGUI(activeTemplate.resources, buttonStyle, boxStyle); GUILayout.Label("Exclude Resources:"); StringListUpdateGUI(activeTemplate.excludeResources, buttonStyle, boxStyle); activeTemplate.rejectUnlistedResources = GUILayout.Toggle(activeTemplate.rejectUnlistedResources, "Reject Unlisted Res"); activeTemplate.flowModeNeeded = GUILayout.Toggle(activeTemplate.flowModeNeeded, "Requires Specific Flow Mode"); if (activeTemplate.flowModeNeeded) { activeTemplate.flowMode = (ResourceFlowMode)GUILayout.SelectionGrid((int)activeTemplate.flowMode, FlowMode_str, 1); } activeTemplate.isSpecialTemplate = GUILayout.Toggle(activeTemplate.isSpecialTemplate, "Special Hardcoded Usage"); FARAeroStress.StressTemplates[aeroStressIndex] = activeTemplate; GUILayout.EndVertical(); GUILayout.EndHorizontal(); }
private void AeroDataTab(GUIStyle buttonStyle, GUIStyle boxStyle) { int i = 0; GUILayout.BeginVertical(boxStyle); FARAeroUtil.areaFactor = FARGUIUtils.TextEntryForDouble("Area Factor:", 160, FARAeroUtil.areaFactor); FARAeroUtil.attachNodeRadiusFactor = FARGUIUtils.TextEntryForDouble("Node Diameter Factor:", 160, FARAeroUtil.attachNodeRadiusFactor * 2) * 0.5; FARAeroUtil.incompressibleRearAttachDrag = FARGUIUtils.TextEntryForDouble("Rear Node Drag, Incomp:", 160, FARAeroUtil.incompressibleRearAttachDrag); FARAeroUtil.sonicRearAdditionalAttachDrag = FARGUIUtils.TextEntryForDouble("Rear Node Drag, M = 1:", 160, FARAeroUtil.sonicRearAdditionalAttachDrag); FARControllableSurface.timeConstant = FARGUIUtils.TextEntryForDouble("Ctrl Surf Time Constant:", 160, FARControllableSurface.timeConstant); FARControllableSurface.timeConstantFlap = FARGUIUtils.TextEntryForDouble("Flap Time Constant:", 160, FARControllableSurface.timeConstantFlap); FARControllableSurface.timeConstantSpoiler = FARGUIUtils.TextEntryForDouble("Spoiler Time Constant:", 160, FARControllableSurface.timeConstantSpoiler); GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("Celestial Body Atmosperic Properties"); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(boxStyle); GUILayout.BeginHorizontal(); int j = 0; for (i = 0; i < FlightGlobals.Bodies.Count; i++) { CelestialBody body = FlightGlobals.Bodies[i]; if (!body.atmosphere) { continue; } bool active = GUILayout.Toggle(i == atmBodyIndex, body.GetName(), buttonStyle, GUILayout.Width(150), GUILayout.Height(40)); if (active) { atmBodyIndex = i; } if ((j + 1) % 4 == 0) { GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); } j++; } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.BeginVertical(boxStyle); int flightGlobalsIndex = FlightGlobals.Bodies[atmBodyIndex].flightGlobalsIndex; double[] atmProperties = FARAeroUtil.bodyAtmosphereConfiguration[flightGlobalsIndex]; atmProperties[1] = FARGUIUtils.TextEntryForDouble("Ratio of Specific Heats:", 80, atmProperties[1]); double dTmp = 8314.5 / atmProperties[2]; dTmp = FARGUIUtils.TextEntryForDouble("Gas Molecular Mass:", 80, dTmp); atmProperties[2] = 8314.5 / dTmp; atmProperties[0] = atmProperties[1] * atmProperties[2]; atmProperties[3] = FARGUIUtils.TextEntryForDouble("Gas Viscosity:", 80, atmProperties[3]); atmProperties[4] = FARGUIUtils.TextEntryForDouble("Ref Temp for Viscosity:", 80, atmProperties[4]); FARAeroUtil.bodyAtmosphereConfiguration[flightGlobalsIndex] = atmProperties; GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); }