public void AssignFunctions(TerrainGenerator terrainGenerator, FilterGenerator filterGenerator, 
        RiverGenerator riverGenerator, ErosionGenerator erosionGenerator)
    {
        tg = terrainGenerator;
        fg = filterGenerator;
        rg = riverGenerator;
        eg = erosionGenerator;
        lt = tg.localTerrain;

        UpdateLayers();
    }
    public void AssignFunctions(GlobalCoordinates globalTerrainC, TerrainGenerator terrainGenerator, 
        FilterGenerator filterGenerator, RiverGenerator riverGenerator, ErosionGenerator erosionGenerator)
    {
        this.globalTerrainC = globalTerrainC;

        tg = terrainGenerator;
        fg = filterGenerator;
        rg = riverGenerator;
        eg = erosionGenerator;

        lm.AssignFunctions(tg, fg, rg, eg);
    }
    float T = 0.1f; //delta time

    #endregion Fields

    #region Constructors

    public HydraulicErosion(ErosionGenerator erosionGenerator)
    {
        eg = erosionGenerator;
        lm = eg.lt.lm;

        hydraulicErosionMap = new GlobalCoordinates(100);
        sedimentMap = new GlobalCoordinates(100);
        waterMap = new GlobalCoordinates(100);
        stepMap = new GlobalCoordinates(100);
        //inflowMap = new GlobalCoordinates(100);
        outflowTop = new GlobalCoordinates(100);
        outflowRight = new GlobalCoordinates(100);
        outflowBot = new GlobalCoordinates(100);
        outflowLeft = new GlobalCoordinates(100);

        velocityX = new GlobalCoordinates(100);
        velocityZ = new GlobalCoordinates(100);

        erosionEffect = new HashSet<Vertex>();
        outflowField = new HashSet<Vertex>();
        noWater = new HashSet<Vertex>();
    }
    public void AssignFunctions(GlobalTerrain globalTerrain, LocalTerrain localTerrain,
        FilterGenerator filterGenerator, FunctionMathCalculator functionMathCalculator,
        RiverGenerator riverGenerator, GridManager gridManager, GUIManager guiManager,
        ErosionGenerator erosionGenerator)
    {
        this.globalTerrain = globalTerrain;
        this.localTerrain = localTerrain;
        this.filterGenerator = filterGenerator;
        this.riverGenerator = riverGenerator;
        this.erosionGenerator = erosionGenerator;

        fmc = functionMathCalculator;

        gm = gridManager;

        rt.AssignFunctions(fmc);
        ds.AssignFunctions(localTerrain);

        this.guiManager = guiManager;
        message = guiManager.message;
    }
    void Start()
    {
        guiManager = GameObject.Find("GUI").GetComponent<GUIManager>();

        terrainWidth = 100;
        terrainHeight = terrainWidth;

        try
        {
            GUIterrainPlannerMenu tpMenu = GameObject.Find("TerrainPlanner").GetComponent<GUIterrainPlannerMenu>();
            patchSize = tpMenu.patch.patchSize;
        }
        catch (Exception e)
        {
            Debug.Log("TerrainPlanner not found");
            patchSize = 64;
        }

        cameraMovement camera = transform.GetComponent<cameraMovement>();
        camera.ChangePosition(new Vector3(0, 100, 0));
        camera.ChangeRotation(new Vector3(90, 0, 0));

        scaleTerrainY = 12;

        int quadrantSize = Math.Max(terrainWidth, terrainHeight);

        layerManager = new LayerManager();

        globalTerrain = new GlobalTerrain(quadrantSize);
        localTerrain = new LocalTerrain(terrainWidth, terrainHeight, 30, globalTerrain, layerManager);
        filterGenerator = new FilterGenerator(quadrantSize, localTerrain);

        functionMathCalculator = new FunctionMathCalculator();
        functionDebugger = new FunctionDebugger();
        functionRiverDigger = new FunctionRiverDigger();
        functionRiverPlanner = new FunctionRiverPlanner();
        functionTerrainManager = new FunctionTerrainManager();

        terrainGenerator = new TerrainGenerator(patchSize);
        riverGenerator = new RiverGenerator(localTerrain);
        erosionGenerator = new ErosionGenerator(localTerrain);

        gridManager = new GridManager(new Vector3(0,0,0), patchSize, patchSize);

        AssignFunctions();
        terrainGenerator.initialize(scaleTerrainY);

        localTerrain.UpdateVisibleTerrain(new Vector3(0, 0, 0), false);
    }
Beispiel #6
0
    public float[] CreateNewHeightMap()
    {
        _heightMap = new float[_normalOpt.size * _normalOpt.size];
        float[] cloud = _cfGen.GetNewField();
        float[] voronoi = _vnGen.GetNewField();
        for(int i=0; i<_heightMap.Length; ++i)
        {
            _heightMap[i] = _normalOpt.voronoiInf * voronoi[i] + _normalOpt.cloudInf * cloud[i];
        }
        _erGen = new ErosionGenerator(_heightMap);
        if(_normalOpt.useThermalErosion)
        {
            _heightMap = _erGen.ThermalErosion(3);
        }
        if(_normalOpt.useHydroErosion)
        {

        }

        return _heightMap;
    }