# HierarchyViewModel

> A hierarchy view model is a read-only filtering view of a HierarchyFlattened.

## Definition

* **Type:** Class
* **Namespace:** [Unity.Hierarchy](/engine/6000.6/script-reference/unity/hierarchy.md)
* **Assembly:** UnityEngine.HierarchyCoreModule
* **Implements:** [IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable)

```csharp
public sealed class HierarchyViewModel : IDisposable
```

## Constructors

| Constructor                                                                                                                                                             | Description                                                                                                                              |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| [HierarchyViewModel(Unity.Hierarchy.HierarchyFlattened,Unity.Hierarchy.HierarchyNodeFlags)](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/ctor.md) | Constructs a new [HierarchyViewModel](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel.md) from a flattened hierarchy. |

## Properties

| Property                                                                                           | Description                                                                                                      |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| [Count](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/count.md)               | The total number of nodes.                                                                                       |
| [Filtering](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/filtering.md)       | Whether the hierarchy view model is currently filtering nodes.                                                   |
| [IsCreated](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/iscreated.md)       | Whether this object is valid and uses memory.                                                                    |
| [this\[\]](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/item.md)             | Gets the [HierarchyNode](/engine/6000.6/script-reference/unity/hierarchy/hierarchynode.md) at a specified index. |
| [UpdateNeeded](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/updateneeded.md) | Whether the hierarchy view model requires an update.                                                             |
| [Updating](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/updating.md)         | Whether the hierarchy view model is currently updating.                                                          |

## Methods

| Method                                                                                                                           | Description                                                                                                                                                                                                                                                            |
| -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsReadOnlySpan](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/asreadonlyspan.md)                           | Returns a read-only span of all hierarchy nodes in the view model.                                                                                                                                                                                                     |
| [BeginFlagsChange](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/beginflagschange.md)                       | Begins a batch of flags changes.                                                                                                                                                                                                                                       |
| [ClearFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/clearflags.md)                                   | Clears the specified flags on the hierarchy node indices.                                                                                                                                                                                                              |
| [ClearFlagsRecursive](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/clearflagsrecursive.md)                 | Clears the specified flags recursively on the hierarchy nodes.                                                                                                                                                                                                         |
| [Contains](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/contains.md)                                       | Determines if a specified node is in the hierarchy view model.                                                                                                                                                                                                         |
| [DestroyHandlerState](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/destroyhandlerstate.md)                 | Disposes and forgets the state a node type handler keeps for this view model.                                                                                                                                                                                          |
| [Dispose](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/dispose.md)                                         | Disposes this object and releases its memory.                                                                                                                                                                                                                          |
| [DoesNotHaveFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/doesnothaveflags.md)                       | Gets whether or not all of the specified flags are not set on the hierarchy node.                                                                                                                                                                                      |
| [DoesNotHaveFlagsCount](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/doesnothaveflagscount.md)             | Gets the number of nodes that do not have all of the specified flags set.                                                                                                                                                                                              |
| [EndFlagsChange](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/endflagschange.md)                           | Ends a batch of flags changes.                                                                                                                                                                                                                                         |
| [EndFlagsChangeWithoutNotify](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/endflagschangewithoutnotify.md) | Ends a batch of flags changes without notifying listeners.                                                                                                                                                                                                             |
| [EnumerateNodesWithFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/enumeratenodeswithflags.md)         | Gets an enumerable of all hierarchy nodes that have all of the specified flags set.                                                                                                                                                                                    |
| [EnumerateNodesWithoutFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/enumeratenodeswithoutflags.md)   | Gets an enumerable of all hierarchy nodes that do not have all of the specified flags set.                                                                                                                                                                             |
| [GetChild](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getchild.md)                                       | Gets the child node at the specified index of a hierarchy node.                                                                                                                                                                                                        |
| [GetChildIndex](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getchildindex.md)                             | Gets the index of a hierarchy node in its parent's children list.                                                                                                                                                                                                      |
| [GetChildrenCount](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getchildrencount.md)                       | Gets the number of child nodes that a hierarchy node has.                                                                                                                                                                                                              |
| [GetChildrenCountRecursive](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getchildrencountrecursive.md)     | Gets the number of child nodes that a hierarchy node has, including children of children.                                                                                                                                                                              |
| [GetDepth](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getdepth.md)                                       | Determines the depth of a node.                                                                                                                                                                                                                                        |
| [GetEnumerator](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getenumerator.md)                             | Gets the [HierarchyNode](/engine/6000.6/script-reference/unity/hierarchy/hierarchynode.md) enumerator.                                                                                                                                                                 |
| [GetFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getflags.md)                                       | Gets all the flags set on a given hierarchy node.                                                                                                                                                                                                                      |
| [GetIndicesWithFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getindiceswithflags.md)                 | Gets the indices for all hierarchy nodes that have all of the specified flags set.                                                                                                                                                                                     |
| [GetIndicesWithoutFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getindiceswithoutflags.md)           | Gets the indices of all hierarchy nodes that do not have all of the specified flags set.                                                                                                                                                                               |
| [GetNextSibling](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getnextsibling.md)                           | Gets the next sibling of a node.                                                                                                                                                                                                                                       |
| [GetNodesWithFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getnodeswithflags.md)                     | Gets all hierarchy nodes that have all of the specified flags set.                                                                                                                                                                                                     |
| [GetNodesWithoutFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getnodeswithoutflags.md)               | Gets all hierarchy nodes that do not have all of the specified flags set.                                                                                                                                                                                              |
| [GetNodeType](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getnodetype.md)                                 | Retrieve the hierarchy node type for the specified node.                                                                                                                                                                                                               |
| [GetNodeTypeHandlerBase](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getnodetypehandlerbase.md)           | Gets the node type handler instance for the specified node from this hierarchy view model.                                                                                                                                                                             |
| [GetOrCreateHandlerState](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getorcreatehandlerstate.md)         | Gets the state a node type handler keeps for this view model, creating it when there is none.                                                                                                                                                                          |
| [GetParent](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getparent.md)                                     | Gets the parent of a hierarchy node.                                                                                                                                                                                                                                   |
| [GetRoot](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/getroot.md)                                         | Gets the root node of the hierarchy view model.                                                                                                                                                                                                                        |
| [HasFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/hasflags.md)                                       | Gets whether or not all of the specified flags are set on the hierarchy node.                                                                                                                                                                                          |
| [HasFlagsCount](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/hasflagscount.md)                             | Gets the number of nodes that have all of the specified flags set.                                                                                                                                                                                                     |
| [HasVisibleChildren](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/hasvisiblechildren.md)                   | Determines whether a hierarchy node has any visible direct children (children without the Hidden flag).                                                                                                                                                                |
| [IndexOf](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/indexof.md)                                         | Gets the zero-based index of a specified node.                                                                                                                                                                                                                         |
| [SetFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/setflags.md)                                       | Sets the specified flags on the hierarchy node indices.                                                                                                                                                                                                                |
| [SetFlagsRecursive](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/setflagsrecursive.md)                     | Sets the specified flags recursively on the hierarchy nodes.                                                                                                                                                                                                           |
| [SetQuery](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/setquery.md)                                       | Sets the search query.                                                                                                                                                                                                                                                 |
| [SetRoot](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/setroot.md)                                         | Sets the root of the hierarchy view model.                                                                                                                                                                                                                             |
| [ToggleFlags](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/toggleflags.md)                                 | Toggles the specified flags on the hierarchy node indices.                                                                                                                                                                                                             |
| [ToggleFlagsRecursive](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/toggleflagsrecursive.md)               | Toggles the specified flags recursively on the hierarchy nodes.                                                                                                                                                                                                        |
| [TryGetHandlerState](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/trygethandlerstate.md)                   | Gets the state a node type handler keeps for this view model.                                                                                                                                                                                                          |
| [Update](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/update.md)                                           | Updates the hierarchy view model and requests a rebuild of the list of [HierarchyNode](/engine/6000.6/script-reference/unity/hierarchy/hierarchynode.md) that filters the [HierarchyFlattened](/engine/6000.6/script-reference/unity/hierarchy/hierarchyflattened.md). |
| [UpdateIncremental](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/updateincremental.md)                     | Updates the hierarchy view model incrementally.                                                                                                                                                                                                                        |
| [UpdateIncrementalTimed](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/updateincrementaltimed.md)           | Updates the hierarchy view model incrementally until a time limit is reached.                                                                                                                                                                                          |

## Events

| Member                                                                                             | Description                                                      |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [FlagsChanged](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/flagschanged.md) | Event that is invoked when flags on hierarchy nodes are changed. |

## Structs

| Struct                                                                                                            | Description                                                                                                                                        |
| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| [HierarchyViewModel.Enumerator](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/enumerator.md) | An enumerator of [HierarchyNode](/engine/6000.6/script-reference/unity/hierarchy/hierarchynode.md). Enumerates and filters items at the same time. |

## Delegates

| Delegate                                                                                                                                      | Description                                                         |
| --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| [HierarchyViewModel.FlagsChangedEventHandler](/engine/6000.6/script-reference/unity/hierarchy/hierarchyviewmodel/flagschangedeventhandler.md) | Delegate that is invoked when flags on hierarchy nodes are changed. |
