/** Transfers internal line data to jReality */ private void updateLines() { if (lineCoordinates.size() == 0) return; ilsf.setVertexCount(lineCoordinates.size()); ilsf.setVertexCoordinates(lineCoordinates.toArray(new double[0][0])); Color[] pointColorsArray = new Color[lineColors.size() * 2]; for (int i = 0; i < lineColors.size(); i++) { pointColorsArray[2 * i] = lineColors.get(i); pointColorsArray[2 * i + 1] = lineColors.get(i); } ilsf.setVertexColors(pointColorsArray); pointColorsArray = null; double[] pointSizesArray = new double[lineSizes.size() * 2]; for (int i = 0; i < lineColors.size(); i++) { pointSizesArray[2 * i] = lineSizes.get(i); pointSizesArray[2 * i + 1] = lineSizes.get(i); } ilsf.setVertexRelativeRadii(pointSizesArray); ilsf.setEdgeCount(lineIndices.size() / 2); ilsf.setEdgeColors(lineColors.toArray(new Color[0])); int[] indicesArray = new int[lineIndices.size()]; for (int i = 0; i < lineIndices.size(); ++i) indicesArray[i] = lineIndices.get(i); ilsf.setEdgeIndices(indicesArray); double[] sizesArray = new double[lineSizes.size()]; for (int i = 0; i < lineSizes.size(); ++i) sizesArray[i] = lineSizes.get(i); ilsf.setEdgeRelativeRadii(sizesArray); int[] typesArray = new int[lineTypes.size()]; for (int i = 0; i < lineTypes.size(); ++i) typesArray[i] = lineTypes.get(i); ilsf.setEdgeAttribute(Attribute.attributeForName("lineType"), new IntArray(typesArray)); ilsf.update(); }