Improved code
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...