public synchronized void changeColor(Coordinate3D coordinate, LedColor color) { for (Sphere s : leds) { if (s.getUserData().equals(coordinate)) { s.setMaterial(new PhongMaterial(color.getColor())); } } }
public static Sphere createSphere(Color c) { Sphere sphere = new Sphere(80); final PhongMaterial phongMaterial = new PhongMaterial(); phongMaterial.setDiffuseColor(c.darker()); phongMaterial.setSpecularColor(c.brighter()); sphere.setMaterial(phongMaterial); return sphere; }
private void init(LedColor initialColor) { PhongMaterial material = new PhongMaterial(); material.setDiffuseColor(initialColor.getColor()); int ledSpacing = 60; int ledSize = 10; for (int x = 0; x < cubeSize; x++) { for (int y = 0; y < cubeSize; y++) { for (int z = 0; z < cubeSize; z++) { final Sphere led = new Sphere(ledSize); led.setMaterial(material); led.setTranslateX(x * (ledSize + ledSpacing) + ledSize); led.setTranslateY(y * (ledSize + ledSpacing) + ledSize); led.setTranslateZ(z * (ledSize + ledSpacing) + ledSize); led.setOnMouseClicked( event -> { fireOnClick(event); }); led.setUserData(new Coordinate3D(x, z, cubeSize - y - 1)); getChildren().add(led); leds.add(led); } } } // add some axis Bounds b = getBoundsInLocal(); Cylinder xAxis = new Cylinder(2, b.getMaxX()); xAxis.setMaterial(new PhongMaterial(Color.RED)); xAxis.getTransforms().add(new Rotate(90, Rotate.Z_AXIS)); xAxis.setTranslateX(b.getMaxX() / 2); xAxis.setTranslateY(b.getMaxY() + 20); getChildren().add(xAxis); Cylinder yAxis = new Cylinder(2, b.getMaxZ()); yAxis.setMaterial(new PhongMaterial(Color.BLUE)); yAxis.getTransforms().add(new Rotate(90, Rotate.X_AXIS)); yAxis.setTranslateX(-20); yAxis.setTranslateY(b.getMaxY() + 20); yAxis.setTranslateZ(b.getMaxZ() / 2); getChildren().add(yAxis); Cylinder zAxis = new Cylinder(2, b.getMaxX()); zAxis.setMaterial(new PhongMaterial(Color.GREEN)); zAxis.setTranslateX(-20); zAxis.setTranslateY(b.getMaxY() / 2); getChildren().add(zAxis); }