static private void OQOODODOCC(RoadObjectScript target)
    {
        EditorUtility.DisplayProgressBar("Build EasyRoads3D Object - " + target.gameObject.name, "Initializing", 0);

        RoadObjectScript[] scripts = (RoadObjectScript[])FindObjectsOfType(typeof(RoadObjectScript));
        ArrayList          rObj    = new ArrayList();

        Undo.RegisterUndo(Terrain.activeTerrain.terrainData, "EasyRoads3D Terrain leveling");
        foreach (RoadObjectScript script in scripts)
        {
            if (script.transform != target.transform)
            {
                rObj.Add(script.transform);
            }
        }
        if (target.ODODQOQO == null)
        {
            target.ODODQOQO    = target.OCDQDOOOCO.OODQDQDDCC();
            target.ODODQOQOInt = target.OCDQDOOOCO.ODOOQODCQO();
        }
        target.OOCQOCQOOD(0.5f, true, false);

        ArrayList hitOCQOCDOOOQ = target.OCDQDOOOCO.OOOOQDCCOQ(Vector3.zero, target.raise, target.obj, target.OOQDOOQQ, rObj, target.handleVegetation);
        ArrayList changeArr     = new ArrayList();
        float     stepsf        = Mathf.Floor(hitOCQOCDOOOQ.Count / 10);
        int       steps         = Mathf.RoundToInt(stepsf);

        for (int i = 0; i < 10; i++)
        {
            changeArr = target.OCDQDOOOCO.OODOOOCQCQ(hitOCQOCDOOOQ, i * steps, steps, changeArr);
            EditorUtility.DisplayProgressBar("Build EasyRoads3D Object - " + target.gameObject.name, "Updating Terrain", i * 10);
        }

        changeArr = target.OCDQDOOOCO.OODOOOCQCQ(hitOCQOCDOOOQ, 10 * steps, hitOCQOCDOOOQ.Count - (10 * steps), changeArr);
        target.OCDQDOOOCO.OQODQDCCCO(changeArr, rObj);

        target.OQCQCCOCOQ();
        EditorUtility.ClearProgressBar();
    }
    private static void OQOODODOCC(RoadObjectScript target)
    {
        EditorUtility.DisplayProgressBar("Build EasyRoads3D Object - " + target.gameObject.name,"Initializing", 0);

        RoadObjectScript[] scripts = (RoadObjectScript[])FindObjectsOfType(typeof(RoadObjectScript));
        ArrayList rObj = new ArrayList();
        Undo.RegisterUndo(Terrain.activeTerrain.terrainData, "EasyRoads3D Terrain leveling");
        foreach(RoadObjectScript script in scripts) {
        if(script.transform != target.transform) rObj.Add(script.transform);
        }
        if(target.ODODQOQO == null){
        target.ODODQOQO = target.OCDQDOOOCO.OODQDQDDCC();
        target.ODODQOQOInt = target.OCDQDOOOCO.ODOOQODCQO();
        }
        target.OOCQOCQOOD(0.5f, true, false);

        ArrayList hitOCQOCDOOOQ = target.OCDQDOOOCO.OOOOQDCCOQ(Vector3.zero, target.raise, target.obj, target.OOQDOOQQ, rObj, target.handleVegetation);
        ArrayList changeArr = new ArrayList();
        float stepsf = Mathf.Floor(hitOCQOCDOOOQ.Count / 10);
        int steps = Mathf.RoundToInt(stepsf);
        for(int i = 0; i < 10;i++){
        changeArr = target.OCDQDOOOCO.OODOOOCQCQ(hitOCQOCDOOOQ, i * steps, steps, changeArr);
        EditorUtility.DisplayProgressBar("Build EasyRoads3D Object - " + target.gameObject.name,"Updating Terrain", i * 10);
        }

        changeArr = target.OCDQDOOOCO.OODOOOCQCQ(hitOCQOCDOOOQ, 10 * steps, hitOCQOCDOOOQ.Count - (10 * steps), changeArr);
        target.OCDQDOOOCO.OQODQDCCCO(changeArr, rObj);

        target.OQCQCCOCOQ();
        EditorUtility.ClearProgressBar();
    }