void Start() { linework = LW_Canvas.Create(new GameObject(), "ImpactRings", false); //linework = LW_Canvas.Create(gameObject, "ImpactRings", false); linework.blendMode = BlendMode.AlphaBlend; linework.featureMode = FeatureMode.Advanced; linework.strokeDrawMode = StrokeDrawMode.Draw2D; linework.joinsAndCapsMode = JoinsAndCapsMode.Shader; linework.gradientsMode = GradientsMode.Vertex; linework.antiAliasingMode = AntiAliasingMode.On; lineworkTransform = linework.transform; lineworkTransform.position = new Vector3(0, 0.1f, 0); lineworkTransform.rotation = Quaternion.Euler(90, 0, 0); masterStroke = LW_Stroke.Create(Color.white, 0.05f); List <LW_ColorStop> colors = new List <LW_ColorStop>(); for (int i = 0; i < colorArray.Length; i++) { colors.Add(new LW_ColorStop(colorArray[i], (float)i / (float)(colorArray.Length - 1))); } masterStroke.gradientColors = colors; masterStroke.paintMode = PaintMode.RadialGradient; masterStroke.gradientUnits = GradientUnits.userSpaceOnUse; masterStroke.presizeVBO = 100; }
// Use this for initialization void Start() { canvas = LW_Canvas.Create(new GameObject(), "ImpactRings", false); //linework = LW_Canvas.Create(gameObject, "ImpactRings", false); canvas.blendMode = BlendMode.AlphaBlend; canvas.featureMode = FeatureMode.Advanced; canvas.strokeDrawMode = StrokeDrawMode.Draw2D; canvas.joinsAndCapsMode = JoinsAndCapsMode.Shader; canvas.gradientsMode = GradientsMode.Vertex; canvas.antiAliasingMode = AntiAliasingMode.On; masterStroke = LW_Stroke.Create(Color.white, 0.05f); masterStroke.paintMode = PaintMode.RadialGradient; masterStroke.gradientUnits = GradientUnits.userSpaceOnUse; masterStroke.presizeVBO = 100; lines = new LW_Polyline3D[1000]; LW_Stroke stroke = LW_Stroke.Create(Color.white, 1f); stroke.linejoin = Linejoin.Break; canvas.graphic.styles.Add(stroke); linePoints = new Vector3[lines.Length][]; for (int i = 0; i < lines.Length; i++) { linePoints[i] = new Vector3[2]; lines[i] = LW_Polyline3D.Create(linePoints[i], false); canvas.graphic.Add(lines[i]); } }
private LW_Canvas CreateControlPointLine(int pointIndex, int handleIndex) { LW_Point2D point = points[pointIndex]; Vector3 start = (vectorCanvas.transform.localToWorldMatrix * vectorCanvas.scaler).MultiplyPoint3x4(point.position); Vector3 end = start; if (handleIndex < 0) { end += (vectorCanvas.scaler).MultiplyVector(point.handleIn); } else if (handleIndex > 0) { end += (vectorCanvas.scaler).MultiplyVector(point.handleOut); } LW_Canvas canvas = LW_Canvas.Create(vectorCanvas.gameObject, "ControlLine"); LW_Line line = LW_Line.Create(start, end); LW_Stroke stroke = LW_Stroke.Create(Color.red, 2f); line.styles.Add(stroke); canvas.graphic.Add(line); canvas.featureMode = FeatureMode.Advanced; canvas.joinsAndCapsMode = JoinsAndCapsMode.Shader; canvas.gradientsMode = GradientsMode.Shader; canvas.antiAliasingMode = AntiAliasingMode.On; canvas.transform.position = Vector3.zero; //canvas.SetViewBoxToBounds(); canvas.SetRectSizeToViewBox(); //canvas.transform.position = start; return(canvas); }
public void setProps(PCLSkeleton skel, Transform lookAtTarget, string text, float time, int jointIndex, Vector3 dir, float fontSize, float posSmooth, float circleSize) { this.skel = skel; this.lookAtTarget = lookAtTarget; this.jointIndex = jointIndex; this.text = text; this.posSmooth = posSmooth; Invoke("kill", time); // Create the LineWorks Components and Scriptable Objects. linework = GetComponent <LW_Canvas>(); linework.segmentation = 20; linework.featureMode = FeatureMode.Advanced; linework.strokeDrawMode = StrokeDrawMode.Draw3D; linework.joinsAndCapsMode = JoinsAndCapsMode.Shader; circle = LW_Circle.Create(Vector2.zero, .15f / transform.localScale.x); circleStroke = LW_Stroke.Create(Color.white, .2f); circleStroke.linejoin = Linejoin.Round; circle.styles.Add(circleStroke); linework.graphic.Add(circle); Vector3[] points = new Vector3[3]; points[0] = Vector3.zero; points[1] = Vector3.Scale(Vector3.one, dir) / transform.localScale.x; points[2] = points[1] + (Vector3.right * dir.x * lineSizeFactor) / transform.localScale.x; line = LW_Polyline3D.Create(points); lineStroke = LW_Stroke.Create(Color.white, .2f); line.styles.Add(lineStroke); linework.graphic.Add(line); line.isVisible = false; tm.transform.localPosition = points[2]; tm.anchor = dir.x > 0 ? TextAnchor.LowerRight : TextAnchor.LowerLeft; tm.alignment = dir.x > 0 ? TextAlignment.Right : TextAlignment.Left; tm.characterSize = fontSize / 100; text = "Super cool dis-donc"; seq = DOTween.Sequence(); //seq.Pause(); //blink circle seq.AppendCallback(() => blinkShape(circle, .5f)).AppendInterval(.3f); // reduce circle seq.AppendCallback(() => reduceCircle(circleSize / transform.localScale.x)).AppendInterval(.2f); //reveal line seq.AppendCallback(() => blinkShape(line, .5f)).AppendInterval(.3f); seq.AppendCallback(() => revealText(1)); if (skel != null) { transform.position = skel.joints[jointIndex]; } transform.LookAt(lookAtTarget.position); }
void CreateRing(Vector3 point) { if (linework != null) { LW_Circle circle = LW_Circle.Create(point, 0.01f); LW_Stroke stroke = masterStroke.Copy() as LW_Stroke; stroke.gradientStart = point; stroke.gradientEnd = point + Vector3.right * ringMaxRadius; linework.graphic.Add(circle); circle.styles.Add(stroke); StartCoroutine(DrawRing(circle, stroke)); } }
private LW_Canvas CreateControlPointDot(int pointIndex, int handleIndex) { LW_Point2D point = points[pointIndex]; Vector3 position = (vectorCanvas.transform.localToWorldMatrix * vectorCanvas.scaler).MultiplyPoint3x4(point.position); float radius = 6f; Color color = Color.white; if (handleIndex < 0) { position += (vectorCanvas.scaler).MultiplyVector(point.handleIn); radius = 4f; color = Color.gray; } else if (handleIndex > 0) { position += (vectorCanvas.scaler).MultiplyVector(point.handleOut); radius = 4f; color = Color.gray; } //GameObject controlPointGO = new GameObject("ControlPoint " + pointIndex + " : " + handleIndex); //controlPointGO.transform.SetParent(vectorCanvas.transform); LW_Canvas canvas = LW_Canvas.Create(vectorCanvas.gameObject, "ControlPoint"); LW_Circle circle = LW_Circle.Create(Vector3.zero, radius); LW_Fill fill = LW_Fill.Create(color); LW_Stroke stroke = LW_Stroke.Create(Color.black, 2f); circle.styles.Add(fill); circle.styles.Add(stroke); canvas.graphic.Add(circle); canvas.featureMode = FeatureMode.Advanced; canvas.joinsAndCapsMode = JoinsAndCapsMode.Shader; canvas.gradientsMode = GradientsMode.Shader; canvas.antiAliasingMode = AntiAliasingMode.On; canvas.transform.position = position; canvas.viewBox = new Rect(0, 0, 32, 32); canvas.SetRectSizeToViewBox(); ControlPointHandler cpHandler = canvas.gameObject.AddComponent <ControlPointHandler>(); cpHandler.tentacle = this; cpHandler.pointIndex = pointIndex; cpHandler.handleIndex = handleIndex; cpHandler.fillStyle = fill; return(canvas); }
void Start() { stroke = LW_Stroke.Create(Color.red, 1.0f); strokeOutline = LW_Stroke.Create(Color.red, 1.4f); //testLine = LW_Stroke.Create (Color.magenta, 1.0f); chordShapeLine = LW_Polyline3D.Create(new Vector2[0], false); chordShapeLineOutline = LW_Polyline3D.Create(new Vector2[0], false); //stroke.verticalOffset = 0.1f; // Adjust the segmenetation to get a smoother looking line. linework.segmentation = 20; // If you want to use any of the advanced shader features you have to set featureMode to Advanced. linework.featureMode = FeatureMode.Advanced; // If you would like the stroke to be 3D. ie. always face the camera. linework.strokeDrawMode = StrokeDrawMode.Draw2D; // If you would like to have the shader provide anti-aliasing linework.antiAliasingMode = AntiAliasingMode.On; // It is recommended for 3D lines to use the 'Round' Linejoin. linework.joinsAndCapsMode = JoinsAndCapsMode.Shader; stroke.linejoin = Linejoin.Round; stroke.linecap = Linecap.Round; strokeOutline.linejoin = Linejoin.Round; strokeOutline.linecap = Linecap.Round; //testLine.linejoin = Linejoin.Round; //testLine.linecap = Linecap.Round; stroke.opacity = 0.6f; strokeOutline.opacity = 0.8f; for (int i = 0; i < 15; i++) // creating a chordshape for each of the 5 CAGED shapes { chordShapeLines[i] = LW_Polyline3D.Create(new Vector2[0], false); chordShapeLines[i].styles.Add(stroke); chordShapeOutlines[i] = LW_Polyline3D.Create(new Vector2[0], false); chordShapeOutlines[i].styles.Add(strokeOutline); linework.graphic.Add(chordShapeOutlines [i]); linework.graphic.Add(chordShapeLines [i]); } // chordShapeLine.styles.Add (testLine); // chordShapeLineOutline.styles.Add (strokeOutline); // // linework.graphic.Add (chordShapeLine); // // linework.graphic.Add (chordShapeLineOutline); }
IEnumerator Start() { yield return(null); //new WaitForSeconds(0.1f); if (vectorCanvas == null) { vectorCanvas = GetComponent <LW_Canvas>(); } path = vectorCanvas.graphic[0] as LW_Path2D; points = path.points; tentacleStyle = path.styles[0] as LW_Stroke; suctionCupStyle = path.styles[1] as LW_Marker; spotStyle1 = path.styles[2] as LW_Marker; spotStyle2 = path.styles[3] as LW_Marker; spotStyle3 = path.styles[4] as LW_Marker; orgTentacleWidth = tentacleStyle.globalWidth; orgSizeOfSuctionCups = suctionCupStyle.scale; orgNumOfSuctionCups = suctionCupStyle.numberOfMarkers; orgNumOfSpots1 = spotStyle1.numberOfMarkers; orgNumOfSpots2 = spotStyle2.numberOfMarkers; orgNumOfSpots3 = spotStyle3.numberOfMarkers; controlPoints = new List <ControlPoint>(); for (int i = 0; i < points.Count; i++) { ControlPoint controlPoint = new ControlPoint(); LW_Point2D point = points[i]; if (point.hasHandleIn) { controlPoint.handleInLine = CreateControlPointLine(i, -1); controlPoint.handleInDot = CreateControlPointDot(i, -1); } if (point.hasHandleOut) { controlPoint.handleOutLine = CreateControlPointLine(i, 1); controlPoint.handleOutDot = CreateControlPointDot(i, 1); } controlPoint.positionDot = CreateControlPointDot(i, 0); controlPoints.Add(controlPoint); } }
IEnumerator DrawRing(LW_Circle circle, LW_Stroke stroke) { float minRadius = circle.radius; float maxRadius = ringMaxRadius; float lifeSpan = 0; while (lifeSpan < ringLifeSpan) { float t = lifeSpan / ringLifeSpan; circle.radius = Mathf.Lerp(minRadius, maxRadius, t); lifeSpan += Time.deltaTime; yield return(null); } if (linework != null) { linework.graphic.Remove(circle); } }
void Start() { spawnPoint = transform.position; Vector3[] points = new Vector3[0]; for (int i = 0; i < points.Length; i++) { points[i] = spawnPoint; } linework = LW_Canvas.Create(gameObject, "BallLauncher", false); linework.blendMode = BlendMode.AlphaBlend; linework.featureMode = FeatureMode.Advanced; linework.strokeDrawMode = StrokeDrawMode.Draw3D; linework.joinsAndCapsMode = JoinsAndCapsMode.Shader; linework.gradientsMode = GradientsMode.Vertex; linework.antiAliasingMode = AntiAliasingMode.On; LW_Stroke stroke = LW_Stroke.Create(Color.white, 1); List <LW_WidthStop> widths = new List <LW_WidthStop>(); widths.Add(new LW_WidthStop(0.1f, 0f)); widths.Add(new LW_WidthStop(0.0f, 1f)); stroke.widths = widths; stroke.paintMode = PaintMode.LinearGradient; stroke.presizeVBO = 100; List <LW_ColorStop> colors = new List <LW_ColorStop>(); for (int i = 0; i < colorArray.Length; i++) { colors.Add(new LW_ColorStop(colorArray[i], (float)i / (float)(colorArray.Length - 1))); } stroke.gradientColors = colors; stroke.linecap = Linecap.Round; stroke.linejoin = Linejoin.Round; linework.graphic.styles.Add(stroke); sqrMinMove = deltaMinMove * deltaMinMove; m_BallPool = new Stack <GameObject>(); timer = launchFrequency; }
void Start() { vectorCanvas = LW_Canvas.Create(gameObject, "Drawing", true); vectorCanvas.featureMode = FeatureMode.Advanced; vectorCanvas.strokeDrawMode = StrokeDrawMode.Draw2D; vectorCanvas.joinsAndCapsMode = JoinsAndCapsMode.Shader; vectorCanvas.gradientsMode = GradientsMode.Vertex; vectorCanvas.antiAliasingMode = AntiAliasingMode.On; LW_Stroke stroke = LW_Stroke.Create(Color.red, 8); stroke.linecap = Linecap.Round; stroke.linejoin = Linejoin.Round; stroke.presizeVBO = 5000; vectorCanvas.graphic.styles.Add(stroke); sqrMinMove = deltaMinMove * deltaMinMove; }
void Start() { vectorCanvas = LW_Canvas.Create(null, "BallOfLines", false); vectorCanvas.blendMode = BlendMode.AdditiveSoft; vectorCanvas.featureMode = FeatureMode.Advanced; vectorCanvas.strokeDrawMode = StrokeDrawMode.Draw3D; vectorCanvas.joinsAndCapsMode = JoinsAndCapsMode.Vertex; vectorCanvas.gradientsMode = GradientsMode.Vertex; vectorCanvas.antiAliasingMode = AntiAliasingMode.Off; vectorCanvas.mainTexture = texture; LW_Stroke stroke = LW_Stroke.Create(Color.white, 1f); stroke.linejoin = Linejoin.Break; vectorCanvas.graphic.styles.Add(stroke); lines = LW_Polyline3D.Create(new Vector3[0], false); vectorCanvas.graphic.Add(lines); SetWidth(width); SetColor(color); SetPoints(numberOfPoints); MakeLine(numberOfPoints); }