Example #1
0
        public void RecycleTerrain(TerrainData p_data, bool p_isDefaultTerrainDataApplied)
        {
            if (m_terrain != null)
            {
                if (p_isDefaultTerrainDataApplied && m_defaultTerrainDataPrefab != null)
                {
                    ApplyDefaultTerrainData(p_data);
                    if (p_data.treePrototypes.Length > 0)
                    {
                        // this will force an update of the tree y positions
                        p_data.SetHeights(0, 0, p_data.GetHeights(0, 0, 0, 0));
                    }
                }

                m_terrain.enabled = false;

                // destroy old terrain data
                Object.Destroy(m_terrain.terrainData);
                // assign new terrain data
                m_terrain.terrainData = p_data;
                if (m_terrain.GetComponent <TerrainCollider>() != null)
                {
                    m_terrain.GetComponent <TerrainCollider>().terrainData = p_data;
                }
                else
                {
                    Debug.LogError("LE_GUI3dTerrain: RecycleTerrain: the CustomDefaultTerrain assigned to LE_ConfigTerrain must have a collider!");
                }

                // apply terrain changes
                m_terrain.Flush();
                m_terrain.enabled = true;

                // warning of a possible seldom crash with specific resolution changes
                TT_Terrain9Patch terrain9patcher = m_terrain.GetComponent <TT_Terrain9Patch>();
                if (terrain9patcher != null)
                {
                    terrain9patcher.CrashCheck();
                }

                // recreate terrain manager
                Terrain buffer = m_terrain;
                RemoveTerrainManager();
                SetTerrain(buffer);
            }
            else
            {
                Debug.LogError("LE_GUI3dTerrain: RecycleTerrain: there is not terrain that can be recycled. Call this function only if TerrainInstance is not null!");
            }
        }
 private void Start()
 {
     m_patchGroup = FindObjectOfType <TT_Terrain9Patch>();
     LE_EventInterface.OnChangeLevelData += OnChangeLevelData;
 }