Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
 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);
 }
Пример #5
0
 public PlayerNameTagAndRectTransform(PlayerNameTag playerNameTag, RectTransform rectTransform)
 {
     PlayerNameTag = playerNameTag;
     RectTransform = rectTransform;
 }