public SpawnPoint[] GetAllSpawnPoints() { return ((from a in GameAgent.GetAgents() where a is SpawnPoint select a as SpawnPoint).ToArray()); }
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); }
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); }
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(); }