Esempio n. 1
0
 public SpawnPoint[] GetAllSpawnPoints()
 {
     return
         ((from a in GameAgent.GetAgents()
           where a is SpawnPoint
           select a as SpawnPoint).ToArray());
 }
Esempio n. 2
0
        public void Spawn(GameAgent agent, bool reset)
        {
            if (reset)
            {
                agent.gameObject.SetActive(false);
            }

            SetPositionAndRotation(agent.transform);

            if (reset)
            {
                agent.gameObject.SetActive(true);
            }

            agent.OnSpawn(this, reset);
        }
Esempio n. 3
0
        public static GameAgent Find(string id)
        {
            GameAgent agent = null;

            if (!string.IsNullOrEmpty(id))
            {
#if UNITY_EDITOR
                if (!Application.isPlaying)
                {
                    foreach (var i in FindObjectsOfType <GameAgent>())
                    {
                        if (i.agentIdentifier == id)
                        {
                            return(i);
                        }
                    }
                }
#endif
                lookup.TryGetValue(id, out agent);
            }
            return(agent);
        }
Esempio n. 4
0
        IEnumerator SpawnPlayerCo(SpawnPoint spawnPoint, bool reset, bool nextFrame)
        {
            if (nextFrame)
            {
                yield return(null);
            }

            Profiler.BeginSample("SpawnPlayerCo");

            lastPlayerSpawnPoint = spawnPoint;

            if (!playerPrefab)
            {
                Debug.LogError("Missing player prefab");
                yield break;
            }

            if (!playerController)
            {
                playerController = Instantiate(playerPrefab);
            }

            if (!playerCamera)
            {
                playerCamera = Instantiate(playerCameraPrefab);
            }

            for (var i = GameAgent.GetEnumerator(); i.MoveNext();)
            {
                if (i.Current)
                {
                    i.Current.OnBeforeSpawnPlayer(reset);
                }
            }

            var camera          = spawnPoint.camera ? spawnPoint.camera : defaultCamera;
            var cameraTransform = camera.transform;

            cameraTransform.parent =
                playerCamera.eyeTransform ? playerCamera.eyeTransform : playerCamera.transform;

            cameraTransform.localPosition = Vector3.zero;
            cameraTransform.localRotation = Quaternion.identity;
            cameraTransform.localScale    = Vector3.one;

            playerCamera.camera           = camera;
            playerController.playerCamera = playerCamera;

            if (audioTransformsUpdater != null)
            {
                audioTransformsUpdater(playerController.transform, camera.transform);
            }

            spawnPoint.Spawn(playerController, reset);

            for (var i = GameAgent.GetEnumerator(); i.MoveNext();)
            {
                if (i.Current)
                {
                    i.Current.OnAfterSpawnPlayer(spawnPoint, reset);
                }
            }

            Profiler.EndSample();
        }