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(); } } }
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; }
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)); }
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(); } }
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(); } }
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); }
private double CalculateWidth(double intervalPos) { return(ScaleCurveToValue(WidthCurve.GetValue(intervalPos), 255, 0)); }