1 package org.opentrafficsim.core.network.lane;
2
3 import java.rmi.RemoteException;
4
5 import org.opentrafficsim.core.gtu.RelativePosition;
6 import org.opentrafficsim.core.gtu.lane.LaneBasedGTU;
7 import org.opentrafficsim.core.network.NetworkException;
8 import org.opentrafficsim.core.unit.LengthUnit;
9 import org.opentrafficsim.core.value.vdouble.scalar.DoubleScalar;
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class SensorLaneStart extends AbstractSensor
24 {
25
26 private static final long serialVersionUID = 20141231L;
27
28
29
30
31
32 public SensorLaneStart(final Lane lane)
33 {
34 super(lane, new DoubleScalar.Rel<LengthUnit>(Math.ulp(0.0), LengthUnit.METER), RelativePosition.FRONT);
35 }
36
37
38
39
40
41
42
43 @Override
44 public final void trigger(final LaneBasedGTU<?> gtu) throws RemoteException
45 {
46 try
47 {
48
49
50 getLane().addGTU(gtu, new DoubleScalar.Rel<LengthUnit>(-gtu.getFront().getDx().getSI(), LengthUnit.SI));
51 gtu.addFrontToSubsequentLane(getLane());
52 }
53 catch (NetworkException exception)
54 {
55
56 exception.printStackTrace();
57 }
58 }
59
60
61 @Override
62 @SuppressWarnings("checkstyle:designforextension")
63 public String toString()
64 {
65 return "SensorLaneStart [getLane()=" + this.getLane() + ", getLongitudinalPosition()="
66 + this.getLongitudinalPosition() + ", getPositionType()=" + this.getPositionType() + "]";
67 }
68
69 }