public void BuildInspectorUI(UIBuilder ui) { WorkerInspector.BuildInspectorUI(this, ui); ui.Button("Random Color Particle", (b, e) => { RandomColorGenerator(); }); ui.Button("Random Alpha Particle", (b, e) => { RandomAlphaGenerator(); }); ui.Button("Random Color and Alpha Particle", (b, e) => { RandomColorAlphaGenerator(); }); }
public void BuildInspectorUI(UIBuilder ui) { WorkerInspector.BuildInspectorUI(this, ui); ui.Button("Generate Component and LogiX visuals", GeneratePressed); ui.Button("Generate Wiki InfoBoxes and tables", (b, e) => { GenerateInfoBoxes(); }); ui.Button("Generate Wiki Index pages", (b, e) => { GenerateWikiIndexPages(); }); ui.Button("Capture Image", (b, e) => { CaptureImage(); }); componentProgress = ui.Text("0/0", true, Alignment.MiddleCenter, false); }
public void BuildInspectorUI(UIBuilder ui) { WorkerInspector.BuildInspectorUI((Worker)this, ui); ui.Button("import EPUB", (button, data) => { ImportEPUB(); }); output = ui.Text("", true, Alignment.MiddleLeft, false); Message("Ready for import..."); }
// We've registered this component as an ICustomInspector, this means we can add stuff to it's inspector UI, Like the "Split"/"Merge" buttons on MeshRenderer. public void BuildInspectorUI(UIBuilder ui) { //Build the standard UI WorkerInspector.BuildInspectorUI(this, ui); /** Add a button, called "Pull Links", it uses a bunch of wizardry to run the PullLinks method as a task. * But I'm not sure if I'm doing this correctly. */ ui.Button("Pull Links", (b, e) => { StartTask(async () => { await PullLinks(); }); }); }
public void BuildInspectorUI(UIBuilder ui) { if (_gradientTexture == null || _gradientTexture.IsDisposed) { _gradientTexture = ui.Root.AttachComponent <GradientStripTexture>(); _gradientTexture.Format.Value = TextureFormat.RGB24; UpdateGradient(); } WorkerInspector.BuildInspectorUI(this, ui); ui.RawImage(_gradientTexture); ui.Button("Generate Particle", (b, e) => { GenerateParticle(); }); }
private async Task <Rect> BuildComponentUI(Component targetInstance) { UIBuilder ui = new UIBuilder(VisualSlot, 800, 5000, 0.1f); ui.Style.MinHeight = 30f; ui.Style.ForceExpandHeight = false; ui.Image(new color(141 / 255.0f, 186 / 255.0f, 104 / 255.0f)); ui.VerticalLayout(4f, 0, Alignment.TopLeft); ui.Style.MinHeight = 30f; ui.Style.PreferredHeight = 30f; ui.Style.ForceExpandHeight = true; VerticalLayout content = ui.VerticalLayout(4f, 10f, Alignment.TopLeft); ui.Style.ChildAlignment = Alignment.TopLeft; { ui.HorizontalLayout(4f); ui.Style.FlexibleWidth = 1000f; ui.Button("<b>" + targetInstance.GetType().GetNiceName() + "</b>", color.White); ui.Style.FlexibleWidth = 0.0f; ui.Style.MinWidth = 32f; ui.Button("D", MathX.Lerp(color.Green, color.White, 0.7f)); ui.Button("X", MathX.Lerp(color.Red, color.White, 0.7f)); ui.NestOut(); } if (targetInstance is ICustomInspector customInspector) { ui.Style.MinHeight = 24f; customInspector.BuildInspectorUI(ui); } else { WorkerInspector.BuildInspectorUI(targetInstance, ui); } await new Updates(5); return(content.RectTransform.BoundingRect); }
public Slot buildLayerUI(string name, string type, Slot slot, int depth) { UIBuilder uiBuilder3 = new UIBuilder(slot); uiBuilder3.Style.ForceExpandHeight = false; uiBuilder3.Style.ChildAlignment = Alignment.TopLeft; uiBuilder3.HorizontalLayout(4f, 0.0f, new Alignment?()); uiBuilder3.Style.MinHeight = 32f; uiBuilder3.Style.MinWidth = 32f; Button button1 = uiBuilder3.Button(); Expander expander = button1.Slot.AttachComponent <Expander>(true); TextExpandIndicator textExpandIndicator = button1.Slot.AttachComponent <TextExpandIndicator>(true); textExpandIndicator.Text.Target = (IField <string>)button1.Slot.GetComponentInChildren <Text>((Predicate <Text>)null, false).Content; uiBuilder3.Style.FlexibleWidth = 100f; Text text = uiBuilder3.Text(name, true, Alignment.MiddleLeft, true, (string)null); Button button2 = text.Slot.AttachComponent <Button>(true, (Action <Button>)null); MethodInfo privMethod = logixNodeSelector.GetType().GetMethod("OnOpenCategoryPressed", BindingFlags.NonPublic | BindingFlags.Instance); ButtonEventHandler <string> action = (ButtonEventHandler <string>)Delegate.CreateDelegate(typeof(ButtonEventHandler <string>), logixNodeSelector, privMethod); button2.SetupAction <string>(action, type, 0.3f); InteractionElement.ColorDriver colorDriver = button2.ColorDrivers.Add(); colorDriver.ColorDrive.Target = (IField <color>)text.Color; colorDriver.NormalColor.Value = color.Black; colorDriver.HighlightColor.Value = color.Blue; colorDriver.PressColor.Value = color.Cyan; //button2.SetupAction(new ButtonEventHandler(this.OnSlotNamePressed), 0.0f); //this._slotNameText.Target = text; uiBuilder3.Style.FlexibleWidth = -1f; uiBuilder3.NestOut(); uiBuilder3.Style.MinHeight = -1f; HorizontalLayout horizontalLayout = uiBuilder3.HorizontalLayout(4f, 0.0f, new Alignment?()); uiBuilder3.Style.MinWidth = 32f; uiBuilder3.Empty("Spacer"); uiBuilder3.Style.FlexibleWidth = 100f; //uiBuilder3.VerticalLayout(4f, 0.0f, new Alignment?()); Slot childrenSlot = uiBuilder3.VerticalLayout(4f, 0.0f, new Alignment?()).Slot; expander.SectionRoot.Target = horizontalLayout.Slot; textExpandIndicator.SectionRoot.Target = horizontalLayout.Slot; textExpandIndicator.ChildrenRoot.Target = childrenSlot; //if (depth<2) buildHierarchyLevel(childrenSlot, depth+1); expander.IsExpanded = false; //slot.ActiveSelf = depth == 0; return(childrenSlot); }
protected override void OnAttach() { base.OnAttach(); sep = "\t"; //CONTAINING SLOT AND BASE CANVAS mainSlot = this.LocalUserSpace.AddSlot("LogiX Node Browser"); NeosPanel neosPanel = mainSlot.AttachComponent <NeosPanel>(true, (Action <NeosPanel>)null); neosPanel.Title = "Logix/Componer browser"; neosPanel.Padding.Value = 0.005f; neosPanel.ZPadding.Value = 0.005f; neosPanel.Thickness.Value = 0.01f; neosPanel.AddCloseButton(); neosPanel.AddParentButton(); UIBuilder uiBuilder1 = new UIBuilder(neosPanel.ContentSlot, 1000f, 1000f, 0.0005f); //Canvas component = neosPanel.ContentSlot.GetComponent<Canvas>((Predicate<Canvas>)null, false); color color1 = new color(1f, 1f, 1f, 0.2f); uiBuilder1.Panel(in color1, false); //Search Footer RectTransform searchFooter, mainContent; uiBuilder1.HorizontalFooter(64f, out searchFooter, out mainContent); UIBuilder searchUI = new UIBuilder(searchFooter); TextField textfield = searchUI.TextField(); Action sendRequest = this.BuildSearchLogix(textfield.Text.Content.ReferenceID); var editorEvents = textfield.Slot.AddSlot("logix").AttachComponent <Interaction.TextEditorEvents>(); editorEvents.Source.Value = textfield.Editor; editorEvents.EditingFinished.Target = sendRequest; //MAIN CONTENT //Horizontal split List <RectTransform> rectTransformList = (new UIBuilder(mainContent)).SplitHorizontally(0.4f, 0.6f); //RIGHT SIDE Slot rightSlot = rectTransformList[1].Slot; logixNodeSelector = rightSlot.AttachComponent <LogixNodeSelector2>(); Slot contentSlot = rightSlot.FindChild(s => s.Name == "Content"); Slot containerSlot = contentSlot[0]; nodesContainerSlot = containerSlot; contentSlot.ActiveSelf = false; rightSlot.FindChild(s => s.Name == "Panel").Destroy(); rightSlot.FindChild(s => s.Name == "Handle").Destroy(); rightSlot.FindChild(s => s.Name == "Header").Destroy(); rightSlot.FindChild(s => s.Name == "HandleAnchor").Destroy(); containerSlot.Parent = rightSlot; //LEFT SIDE RectTransform hierarchyHeader, nodeHierarchy; Slot leftSlot = rectTransformList[0].Slot; UIBuilder uiBuilder2 = new UIBuilder(leftSlot); //header uiBuilder2.HorizontalHeader(64f, out hierarchyHeader, out nodeHierarchy); UIBuilder uiBuilder3 = new UIBuilder(hierarchyHeader); uiBuilder3.HorizontalLayout(4f, 0.0f, 4f, 0.0f, 4f, new Alignment?()); uiBuilder3.Style.FlexibleWidth = 100f; //hierarchyHeader = uiBuilder3.CurrentRect; uiBuilder3.HorizontalLayout(4f, 0.0f, 0.0f, 4.0f, 0.0f); //hierarchy container UIBuilder uiBuilderContent = new UIBuilder(nodeHierarchy); color color2 = new color(1f, 1f, 1f, 0.2f); uiBuilderContent.Panel(in color2, false); //nodeHierarchy = uiBuilderContent.CurrentRect; uiBuilderContent.ScrollArea(new Alignment?()); uiBuilderContent.VerticalLayout(4.0f, 0.0f, Alignment.TopLeft); uiBuilderContent.FitContent(SizeFit.Disabled, SizeFit.MinSize); componentHierarchy = uiBuilderContent.CurrentRect.Slot; logixHierarchy = componentHierarchy.Duplicate(); //Logix/Comp buttons uiBuilder3.Style.FlexibleWidth = -1f; uiBuilder3.Style.MinWidth = 64f; Button logixButton = uiBuilder3.Button("LogiX"); var component1 = logixButton.Slot.AttachComponent <ButtonValueSet <bool> >(); component1.TargetValue.Target = logixHierarchy.ActiveSelf_Field; component1.SetValue.Value = true; var component2 = logixButton.Slot.AttachComponent <ButtonValueSet <bool> >(); component2.TargetValue.Target = componentHierarchy.ActiveSelf_Field; component2.SetValue.Value = false; Button compButton = uiBuilder3.Button("Comps"); var component3 = compButton.Slot.AttachComponent <ButtonValueSet <bool> >(); component3.TargetValue.Target = logixHierarchy.ActiveSelf_Field; component3.SetValue.Value = false; var component4 = compButton.Slot.AttachComponent <ButtonValueSet <bool> >(); component4.TargetValue.Target = componentHierarchy.ActiveSelf_Field; component4.SetValue.Value = true; components_string2 = "NiceName" + sep + "Name" + sep + "FullName" + sep + "Folder" + sep + "Description" + sep + "Type\n"; logix_string2 = components_string2; buildLayer("", componentHierarchy); buildLayer("/LogiX", logixHierarchy); componentHierarchy.ActiveSelf = false; logixHierarchy.ActiveSelf = true; components_string += "\n "; logix_string += "\n "; //components_string2 += "\n "; //logix_string2 += "\n "; System.IO.File.WriteAllText(@"C:\Program Files (x86)\Steam\steamapps\common\NeosVR\components_string.txt", components_string); System.IO.File.WriteAllText(@"C:\Program Files (x86)\Steam\steamapps\common\NeosVR\logix_string.txt", logix_string); System.IO.File.WriteAllText(@"C:\Program Files (x86)\Steam\steamapps\common\NeosVR\components_string2.txt", components_string2); System.IO.File.WriteAllText(@"C:\Program Files (x86)\Steam\steamapps\common\NeosVR\logix_string2.txt", logix_string2); //this.MakeVariableSelector(); }
private void OpenConnectedPanel() { UIBuilder uiBuilder1 = panel.SwapPanel(NeosSwapCanvasPanel.Slide.None, 0.5f); //uiBuilder1.VerticalLayout(4f, 0.0f, new Alignment?()); uiBuilder1.VerticalLayout(4f, 0, new Alignment?()); uiBuilder1.FitContent(SizeFit.Disabled, SizeFit.PreferredSize); uiBuilder1.Style.PreferredHeight = 65f; uiBuilder1.Style.MinHeight = 32f; uiBuilder1.Style.TextAutoSizeMin = 45f; uiBuilder1.Style.TextAutoSizeMax = 65f; //status text //SyncRef<Text> status = this._status; //LocaleString localeString1 = (LocaleString)""; //ref LocaleString local1 = ref localeString1; //Alignment? alignment1 = new Alignment?(); //Text text1 = uiBuilder1.Text(in local1, true, alignment1, true, (string)null); //status.Target = text1; //Title uiBuilder1.Style.PreferredHeight = 200f; Text text4 = uiBuilder1.Text("MetaGenNeos"); text4.AutoSizeMax.Value = 150f; text4.Size.Value = 150f; //Description uiBuilder1.Style.MinHeight = 350f; Text text1 = uiBuilder1.Text("<b>This recording system is currenlty in Beta. Expect bugs</b>. MetaGen is a project to explore the intersection between AI and VR technologies, for Science, Art, and Wonder. See more details at http://metagen.ai"); uiBuilder1.Style.MinHeight = 32f; ////Recording checkbox //uiBuilder1.Style.PreferredHeight = 100f; //uiBuilder1.Style.MinHeight = 100f; //Checkbox checkbox_record_user = uiBuilder1.Checkbox("Record me (local)",false); //this._recordUserCheckbox.Target = checkbox_record_user; //if (!mg.admin_mode) //{ // recordUserOverride = uiBuilder1.Current.AttachComponent<ValueUserOverride<bool>>(); // recordUserOverride.CreateOverrideOnWrite.Value = true; // recordUserOverride.Target.Target = checkbox_record_user.State; //} ////Data submission checkbox //uiBuilder1.Style.MinHeight = 350f; //Text text2 = uiBuilder1.Text("<b>By checking this box you agree to license the recorded data as CC0 (Public domain), as part of the MetaGen Public Dataset (intended for research in AI and other sciences).</b>"); //text2.HorizontalAlign.Value = CodeX.TextHorizontalAlignment.Left; //uiBuilder1.Style.PreferredHeight = 100f; //uiBuilder1.Style.MinHeight = 100f; //Checkbox checkbox_public_domain = uiBuilder1.Checkbox("Public domain",false); //this._publicDomainCheckbox.Target = checkbox_public_domain; //if (!mg.admin_mode) //{ // publicDomainOverride = uiBuilder1.Current.AttachComponent<ValueUserOverride<bool>>(); // publicDomainOverride.Target.Target = checkbox_public_domain.State; //} //recording time uiBuilder1.Style.PreferredHeight = 75f; uiBuilder1.Style.MinHeight = 75f; SyncRef <Text> recording_time = this._recordingTime; LocaleString localeString2 = (LocaleString)""; Text text3 = uiBuilder1.Text(localeString2); recording_time.Target = text3; uiBuilder1.Style.PreferredHeight = 100f; uiBuilder1.Style.MinHeight = 100f; //animation checkbox Checkbox animCheckbox = uiBuilder1.Checkbox("Generate animation", true); this._animationsCheckbox.Target = animCheckbox; //Generate bvh checkbox Checkbox checkbox5 = uiBuilder1.Checkbox("Generate bvh", false); this._generateBvhCheckbox.Target = checkbox5; //Recording voices checkbox Checkbox recording_voices_checkbox = uiBuilder1.Checkbox("Record voices", true); this._recordVoicesCheckbox.Target = recording_voices_checkbox; #if NOHL //Recording hearing checkbox Checkbox recording_hearing_checkbox = uiBuilder1.Checkbox("Record hearing", true); this._recordHearingCheckbox.Target = recording_hearing_checkbox; #endif //video checkbox //Checkbox videoCheckbox = uiBuilder1.Checkbox("Record vision",true); #if NOHL Checkbox videoCheckbox = uiBuilder1.Checkbox("Record vision", false); this._videoCheckbox.Target = videoCheckbox; #endif //record button uiBuilder1.Style.PreferredHeight = 120f; uiBuilder1.Style.MinHeight = 120f; SyncRef <Button> recordButton = this._recordButton; Button button1 = uiBuilder1.Button(""); recordButton.Target = button1; ButtonValueSet <bool> comp1 = button1.Slot.AttachComponent <ButtonValueSet <bool> >(); comp1.SetValue.Value = true; comp1.TargetValue.Target = record_button_pressed.Target; ////Hiding for now as its WIP ////interact button uiBuilder1.Style.PreferredHeight = 120f; uiBuilder1.Style.MinHeight = 120f; SyncRef <Button> interactButton = this._interactButton; Button button1b = uiBuilder1.Button("Toggle Interaction"); interactButton.Target = button1b; ButtonValueSet <bool> comp1b = button1b.Slot.AttachComponent <ButtonValueSet <bool> >(); comp1b.SetValue.Value = true; comp1b.TargetValue.Target = interact_button_pressed.Target; //Text for debug play section uiBuilder1.Style.PreferredHeight = 200f; uiBuilder1.Style.MinHeight = 100f; Text text5 = uiBuilder1.Text("Debug play"); text4.AutoSizeMax.Value = 130f; text4.Size.Value = 130f; uiBuilder1.Style.MinHeight = 100f; uiBuilder1.Style.PreferredHeight = 100f; //Recording index uiBuilder1.Style.PreferredHeight = 75f; uiBuilder1.Style.MinHeight = 75f; Text text6 = uiBuilder1.Text("Recording index:"); TextField field1 = uiBuilder1.TextField("0"); this._recordIndexField.Target = field1; uiBuilder1.Style.MinHeight = 100f; uiBuilder1.Style.PreferredHeight = 100f; //Voices checkbox Checkbox checkbox1 = uiBuilder1.Checkbox("Voices", true); this._voicesCheckbox.Target = checkbox1; //Hearing checkbox Checkbox checkbox2 = uiBuilder1.Checkbox("Hearing", false); this._hearingCheckbox.Target = checkbox2; //External source checkpoint Checkbox checkbox3 = uiBuilder1.Checkbox("External source", false); this._externalSourceCheckbox.Target = checkbox3; //animation checkbox2 Checkbox animCheckbox2 = uiBuilder1.Checkbox("Generate animation", false); this._animationsCheckbox2.Target = animCheckbox2; //Generate bvh checkbox Checkbox bvhCheckbox2 = uiBuilder1.Checkbox("Generate bvh", false); this._generateBvhCheckbox2.Target = bvhCheckbox2; //Avatar ref uiBuilder1.Style.PreferredHeight = 75f; uiBuilder1.Style.MinHeight = 75f; Text text7 = uiBuilder1.Text("Avatar slot:"); uiBuilder1.Next("Root"); ReferenceField <Slot> refField = uiBuilder1.Current.AttachComponent <ReferenceField <Slot> >(); this._avatarRefField.Target = refField; RefEditor avatarRefEditor = uiBuilder1.Current.AttachComponent <RefEditor>(); avatarRefEditor.Setup(refField.Reference); uiBuilder1.Style.MinHeight = 100f; uiBuilder1.Style.PreferredHeight = 100f; //play button SyncRef <Button> streamButton = this._playButton; Button button2 = uiBuilder1.Button(""); streamButton.Target = button2; ButtonValueSet <bool> comp2 = button2.Slot.AttachComponent <ButtonValueSet <bool> >(); comp2.SetValue.Value = true; comp2.TargetValue.Target = play_button_pressed.Target; ////UI slot ref //uiBuilder1.Style.PreferredHeight = 75f; //uiBuilder1.Style.MinHeight = 75f; //Text text8 = uiBuilder1.Text("UI slot:"); //uiBuilder1.Next("Root"); //ReferenceField<Slot> refField2 = uiBuilder1.Current.AttachComponent<ReferenceField<Slot>>(); //this._uiTemplateRefField.Target = refField2; //RefEditor uiTemplateRefEditor = uiBuilder1.Current.AttachComponent<RefEditor>(); //uiTemplateRefEditor.Setup(refField2.Reference); //uiBuilder1.Style.MinHeight = 100f; //uiBuilder1.Style.PreferredHeight = 100f; ////swapUI button //Button button3 = uiBuilder1.Button(""); //this._swapUIButton.Target = button3; //ButtonValueSet<bool> comp3 = button3.Slot.AttachComponent<ButtonValueSet<bool>>(); //comp3.SetValue.Value = true; //comp3.TargetValue.Target = swapUI_button_pressed.Target; }