public void AddToRadar(RadarVisibleObject sourceObject, ScreensEffectManager.RadarObjectDisplay icon) { myObject = sourceObject; SpriteRenderer = GetComponent <SpriteRenderer>(); SpriteRenderer.color = icon.color; SpriteRenderer.sprite = icon.icon; }
bool ShouldBeVisible(RadarVisibleObject item) { float mul = radarIcons[item.kind].detectionDistanceMultiplier; return(Mathf.Abs(item.lastRelativePosition.x) < visibilitySpanHorizontal * mul && Mathf.Abs(item.lastRelativePosition.y) < visibilitySpanHorizontal * mul && item.lastRelativePosition.z < visibilityDistanceAhead * mul && item.lastRelativePosition.z > 0f); }
void RemoveObjectGraphic(RadarVisibleObject item) { RadarBlip blip; if (maintainedGraphics.TryGetValue(item, out blip)) { Destroy(blip.gameObject); maintainedGraphics.Remove(item); } }
void AddOrUpdateObjectGraphic(RadarVisibleObject radarVisibleObject) { if (radarVisibleObject == null) { return; } RadarBlip blip; if (!maintainedGraphics.TryGetValue(radarVisibleObject, out blip)) { var go = Instantiate(ObjectManager.Instance.Prefabs.radarImage); go.transform.parent = radarScreen.transform; blip = go.GetComponent <RadarBlip>(); maintainedGraphics[radarVisibleObject] = blip; blip.AddToRadar(radarVisibleObject, radarIcons[radarVisibleObject.kind]); } float mul = radarIcons[radarVisibleObject.kind].detectionDistanceMultiplier; var relativePosition = ObjectManager.Instance.ShipController.GameObject.transform.InverseTransformPoint(radarVisibleObject.transform.position); relativePosition /= mul; radarVisibleObject.lastRelativePosition = relativePosition; blip.transform.localScale = Vector3.one; var enabled = ShouldBeVisible(radarVisibleObject); blip.SpriteRenderer.enabled = enabled; if (enabled) { var data = radarIcons[radarVisibleObject.kind]; float xFactor = 4f; // simulate enlargement through distance var dist = relativePosition.z; xFactor *= Utility.ProjectNumbers(0, visibilityDistanceAhead * mul, 1.2f, 0.2f, dist); blip.transform.localPosition = new Vector3(relativePosition.x, relativePosition.y, 0f) * xFactor / visibilitySpanHorizontal; var scale = Vector3.one * data.scale; if (!data.fixedScale) { scale *= 1f - relativePosition.z / visibilityDistanceAhead; } blip.transform.localScale = scale; } }