private AreaEstimate[] GetAreaEstimates(SimVehicleState svs) { List <AreaEstimate> estimates = new List <AreaEstimate>(); foreach (IVehicleArea iva in this.RoadNetwork.VehicleAreas) { if (iva.ContainsVehicle(svs.Position, svs.Length, svs.Width, svs.Heading)) { AreaEstimate ae = new AreaEstimate(); ae.AreaId = iva.DefaultAreaId(); if (iva is ArbiterInterconnect) { ae.AreaType = StateAreaType.Interconnect; } else if (iva is ArbiterLane) { ae.AreaType = StateAreaType.Lane; } else { ae.AreaType = StateAreaType.Zone; } ae.Probability = 1; estimates.Add(ae); } } return(estimates.ToArray()); }
/// <summary> /// Make a vehicle state from a sim vehicle state /// </summary> /// <param name="simState"></param> /// <returns></returns> public VehicleState VehicleStateFromSim(SimVehicleState simState) { // vehicle state VehicleState vs = new VehicleState(); // area vs.Area = new List <AreaEstimate>(); // ae AreaEstimate ae = new AreaEstimate(); ae.Probability = 1; // get string id string id = ""; // set id ae.AreaId = id; ae.AreaType = StateAreaType.Interconnect; // get area IAreaSubtypeId iasi = this.GetAreaId(simState); if (iasi is ArbiterPerimeterId) { id = ((ArbiterPerimeterId)iasi).ToString(); ae.AreaType = StateAreaType.Zone; } else if (iasi is ArbiterLaneId) { ae.AreaId = ((ArbiterLaneId)iasi).ToString() + ".1"; ae.AreaType = StateAreaType.Lane; } // add ae vs.Area.Add(ae); // set others vs.Heading = simState.Heading; vs.Position = simState.Position; // return return(vs); }