Axiom.Samples.Widget.NukeOverlayElement C# (CSharp) Метод

NukeOverlayElement() публичный статический Метод

Static utility method to recursively delete an overlay element plus

all of its children from the system.
public static NukeOverlayElement ( OverlayElement element ) : void
element Axiom.Overlays.OverlayElement
Результат void
		public static void NukeOverlayElement( OverlayElement element )
		{
			OverlayElementContainer container = element as OverlayElementContainer;
			if ( container != null )
			{
				List<OverlayElement> toDelete = new List<OverlayElement>();
				foreach ( OverlayElement child in container.Children.Values )
				{
					toDelete.Add( child );
				}

				for ( int i = 0; i < toDelete.Count; i++ )
				{
					NukeOverlayElement( toDelete[ i ] );
				}
			}
			if ( element != null )
			{
				OverlayElementContainer parent = element.Parent;
				if ( parent != null )
					parent.RemoveChild( element.Name );
				OverlayManager.Instance.Elements.DestroyElement( element.Name );
			}
		}

Usage Example

Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="menu"></param>
        public virtual void ItemSelected(SelectMenu menu)
        {
            if (menu == this.CategoryMenu)                  // category changed, so update the sample menu, carousel, and slider
            {
                for (int i = 0; i < this.Thumbs.Count; i++) // destroy all thumbnails in carousel
                {
                    MaterialManager.Instance.Remove(this.Thumbs[i].Name);
                    Widget.NukeOverlayElement(this.Thumbs[i]);
                }
                this.Thumbs.Clear();

                OverlayManager om = OverlayManager.Instance;
                String         selectedCategory = string.Empty;

                if (menu.SelectionIndex != -1)
                {
                    selectedCategory = menu.SelectedItem;
                }
                else
                {
                    this.TitleLabel.Caption = "";
                    this.DescBox.Text       = "";
                }

                bool all          = selectedCategory == "All";
                var  sampleTitles = new List <string>();
                var  templateMat  = (Material)MaterialManager.Instance.GetByName("SampleThumbnail");

                // populate the sample menu and carousel with filtered samples
                foreach (Sample i in this.LoadedSamples)
                {
                    Collections.NameValuePairList info = i.Metadata;

                    if (all || info["Category"] == selectedCategory)
                    {
                        String name = "SampleThumb" + sampleTitles.Count + 1;

                        // clone a new material for sample thumbnail
                        Material newMat = templateMat.Clone(name);

                        TextureUnitState tus = newMat.GetTechnique(0).GetPass(0).GetTextureUnitState(0);
                        if (ResourceGroupManager.Instance.ResourceExists("Essential", info["Thumbnail"]))
                        {
                            tus.SetTextureName(info["Thumbnail"]);
                        }
                        else
                        {
                            tus.SetTextureName("thumb_error.png");
                        }

                        // create sample thumbnail overlay
                        var bp =
                            (Overlays.Elements.BorderPanel)om.Elements.CreateElementFromTemplate("SdkTrays/Picture", "BorderPanel", name);
                        bp.HorizontalAlignment = HorizontalAlignment.Right;
                        bp.VerticalAlignment   = VerticalAlignment.Center;
                        bp.MaterialName        = name;
                        bp.UserData            = i;
                        this.TrayManager.TraysLayer.AddElement(bp);

                        // add sample thumbnail and title
                        this.Thumbs.Add(bp);
                        sampleTitles.Add(i.Metadata["Title"]);
                    }
                }

                this.CarouselPlace = 0; // reset carousel

                this.SampleMenu.Items = sampleTitles;
                if (this.SampleMenu.ItemsCount != 0)
                {
                    ItemSelected(this.SampleMenu);
                }

                this.SampleSlider.SetRange(1, sampleTitles.Count, sampleTitles.Count);
            }
            else if (menu == this.SampleMenu) // sample changed, so update slider, label and description
            {
                if (this.SampleSlider.Value != menu.SelectionIndex + 1)
                {
                    this.SampleSlider.Value = menu.SelectionIndex + 1;
                }

                var s = (Sample)(this.Thumbs[menu.SelectionIndex].UserData);
                this.TitleLabel.Caption = menu.SelectedItem;
                this.DescBox.Text       = "Category: " + s.Metadata["Category"] + "\nDescription: " + s.Metadata["Description"];

                if (CurrentSample != s)
                {
                    ((Button)this.TrayManager.GetWidget("StartStop")).Caption = "Start Sample";
                }
                else
                {
                    ((Button)this.TrayManager.GetWidget("StartStop")).Caption = "Stop Sample";
                }
            }
            else if (menu == this.RendererMenu) // renderer selected, so update all settings
            {
                while (this.TrayManager.GetWidgetCount(this.RendererMenu.TrayLocation) > 3)
                {
                    this.TrayManager.DestroyWidget(this.RendererMenu.TrayLocation, 3);
                }

                var options = Root.RenderSystems[menu.SelectionIndex].ConfigOptions;

                int i = 0;

                // create all the config option select menus
                foreach (Configuration.ConfigOption it in options)
                {
                    SelectMenu optionMenu = this.TrayManager.CreateLongSelectMenu(TrayLocation.Left, "ConfigOption" + i++, it.Name,
                                                                                  450,
                                                                                  240, 10);
                    optionMenu.Items = (List <string>)it.PossibleValues.Values.ToList();

                    // if the current config value is not in the menu, add it
                    try
                    {
                        optionMenu.SelectItem(it.Value);
                    }
                    catch (Exception)
                    {
                        optionMenu.AddItem(it.Value);
                        optionMenu.SelectItem(it.Value);
                    }
                }

                WindowResized(RenderWindow);
            }
        }