/// <inheritdoc /> /// <summary> /// Resets the graph /// </summary> public void ResetObject() { time = -width / 2; max_vertex = width / _stepSize; index = 0; line_renderer.Clear(); }
/// <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(); }