List of usage examples for org.apache.commons.lang3 ArrayUtils toPrimitive
public static boolean[] toPrimitive(final Boolean[] array)
Converts an array of object Booleans to primitives.
This method returns null for a null input array.
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"); }