# TerrainChangedFlags

> Indicate the types of changes to the terrain in OnTerrainChanged callback.

## Definition

* **Type:** Enum
* **Namespace:** [UnityEngine](/engine/6000.6/script-reference/unityengine.md)
* **Assembly:** UnityEngine.TerrainModule

```csharp
[Flags]
public enum TerrainChangedFlags
```

## Remarks

Use bitwise AND to detect multiple changes.

```csharp
using UnityEngine;

[ExecuteInEditMode]
public class DetectTerrainChanges : MonoBehaviour
{
    void OnTerrainChanged(TerrainChangedFlags flags)
    {
        if ((flags & TerrainChangedFlags.Heightmap) != 0)
        {
            Debug.Log("Heightmap changes");
        }

        if ((flags & TerrainChangedFlags.DelayedHeightmapUpdate) != 0)
        {
            Debug.Log("Heightmap painting");
        }

        if ((flags & TerrainChangedFlags.TreeInstances) != 0)
        {
            Debug.Log("Tree changes");
        }
    }
}
```

The above example shows how you can detect terrain changes by using OnTerrainChanged callback and TerrainChangedFlags enum.

## Fields

| Value                                                                                                                             | Description                                                                                                                                |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| [DelayedHeightmapUpdate](/engine/6000.6/script-reference/unityengine/terrainchangedflags/delayedheightmapupdate.md)               | Indicates a change to the heightmap data without computing LOD.                                                                            |
| [DelayedHolesUpdate](/engine/6000.6/script-reference/unityengine/terrainchangedflags/delayedholesupdate.md)                       | Indicates a change to the Terrain holes data, which doesn't include LOD calculations and tree/vegetation updates.                          |
| [FlushEverythingImmediately](/engine/6000.6/script-reference/unityengine/terrainchangedflags/flusheverythingimmediately.md)       | Indicates that a change was made to the terrain that was so significant that the internal rendering data need to be flushed and recreated. |
| [Heightmap](/engine/6000.6/script-reference/unityengine/terrainchangedflags/heightmap.md)                                         | Indicates a change to the heightmap data.                                                                                                  |
| [HeightmapResolution](/engine/6000.6/script-reference/unityengine/terrainchangedflags/heightmapresolution.md)                     | Indicates a change to the heightmap resolution.                                                                                            |
| [Holes](/engine/6000.6/script-reference/unityengine/terrainchangedflags/holes.md)                                                 | Indicates a change to the Terrain holes data.                                                                                              |
| [RemoveDirtyDetailsImmediately](/engine/6000.6/script-reference/unityengine/terrainchangedflags/removedirtydetailsimmediately.md) | Indicates a change to the detail data.                                                                                                     |
| [TreeInstances](/engine/6000.6/script-reference/unityengine/terrainchangedflags/treeinstances.md)                                 | Indicates a change to the tree data.                                                                                                       |
| [WillBeDestroyed](/engine/6000.6/script-reference/unityengine/terrainchangedflags/willbedestroyed.md)                             | Indicates that the TerrainData object is about to be destroyed.                                                                            |
