private void setUpNameTag(DataEntityHandle handle, bool isLocalPlayer) { if (handle.IsNull || !dataEntityCollection.TryGetComponent <SessionIdData>(handle, out var component)) { return; } long sessionId = component.SessionId; string displayName = dataEntityCollection.GetComponent <DisplayNameData>(handle).DisplayName; bool flag = dataEntityCollection.HasComponent <FriendData>(handle); if (!activePlayerNameTags.ContainsKey(sessionId)) { PlayerNameTag playerNameTagFromPool = getPlayerNameTagFromPool(); if (isLocalPlayer) { playerNameTagFromPool.transform.SetParent(LocalPlayerContainer, worldPositionStays: false); playerNameTagFromPool.SetNameTagType(PlayerNameTag.Type.LocalPlayer); } else if (flag) { playerNameTagFromPool.transform.SetParent(FriendPlayersContainer, worldPositionStays: false); playerNameTagFromPool.SetNameTagType(PlayerNameTag.Type.Friend); } else { playerNameTagFromPool.transform.SetParent(RemotePlayersContainer, worldPositionStays: false); playerNameTagFromPool.SetNameTagType(PlayerNameTag.Type.RemotePlayer); } playerNameTagFromPool.Handle = handle; playerNameTagFromPool.SetNameText(displayName); playerNameTagFromPool.transform.localScale = Vector3.one; playerNameTagFromPool.transform.localRotation = Quaternion.identity; Transform transform = getTransform(sessionId); if (transform != null) { CameraCullingMaskHelper.SetLayerIncludingChildren(playerNameTagFromPool.transform, LayerMask.LayerToName(transform.gameObject.layer)); } activePlayerNameTags.Add(sessionId, new PlayerNameTagAndRectTransform(playerNameTagFromPool, playerNameTagFromPool.GetComponent <RectTransform>())); if (this.OnPlayerNameAdded != null) { this.OnPlayerNameAdded(sessionId); } if (!nameTagsActive) { playerNameTagFromPool.SetActive(isActive: false); } } }
private void onPlayerRemoved(RemotePlayerData remotePlayerData) { remotePlayerData.PlayerRemoved -= onPlayerRemoved; DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(remotePlayerData); long sessionId = dataEntityCollection.GetComponent <SessionIdData>(entityByComponent).SessionId; if (activePlayerNameTags.ContainsKey(sessionId)) { PlayerNameTag playerNameTag = activePlayerNameTags[sessionId].PlayerNameTag; if (playerNameTag != null) { playerNameTag.SetActive(isActive: false); playerNameTagPool.Unspawn(playerNameTag.gameObject); } activePlayerNameTags.Remove(sessionId); } }
private PlayerNameTag getPlayerNameTagFromPool() { PlayerNameTag playerNameTag = null; if (playerNameTagPool != null) { GameObject gameObject = playerNameTagPool.Spawn(); if (!(gameObject != null)) { throw new InvalidOperationException("PlayerNameController.getPlayerNameTag: Did not get player name tag from pool"); } playerNameTag = gameObject.GetComponent <PlayerNameTag>(); if (playerNameTag == null) { throw new NullReferenceException("Pooled object did not have a PlayerNameTag"); } } return(playerNameTag); }
private bool onFriendsListUpdated(FriendsServiceEvents.FriendsListUpdated evt) { foreach (KeyValuePair <long, PlayerNameTagAndRectTransform> activePlayerNameTag in activePlayerNameTags) { PlayerNameTag playerNameTag = activePlayerNameTag.Value.PlayerNameTag; if (playerNameTag.CurrentType != 0) { if (dataEntityCollection.HasComponent <FriendData>(playerNameTag.Handle)) { playerNameTag.transform.SetParent(FriendPlayersContainer, worldPositionStays: false); playerNameTag.SetNameTagType(PlayerNameTag.Type.Friend); } else { playerNameTag.transform.SetParent(RemotePlayersContainer, worldPositionStays: false); playerNameTag.SetNameTagType(PlayerNameTag.Type.RemotePlayer); } } } return(false); }
public PlayerNameTagAndRectTransform(PlayerNameTag playerNameTag, RectTransform rectTransform) { PlayerNameTag = playerNameTag; RectTransform = rectTransform; }