public void Execute(ref CarState state) { // Use the middle of the track to minimize error state.PositionOnCenterTrack = DotsHighway.GetEquivalentDistance( state.PositionOnTrack, state.Lane, (DotsHighway.NumLanes - 1) * 0.5f); SpacePartition.AddCar(state.PositionOnCenterTrack, state.Lane, state.FwdSpeed); }
public void Execute(ref CarState state) { //forward position var pos = state.PositionOnTrack + state.FwdSpeed * deltaTime; //lateral position var lane = state.Lane + state.LeftSpeed * deltaTime; var roundLane = math.round(lane); lane = math.select(lane, roundLane, math.abs(roundLane - lane) < .0001f); pos = DotsHighway.GetEquivalentDistance(pos, state.Lane, lane); state.PositionOnTrack = pos; state.Lane = lane; }