public static bool Spawn(string id, SpawnPoint[] spawnPoints, SpawnDistanceType spawnDistance) { var spawnPoint = SpawnerUtils.FetchSpawnPoint(spawnPoints, spawnDistance); spawnPoint.MarkUse(); return(Instance.ExecuteSpawn(id, spawnPoint.Position)); }
public SpawnPoint FetchSpawnPoint(SpawnDistanceType spawnDistanceType) { if (spawnDistanceType == SpawnDistanceType.Far) { return(FetchFarthestSpawnPoint()); } else if (spawnDistanceType == SpawnDistanceType.Random) { return(FetchRandomSpawnPoint()); } return(FetchClosestSpawnPoint()); }
public static SpawnPoint FetchSpawnPoint(SpawnPoint[] spawnPoints, SpawnDistanceType spawnDistance) { int targetIndex; if (spawnDistance == SpawnDistanceType.Far) { targetIndex = FetchFarthestSpawnPoint(spawnPoints); } else { targetIndex = FetchClosestSpawnPoint(spawnPoints); } var targerSpawnPoint = spawnPoints[targetIndex]; targerSpawnPoint.MarkUse(); return(targerSpawnPoint); }
public Vector3 FetchSpawnPointPosition(SpawnPoint[] spawnPoints, SpawnDistanceType spawnDistance) { var targetIndex = 0; var distance = -1f; for (int i = 0; i < spawnPoints.Length; i++) { if (_avoidRepeating && i == _lastSpawnPointIndex) { continue; } var sp = spawnPoints[i]; if (spawnDistance == SpawnDistanceType.Far) { if (sp.DistanceToPlayer >= distance) { distance = sp.DistanceToPlayer; targetIndex = i; } } else if (spawnDistance == SpawnDistanceType.Close) { if (sp.DistanceToPlayer <= distance) { distance = sp.DistanceToPlayer; targetIndex = i; } } } _lastSpawnPointIndex = targetIndex; var targetSpawnPoint = spawnPoints[targetIndex]; targetSpawnPoint.MarkUse(); return(targetSpawnPoint.transform.position); }
public static bool Spawn(Enum idEnum, SpawnPoint[] spawnPoints, SpawnDistanceType spawnDistance) => Spawn(idEnum.ToString(), spawnPoints, spawnDistance);
public static bool Spawn(string id, SpawnPointController spawnPointController, SpawnDistanceType spawnDistance, out Poolable poolable) { var spawnPoint = spawnPointController.FetchSpawnPoint(spawnDistance); spawnPoint.MarkUse(); return(Instance.ExecuteSpawn(id, spawnPoint.Position, out poolable)); }
public static bool Spawn(Enum idEnum, SpawnPointController spawnPointController, SpawnDistanceType spawnDistance, out Poolable poolable) => Spawn(idEnum.ToString(), spawnPointController, spawnDistance, out poolable);