/// <summary> /// Draws the field lines /// </summary> public void Draw() { if (_lineRenderer == null) { return; } _lineRenderer.Clear(); if (!visible || Mathf.Abs(GetFieldStrengthFromEmObj()) < 0.05) { return; } var closingAngle = fixClosingAngle + (4 - GetFieldStrengthFromEmObj()) * 2; var positionIndex = 0; var position = transform.position - originOffset; _lineRenderer.SetPosition(positionIndex, transform.InverseTransformPoint(position)); positionIndex++; while (positionIndex < vertexCount) { var p = Vector3.Normalize(-field.get(position) * Teal.FieldStrengthFactor); var direction = new Vector3 { x = Mathf.Cos(closingAngle * Mathf.Deg2Rad) * p.x - Mathf.Sin(closingAngle * Mathf.Deg2Rad) * p.y, y = Mathf.Sin(closingAngle * Mathf.Deg2Rad) * p.x + Mathf.Cos(closingAngle * Mathf.Deg2Rad) * p.y, z = p.z }; position += direction * lineSegmentLength; _lineRenderer.SetPosition(positionIndex, transform.InverseTransformPoint(position)); positionIndex++; if (stopDrawingCheck != null && stopDrawingCheck(position)) { break; } } _lineRenderer.WritePositionsToLineRenderer(); }
/// <summary> /// Draws the graph when the simulation is running /// </summary> private void FixedUpdate() { if (!simController.SimulationRunning) { return; } if (_fixedUpdateCount++ % _fixedUpdateRate != 0) { return; } var value = GetValue <float>(); var drawPoint = _xAxis * time + _yAxis * GetRange(value) + _zAxis * _zOffset; line_renderer.SetPosition(index++, drawPoint); line_renderer.WritePositionsToLineRenderer(); time += _stepSize; if (index > max_vertex) { ResetObject(); } }