コード例 #1
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();
    }
コード例 #2
0
ファイル: Graph.cs プロジェクト: M-Schiller/Maroon
        /// <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();
            }
        }