> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/scene-fusion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher.md).

# Class sfHierarchyWatcher

Namespace: [KS.SceneFusion.Client.Unity.Editor](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor.md)\
Assembly: KSUnity-Source.dll

Provides events for handling hierarchy drag operations and prevents the rename box from disappearing when the hierarchy is changed.

```csharp
public class sfHierarchyWatcher
```

#### Inheritance

object ← [sfHierarchyWatcher](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher.md)

## Properties

### Dragging <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_dragging" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_dragging"></a>

Is the user dragging objects in the hierarchy?

```csharp
public bool Dragging { get; }
```

#### Property Value

bool

## Methods

### Get() <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_get" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_get"></a>

```csharp
public static sfHierarchyWatcher Get()
```

#### Returns

[sfHierarchyWatcher](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher.md)

singleton instance

### MarkHierarchyStale() <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_markhierarchystale" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_markhierarchystale"></a>

Refreshes the hierarchy window on the next update.

```csharp
public void MarkHierarchyStale()
```

### PreUpdate(float) <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_preupdate_system_single" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_preupdate_system_single"></a>

Called every pre-update. Validates the current drag target.

```csharp
public void PreUpdate(float deltaTime)
```

#### Parameters

`deltaTime` float

deltaTime in seconds since the last update.

### Start() <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_start" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_start"></a>

Starts checking for hierarchy drag events.

```csharp
public void Start()
```

### Stop() <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_stop" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_stop"></a>

Stops checking for hierarchy drag events.

```csharp
public void Stop()
```

### Update(float) <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_update_system_single" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_update_system_single"></a>

Called every update. Refreshes the hierarchy window if it was marked stale, and prevents the rename box from closing.

```csharp
public void Update(float deltaTime)
```

#### Parameters

`deltaTime` float

deltaTime in seconds since the last update.

### OnDragCancel <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_ondragcancel" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_ondragcancel"></a>

Invoked when a hierarchy drag operation is cancelled.

```csharp
public event sfHierarchyWatcher.DragCancelHandler OnDragCancel
```

#### Event Type

[sfHierarchyWatcher](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher.md).[DragCancelHandler](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher/ks.scenefusion.client.unity.editor.sfhierarchywatcher.dragcancelhandler.md)

### OnDragComplete <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_ondragcomplete" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_ondragcomplete"></a>

Invoked when a hierarchy drag operation is completed.

```csharp
public event sfHierarchyWatcher.DragCompleteHandler OnDragComplete
```

#### Event Type

[sfHierarchyWatcher](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher.md).[DragCompleteHandler](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher/ks.scenefusion.client.unity.editor.sfhierarchywatcher.dragcompletehandler.md)

### OnDragStart <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_ondragstart" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_ondragstart"></a>

Invoked when a hierarchy drag operation begins.

```csharp
public event sfHierarchyWatcher.DragStartHandler OnDragStart
```

#### Event Type

[sfHierarchyWatcher](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher.md).[DragStartHandler](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher/ks.scenefusion.client.unity.editor.sfhierarchywatcher.dragstarthandler.md)

### OnValidateDrag <a href="#ks_scenefusion_client_unity_editor_sfhierarchywatcher_onvalidatedrag" id="ks_scenefusion_client_unity_editor_sfhierarchywatcher_onvalidatedrag"></a>

Invoked to validate a drag operation. If any handlers return false, the drag is prevented.

```csharp
public event sfHierarchyWatcher.DragValidator OnValidateDrag
```

#### Event Type

[sfHierarchyWatcher](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher.md).[DragValidator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfhierarchywatcher/ks.scenefusion.client.unity.editor.sfhierarchywatcher.dragvalidator.md)
