Просмотр исходного кода

Adds validatePosition function, to prevent devices moving out of bounds

Andreas T. Meyer-Berg 6 лет назад
Родитель
Сommit
17494a3e5e

+ 1 - 0
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/control/ConfigurationController.java

@@ -124,6 +124,7 @@ public class ConfigurationController {
 	 */
 	public void setDeviceVisualizationRadius(int deviceVisualizationRadius) {
 		model.getConfigurator().getVisualizationConfiguration().setDeviceVisualizationRadius(deviceVisualizationRadius);
+		controller.validateDevicePosition();
 		controller.notifyObservers();
 	}
 

+ 12 - 1
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/control/Controller.java

@@ -150,7 +150,18 @@ public class Controller {
 		model.setHeight(height);
 		model.setDepth(depth);
 	}
-
+	
+	/**
+	 * Validate all device positions, move all devices into the bounds, if they are outside the visualization
+	 */
+	public void validateDevicePosition() {
+		// Update all device positions
+		for (SmartDevice d : model.getDevices()) {
+			d.setX(scalePos(d.getX(), 1.0, getWidth()));
+			d.setY(scalePos(d.getY(), 1.0, getHeight()));
+			d.setZ(scalePos(d.getZ(), 1.0, getDepth()));
+		}
+	}
 	/**
 	 * Calculates the new scaled position, which should be in Bounds:
 	 * {@code radius < newPosition <