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);
        }
Exemplo n.º 2
0
 /// <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);
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Cleans up the "Select Material" window.
 /// </summary>
 private void DestroySelector()
 {
     if (typeSelect != null)
     {
         typeSelect.Deactivate();
     }
     typeSelect = null;
 }
Exemplo n.º 4
0
 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);
    }
Exemplo n.º 6
0
        /// <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();
     });
 }
Exemplo n.º 8
0
 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;
 }
Exemplo n.º 9
0
 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));
         }
     }
 }
Exemplo n.º 10
0
 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();
     }
 }
Exemplo n.º 11
0
 static void Postfix(MaterialSelector __instance)
 {
     __instance.ScrollRect.horizontal = shouldShow;
 }