void Update()
 {
     if (NeedsSlider)
     {
         if (UseSlider)
         {
             SnapFrame.time  = slider * 0.5f;
             SnapFrame.value = Mathf.Abs(Mathf.Sqrt(Mathf.Abs(Mathf.Sqrt(slider))));
             CapFrame.time   = slider;
             WidthCurve.MoveKey(0, SnapFrame);
             WidthCurve.MoveKey(1, CapFrame);
             lineMaterial.SetFloat("_Slider", slider);
             //lineMaterial.SetFloat("_Width", widthFactor);
             _Line.widthCurve = WidthCurve;
             //_lineRendererComponent.widthMultiplier = widthFactor;
         }
         if (previousSliderValue == slider)
         {
             UseSlider = false;
         }
         else
         {
             previousSliderValue = slider;
             UseSlider           = true;
         }
         resolution = Mathf.Max(resolution, 1);
         if (bezierCurve.HasChanged || (_Line.positionCount != resolution + 1))
         {
             UpdateLine();
         }
     }
 }
Example #2
0
        private void StartNewLine(Vector3 position, Material material, Color color, float lineWidth, bool automatedTaper)
        {
            var go = new GameObject("Drawing");

            go.transform.position = position;
            LineRenderer lineRenderer = go.AddComponent <LineRenderer>();

            lineRenderer.material         = material;
            lineRenderer.material.color   = color;
            lineRenderer.widthMultiplier  = lineWidth;
            lineRenderer.positionCount    = 0;
            lineRenderer.useWorldSpace    = false;
            lineRenderer.transform.parent = _drawingParent;
            _currentWidthCurve            = new WidthCurve(automatedTaper);
            _lastPosition = position;

            if (_isSmoothingActive)
            {
                _lastPositionsBuffer = null;
                AddMeanPoint(lineRenderer, _currentWidthCurve, position, 0f);
            }
            else
            {
                AddPoint(lineRenderer, _currentWidthCurve, position, 0f);
            }

            _currentLine = lineRenderer;
        }
Example #3
0
        private void AddPoint(LineRenderer line, WidthCurve curve, Vector3 newPosition, float width)
        {
            float distance = Vector3.Distance(_lastPosition, newPosition);

            if (distance < MinimalDrawingDistance && curve.Distances.Count > 0)
            {
                line.widthCurve = curve.GetCurve();
                line.SetPosition(line.positionCount - 1, line.transform.InverseTransformPoint(newPosition));
                return;
            }
            _lastPosition = newPosition;
            curve.AddPoint(width, distance);
            line.widthCurve = curve.GetCurve();
            line.positionCount++;
            line.SetPosition(line.positionCount - 1, line.transform.InverseTransformPoint(newPosition));
        }
Example #4
0
 public void Write(AssetWriter writer)
 {
     writer.Write(WidthMultiplier);
     WidthCurve.Write(writer);
     ColorGradient.Write(writer);
     writer.Write(NumCornerVertices);
     writer.Write(NumCapVertices);
     writer.Write((int)Alignment);
     writer.Write((int)TextureMode);
     if (HasShadowBias(writer.Version))
     {
         writer.Write(ShadowBias);
     }
     if (HasGenerateLightingData(writer.Version))
     {
         writer.Write(GenerateLightingData);
         writer.AlignStream();
     }
 }
Example #5
0
 public void Read(AssetReader reader)
 {
     WidthMultiplier = reader.ReadSingle();
     WidthCurve.Read(reader);
     ColorGradient.Read(reader);
     NumCornerVertices = reader.ReadInt32();
     NumCapVertices    = reader.ReadInt32();
     Alignment         = (LineAlignment)reader.ReadInt32();
     TextureMode       = (LineTextureMode)reader.ReadInt32();
     if (HasShadowBias(reader.Version))
     {
         ShadowBias = reader.ReadSingle();
     }
     if (HasGenerateLightingData(reader.Version))
     {
         GenerateLightingData = reader.ReadBoolean();
         reader.AlignStream();
     }
 }
Example #6
0
        public YAMLNode ExportYAML(IExportContainer container)
        {
            YAMLMappingNode node = new YAMLMappingNode();

            node.AddSerializedVersion(ToSerializedVersion(container.ExportVersion));
            node.Add(WidthMultiplierName, WidthMultiplier);
            node.Add(WidthCurveName, WidthCurve.ExportYAML(container));
            node.Add(ColorGradientName, ColorGradient.ExportYAML(container));
            node.Add(NumCornerVerticesName, NumCornerVertices);
            node.Add(NumCapVerticesName, NumCapVertices);
            node.Add(AlignmentName, (int)Alignment);
            node.Add(TextureModeName, (int)TextureMode);
            if (HasShadowBias(container.ExportVersion))
            {
                node.Add(ShadowBiasName, ShadowBias);
            }
            if (HasGenerateLightingData(container.ExportVersion))
            {
                node.Add(GenerateLightingDataName, GenerateLightingData);
            }
            return(node);
        }
Example #7
0
 private double CalculateWidth(double intervalPos)
 {
     return(ScaleCurveToValue(WidthCurve.GetValue(intervalPos), 255, 0));
 }