Version: Unity 6.6 (6000.6)
LanguageEnglish
  • C#

HierarchyViewModel.ClearFlags

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Declaration

public void ClearFlags(HierarchyNodeFlags flags);

Parameters

Parameter Description
flags The hierarchy node flags.

Description

Clears the specified flags on all hierarchy nodes.

The following example creates a context menu item that collapses all nodes in the Hierarchy window except the paths to the selected items. The action appears in the Hierarchy Samples submenu of the context menu. It uses ClearFlags to perform the initial collapse.

using System;
using Unity.Hierarchy;
using Unity.Hierarchy.Editor;
using UnityEditor;
using UnityEngine.UIElements;

namespace Unity.HierarchySamples.Editor { class CollapseOthers { [InitializeOnLoadMethod] static void Initialize() { HierarchyWindow.PopulateContextMenu += OnPopulateContextMenu; }

static void OnPopulateContextMenu(HierarchyWindow window, HierarchyView view, HierarchyViewItem item, DropdownMenu menu) { menu.AppendAction("Hierarchy Samples/Collapse Others", a => { // Capture selected and expanded nodes. int selectedAndExpandedCount = view.ViewModel.HasFlagsCount(HierarchyNodeFlags.Selected | HierarchyNodeFlags.Expanded); Span<HierarchyNode> expandedAndSelectedNodes = selectedAndExpandedCount < 16 ? stackalloc HierarchyNode[selectedAndExpandedCount] : new HierarchyNode[selectedAndExpandedCount]; view.ViewModel.GetNodesWithFlags(HierarchyNodeFlags.Selected | HierarchyNodeFlags.Expanded, expandedAndSelectedNodes);

// Create a flags change scope. This is an optimization to avoid triggering an update if no flags // actually changed after the operation. using (_ = new HierarchyViewModelFlagsChangeScope(view.ViewModel)) { // Collapse all nodes. view.ViewModel.ClearFlags(HierarchyNodeFlags.Expanded);

// Expand parents of all selected nodes. foreach (ref readonly var node in view.ViewModel.EnumerateNodesWithFlags(HierarchyNodeFlags.Selected)) { var parent = view.ViewModel.GetParent(node); if (parent == HierarchyNode.Null || parent == view.Source.Root) continue; view.ViewModel.SetFlagsRecursive(parent, HierarchyNodeFlags.Expanded, HierarchyTraversalDirection.Parents); }

// Expand all nodes that were previously expanded and selected. view.Expand(expandedAndSelectedNodes); }

}, _ => item == null || (view.ViewModel.HasFlagsCount(HierarchyNodeFlags.Selected) == 0) ? DropdownMenuAction.Status.Disabled : DropdownMenuAction.Status.Normal); } } }

Declaration

public void ClearFlags(ref HierarchyNode node, HierarchyNodeFlags flags);

Parameters

Parameter Description
node The hierarchy node.
flags The hierarchy node flags.

Description

Clears the specified flags on the hierarchy node.


Declaration

public int ClearFlags(ReadOnlySpan<HierarchyNode> nodes, HierarchyNodeFlags flags);

Parameters

Parameter Description
nodes The hierarchy nodes.
flags The hierarchy node flags.

Returns

int The number of nodes that had their flags cleared.

Description

Clears the specified flags on the hierarchy nodes.

Null or invalid nodes are ignored.


Declaration

public int ClearFlags(ReadOnlySpan<int> indices, HierarchyNodeFlags flags);

Parameters

Parameter Description
indices The hierarchy node indices.
flags The hierarchy node flags.

Returns

int The number of nodes that had their flags cleared.

Description

Clears the specified flags on the hierarchy node indices.

Invalid node indices are ignored.