void OnTerrainChanged(TerrainChangedFlags flag) { if (flag == TerrainChangedFlags.DelayedHeightmapUpdate) { hasTerrainHeigtmapChanged = true; manager.TerrainHeightmapChanged(terrainIndex); } }
public void OnTerrainChanged(TerrainChangedFlags flags) { if ((flags & TerrainChangedFlags.HeightmapResolution) != 0) { TryUpdateSettings(); Updated?.Invoke(); } }
/** * TODO: Listen to all the changes and stick the grass to the terrain again based on the label. Not implemented at the * moment due to possibly high recomputation cost */ void OnTerrainChanged(TerrainChangedFlags flags) { if ((flags & TerrainChangedFlags.Heightmap) != 0) { } if ((flags & TerrainChangedFlags.DelayedHeightmapUpdate) != 0) { } }
void OnTerrainChanged(int f) { TerrainChangedFlags flags = (TerrainChangedFlags)f; if ((flags & TerrainChangedFlags.Heightmap) != 0) { sTerrainDirty = true; } if ((flags & TerrainChangedFlags.DelayedHeightmapUpdate) != 0) { sTerrainDirty = true; } }
void OnTerrainChanged(int f) { TerrainChangedFlags flags = (TerrainChangedFlags)f; bool changed = ((flags & TerrainChangedFlags.Heightmap) != 0); if ((flags & TerrainChangedFlags.DelayedHeightmapUpdate) != 0) { changed = true; } if (changed) { Sync(); } }
void OnTerrainChanged(TerrainChangedFlags flags) { if (!terrain || !TerrainPainter.Current) { return; } if ((flags & TerrainChangedFlags.Heightmap) != 0) { if (TerrainPainter.Current.autoRepaint) { TerrainPainter.Current.RepaintTerrain(terrain); } } }
/// <summary> /// Send an TerrainData changed event to all linked terrains. /// </summary> protected void SendUpdateEventToLinkedTerrains(TerrainChangedFlags flag) { UNTerrain[] terrains = GameObject.FindObjectsOfType <UNTerrain>(); UNTerrain terrain; for (int i = 0; i < terrains.Length; i++) { terrain = terrains[i]; if (terrain.terrainData == this) { terrain.SendMessage("OnTerrainChanged", (int)flag); } } }
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) { needRefresh = true; //Debug.Log("Tree changes"); } }
/// <summary> /// On terrain changed. /// </summary> /// <param name="changedFlags"></param> protected virtual void OnTerrainChanged(int changedFlags) { TerrainChangedFlags flag = (TerrainChangedFlags)changedFlags; if (flag == TerrainChangedFlags.TreeInstances) { if (sector == null) { GenerateSector(sectorResolution); } #if UNITY_EDITOR UNEditorUtility.StartSceneScrollbar("Fetching tree instances...", 1); #endif sector.FetchTreeInstances(true, () => { #if UNITY_EDITOR UNSettings.Log("Trees Updated."); UNEditorUtility.currentProgressIndex = 1; #endif }); } else if (flag == TerrainChangedFlags.TreePrototypesChanged) { CreatePool(PoolItemType); } else if (flag == TerrainChangedFlags.DelayedHeightmapUpdate) { if (FoliageCore_MainManager.instance == null || !updateGrassOnHeightsChange || !manageGrass) { return; } TerrainData tData = terrain.terrainData; float[,] heights = tData.GetHeights(0, 0, tData.heightmapWidth, tData.heightmapHeight); bool changed = false; float cordX; float cordY; FoliageCore_MainManager manager = FoliageCore_MainManager.instance; int mChunkID; FoliageCore_Chunk mChunk; FoliageManagerInstance mInstance; Vector3 position = transform.position; Vector3 managerPosition = manager.transform.position; FoliageWorldMap worldMap; int transformedSize; for (int x = 0; x < tData.heightmapWidth; x++) { for (int y = 0; y < tData.heightmapHeight; y++) { if (heights[y, x] != terrainData.multiThreaded_terrainHeights[y, x]) // change on cord. { changed = true; cordX = ((x * tData.size.x) / tData.heightmapWidth) + position.x; cordY = ((y * tData.size.z) / tData.heightmapHeight) + position.z; mChunkID = manager.GetChunkID(cordX - managerPosition.x, cordY - managerPosition.z); if (manager.CheckChunkInBounds(mChunkID)) { mChunk = manager.sector.foliageChunks[mChunkID]; if (!mChunk.isFoliageInstanceAttached) { continue; } mInstance = mChunk.GetOrCreateFoliageManagerInstance(); worldMap = mInstance.worldMap; cordX = mInstance.TransformCord(cordX, mInstance.transform.position.x); cordY = mInstance.TransformCord(cordY, mInstance.transform.position.z); transformedSize = mInstance.TransformCord(2, 0); worldMap.UpdateHeight_RANGE(cordX, cordY, transformedSize, transformedSize, false); worldMap.SetPixels32Delayed(); } } } } if (changed) { FoliageCore_MainManager.SaveDelayedMaps(); } terrainData.multiThreaded_terrainHeights = heights; } }
private void OnTerrainChanged(TerrainChangedFlags flags){}