private void Update() { if (RingVisualization == null) { return; } if (transform.parent != RingVisualization.transform) { transform.SetParent(RingVisualization.transform, false); } if (StartRadians > EndRadians) { Utility.Swap(ref StartRadians, ref EndRadians); } if (StartRadius > EndRadius) { Utility.Swap(ref StartRadius, ref EndRadius); } float radians = EndRadians - StartRadians; float thickness = EndRadius - StartRadius; int resolution = (radians / MathUtility.DegreesToRadians(DegreesPerSample)) .Round(); resolution = Mathf.Max(resolution, 2); LineRenderer.positionCount = resolution + 1; LineRenderer.startWidth = LineRenderer.endWidth = thickness; for (int i = 0; i <= resolution; i++) { float progress = (float)i / resolution; Vector3 position = RingVisualization.PolarCoordinatesToPosition( StartRadians + progress * radians, StartRadius + thickness / 2); LineRenderer.SetPosition(i, position); } }
private void Update() { //Regenerate RingVisualizations if change is detected if (RingVisualizations.Count() != Station.Rings.Count()) { foreach (RingVisualization ring_controller in RingVisualizations) { GameObject.DestroyImmediate(ring_controller.gameObject); } foreach (Ring ring in Station.Rings) { RingVisualization ring_visualization = GameObject.Instantiate(RingVisualizationPrefab); ring_visualization.Ring = ring; ring_visualization.transform.SetParent(transform); } } if (SelectedRing == null && RingVisualizations.Count() > 0) { SelectedRing = RingVisualizations.First(); } //Move RingVisualizations into correct positions foreach (RingVisualization ring in RingVisualizations) { float z = RingVisualizations .PreviousElements(ring) .Sum(ring_ => ring_.Ring.Depth + 50); ring.transform.localPosition = new Vector3(0, 0, z); ring.Color = Color.green; } if (The.StationViewer.RectTransform.IsPointedAt(true)) { Ray ray = The.StationViewer.GetRayFromCursorPosition(); foreach (RingVisualization ring in RingVisualizations) { if (!ring.Occludes(ray, 0.1f)) { continue; } ring.Color = Color.red; if (InputUtility.WasMouseLeftReleased) { SelectedRing = ring; if (Camera.Shot != StationVisualizationCamera.ShotType.Detail) { Camera.Shot = Camera.Shot + 1; } } break; } } }