Improved code

 avatar
user_8400650
csharp
2 years ago
2.0 kB
25
Indexable
    
    
    private GameObject _cachedPlayer;
    
    /// <summary>
    /// Refreshes the position and size of the nicknames on the UI
    /// </summary>
    public void RefreshUI()
    {
        // Caching
        var cam = CameraGO.instance.transform;
        _camPos = cam.position;
        _camForward = cam.forward;
        
        var controllers = GameGO.instance.controllerGOs;

        for (int i = 0; i < controllers.Count; i++)
        {
  
            // Skip null values (controller destoyed during update cycle, etc)
            if(controllers[i] is not CachedGOClass _cachedCtrlrGO){
                continue;
            }
            
            // Self -- skip
            if (_cachedCtrlrGO == _cachedPlayer)
            {
                continue;
            }
            
            var pos = _cachedCtrlrGO.nicknameHolder.position
            
            // Teammate -- hide or Offscreen -- hide
            if (_cachedCtrlrGO.team == LocalClient.team ||
                Vector3.Dot((pos - _camPos), _camForward) <= 0)
            {
                HideBothUIElements();
                continue;
            }
            
            // Just for readability
            var tooFarForNickname = _cachedCtrlrGO.distToCam > FULL_NICKNAME_VISIBILITY_DISTANCE;
            
            // Set active based on dist
            _cachedCtrlrGO.nickname_image.gameObject.setActive(tooFarForNickname)
            _cachedCtrlrGO.nicknameUI_text.gameObject.setActive(!tooFarForNickname)

            // Update positions for both
            _cachedCtrlrGO.nickname_image.gameObject.transform.position = _cam.WorldToScreenPoint();
            _cachedCtrlrGO.nicknameUI_text.gameObject.transform.position = _cam.WorldToScreenPoint();

        }
    }
    
    void HideBothUIElements()
    {
        _cachedCtrlrGO.nickname_image.gameObject.SetActive(false);
        _cachedCtrlrGO.nicknameUI_text.gameObject.SetActive(false);
     
    }
Editor is loading...