private async Task <List <BusDirections> > GetDirectionsBus(Coordinates coordinates, List <StopAccessibleViewModel> path, string startPlace, string endPlace) { List <BusDirections> busDirections = new List <BusDirections>(); var firstStop = path[0]; var firstStopName = GetBusStop(firstStop.InitialStopId).StopName; Directions directionsToTheFirstStop = await GetDirectionsByFoot(coordinates.StartingPoint, Context.BusStops.ProjectTo <BusStopViewModel>().First(x => x.Id == firstStop.InitialStopId).LatLng); var byFoot = new BusDirections() { Method = "foot", Polyline = directionsToTheFirstStop.Polylines.First(), Distance = directionsToTheFirstStop.Distance, Duration = directionsToTheFirstStop.Duration, LocationStart = startPlace, LocationEnd = firstStopName }; busDirections.Add(byFoot); foreach (var item in path) { string waypoints = GetWayPoints(item); string f = GetBusStop(item.InitialStopId).StopName; string second = GetBusStop(item.DestStopId).StopName; Directions directionsBetweenStops = await GetDirectionsCar(waypoints); string polyline = ""; foreach (var s in directionsBetweenStops.Polylines) { polyline = polyline.PolylineAdd(s); } busDirections.Add(new BusDirections() { Bus = GetBusName(item.BusId), Method = "bus", Distance = directionsBetweenStops.Distance, Duration = directionsBetweenStops.Duration, Polyline = polyline, LocationStart = f, LocationEnd = second }); } var lastStop = path[path.Count - 1]; var lastStopName = GetBusStop(lastStop.DestStopId).StopName; Directions directionsToDestination = await GetDirectionsByFoot(Context.BusStops .ProjectTo <BusStopViewModel>().First(x => x.Id == lastStop.DestStopId).LatLng, coordinates.EndPoint); busDirections.Add(new BusDirections() { Polyline = directionsToDestination.Polylines.First(), Method = "foot", Distance = directionsToDestination.Distance, Duration = directionsToDestination.Duration, LocationStart = lastStopName, LocationEnd = endPlace }); return(busDirections); }
protected override BusCollection GetBusCollection(MediaTypes mediaType, BusDirections busDir) { return(mediaType switch { MediaTypes.Audio => busDir == BusDirections.Input ? _audioInputs : _audioOutputs, MediaTypes.Event => busDir == BusDirections.Input ? _eventInputs : _eventOutputs, _ => null });
protected override BusCollection GetBusCollection(MediaTypes mediaType, BusDirections busDir) { if (mediaType == MediaTypes.Audio) { return(busDir == BusDirections.Input ? _audioInputs : _audioOutputs); } return(null); }
// retval NOT a TResult public virtual int GetBusCount(MediaTypes type, BusDirections dir) { System.Diagnostics.Trace.WriteLine("IComponent.GetBusCount(" + type + ", " + dir + ")"); var busses = GetBusCollection(type, dir); if (busses != null) { return(busses.Count); } return(0); }
public virtual int GetBusArrangement(BusDirections dir, int index, ref SpeakerArrangement arr) { System.Diagnostics.Trace.WriteLine("IAudioProcessor.GetBusArrangement(" + dir + ", " + index + ")"); var busses = GetBusCollection(MediaTypes.Audio, dir); if (busses == null) { return(TResult.E_NotImplemented); } if (index < 0 || index > busses.Count) { return(TResult.E_InvalidArg); } arr = ((AudioBus)busses[index]).SpeakerArrangement; return(TResult.S_OK); }
public AudioBusAccessor(ref ProcessData processData, BusDirections busDir, int busIndex) { _busDir = busDir; _numSamples = processData.NumSamples; _sampleSize = processData.SymbolicSampleSize; if (busDir == BusDirections.Input) { Guard.ThrowIfOutOfRange("busIndex", busIndex, 0, processData.NumInputs); InitializeAudioBuffers(processData.Inputs, busIndex); } else { Guard.ThrowIfOutOfRange("busIndex", busIndex, 0, processData.NumOutputs); InitializeAudioBuffers(processData.Outputs, busIndex); } }
public virtual int ActivateBus(MediaTypes type, BusDirections dir, int index, bool state) { System.Diagnostics.Trace.WriteLine("IComponent.ActivateBus(" + type + ", " + dir + ", " + index + ", " + state + ")"); var busses = GetBusCollection(type, dir); if (busses != null) { if (index < 0 || index >= busses.Count) { return(TResult.E_InvalidArg); } busses[index].IsActive = state; return(TResult.S_OK); } return(TResult.E_Unexpected); }
public virtual int GetBusInfo(MediaTypes type, BusDirections dir, int index, ref BusInfo bus) { System.Diagnostics.Trace.WriteLine("IComponent.GetBusInfo(" + type + ", " + dir + ", " + index + ")"); var busses = GetBusCollection(type, dir); if (busses != null) { if (index < 0 || index >= busses.Count) { return(TResult.E_InvalidArg); } busses[index].GetInfo(ref bus); return(TResult.S_OK); } return(TResult.E_Unexpected); }
public virtual int GetUnitByBus(MediaTypes type, BusDirections dir, int busIndex, int channel, ref int unitId) { return(TResult.E_NotImplemented); }
protected abstract BusCollection GetBusCollection(MediaTypes mediaType, BusDirections busDir);
public BusCollection(MediaTypes mediaType, BusDirections busDir) { MediaType = mediaType; BusDirection = busDir; }
public async Task <List <List <BusDirections> > > BusAlgorithm(Coordinates coordinates, string startPlace, string endPlace, int cityId) { StaticData.ListStopAccessibilities = Context.StopsAccessibility.Where(x => x.InitialStop.CityId == cityId).ToList(); StaticData.ListStopOrdered = Context.StopsOrdered.Where(x => x.BusStop.CityId == cityId).Include(x => x.BusStop).ToList(); List <BusStopViewModel> toLocation = new List <BusStopViewModel>(); List <BusStopViewModel> busStops = await BusStops(cityId); toLocation = FindStopsInRadius(coordinates.StartingPoint, busStops).ToList(); int stopsTaken = 3 - toLocation.Count; for (int i = 0; i < stopsTaken; i++) { toLocation.Add(FindNearestBusStopWithRemove(coordinates.StartingPoint, busStops)); } if (stopsTaken > 0) { busStops.AddRange(toLocation.Skip(3 - stopsTaken)); } List <BusStopViewModel> toDestination = new List <BusStopViewModel>(); toDestination = FindStopsInRadius(coordinates.EndPoint, busStops).ToList(); stopsTaken = 3 - toDestination.Count; for (int i = 0; i < stopsTaken; i++) { toDestination.Add(FindNearestBusStopWithRemove(coordinates.EndPoint, busStops)); } busStops.AddRange(toDestination.Skip(3 - stopsTaken)); bool tryOnFoot = false; var paths = new List <List <StopAccessibleViewModel> >(); List <List <StopAccessibleViewModel> > pathsWithTransfer = new List <List <StopAccessibleViewModel> >(); List <List <StopAccessibleViewModel> > directPaths = new List <List <StopAccessibleViewModel> >(); for (int i = 0; i < toLocation.Count; i++) { for (int j = 0; j < toDestination.Count; j++) { if (toLocation[i].Id == toDestination[j].Id) { tryOnFoot = true; continue; } var result = GetBiDirectionalBFSAsync(toLocation[i].Id, toDestination[j].Id, coordinates.EndPoint); if (result == null) { continue; } if (result.Count == 2) { pathsWithTransfer.Add(result[0]); directPaths.Add(result[1]); } else { if (result[0].Count == 1) { directPaths.Add(result[0]); } else { pathsWithTransfer.Add(result[0]); } } } } if (directPaths.Count != 0) { paths.Add(BestDirectPath(coordinates.StartingPoint, coordinates.EndPoint, directPaths)); } if (pathsWithTransfer.Count != 0) { paths.Add(BestDirectPath(coordinates.StartingPoint, coordinates.EndPoint, pathsWithTransfer)); } List <List <BusDirections> > busDirections = new List <List <BusDirections> >(); for (int i = 0; i < paths.Count; i++) { busDirections.Add(await GetDirectionsBus(coordinates, paths[i], startPlace, endPlace)); } if (DistanceBetween(coordinates.StartingPoint, coordinates.EndPoint) < 0.5 || tryOnFoot) { Directions d = await GetDirectionsByFoot(coordinates.StartingPoint, coordinates.EndPoint); BusDirections footDirections = new BusDirections(); footDirections.Polyline = d.Polylines.First(); footDirections.Distance = d.Distance; footDirections.Duration = d.Duration; footDirections.LocationEnd = startPlace; footDirections.LocationStart = endPlace; footDirections.Method = "foot"; busDirections.Insert(0, new List <BusDirections>() { footDirections }); } return(busDirections.ToList()); }