public UIElement MakeMaterialElement(string name, AMaterial value, object CurrentObject, int?fixNameWidth) { var g = MakeDefaultGrid(fixNameWidth); g.Children.Add(MakeDefaultTextBlock(name)); g.Children.Add(SetCP(2, AddToSP(new StackPanel(), VisualizeObject(value, null, true)))); if (sbr is Renderer.MaterialRenderer) { g.RowDefinitions.Add(new RowDefinition()); g.RowDefinitions.Add(new RowDefinition()); var bt = SetCP(2, new Button() { Style = BTStyle, Content = "Change Mat", HorizontalAlignment = HorizontalAlignment.Center }); bt.Click += (_, __) => { var diag = new MaterialSelector(sbr as Renderer.MaterialRenderer); diag.Init(); if (diag.ShowDialog() == true) { if (value.TYPEID() != (diag.result).TYPEID()) { if (value is AAlbedoMat am) { if (diag.result is AAlbedoMat am2) { am2.Albedo = am.Albedo; am2.Emission = am.Emission; } else { (diag.result as AMaterial).Emission = am.Albedo; } } else { if (diag.result is AAlbedoMat am2) { am2.Albedo = value.Emission; } else { (diag.result as AMaterial).Emission = value.Emission; } } } value = diag.result; UpdateCurrentObject(name, value, CurrentObject); (g.Children[1] as StackPanel).Children.Clear(); SetCP(2, AddToSP(g.Children[1] as StackPanel, VisualizeObject(value, null, true))); OnChanges(); } }; bt.SetValue(Grid.RowProperty, 1); //bt.SetValue(Grid.ColumnSpanProperty, 2); g.Children.Add(bt); } return(g); }
/// <summary> /// Applied after SetEffects runs. /// </summary> internal static void Postfix(MaterialSelector __instance, Tag element) { if (__instance.selectorIndex == 0) { // Primary element only buildingInstance?.AddThermalInfo(__instance.MaterialEffectsPane, element); } }
/// <summary> /// Cleans up the "Select Material" window. /// </summary> private void DestroySelector() { if (typeSelect != null) { typeSelect.Deactivate(); } typeSelect = null; }
public static void initialize() { //omni.Util.exec("tools/gui/fileDialogBase.ed.cs",false,false); MessageBoxSaveChangesDlg.initialize(); simViewDlg.initialize(); ColorPickerDlg.initialize(); MaterialSelector.initialize(); ScriptEditorDlg.initialize(); ColladaImportDlg.initialize(); EditorLoadingGui.initialize(); GuiEaseEditDlg.initialize(); GuiObjectInspector.initialize(); UVEditorOverlay.initialize(); }
public bool AutoSelectAvailableMaterial() { bool result = true; for (int i = 0; i < MaterialSelectors.Count; i++) { MaterialSelector materialSelector = MaterialSelectors[i]; if (!materialSelector.AutoSelectAvailableMaterial()) { result = false; } } return(result); }
/// <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(); }
protected override void OnPrefabInit() { elementsWithTag.Clear(); base.OnPrefabInit(); ConsumeMouseScroll = true; for (int i = 0; i < 3; i++) { MaterialSelector materialSelector = Util.KInstantiateUI <MaterialSelector>(MaterialSelectorTemplate, base.gameObject, false); materialSelector.selectorIndex = i; MaterialSelectors.Add(materialSelector); } MaterialSelectors[0].gameObject.SetActive(true); MaterialSelectorTemplate.SetActive(false); ResearchRequired.SetActive(false); priorityScreen = Util.KInstantiateUI <PriorityScreen>(priorityScreenPrefab.gameObject, priorityScreenParent, false); priorityScreen.InstantiateButtons(OnPriorityClicked, true); Game.Instance.Subscribe(-107300940, delegate { RefreshSelectors(); }); }
public FilteredClearTool() { optionState = null; // Require 0 of any solid sweepRecipe = new Recipe() { Name = SweepByTypeStrings.MATERIAL_TYPE, recipeDescription = SweepByTypeStrings.MATERIAL_TYPE, Ingredients = new List <Recipe.Ingredient>() { new Recipe.Ingredient(GameTags.Solid, float.Epsilon) } }; toolOptions = new List <PToolMode>(2) { new PToolMode(SweepByTypeStrings.TOOL_KEY_DEFAULT, SweepByTypeStrings. TOOL_MODE_DEFAULT, ToolToggleState.On), new PToolMode(SweepByTypeStrings.TOOL_KEY_FILTERED, SweepByTypeStrings. TOOL_MODE_FILTERED) }; typeSelect = null; }
private void ActivateAppropriateTool(BuildingDef def) { Debug.Assert((UnityEngine.Object)def != (UnityEngine.Object)null, "def was null"); if (materialSelectionPanel.AllSelectorsSelected() && BuildRequirementsMet(def)) { onElementsFullySelected.Signal(); } else if (!MaterialSelector.AllowInsufficientMaterialBuild() && !DebugHandler.InstantBuildMode) { if ((UnityEngine.Object)PlayerController.Instance.ActiveTool == (UnityEngine.Object)BuildTool.Instance) { BuildTool.Instance.Deactivate(); } if ((UnityEngine.Object)PlanScreen.Instance != (UnityEngine.Object)null) { PrebuildTool.Instance.Activate(def, PlanScreen.Instance.BuildableState(def)); } if ((UnityEngine.Object)BuildMenu.Instance != (UnityEngine.Object)null) { PrebuildTool.Instance.Activate(def, BuildMenu.Instance.BuildableState(def)); } } }
private void Update() { if (!DebugHandler.InstantBuildMode && !Game.Instance.SandboxModeActive && (UnityEngine.Object)currentDef != (UnityEngine.Object)null && materialSelectionPanel.CurrentSelectedElement != (Tag)null && !MaterialSelector.AllowInsufficientMaterialBuild() && currentDef.Mass[0] > WorldInventory.Instance.GetAmount(materialSelectionPanel.CurrentSelectedElement)) { materialSelectionPanel.AutoSelectAvailableMaterial(); } }
static void Postfix(MaterialSelector __instance) { __instance.ScrollRect.horizontal = shouldShow; }