# TerrainPaintToolWithOverlaysBase

> The abstract class that TerrainPaintToolWithOverlays inherits from.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor.TerrainTools](/engine/6000.6/script-reference/unityeditor/terraintools.md)
* **Assembly:** UnityEditor
* **Inherits from:** [EditorTool](/engine/6000.6/script-reference/unityeditor/editortools/editortool.md)

```csharp
public abstract class TerrainPaintToolWithOverlaysBase : EditorTool
```

## Remarks

Contains fields that can be overridden when you implement your own terrain painting tools to display in Terrain overlays. When you create custom Terrain Tools, they must inherit from the [TerrainPaintToolWithOverlays\<T>](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlays1.md) class rather than this class.

## Properties

| Property                                                                                                                              | Description                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| [Category](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/category.md)                     | The TerrainCategory that the Terrain Tool belongs to.                                 |
| [HasBrushAttributes](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/hasbrushattributes.md) | True if the Terrain Tool has brush attributes, false otherwise.                       |
| [HasBrushMask](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/hasbrushmask.md)             | True if Terrain Tool has brush masks, false otherwise.                                |
| [HasToolSettings](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/hastoolsettings.md)       | True if Terrain Tool has custom settings, false otherwise.                            |
| [IconIndex](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/iconindex.md)                   | The index at which you should place the Terrain Tool in the Terrain Tools overlay.    |
| [OffIcon](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/officon.md)                       | The icon displayed in the Terrain Tools overlay when the Terrain Tool isn't selected. |
| [OnIcon](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onicon.md)                         | The icon displayed in the Terrain Tools overlay when the terrain tool is selected.    |
| [Terrain](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/terrain.md)                       | The last hit terrain or the last active instance of a terrain object.                 |

## Methods

| Method                                                                                                                                    | Description                                                                                                                                                                 |
| ----------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [GetDescription](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/getdescription.md)             | Description of the Terrain Tool.                                                                                                                                            |
| [GetName](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/getname.md)                           | Name of the Terrain Tool.                                                                                                                                                   |
| [OnActivated](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onactivated.md)                   | This function is called when the tool is activated.                                                                                                                         |
| [OnDisable](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/ondisable.md)                       | Called when the tool is destroyed.                                                                                                                                          |
| [OnEnable](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onenable.md)                         | Called when the tool is created.                                                                                                                                            |
| [OnEnterToolMode](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onentertoolmode.md)           | This function is called when the Terrain Tool is activated.                                                                                                                 |
| [OnExitToolMode](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onexittoolmode.md)             | This function is called when the Terrain Tool becomes inactive.                                                                                                             |
| [OnInspectorGUI](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/oninspectorgui.md)             | Custom Terrain Tool OnInspectorGUI callback.                                                                                                                                |
| [OnPaint](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onpaint.md)                           | Custom Terrain Tool paint callback.                                                                                                                                         |
| [OnRenderBrushPreview](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onrenderbrushpreview.md) | Use this method to implement custom tool preview and UI behavior that only renders while the mouse is within the SceneView bounds or while you're actively using this tool. |
| [OnSceneGUI](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onscenegui.md)                     | Custom Terrain Tool OnSceneGUI callback.                                                                                                                                    |
| [OnToolGUI](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/ontoolgui.md)                       | This method is used to implement the custom terrain editor paint tool.                                                                                                      |
| [OnToolSettingsGUI](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/ontoolsettingsgui.md)       | Contains the IMGUI code for custom settings beyond the common settings.                                                                                                     |
| [OnWillBeDeactivated](/engine/6000.6/script-reference/unityeditor/terraintools/terrainpainttoolwithoverlaysbase/onwillbedeactivated.md)   | Invoked before the terrain paint tool with overlays stops being the active tool.                                                                                            |

## Inheritance

**Inherited Members:**

* [EditorTool.PopulateMenu(DropdownMenu)](/engine/6000.6/script-reference/unityeditor/editortools/editortool/populatemenu.md)
* [EditorTool.IsAvailable()](/engine/6000.6/script-reference/unityeditor/editortools/editortool/isavailable.md)
* [EditorTool.SetHidden(bool)](/engine/6000.6/script-reference/unityeditor/editortools/editortool/sethidden.md)
* [EditorTool.targets](/engine/6000.6/script-reference/unityeditor/editortools/editortool/targets.md)
* [EditorTool.target](/engine/6000.6/script-reference/unityeditor/editortools/editortool/target.md)
* [EditorTool.toolbarIcon](/engine/6000.6/script-reference/unityeditor/editortools/editortool/toolbaricon.md)
* [EditorTool.gridSnapEnabled](/engine/6000.6/script-reference/unityeditor/editortools/editortool/gridsnapenabled.md)
* [EditorTool.isHidden](/engine/6000.6/script-reference/unityeditor/editortools/editortool/ishidden.md)
* [ScriptableObject.CreateInstance(string)](/engine/6000.6/script-reference/unityengine/scriptableobject/createinstance.md#createinstance\(string\))
* [ScriptableObject.CreateInstance(Type)](/engine/6000.6/script-reference/unityengine/scriptableobject/createinstance.md#createinstance\(type\))
* [ScriptableObject.CreateInstance\<T>()](/engine/6000.6/script-reference/unityengine/scriptableobject/createinstance.md)
* [Object.GetEntityId()](/engine/6000.6/script-reference/unityengine/object/getentityid.md)
* [Object.GetHashCode()](/engine/6000.6/script-reference/unityengine/object/gethashcode.md)
* [Object.InstantiateAsync\<T>(T)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Transform)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Vector3, Quaternion)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Transform, Vector3, Quaternion)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Vector3, Quaternion)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, Vector3, Quaternion)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, Vector3, Quaternion, CancellationToken)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Transform, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>, CancellationToken)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, InstantiateParameters, CancellationToken)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, InstantiateParameters, CancellationToken)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, Vector3, Quaternion, InstantiateParameters, CancellationToken)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, Vector3, Quaternion, InstantiateParameters, CancellationToken)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.InstantiateAsync\<T>(T, int, ReadOnlySpan\<Vector3>, ReadOnlySpan\<Quaternion>, InstantiateParameters, CancellationToken)](/engine/6000.6/script-reference/unityengine/object/instantiateasync.md)
* [Object.Instantiate(Object, Vector3, Quaternion)](/engine/6000.6/script-reference/unityengine/object/instantiate.md#instantiate\(object-vector3-quaternion\))
* [Object.Instantiate(Object, Vector3, Quaternion, Transform)](/engine/6000.6/script-reference/unityengine/object/instantiate.md#instantiate\(object-vector3-quaternion-transform\))
* [Object.Instantiate(Object)](/engine/6000.6/script-reference/unityengine/object/instantiate.md#instantiate\(object\))
* [Object.Instantiate(Object, Scene)](/engine/6000.6/script-reference/unityengine/object/instantiate.md#instantiate\(object-scene\))
* [Object.Instantiate\<T>(T, InstantiateParameters)](/engine/6000.6/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion, InstantiateParameters)](/engine/6000.6/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate(Object, Transform)](/engine/6000.6/script-reference/unityengine/object/instantiate.md#instantiate\(object-transform\))
* [Object.Instantiate(Object, Transform, bool)](/engine/6000.6/script-reference/unityengine/object/instantiate.md#instantiate\(object-transform-bool\))
* [Object.Instantiate\<T>(T)](/engine/6000.6/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion)](/engine/6000.6/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Vector3, Quaternion, Transform)](/engine/6000.6/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Transform)](/engine/6000.6/script-reference/unityengine/object/instantiate.md)
* [Object.Instantiate\<T>(T, Transform, bool)](/engine/6000.6/script-reference/unityengine/object/instantiate.md)
* [Object.Destroy(Object, float)](/engine/6000.6/script-reference/unityengine/object/destroy.md)
* [Object.DestroyImmediate(Object, bool)](/engine/6000.6/script-reference/unityengine/object/destroyimmediate.md)
* [Object.FindObjectsByType(Type)](/engine/6000.6/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytype\(type\))
* [Object.FindObjectsByType(Type, FindObjectsInactive)](/engine/6000.6/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytype\(type-findobjectsinactive\))
* [Object.DontDestroyOnLoad(Object)](/engine/6000.6/script-reference/unityengine/object/dontdestroyonload.md)
* [Object.FindAnyObjectByType\<T>()](/engine/6000.6/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytypet\(\))
* [Object.FindAnyObjectByType\<T>(FindObjectsInactive)](/engine/6000.6/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytypet\(findobjectsinactive\))
* [Object.FindObjectsByType\<T>()](/engine/6000.6/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytypet\(\))
* [Object.FindObjectsByType\<T>(FindObjectsInactive)](/engine/6000.6/script-reference/unityengine/object/findobjectsbytype.md#findobjectsbytypet\(findobjectsinactive\))
* [Object.FindAnyObjectByType(Type)](/engine/6000.6/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytype\(type\))
* [Object.FindAnyObjectByType(Type, FindObjectsInactive)](/engine/6000.6/script-reference/unityengine/object/findanyobjectbytype.md#findanyobjectbytype\(type-findobjectsinactive\))
* [Object.ToString()](/engine/6000.6/script-reference/unityengine/object/tostring.md)
* [Object.name](/engine/6000.6/script-reference/unityengine/object/name.md)
* [Object.hideFlags](/engine/6000.6/script-reference/unityengine/object/hideflags.md)

### Operators

| Operator                                                                           | Description                                                             |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [operator ==](/engine/6000.6/script-reference/unityengine/object/op-equality.md)   | Compares two object references to see if they refer to the same object. |
| [bool](/engine/6000.6/script-reference/unityengine/object/op-implicit.md)          | Determines whether the object exists.                                   |
| [operator !=](/engine/6000.6/script-reference/unityengine/object/op-inequality.md) | Compares if two objects refer to a different object.                    |
