private void POIOnDeathHandler(HealthBar hbar) { // Remove the radar ping for (int i = 0; i < _pingList.Count; i++) { RadarPingGUI ping = _pingList[i]; if (ping.PingObject == hbar.gameObject) { _pingList.Remove(ping); Destroy(ping.gameObject); return; } } }
private void UpdatePingPosition(RadarPingGUI ping) { // HACK: Lots of magic numbers here, but I GOTTA GO FAST Vector3 screenCenter = new Vector3(Screen.width * 0.5f, Screen.height * 0.5f); Rect radarRect = new Rect(Screen.width * 0.1f, Screen.height + 0.1f, Screen.width * 0.8f, Screen.height * 0.8f); RectTransform rTransform = ping.gameObject.GetComponent <RectTransform>(); Vector3 screenPos = _mainCamera.WorldToScreenPoint(ping.PingObject.transform.position); Vector3 distance = screenPos - screenCenter; if (distance.magnitude > Screen.height * 0.45f) { screenPos = screenCenter + distance.normalized * screenCenter.y * 0.9f; //screenPos.x = Mathf.Clamp(screenPos.x, radarRect.xMin, radarRect.xMax); //screenPos.y = Mathf.Clamp(screenPos.y, radarRect.yMin, radarRect.yMax); } rTransform.position = screenPos; ping.SetDistance(Vector3.Distance(ping.PingObject.transform.position, _playerShip.transform.position).ToString("0.00")); }
private void POICreatedHandler(Message msg) { POICreatedMessage poiMsg = msg as POICreatedMessage; // HACK: Should use some sort of IFF component or something that'll carry // more information if (!poiMsg.POI.CompareTag("Nebula")) { GameObject pingObj = Instantiate(_radarPingPrefab, gameObject.transform); RadarPingGUI ping = pingObj.GetComponent <RadarPingGUI>(); ping.PingObject = poiMsg.POI; _pingList.Add(ping); RectTransform rTransform = pingObj.GetComponent <RectTransform>(); rTransform.position = _mainCamera.WorldToScreenPoint(poiMsg.POI.transform.position - _playerShip.transform.position); HealthBar hbar = ping.PingObject.GetComponent <HealthBar>(); if (hbar != null) { hbar.OnDeath.AddListener(POIOnDeathHandler); } } }