private void AddCurvesAndSpline()
        {
            if (ShowCurves && Application.isPlaying && LineRenderer != null)
            {
                const float animationTime = 0.025f;

                ShowCurves = false;
                FastLineRendererProperties props = new FastLineRendererProperties();
                props.GlowIntensityMultiplier = 0.5f;
                props.Radius = 4.0f;
                props.Color  = UnityEngine.Color.cyan;
                props.Start  = new Vector3(Screen.width * 0.1f, Screen.height * 0.1f, 0.0f);
                props.End    = new Vector3(Screen.width * 1.1f, Screen.height * 1.0f, 0.0f);
                LineRenderer.AppendCurve(props,
                                         new Vector3(Screen.width * 0.33f, Screen.height * 0.67f, 0.0f), // control point 1
                                         new Vector3(Screen.width * 0.67f, Screen.height * 0.33f, 0.0f), // control point 2
                                         16, true, true, animationTime);

                props.Color = UnityEngine.Color.red;
                props.Start = new Vector3(0.0f, Screen.height * 0.2f, 0.0f);
                props.End   = new Vector3(Screen.width * 1.2f, Screen.height * 0.2f, 0.0f);

                Vector3[] spline = new Vector3[]
                {
                    props.Start,
                    new Vector3(Screen.width * 0.2f, Screen.height * 0.8f, 0.0f),
                    new Vector3(Screen.width * 0.4f, Screen.height * 0.2f, 0.0f),
                    new Vector3(Screen.width * 0.6f, Screen.height * 0.8f, 0.0f),
                    new Vector3(Screen.width * 0.8f, Screen.height * 0.2f, 0.0f),
                    new Vector3(Screen.width, Screen.height * 0.8f, 0.0f),
                    props.End
                };
                LineRenderer.AppendSpline(props, spline, 128, FastLineRendererSplineFlags.StartCap | FastLineRendererSplineFlags.EndCap, animationTime);

                // add a circle and arc
                props.Color = Color.green;
                LineRenderer.AppendCircle(props, new Vector3(Screen.width * 0.5f, Screen.height * 0.5f, 0.0f), 100.0f, 64, Vector3.forward, animationTime);
                LineRenderer.AppendArc(props, new Vector3(Screen.width * 0.25f, Screen.height * 0.5f, 0.0f), 100.0f, 270.0f, 90.0f, 32, Vector3.forward, false, animationTime);
                LineRenderer.AppendArc(props, new Vector3(Screen.width * 0.75f, Screen.height * 0.5f, 0.0f), 100.0f, 0.0f, 360.0f, 32, Vector3.forward, false, animationTime);

                LineRenderer.Apply();
            }
        }