Example usage for org.apache.commons.lang3 ArrayUtils toPrimitive

List of usage examples for org.apache.commons.lang3 ArrayUtils toPrimitive

Introduction

In this page you can find the example usage for org.apache.commons.lang3 ArrayUtils toPrimitive.

Prototype

public static boolean[] toPrimitive(final Boolean[] array) 

Source Link

Document

Converts an array of object Booleans to primitives.

This method returns null for a null input array.

Usage

From source file:org.ratchetrobotics.algorithms.geometry.converter.PointsConverter.java

public PointsConverterDoubleArray toDoubleArrays() {
    List<Double> x = new ArrayList<>();
    List<Double> y = new ArrayList<>();

    for (Vector2D point : points) {
        x.add(point.getX());/*from w  w  w .j  a  va  2s  .c o  m*/
        y.add(point.getY());
    }

    return new PointsConverterDoubleArray(ArrayUtils.toPrimitive(x.toArray(new Double[x.size()])),
            ArrayUtils.toPrimitive(y.toArray(new Double[y.size()])));
}

From source file:org.ruogu.lang3.TestBooleanUtils.java

public static Boolean and(final Boolean... array) {
    if (array == null) {
        throw new IllegalArgumentException("The Array must not be null");
    }/*from  www .  ja  va  2  s . com*/
    if (array.length == 0) {
        throw new IllegalArgumentException("Array is empty");
    }
    try {
        final boolean[] primitive = ArrayUtils.toPrimitive(array);
        return and(primitive) ? Boolean.TRUE : Boolean.FALSE;
    } catch (final NullPointerException ex) {
        throw new IllegalArgumentException("The array must not contain any null elements");
    }
}

From source file:org.shaman.terrain.ArbaroToJmeExporter.java

@Override
public void doWrite() {
    LOG.info("doWrite");

    //create buffers
    stemVertices = new ArrayList<>();
    stemNormals = new ArrayList<>();
    stemUVs = new ArrayList<>();
    stemIndices = new ArrayList<>();
    leafVertices = new ArrayList<>();
    leafNormals = new ArrayList<>();
    leafUVs = new ArrayList<>();
    leafTmpUVs = new ArrayList<>();
    leafIndices = new ArrayList<>();

    smoothingGroup = 1;//from   ww  w.  ja  v  a2 s .  c o m

    mesh = meshGenerator.createStemMeshByLevel(tree, progress);
    leafMesh = meshGenerator.createLeafMesh(tree, meshGenerator.getUseQuads());

    //stem
    writeStemVertices();
    writeStemFaces();

    //leaves
    if (writeLeaves) {
        writeLeafVertices();
        writeLeafFaces();
        duplicateLeaves();
    }

    //create normals
    createNormals(stemVertices, stemNormals, stemIndices);
    createNormals(leafVertices, leafNormals, leafIndices);

    //create spatial
    spatial = new com.jme3.scene.Node("tree");

    com.jme3.scene.Mesh stemMesh = new com.jme3.scene.Mesh();
    stemMesh.setBuffer(VertexBuffer.Type.Position, 3,
            BufferUtils.createFloatBuffer(stemVertices.toArray(new Vector3f[stemVertices.size()])));
    stemMesh.setBuffer(VertexBuffer.Type.Normal, 3,
            BufferUtils.createFloatBuffer(stemNormals.toArray(new Vector3f[stemNormals.size()])));
    stemMesh.setBuffer(VertexBuffer.Type.TexCoord, 2,
            BufferUtils.createFloatBuffer(stemUVs.toArray(new Vector2f[stemUVs.size()])));
    stemMesh.setBuffer(VertexBuffer.Type.Index, 3,
            ArrayUtils.toPrimitive(stemIndices.toArray(new Integer[stemIndices.size()])));
    stemMesh.updateCounts();
    stemMesh.updateBound();
    Geometry geom = new Geometry("Stem", stemMesh);
    //      Material mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    Material mat = new Material(assetManager, "org/shaman/terrain/shader/Tree.j3md");
    mat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);
    geom.setQueueBucket(RenderQueue.Bucket.Transparent);
    if (barkTex != null) {
        Texture tex = assetManager.loadTexture(barkTex);
        tex.setWrap(Texture.WrapMode.Repeat);
        mat.setTexture("DiffuseMap", tex);
    } else {
        mat.setColor("Diffuse", barkCol != null ? barkCol : ColorRGBA.Brown);
        mat.setBoolean("UseMaterialColors", true);
    }
    geom.setMaterial(mat);
    spatial.attachChild(geom);

    if (writeLeaves) {
        com.jme3.scene.Mesh leafMesh = new com.jme3.scene.Mesh();
        leafMesh.setBuffer(VertexBuffer.Type.Position, 3,
                BufferUtils.createFloatBuffer(leafVertices.toArray(new Vector3f[leafVertices.size()])));
        leafMesh.setBuffer(VertexBuffer.Type.Normal, 3,
                BufferUtils.createFloatBuffer(leafNormals.toArray(new Vector3f[leafNormals.size()])));
        leafMesh.setBuffer(VertexBuffer.Type.TexCoord, 2,
                BufferUtils.createFloatBuffer(leafUVs.toArray(new Vector2f[leafUVs.size()])));
        leafMesh.setBuffer(VertexBuffer.Type.Index, 3,
                ArrayUtils.toPrimitive(leafIndices.toArray(new Integer[leafIndices.size()])));
        leafMesh.updateCounts();
        leafMesh.updateBound();
        geom = new Geometry("Leaves", leafMesh);
        //         mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
        mat = new Material(assetManager, "org/shaman/terrain/shader/Tree.j3md");
        if (leafTex != null) {
            mat.setTexture("DiffuseMap", assetManager.loadTexture(leafTex));
            mat.getAdditionalRenderState().setAlphaTest(true);
            mat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);
            mat.setFloat("AlphaDiscardThreshold", 0.5f);
            geom.setQueueBucket(RenderQueue.Bucket.Transparent);
        } else {
            mat.setColor("Diffuse", ColorRGBA.Green);
            mat.setBoolean("UseMaterialColors", true);
        }
        geom.setMaterial(mat);
        spatial.attachChild(geom);
    }

}

From source file:org.shaman.terrain.polygonal.GraphToHeightmap.java

private Geometry createElevationGeometry() {
    ArrayList<Vector3f> posList = new ArrayList<>();
    ArrayList<Integer> indexList = new ArrayList<>();
    ArrayList<ColorRGBA> colorList = new ArrayList<>();
    Map<Graph.Corner, Integer> cornerIndices = new HashMap<>();
    for (Graph.Center c : graph.centers) {
        int i = posList.size();
        posList.add(new Vector3f(c.location.x, c.location.y, 1));
        colorList.add(new ColorRGBA(c.elevation / 2 + 0.5f, c.elevation / 2 + 0.5f, c.elevation / 2 + 0.5f, 1));
        cornerIndices.clear();/*  ww w  .  j a v  a2s .c o  m*/
        for (Graph.Corner q : c.corners) {
            cornerIndices.put(q, posList.size());
            posList.add(new Vector3f(q.point.x, q.point.y, 1));
            colorList.add(
                    new ColorRGBA(q.elevation / 2 + 0.5f, q.elevation / 2 + 0.5f, q.elevation / 2 + 0.5f, 1));
        }
        for (Graph.Edge edge : c.borders) {
            indexList.add(i);
            indexList.add(cornerIndices.get(edge.v0));
            indexList.add(cornerIndices.get(edge.v1));
        }
    }
    Mesh mesh = new Mesh();
    mesh.setBuffer(VertexBuffer.Type.Position, 3,
            BufferUtils.createFloatBuffer(posList.toArray(new Vector3f[posList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Color, 4,
            BufferUtils.createFloatBuffer(colorList.toArray(new ColorRGBA[colorList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Index, 1, BufferUtils
            .createIntBuffer(ArrayUtils.toPrimitive(indexList.toArray(new Integer[indexList.size()]))));
    mesh.setMode(Mesh.Mode.Triangles);
    mesh.updateCounts();
    Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setBoolean("VertexColor", true);
    mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
    Geometry geom = new Geometry("elevationGeom", mesh);
    geom.setMaterial(mat);
    geom.setLocalScale(size);
    geom.setQueueBucket(RenderQueue.Bucket.Gui);
    geom.setCullHint(Spatial.CullHint.Never);
    return geom;
}

From source file:org.shaman.terrain.polygonal.GraphToHeightmap.java

private Geometry createNoiseGeometry() {
    ArrayList<Vector3f> posList = new ArrayList<>(graph.centers.size());
    ArrayList<Integer> indexList = new ArrayList<>();
    ArrayList<ColorRGBA> colorList = new ArrayList<>(graph.centers.size());
    for (Graph.Center c : graph.centers) {
        double[] settings = BIOME_PROPERTIES.get(c.biome);
        float r = (float) settings[0];
        float g = (float) settings[1];
        float b = (float) (settings[2] + settings[3] * Math.max(0, c.elevation) * Math.max(0, c.elevation));
        //float b = Math.max(0, c.elevation); b*=b;
        ColorRGBA col = new ColorRGBA(r, g, b, 1);
        colorList.add(col);//ww w  .ja  v a2s  .c o m
        posList.add(new Vector3f(c.location.x, c.location.y, 0));
    }
    for (Graph.Corner c : graph.corners) {
        if (c.touches.size() != 3) {
            //LOG.log(Level.INFO, "corner {0} does not touch 3 centers but {1}", new Object[]{c, c.touches.size()});
            continue; //border
        } else {
            for (Graph.Center c2 : c.touches) {
                indexList.add(c2.index);
            }
        }
    }
    Mesh mesh = new Mesh();
    mesh.setBuffer(VertexBuffer.Type.Position, 3,
            BufferUtils.createFloatBuffer(posList.toArray(new Vector3f[posList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Color, 4,
            BufferUtils.createFloatBuffer(colorList.toArray(new ColorRGBA[colorList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Index, 1, BufferUtils
            .createIntBuffer(ArrayUtils.toPrimitive(indexList.toArray(new Integer[indexList.size()]))));
    mesh.setMode(Mesh.Mode.Triangles);
    mesh.updateCounts();
    Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setBoolean("VertexColor", true);
    mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
    Geometry geom = new Geometry("elevationGeom", mesh);
    geom.setMaterial(mat);
    geom.setLocalScale(size);
    geom.setQueueBucket(RenderQueue.Bucket.Gui);
    geom.setCullHint(Spatial.CullHint.Never);
    return geom;
}

From source file:org.shaman.terrain.polygonal.GraphToHeightmap.java

private Geometry createTemperatureGeometry() {
    ArrayList<Vector3f> posList = new ArrayList<>();
    ArrayList<Integer> indexList = new ArrayList<>();
    ArrayList<ColorRGBA> colorList = new ArrayList<>();
    Map<Graph.Corner, Integer> cornerIndices = new HashMap<>();
    for (Graph.Center c : graph.centers) {
        int i = posList.size();
        posList.add(new Vector3f(c.location.x, c.location.y, 1));
        colorList.add(new ColorRGBA(c.temperature, c.temperature, c.temperature, 1));
        cornerIndices.clear();//  w w  w  . j a  v a2 s  .co m
        for (Graph.Corner q : c.corners) {
            cornerIndices.put(q, posList.size());
            posList.add(new Vector3f(q.point.x, q.point.y, 1));
            colorList.add(new ColorRGBA(q.temperature, q.temperature, q.temperature, 1));
        }
        for (Graph.Edge edge : c.borders) {
            indexList.add(i);
            indexList.add(cornerIndices.get(edge.v0));
            indexList.add(cornerIndices.get(edge.v1));
        }
    }
    Mesh mesh = new Mesh();
    mesh.setBuffer(VertexBuffer.Type.Position, 3,
            BufferUtils.createFloatBuffer(posList.toArray(new Vector3f[posList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Color, 4,
            BufferUtils.createFloatBuffer(colorList.toArray(new ColorRGBA[colorList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Index, 1, BufferUtils
            .createIntBuffer(ArrayUtils.toPrimitive(indexList.toArray(new Integer[indexList.size()]))));
    mesh.setMode(Mesh.Mode.Triangles);
    mesh.updateCounts();
    Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setBoolean("VertexColor", true);
    mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
    Geometry geom = new Geometry("biomesGeom", mesh);
    geom.setMaterial(mat);
    geom.setLocalScale(size);
    geom.setQueueBucket(RenderQueue.Bucket.Gui);
    geom.setCullHint(Spatial.CullHint.Never);
    return geom;
}

From source file:org.shaman.terrain.polygonal.GraphToHeightmap.java

private Geometry createMoistureGeometry() {
    //moisture//from  w ww  .j a  va 2s  .co  m
    ArrayList<Vector3f> posList = new ArrayList<>();
    ArrayList<Integer> indexList = new ArrayList<>();
    ArrayList<ColorRGBA> colorList = new ArrayList<>();
    Map<Graph.Corner, Integer> cornerIndices = new HashMap<>();
    ColorRGBA waterMoisture = new ColorRGBA(1, 1, 1, 1);
    ColorRGBA oceanMoisture = new ColorRGBA(0, 0, 0, 1);
    for (Graph.Center c : graph.centers) {
        int i = posList.size();
        posList.add(new Vector3f(c.location.x, c.location.y, 1));
        if (c.ocean) {
            colorList.add(oceanMoisture);
        } else if (c.water) {
            colorList.add(waterMoisture);
        } else {
            colorList.add(new ColorRGBA(1 - c.moisture, 1 - c.moisture, 1 - c.moisture, 1));
        }
        cornerIndices.clear();
        for (Graph.Corner q : c.corners) {
            cornerIndices.put(q, posList.size());
            posList.add(new Vector3f(q.point.x, q.point.y, 1));
            if (c.ocean) {
                colorList.add(oceanMoisture);
            } else if (c.water) {
                colorList.add(waterMoisture);
            } else {
                colorList.add(new ColorRGBA(1 - q.moisture, 1 - q.moisture, 1 - q.moisture, 1));
            }
        }
        for (Graph.Edge edge : c.borders) {
            indexList.add(i);
            indexList.add(cornerIndices.get(edge.v0));
            indexList.add(cornerIndices.get(edge.v1));
        }
    }
    Mesh mesh = new Mesh();
    mesh.setBuffer(VertexBuffer.Type.Position, 3,
            BufferUtils.createFloatBuffer(posList.toArray(new Vector3f[posList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Color, 4,
            BufferUtils.createFloatBuffer(colorList.toArray(new ColorRGBA[colorList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Index, 1, BufferUtils
            .createIntBuffer(ArrayUtils.toPrimitive(indexList.toArray(new Integer[indexList.size()]))));
    mesh.setMode(Mesh.Mode.Triangles);
    mesh.updateCounts();
    Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setBoolean("VertexColor", true);
    mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
    Geometry geom = new Geometry("biomesGeom", mesh);
    geom.setMaterial(mat);
    geom.setLocalScale(size);
    geom.setQueueBucket(RenderQueue.Bucket.Gui);
    geom.setCullHint(Spatial.CullHint.Never);
    return geom;
}

From source file:org.shaman.terrain.polygonal.GraphToHeightmap.java

private Geometry createBiomesGeometry(Biome slot) {
    //biomes//  ww w  . ja va2  s  .co  m
    ArrayList<Vector3f> posList = new ArrayList<>();
    ArrayList<Integer> indexList = new ArrayList<>();
    Map<Graph.Corner, Integer> cornerIndices = new HashMap<>();
    for (Graph.Center c : graph.centers) {
        if (c.biome != slot) {
            continue;
        }
        int i = posList.size();
        posList.add(new Vector3f(c.location.x, c.location.y, 1));
        cornerIndices.clear();
        for (Graph.Corner corner : c.corners) {
            cornerIndices.put(corner, posList.size());
            posList.add(new Vector3f(corner.point.x, corner.point.y, 1));
        }
        for (Graph.Edge edge : c.borders) {
            indexList.add(i);
            indexList.add(cornerIndices.get(edge.v0));
            indexList.add(cornerIndices.get(edge.v1));
        }
    }
    Mesh biomesMesh = new Mesh();
    biomesMesh.setBuffer(VertexBuffer.Type.Position, 3,
            BufferUtils.createFloatBuffer(posList.toArray(new Vector3f[posList.size()])));
    biomesMesh.setBuffer(VertexBuffer.Type.Index, 1, BufferUtils
            .createIntBuffer(ArrayUtils.toPrimitive(indexList.toArray(new Integer[indexList.size()]))));
    biomesMesh.setMode(Mesh.Mode.Triangles);
    biomesMesh.updateCounts();
    Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setColor("Color", ColorRGBA.White);
    mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
    Geometry geom = new Geometry("biomesGeom", biomesMesh);
    geom.setMaterial(mat);
    geom.setLocalScale(size);
    geom.setQueueBucket(RenderQueue.Bucket.Gui);
    geom.setCullHint(Spatial.CullHint.Never);
    return geom;
}

From source file:org.shaman.terrain.polygonal.PolygonalMapGenerator.java

private void updateTemperatureGeometry() {
    ArrayList<Vector3f> posList = new ArrayList<>();
    ArrayList<Integer> indexList = new ArrayList<>();
    ArrayList<ColorRGBA> colorList = new ArrayList<>();
    Map<Graph.Corner, Integer> cornerIndices = new HashMap<>();
    for (Graph.Center c : graph.centers) {
        int i = posList.size();
        posList.add(new Vector3f(c.location.x, c.location.y, 1));
        if (c.water) {
            colorList.add(c.biome.color);
        } else {//from w  w  w.j  a va  2s . c  om
            colorList.add(new ColorRGBA(Math.max(0, c.temperature), 0, Math.min(1, 1 - c.temperature), 1));
        }
        cornerIndices.clear();
        for (Graph.Corner q : c.corners) {
            cornerIndices.put(q, posList.size());
            posList.add(new Vector3f(q.point.x, q.point.y, 1));
            if (c.water) {
                colorList.add(c.biome.color);
            } else {
                colorList.add(new ColorRGBA(Math.max(0, q.temperature), 0, Math.min(1, 1 - q.temperature), 1));
            }
        }
        for (Graph.Edge edge : c.borders) {
            indexList.add(i);
            indexList.add(cornerIndices.get(edge.v0));
            indexList.add(cornerIndices.get(edge.v1));
        }
    }
    Mesh mesh = new Mesh();
    mesh.setBuffer(VertexBuffer.Type.Position, 3,
            BufferUtils.createFloatBuffer(posList.toArray(new Vector3f[posList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Color, 4,
            BufferUtils.createFloatBuffer(colorList.toArray(new ColorRGBA[colorList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Index, 1, BufferUtils
            .createIntBuffer(ArrayUtils.toPrimitive(indexList.toArray(new Integer[indexList.size()]))));
    mesh.setMode(Mesh.Mode.Triangles);
    mesh.updateCounts();
    Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setBoolean("VertexColor", true);
    mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
    Geometry geom = new Geometry("biomesGeom", mesh);
    geom.setMaterial(mat);
    temperatureNode.detachAllChildren();
    temperatureNode.attachChild(geom);
    LOG.info("biomes geometry updated");
}

From source file:org.shaman.terrain.polygonal.PolygonalMapGenerator.java

private void updateMoistureGeometry() {
    moistureNode.detachAllChildren();//from w w  w .ja  v a2s  .co m
    //moisture
    ArrayList<Vector3f> posList = new ArrayList<>();
    ArrayList<Integer> indexList = new ArrayList<>();
    ArrayList<ColorRGBA> colorList = new ArrayList<>();
    Map<Graph.Corner, Integer> cornerIndices = new HashMap<>();
    for (Graph.Center c : graph.centers) {
        int i = posList.size();
        posList.add(new Vector3f(c.location.x, c.location.y, 1));
        if (c.water) {
            colorList.add(c.biome.color);
        } else {
            colorList.add(new ColorRGBA(Math.max(0, 1 - c.moisture), Math.max(0, 0.5f - c.moisture / 2),
                    Math.min(1, c.moisture), 1));
        }
        cornerIndices.clear();
        for (Graph.Corner q : c.corners) {
            cornerIndices.put(q, posList.size());
            posList.add(new Vector3f(q.point.x, q.point.y, 1));
            if (c.water) {
                colorList.add(c.biome.color);
            } else {
                colorList.add(new ColorRGBA(Math.max(0, 1 - q.moisture), Math.max(0, 0.5f - q.moisture / 2),
                        Math.min(1, q.moisture), 1));
            }
        }
        for (Graph.Edge edge : c.borders) {
            indexList.add(i);
            indexList.add(cornerIndices.get(edge.v0));
            indexList.add(cornerIndices.get(edge.v1));
        }
    }
    Mesh mesh = new Mesh();
    mesh.setBuffer(VertexBuffer.Type.Position, 3,
            BufferUtils.createFloatBuffer(posList.toArray(new Vector3f[posList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Color, 4,
            BufferUtils.createFloatBuffer(colorList.toArray(new ColorRGBA[colorList.size()])));
    mesh.setBuffer(VertexBuffer.Type.Index, 1, BufferUtils
            .createIntBuffer(ArrayUtils.toPrimitive(indexList.toArray(new Integer[indexList.size()]))));
    mesh.setMode(Mesh.Mode.Triangles);
    mesh.updateCounts();
    Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setBoolean("VertexColor", true);
    mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off);
    Geometry geom1 = new Geometry("biomesGeom", mesh);
    geom1.setMaterial(mat);
    moistureNode.attachChild(geom1);
    //river
    if (showRivers) {
        posList.clear();
        colorList.clear();
        for (Graph.Edge e : graph.edges) {
            if (e.v0.river > 0 && e.v1.river > 0) {
                posList.add(new Vector3f(e.v0.point.x, e.v0.point.y, 0.5f));
                colorList.add(new ColorRGBA(1 - e.v0.river / 20f, 1 - e.v0.river / 20f, 1, 1));
                posList.add(new Vector3f(e.v1.point.x, e.v1.point.y, 0.5f));
                colorList.add(new ColorRGBA(1 - e.v1.river / 20f, 1 - e.v1.river / 20f, 1, 1));
            }
        }
        mesh = new Mesh();
        mesh.setBuffer(VertexBuffer.Type.Position, 3,
                BufferUtils.createFloatBuffer(posList.toArray(new Vector3f[posList.size()])));
        mesh.setBuffer(VertexBuffer.Type.Color, 4,
                BufferUtils.createFloatBuffer(colorList.toArray(new ColorRGBA[colorList.size()])));
        mesh.setMode(Mesh.Mode.Lines);
        mesh.setLineWidth(5);
        //      mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
        //      mat.setColor("Color", ColorRGBA.Blue);
        Geometry geom2 = new Geometry("riverGeom", mesh);
        geom2.setMaterial(mat);
        moistureNode.attachChild(geom2);
    }

    LOG.info("biomes geometry updated");
}