コード例 #1
0
        public static bool Spawn(string id, SpawnPoint[] spawnPoints, SpawnDistanceType spawnDistance)
        {
            var spawnPoint = SpawnerUtils.FetchSpawnPoint(spawnPoints, spawnDistance);

            spawnPoint.MarkUse();
            return(Instance.ExecuteSpawn(id, spawnPoint.Position));
        }
コード例 #2
0
        public SpawnPoint FetchSpawnPoint(SpawnDistanceType spawnDistanceType)
        {
            if (spawnDistanceType == SpawnDistanceType.Far)
            {
                return(FetchFarthestSpawnPoint());
            }
            else if (spawnDistanceType == SpawnDistanceType.Random)
            {
                return(FetchRandomSpawnPoint());
            }

            return(FetchClosestSpawnPoint());
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 public static bool Spawn(Enum idEnum, SpawnPoint[] spawnPoints, SpawnDistanceType spawnDistance)
 => Spawn(idEnum.ToString(), spawnPoints, spawnDistance);
コード例 #6
0
        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));
        }
コード例 #7
0
 public static bool Spawn(Enum idEnum, SpawnPointController spawnPointController, SpawnDistanceType spawnDistance, out Poolable poolable)
 => Spawn(idEnum.ToString(), spawnPointController, spawnDistance, out poolable);