Example #1
0
 static string GetDataString(RenderInfo renderInfo, string seperator = "\n")
 {
     if (renderInfo.Type == RenderInfoType.Int32)
     {
         return(string.Join(seperator, renderInfo.GetValueInt32s()));
     }
     else if (renderInfo.Type == RenderInfoType.Single)
     {
         return(string.Join(seperator, renderInfo.GetValueSingles()));
     }
     else
     {
         return(string.Join(seperator, renderInfo.GetValueStrings()));
     }
 }
Example #2
0
        public void LoadDialog(RenderInfo renderInfo, bool dialogOpen, EventHandler onDialogClosed)
        {
            if (ImGui.BeginPopupModal("##render_info_dialog", ref dialogOpen))
            {
                if (!canParse)
                {
                    ImGui.TextColored(new System.Numerics.Vector4(1, 0, 0, 1), $"Failed to parse type {renderInfo.Type}!");
                }

                ImGuiHelper.InputFromText("Name", renderInfo, "Name", 200);

                if (ValuePresets.Count > 0 && renderInfo.Type == RenderInfoType.String)
                {
                    string value = renderInfo.GetValueStrings()[0];
                    if (ImGui.BeginCombo("Presets", ""))
                    {
                        foreach (var val in ValuePresets)
                        {
                            bool isSelected = val == value;
                            if (ImGui.Selectable(val, isSelected))
                            {
                                renderInfo.SetValue(new string[1] {
                                    val
                                });
                            }

                            if (isSelected)
                            {
                                ImGui.SetItemDefaultFocus();
                            }
                        }
                        ImGui.EndCombo();
                    }
                }

                ImGuiHelper.ComboFromEnum <RenderInfoType>("Type", renderInfo, "Type");

                var windowSize = ImGui.GetWindowSize();
                var buffer     = Encoding.UTF8.GetBytes(GetDataString(renderInfo));

                if (ImGui.InputText("Values", buffer, (uint)0x2048, ImGuiInputTextFlags.Multiline))
                {
                    canParse = true;

                    var      text   = Encoding.UTF8.GetString(buffer);
                    string[] values = text.Split('\n');

                    try
                    {
                        if (renderInfo.Type == RenderInfoType.Int32)
                        {
                            int[] data = new int[text.Length];
                            for (int i = 0; i < values.Length; i++)
                            {
                                data[i] = int.Parse(values[i]);
                            }
                            renderInfo.SetValue(data);
                        }
                        else if (renderInfo.Type == RenderInfoType.Single)
                        {
                            float[] data = new float[text.Length];
                            for (int i = 0; i < values.Length; i++)
                            {
                                data[i] = float.Parse(values[i]);
                            }
                            renderInfo.SetValue(data);
                        }
                        else
                        {
                            string[] data = new string[text.Length];
                            for (int i = 0; i < values.Length; i++)
                            {
                                data[i] = values[i];
                            }
                            renderInfo.SetValue(data);
                        }
                    }
                    catch
                    {
                        canParse = false;
                    }
                }

                ImGui.SetCursorPos(new System.Numerics.Vector2(windowSize.X - 110, windowSize.Y - 28));
                if (ImGui.Button("Cancel"))
                {
                    Revert(renderInfo);
                    dialogOpen = false;
                    ImGui.CloseCurrentPopup();
                }
                ImGui.SameLine();
                if (ImGui.Button("Ok"))
                {
                    if (canParse)
                    {
                        onDialogClosed?.Invoke(this, EventArgs.Empty);
                        dialogOpen = false;
                        ImGui.CloseCurrentPopup();
                    }
                }
                ImGui.EndPopup();
            }
        }