public void AssignAverageSpawnpoint() { if (Spawnpoints.Count < 2 || Spawnpoints.Any(x => x.IsAverage)) { return; } var averageX = Spawnpoints.Sum(x => x.X) / Spawnpoints.Count; var averageY = Spawnpoints.Sum(x => x.Y) / Spawnpoints.Count; var averageZ = Spawnpoints.Sum(x => x.Z) / Spawnpoints.Count; var order = Spawnpoints.OrderBy(x => x.Index).ThenBy(x => x.Time); var spawnpoint = order.FirstOrDefault(x => x.O != 0f); if (spawnpoint == null) { spawnpoint = order.FirstOrDefault(); } var o = spawnpoint.O; var nearest = Spawnpoints.OrderBy(x => x.Distance(averageX, averageY, averageZ)).First(); var farthestDistance = Spawnpoints.Select(x => x.Distance(averageX, averageY, averageZ)).Max(); nearest.IsAverage = true; nearest.EstimatedSpawnDistance = farthestDistance; }
private void Start() { spawningTimer = spawningTime; sp_Points = new List <Spawnpoints>(); for (int i = 0; i < spawnpoints.Length; i++) { Spawnpoints sp = new Spawnpoints(); sp_Points.Add(sp); sp_Points[i].point = spawnpoints[i]; } }
// Set number of portals with private void SetupSpawnPoints(int count) { if (Spawnpoints.Count > 0) { Spawnpoints.Clear(); } for (int i = 0; i < count; i++) { Spawnpoints.Add(new Point(random.Next(200, Game1.SCREENWIDTH - 199), random.Next(200, Game1.SCREENHEIGHT - 199))); } }
public Task <List <Spawnpoints> > GetNearestSpawnpointsAsync(double latitude, double longitude) { return(EntityFrameworkQueryableExtensions.ToListAsync <Spawnpoints>(Spawnpoints.FromSql($@" SELECT s.* FROM spawnpoints AS s INNER JOIN ( SELECT id, ( 6371 * 1000 * acos(cos(radians({latitude})) * cos(radians(lat)) * cos(radians(lon) - radians({longitude})) + sin(radians({latitude})) * sin(radians(lat))) ) AS distance_in_m FROM spawnpoints HAVING distance_in_m < 100 ORDER BY distance_in_m ASC ) AS f on s.id = f.id "))); }
public void AssignAverageWaitTime() { if (Spawnpoints.Count < 2 || Spawnpoints.All(x => x.WaitTime != 0)) { return; } var order = Spawnpoints.OrderBy(x => x.Index).ThenBy(x => x.Time).GroupBy(x => x.Time); var waittimes = new List <int>(); var array = order.Select(x => x.First()).ToArray(); for (var i = 0; i < array.Length; i++) { if (i + 1 < array.Length) { var ms = (int)(array[i + 1].Time - array[i].Time).TotalMilliseconds; waittimes.Add(ms); array[i + 1].WaitTime = ms; } } var average = 0; if (waittimes.Count > 0) { average = waittimes.Sum() / waittimes.Count; } for (var i = 0; i < array.Length; i++) { if (i + 1 < array.Length) { array[i + 1].WaitTime = average; } } }
private void Awake() { sp_Single = this; }
public void OnEnable() { target_SpawnPoints = (Spawnpoints)target; }
public void Start() { SP = gameObject.GetComponent <Spawnpoints>(); Instantiate(PlayerPrefab, SP.SpawnpointsList[0].transform.position, SP.SpawnpointsList[0].transform.rotation); }
public Task <Spawnpoints> GetNearestSpawnpointAsync(double latitude, double longitude) { return(EntityFrameworkQueryableExtensions.FirstOrDefaultAsync <Spawnpoints>(Spawnpoints.FromSql($@" SELECT * FROM spawnpoints WHERE id IN ( SELECT id FROM ( SELECT id, despawn_time, IFNULL(duration, 30), lat, lon, 111.045 * DEGREES(ACOS(COS(RADIANS({latitude})) * COS(RADIANS(lat)) * COS(RADIANS(lon) - RADIANS({longitude})) + SIN(RADIANS({latitude})) * SIN(RADIANS(lat)))) AS distance_in_km FROM spawnpoints ORDER BY distance_in_km ASC ) AS temp WHERE distance_in_km < 0.1 ) LIMIT 0,1"))); }