public void DrawLine()
    {
        if (Points.Length < 2)
        {
            return;
        }
        ThisMesh = new Mesh();
        if (WipeAmount < 0.001f)
        {
            return;
        }

        SplitQuads   = new List <Vector3[]>();
        SourceSlices = new List <Slice2D>();
        PolyLine     = new List <Vector3>();

        // Adjusted Points are trimmed (fillamount) then scaled
        var adjPoints = Points.AdjustPoints(WipeAmount, WipeMode, Xscale, Yscale,
                                            ShowDebug)
                        .OffsetPoints(Offset);

        SourceSlices = InitializeQuads(adjPoints, SourceSlices);
        FinalSlices  = Continuous ? SetAveragedSlices(SourceSlices) : SourceSlices;

        // Prepare vertices
        for (int index = 0; index < FinalSlices.Count; index++)
        {
            //if (HasHat && index == 0) continue;
            Slice2D slice = FinalSlices[index];
            PolyLine.Add(slice.P1);
            PolyLine.Add(slice.P2);
        }
        ThisMesh.vertices = PolyLine.ToArray();
        MeshTools.AssignDefaultUvs(ThisMesh);
        if (Continuous)
        {
            MeshTools.CreateConnectedMesh(ThisMesh, FinalSlices);
        }
        else
        {
            MeshTools.CreateSplitMesh(ThisMesh, FinalSlices);
        }
        //ThisMaterial.EnableKeyword("_EMISSION");       // Unity5 Standard Material Requirement
        //"_EmissionColor"
        ThisMaterial.SetColor("_Color", LineColor);
    }