protected override void OnPrefabInit() { Log.Spam($"OnPrefabInit"); base.OnPrefabInit(); titleKey = "STRINGS.UI.UISIDESCREENS.COMBO_SENSOR_SIDESCREEN.TITLE"; var sideScreens = Traverse.Create(DetailsScreen.Instance).Field <List <DetailsScreen.SideScreenRef> >("sideScreens").Value; if (sideScreens == null) { Log.Error("No sideScreens"); return; } Traverse thresholdSwitchSideScreen = null; foreach (var sideScreen in sideScreens) { var component = sideScreen.screenPrefab?.GetComponent <ThresholdSwitchSideScreen>(); if (component != null) { thresholdSwitchSideScreen = Traverse.Create(component); break; } } if (thresholdSwitchSideScreen == null) { Log.Error("No ThresholdSwitchSideScreen"); return; } var locText = thresholdSwitchSideScreen.Field <LocText>("currentValue").Value; var aboveToggle = thresholdSwitchSideScreen.Field <KToggle>("aboveToggle").Value; var belowToggle = thresholdSwitchSideScreen.Field <KToggle>("belowToggle").Value; var thresholdSlider = thresholdSwitchSideScreen.Field <NonLinearSlider>("thresholdSlider").Value; var numberInput = thresholdSwitchSideScreen.Field <KNumberInputField>("numberInput").Value; var dummyPanel = Gui.CreatePanel(); var mainPanel = Gui.CreatePanel(); mainPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); { var groupPanel = Gui.CreatePanel(parent: mainPanel); groupPanel.GetComponent <Image>().color = new Color(0, 0, 0, 0.1f); groupPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); temperatureCurrent = Gui.Create <LocText>(prefab: locText.gameObject, parent: groupPanel); temperatureCurrent.FindOrAddComponent <LayoutElement>().minHeight = 20; var buttonPanel = Gui.CreatePanel(parent: groupPanel); buttonPanel.FindOrAddComponent <HorizontalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); temperatureBelow = Gui.Create <KToggle>(prefab: belowToggle.gameObject, parent: buttonPanel); temperatureAbove = Gui.Create <KToggle>(prefab: aboveToggle.gameObject, parent: buttonPanel); temperatureSlider = Gui.Create <NonLinearSlider>(prefab: thresholdSlider.gameObject, parent: groupPanel); temperatureInput = Gui.Create <KNumberInputField>(prefab: numberInput.gameObject, parent: groupPanel); temperatureInput.FindOrAddComponent <LayoutElement>().minHeight = 30; temperatureInput.transform.Find("UnitsLabel")?.DeleteObject(); } Gui.CreatePanel(parent: mainPanel).FindOrAddComponent <LayoutElement>().minHeight = 5; { var groupPanel = Gui.CreatePanel(parent: mainPanel); groupPanel.GetComponent <Image>().color = new Color(0, 0, 0, 0.1f); groupPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); massCurrent = Gui.Create <LocText>(prefab: locText.gameObject, parent: groupPanel); massCurrent.FindOrAddComponent <LayoutElement>().minHeight = 20; var buttonPanel = Gui.CreatePanel(parent: groupPanel); buttonPanel.FindOrAddComponent <HorizontalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); massBelow = Gui.Create <KToggle>(prefab: belowToggle.gameObject, parent: buttonPanel); massAbove = Gui.Create <KToggle>(prefab: aboveToggle.gameObject, parent: buttonPanel); massSlider = Gui.Create <NonLinearSlider>(prefab: thresholdSlider.gameObject, parent: groupPanel); massInput = Gui.Create <KNumberInputField>(prefab: numberInput.gameObject, parent: groupPanel); massInput.FindOrAddComponent <LayoutElement>().minHeight = 30; massInput.transform.Find("UnitsLabel")?.DeleteObject(); } Gui.CreatePanel(parent: mainPanel).FindOrAddComponent <LayoutElement>().minHeight = 5; { var groupPanel = Gui.CreatePanel(parent: mainPanel); groupPanel.GetComponent <Image>().color = new Color(0, 0, 0, 0.1f); groupPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); germsCurrent = Gui.Create <LocText>(prefab: locText.gameObject, parent: groupPanel); germsCurrent.FindOrAddComponent <LayoutElement>().minHeight = 20; var buttonPanel = Gui.CreatePanel(parent: groupPanel); buttonPanel.FindOrAddComponent <HorizontalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); germsBelow = Gui.Create <KToggle>(prefab: belowToggle.gameObject, parent: buttonPanel); germsAbove = Gui.Create <KToggle>(prefab: aboveToggle.gameObject, parent: buttonPanel); germsSlider = Gui.Create <NonLinearSlider>(prefab: thresholdSlider.gameObject, parent: groupPanel); germsInput = Gui.Create <KNumberInputField>(prefab: numberInput.gameObject, parent: groupPanel); germsInput.FindOrAddComponent <LayoutElement>().minHeight = 30; germsInput.transform.Find("UnitsLabel")?.DeleteObject(); DumpTree(germsInput.gameObject); } Gui.CreatePanel(parent: mainPanel).FindOrAddComponent <LayoutElement>().minHeight = 5; { var groupPanel = Gui.CreatePanel(parent: mainPanel); groupPanel.GetComponent <Image>().color = new Color(0, 0, 0, 0.1f); groupPanel.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); materialCurrent = Gui.Create <LocText>(prefab: locText.gameObject, parent: groupPanel); materialCurrent.FindOrAddComponent <LayoutElement>().minHeight = 20; var buttonPanel = Gui.CreatePanel(parent: groupPanel); buttonPanel.FindOrAddComponent <HorizontalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); materialChecked = Gui.Create <KToggle>(prefab: belowToggle.gameObject, parent: buttonPanel); materialUnchecked = Gui.Create <KToggle>(prefab: aboveToggle.gameObject, parent: buttonPanel); } gameObject.FindOrAddComponent <VerticalLayoutGroup>().padding = new RectOffset(5, 5, 5, 5); LayoutElement layoutElement = gameObject.FindOrAddComponent <LayoutElement>(); layoutElement.minWidth = 150; layoutElement.preferredWidth = 150; layoutElement.minHeight = 450; layoutElement.preferredHeight = 450; mainPanel.transform.SetParent(gameObject.transform); ContentContainer = mainPanel; }