/// <summary> /// Builds the "Select Material" window. /// </summary> /// <param name="menu">The parent window for the window.</param> private void CreateSelector(ToolParameterMenu menu) { if (menu == null) { throw new ArgumentNullException("menu"); } Color32 color = PUITuning.Colors.BackgroundLight; var parent = menu.transform.parent?.gameObject ?? GameScreenManager.Instance. ssOverlayCanvas; // Create a single MaterialSelector which is all we need typeSelect = Util.KInstantiateUI <MaterialSelector>(infoScreen. materialSelectionPanel.MaterialSelectorTemplate, parent); var obj = typeSelect.gameObject; typeSelect.name = "FilteredClearToolMaterials"; // Allow scrolling on the material list Traverse.Create(typeSelect).SetField("ConsumeMouseScroll", true); // Add canvas and renderer obj.AddComponent <Canvas>().renderMode = RenderMode.ScreenSpaceOverlay; obj.AddComponent <CanvasRenderer>(); // Background and hit-test var infoBG = infoScreen.transform.Find("BG"); if (infoBG != null) { var imgComponent = infoBG.GetComponent <Image>(); if (imgComponent != null) { color = imgComponent.color; } obj.AddComponent <Image>().color = color; } obj.AddComponent <GraphicRaycaster>(); // Resize window to match its contents PUIElements.AddSizeFitter(obj); typeSelect.ConfigureScreen(sweepRecipe.Ingredients[0], sweepRecipe); AddEggsAndFoods(); var transform = obj.rectTransform(); // Position transform.pivot = new Vector2(1.0f, 0.0f); transform.localScale = Vector3.one; transform.SetAsFirstSibling(); typeSelect.Activate(); }