示例#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);
        }
    }