private void SpawnCharacter(LocalWorker companyWorker) { if (SpawnPoints != null && SpawnPoints.Length > 0) { int randomIndex = Random.Range(0, SpawnPoints.Length); Transform randomTransform = SpawnPoints[randomIndex]; Vector2 spawnPos = randomTransform.position; GameObject newCharacter = null; if (null != CharactersPool) { newCharacter = CharactersPool.GetObject(); } if (null == newCharacter) { newCharacter = GameObject.Instantiate(CharacterPrefab, spawnPos, Quaternion.identity); } newCharacter.gameObject.SetActive(true); CharacterText textComponent = newCharacter.GetComponentInChildren <CharacterText>(); textComponent.Text = string.Format("{0} {1}", companyWorker.Name, companyWorker.Surename); companyWorker.AbsenceStarted += OnWorkerAbsenceStarted; companyWorker.AbsenceFinished += OnWorkerAbsenceFinished; companyWorker.PhysicalCharacter = newCharacter; SpawnedCharacters.Add(companyWorker); } #if DEVELOPMENT_BUILD || UNITY_EDITOR else { string debugInfo = string.Format("[{0}] Failed to spawn character in game world (no spawn points defined)", this.GetType().Name, MAX_SPAWN_RETRIES); Debug.Log(debugInfo); } #endif }
private void OnControlledCompanyWorkerAdded(LocalWorker companyWorker) { SpawnCharacter(companyWorker); }
private void OnWorkerAbsenceFinished(LocalWorker worker) { worker.PhysicalCharacter.gameObject.SetActive(true); }
/*Public consts fields*/ /*Public fields*/ /*Private methods*/ private void OnControlledCompanyWorkerRemoved(LocalWorker companyWorker) { RemoveCharacter(companyWorker); }
private void OnWorkerAbsenceStarted(LocalWorker worker) { worker.PhysicalCharacter.gameObject.SetActive(false); }