> 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.sfterraineditor.md).

# Class sfTerrainEditor

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

```csharp
[CustomEditor(typeof(Terrain))]
public class sfTerrainEditor : ksOverrideEditor
```

#### Inheritance

object ← Object ← ScriptableObject ← Editor ← ksOverrideEditor ← [sfTerrainEditor](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfterraineditor.md)

#### Extension Methods

[sfUnityUtils.IsDestroyed(Object)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfunityutils.md#ks_scenefusion_client_unity_editor_sfunityutils_isdestroyed_unityengine_object)

## Properties

### Brush <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_brush" id="ks_scenefusion_client_unity_editor_sfterraineditor_brush"></a>

The terrain brush. Brush.Terrain is null if the brush isn't showing.

```csharp
public static sfTerrainBrush Brush { get; }
```

#### Property Value

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

### DetailIndex <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_detailindex" id="ks_scenefusion_client_unity_editor_sfterraineditor_detailindex"></a>

The selected detail prototype index.

```csharp
public static int DetailIndex { get; set; }
```

#### Property Value

int

### IsOpen <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_isopen" id="ks_scenefusion_client_unity_editor_sfterraineditor_isopen"></a>

Is the terrain editor open?

```csharp
public static bool IsOpen { get; }
```

#### Property Value

bool

### LayerIndex <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_layerindex" id="ks_scenefusion_client_unity_editor_sfterraineditor_layerindex"></a>

The selected texture layer index.

```csharp
public static int LayerIndex { get; set; }
```

#### Property Value

int

### MissingBrushWarningShown <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_missingbrushwarningshown" id="ks_scenefusion_client_unity_editor_sfterraineditor_missingbrushwarningshown"></a>

Has the missing brush warning been shown? If false, the next time a brush index can't be found in the brush list, a warning is logged. This is set to false when joining a session.

```csharp
public static bool MissingBrushWarningShown { get; set; }
```

#### Property Value

bool

### State <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_state" id="ks_scenefusion_client_unity_editor_sfterraineditor_state"></a>

Terrain editor state.

```csharp
public static sfTerrainEditor.States State { get; set; }
```

#### Property Value

[sfTerrainEditor](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfterraineditor.md).[States](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfterraineditor/ks.scenefusion.client.unity.editor.sfterraineditor.states.md)

### Terrain <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_terrain" id="ks_scenefusion_client_unity_editor_sfterraineditor_terrain"></a>

The terrain that is currently selected, or the last selected terrain if no terrain is selected.

```csharp
public static Terrain Terrain { get; }
```

#### Property Value

Terrain

### Tool <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_tool" id="ks_scenefusion_client_unity_editor_sfterraineditor_tool"></a>

The selected tool.

```csharp
public static int Tool { get; }
```

#### Property Value

int

### ToolCategory <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_toolcategory" id="ks_scenefusion_client_unity_editor_sfterraineditor_toolcategory"></a>

The selected tool category.

```csharp
public static int ToolCategory { get; }
```

#### Property Value

int

## Methods

### AdjustDetailIndex(TerrainData, bool, int, int) <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_adjustdetailindex_unityengine_terraindata_system" id="ks_scenefusion_client_unity_editor_sfterraineditor_adjustdetailindex_unityengine_terraindata_system"></a>

Adjusts the selected detail index to preserve the selected detail prototype after adding or removing detail prototypes. If the selected prototype was removed, clears the selection.

```csharp
public static void AdjustDetailIndex(TerrainData terrainData, bool isInsertion, int index, int count)
```

#### Parameters

`terrainData` TerrainData

terrainData with added or removed detail prototypes. If this is not the last selected terrain, does nothing.

`isInsertion` bool

were prototypes added or removed?

`index` int

index prototypes were inserted at or removed from.

`count` int

number of prototypes added or removed.

### AdjustLayerIndex(TerrainData, bool, int, int) <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_adjustlayerindex_unityengine_terraindata_system_b" id="ks_scenefusion_client_unity_editor_sfterraineditor_adjustlayerindex_unityengine_terraindata_system_b"></a>

Adjusts the selected layer index to preserve the selected layer after adding or removing texture layers. If the selected layer was removed, clears the selection.

```csharp
public static void AdjustLayerIndex(TerrainData terrainData, bool isInsertion, int index, int count)
```

#### Parameters

`terrainData` TerrainData

terrainData with added or removed layers. If this is not the last selected terrain, does nothing.

`isInsertion` bool

were layers added or removed?

`index` int

index layers were inserted at or removed from.

`count` int

number of layers added or removed.

### CheckTerrain(float) <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_checkterrain_system_single" id="ks_scenefusion_client_unity_editor_sfterraineditor_checkterrain_system_single"></a>

Periodically invokes a check for terrain data changes which do not have unity events. These include changes to: terrain layers, detail prototypes, tree prototypes, and detail resolution

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

#### Parameters

`deltaTime` float

### DrawBrush(sfTerrainBrush, Material) <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_drawbrush_ks_scenefusion_client_unity_editor_sfte" id="ks_scenefusion_client_unity_editor_sfterraineditor_drawbrush_ks_scenefusion_client_unity_editor_sfte"></a>

Draws a terrain brush. Must be called from SceneView\.duringSceneGUI during a repaint event.

```csharp
public static void DrawBrush(sfTerrainBrush brush, Material material)
```

#### Parameters

`brush` [sfTerrainBrush](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfterrainbrush.md)

brush to draw.

`material` Material

material to draw the brush with.

### OnDisable() <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_ondisable" id="ks_scenefusion_client_unity_editor_sfterraineditor_ondisable"></a>

Called when the editor is disabled.

```csharp
protected override void OnDisable()
```

### OnEnable() <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_onenable" id="ks_scenefusion_client_unity_editor_sfterraineditor_onenable"></a>

Load the Unity Editor as the base editor when this editor is enabled.

```csharp
protected override void OnEnable()
```

### OnInspectorGUI() <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_oninspectorgui" id="ks_scenefusion_client_unity_editor_sfterraineditor_oninspectorgui"></a>

Draws the inspector GUI.

```csharp
public override void OnInspectorGUI()
```

### PostSceneGUI <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_postscenegui" id="ks_scenefusion_client_unity_editor_sfterraineditor_postscenegui"></a>

Invoked after drawing the scene GUI.

```csharp
public static event sfTerrainEditor.SceneGUIHandler PostSceneGUI
```

#### Event Type

[sfTerrainEditor](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfterraineditor.md).[SceneGUIHandler](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfterraineditor/ks.scenefusion.client.unity.editor.sfterraineditor.sceneguihandler.md)

### PreSceneGUI <a href="#ks_scenefusion_client_unity_editor_sfterraineditor_prescenegui" id="ks_scenefusion_client_unity_editor_sfterraineditor_prescenegui"></a>

Invoked before drawing the scene GUI.

```csharp
public static event sfTerrainEditor.SceneGUIHandler PreSceneGUI
```

#### Event Type

[sfTerrainEditor](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfterraineditor.md).[SceneGUIHandler](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfterraineditor/ks.scenefusion.client.unity.editor.sfterraineditor.sceneguihandler.md)
