WarehouseRenderer(Builder builder, CollisionGraphRoadModel m, final RenderController renderController) { model = m; graph = model.getGraph(); margin = builder.margin() + m.getVehicleLength() / 2d; drawOneWayStreetArrows = builder.vizOptions().contains( DRAW_ONE_WAY_STREET_ARROWS); showNodeOccupancy = builder.vizOptions().contains(SHOW_NODE_OCCUPANCY); showNodes = builder.vizOptions().contains(SHOW_NODES); showNodeCoordinates = builder.vizOptions().contains(SHOW_NODE_COORDINATES); adapter = new RenderHelper(); vehicleLength = model.getVehicleLength(); minDistance = model.getMinDistance(); final double roadWidth = model.getVehicleLength(); halfRoadWidth = roadWidth / 2d; arrowDimensions = new Point( ARROW_HEAD_REL_DIM.x * roadWidth, ARROW_HEAD_REL_DIM.y * roadWidth); m.getGraph().getEventAPI().addListener( new Listener() { @Override public void handleEvent(Event e) { renderController.requestStaticRenderUpdate(); } }, ListenableGraph.EventTypes.ADD_CONNECTION, ListenableGraph.EventTypes.REMOVE_CONNECTION); }
@Override public void initRoadUser(RoadModel m) { model = Optional.of((CollisionGraphRoadModel) m); Point p; while (model.get().isOccupied(p = model.get().getRandomPosition(rng))) {} model.get().addObjectAt(this, p); destination = Optional.of(model.get().getRandomPosition(rng)); }
@Override public void renderDynamic(GC gc, ViewPort vp, long time) { helper.adapt(gc, vp); synchronized (vehicles) { final Map<RoadUser, Point> objMap = model.getObjectsAndPositions(); for (final VehicleUI v : vehicles.values()) { v.update(gc, vp, helper, objMap); } } }
@Override public void tick(TimeLapse timeLapse) { // if (rng.nextInt(100) < 1 || timeOut > 0) { // if (timeOut == 0L) { // // timeOut = 100L; // } else { // timeOut--; // } // // } else { if (model.get().getPosition(this).equals(destination.get())) { destination = Optional.of(model.get().getRandomPosition(rng)); } model.get().moveTo(this, destination.get(), timeLapse); // } }
/** * Tests that vehicle length and min distance are set correctly (important * because they are both doubles). */ @Test @Ignore public void testCollisionGraphRMB() { final CollisionGraphRMB b = RoadModelBuilders .dynamicGraph(new ListenableGraph<>( new TableGraph<>())) .withCollisionAvoidance() .withVehicleLength(78d) .withMinDistance(3d); final double precision = 0.0000001; assertThat(b.getMinDistance()).isWithin(precision).of(3d); assertThat(b.getVehicleLength()).isWithin(precision).of(78d); final CollisionGraphRoadModel m = b.build(mock(DependencyProvider.class)); assertThat(m.getMinConnLength()).isWithin(precision) .of(b.getMinDistance()); assertThat(m.getVehicleLength()).isWithin(precision) .of(b.getVehicleLength()); }
image.get().dispose(); final int length = (int) (model.getVehicleLength() * vp.scale); final int width = length / 2; final int frontSize = length / 8;
@Override public void renderDynamic(GC gc, ViewPort vp, long time) { adapter.adapt(gc, vp); if (showNodeOccupancy) { for (final Point p : model.getOccupiedNodes()) { gc.setAlpha(SEMI_TRANSPARENT); adapter.setBackgroundSysCol(SWT.COLOR_RED); adapter.fillCircle(p, vehicleLength / 2d + minDistance); gc.setAlpha(OPAQUE); } } }
model.getConnection(vehicle);
.build(mock(DependencyProvider.class)); assertEquals(5d, cgr1.getVehicleLength(), 0);