Ejemplo n.º 1
0
    public void adjustDetails(FullTerrainOperator op)
    {
        var dratio = new Vector2(op.fieldUnit.x / op.detailUnit.x, op.fieldUnit.y / op.detailUnit.y);

        var m = new FieldManipulator(min, max, op.detailUnitR, op.detailLength);

        var layers = m.getDetailSupportedLayers(op.td);

        foreach (var layer in layers)
        {
            var ds = m.getDetails(op.td, layer);

            for (var iy = 0; iy < m.len.y; iy++)
            {
                for (var ix = 0; ix < m.len.x; ix++)
                {
                    var spos = m.getIterationPosition(ix, iy, op.detailUnit);

                    var height = hs[(int)(iy * dratio.y), (int)(ix * dratio.x)] * op.fieldUnitHeight;

                    var pos = new Vector3(spos.x, height, spos.y);

                    if ((pos - center).sqrMagnitude <= sqrradius)
                    {
                        ds[iy, ix] = 0;
                    }
                }
            }

            m.setDetails(op.td, ds, layer);
        }
    }
Ejemplo n.º 2
0
    public void adjustAlphamaps(TerrainOperator op)
    {
        var mratio = new Vector2(op.fieldUnit.x / op.mapUnit.x, op.fieldUnit.y / op.mapUnit.y);

        var m = new FieldManipulator(min, max, op.mapUnitR, op.mapLength);

        var ms = m.getAlphamaps(op.td);

        for (var iy = 0; iy < m.len.y; iy++)
        {
            for (var ix = 0; ix < m.len.x; ix++)
            {
                var spos = m.getIterationPosition(ix, iy, op.mapUnit);

                var height = hs[(int)(iy * mratio.y), (int)(ix * mratio.x)] * op.fieldUnitHeight;

                var pos = new Vector3(spos.x, height, spos.y);

                if ((pos - center).sqrMagnitude <= sqrradius)
                {
                    ms[iy, ix, 0] = 0.3f;
                    ms[iy, ix, 1] = 0.0f;
                    ms[iy, ix, 2] = 0.0f;
                    ms[iy, ix, 3] = 0.0f;
                }
            }
        }

        m.setAlphamaps(op.td, ms);
    }