void Update()
    {
        base.Update();
        if (updateLandscape == true)
        {
            m_terrainGrid[curCyclicIndexX, curCyclicIndexZ].GetComponent <Collider>().enabled   = true;     //Slow operation
            m_terrainGrid[prevCyclicIndexX, prevCyclicIndexZ].GetComponent <Collider>().enabled = false;

            UpdateTerrainNeighbors();
            UpdateTerrainPositions();
        }

        if (PatchManager.patchQueue.Count != 0)
        {
            terrainIsFlushed = false;
            if (patchIsFilling == false)
            {
                patchToBeFilled = PatchManager.patchQueue.Dequeue();
                StartCoroutine(CountdownForPatch());
            }
            if (patchToBeFilled != null)
            {
                patchToBeFilled.ExecutePatch();
                patchToBeFilled = null;
            }
        }
        else if (PatchManager.patchQueue.Count == 0 && terrainIsFlushed == false)
        {
            StartCoroutine(FlushTerrain());
            terrainIsFlushed = true;
        }
    }
    protected override void Update()
    {
        base.Update();

        /*
         * //-------Just debugging--------
         * if(updateRound)
         * {
         *      // previous was updateRound
         *      float executionTime = Time.time - StartTime;
         *      //Debug.Log(updatecounter + ": ----------------------------------------> Execution time " + executionTime);
         *      updateRound = false;
         * }
         * updateRound = updateLandscape;
         * StartTime = Time.deltaTime;
         * //--------Just debugging ends -------
         */

        if (updateLandscape == true)
        {
            m_terrainGrid[curCyclicIndexX, curCyclicIndexZ].GetComponent <Collider>().enabled = true;        //Slow operation

            // for displaying data in UI:
            Terrain current = m_terrainGrid[curCyclicIndexX, curCyclicIndexZ];
            //Debug.Log("-------> entering " + current.name);

            terrainName.text = current.name;
            int massType = InfiniteTerrain.GetOrAssignLandMassTypes(current.name);

            hillsValue.text           = (massType & 1) > 0 ? "yes": "no";
            mountainsValue.text       = (massType & 2) > 0 ? "yes": "no";
            ridgedMountainsValue.text = (massType & 4) > 0 ? "yes" : "no";
            plainsValue.text          = (massType & 8) > 0 ? "yes" : "no";

            m_terrainGrid[prevCyclicIndexX, prevCyclicIndexZ].GetComponent <Collider>().enabled = false;

            UpdateTerrainNeighbors();
            UpdateTerrainPositions();
        }

        if (PatchManager.patchQueue.Count != 0)
        {
            terrainIsFlushed = false;
            if (patchIsFilling == false)
            {
                patchToBeFilled = PatchManager.patchQueue.Dequeue();
                StartCoroutine(CountdownForPatch());
            }
            if (patchToBeFilled != null)
            {
                //float execTime = Time.time - oneUpdateTime;

                /*
                 * if(patchToBeFilled is TerrainPatch)
                 * Debug.Log( execTime + "     Executed TerrainPatch...");
                 * if (patchToBeFilled is SplatDetailPatch)
                 * Debug.Log(execTime + "     Executed SplatDetailPatch...");
                 * if (patchToBeFilled is TreePatch)
                 * Debug.Log(execTime + "     Execute TreePatch...");
                 */

                /*
                 * if(execTime > 0.1f)
                 * {
                 * Debug.Log(Time.time +  "------------------> exec time " + execTime);
                 * }
                 */

                //for debugging
                //oneUpdateTime = Time.time;

                patchToBeFilled.ExecutePatch();
                patchToBeFilled = null;
            }
        }
        else if (PatchManager.patchQueue.Count == 0 && terrainIsFlushed == false)
        {
            StartCoroutine(FlushTerrain());
            terrainIsFlushed = true;
        }
    }