コード例 #1
0
ファイル: Graph.cs プロジェクト: M-Schiller/Maroon
 /// <inheritdoc />
 /// <summary>
 /// Resets the graph
 /// </summary>
 public void ResetObject()
 {
     time       = -width / 2;
     max_vertex = width / _stepSize;
     index      = 0;
     line_renderer.Clear();
 }
コード例 #2
0
    /// <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();
    }