public override void prepare(TrackSegment4 trackSegment, GameObject putMeshOnGO)
    {
        base.prepare(trackSegment, putMeshOnGO);
        putMeshOnGO.GetComponent <Renderer>().sharedMaterial = material;
        topperLeftRailExtruder = new ShapeExtruder();
        topperLeftRailExtruder.setShape(new Vector3[8]
        {
            new Vector3(0.053846f, -0.002f, 0f),
            new Vector3(0.053846f, -0.026f, 0f),
            new Vector3(0.051846f, -0.028f, 0f),
            new Vector3(-0.027029f, -0.028f, 0f),
            new Vector3(-0.027029f, -0.0065f, 0f),
            new Vector3(-0.048772f, -0.0065f, 0f),
            new Vector3(-0.048772f, 0f, 0f),
            new Vector3(0.051845f, 0f, 0f)
        }, true);
        topperLeftRailExtruder.setUV(15, 15);
        topperRightRailExtruder = new ShapeExtruder();
        topperRightRailExtruder.setShape(new Vector3[8]
        {
            new Vector3(0.048772f, -0.0065f, 0f),
            new Vector3(0.027029f, -0.0065f, 0f),
            new Vector3(0.027028f, -0.028f, 0f),
            new Vector3(-0.051846f, -0.028f, 0f),
            new Vector3(-0.053845f, -0.026f, 0f),
            new Vector3(-0.053846f, -0.002f, 0f),
            new Vector3(-0.051845f, 0f, 0f),
            new Vector3(0.048772f, 0f, 0f)
        }, true);
        topperRightRailExtruder.setUV(14, 15);
        topperLeftPlankExtruder_1 = new BoxExtruder(0.054058f, 0.013286f);
        topperLeftPlankExtruder_1.setUV(14, 14);
        topperLeftPlankExtruder_2 = new BoxExtruder(0.054058f, 0.013286f);
        topperLeftPlankExtruder_2.setUV(14, 14);
        topperLeftPlankExtruder_3 = new BoxExtruder(0.054058f, 0.013286f);
        topperLeftPlankExtruder_3.setUV(14, 14);
        topperLeftPlankExtruder_4 = new BoxExtruder(0.054058f, 0.013286f);
        topperLeftPlankExtruder_4.setUV(14, 14);
        topperLeftPlankExtruder_5 = new BoxExtruder(0.054058f, 0.013286f);
        topperLeftPlankExtruder_5.setUV(14, 14);
        topperLeftPlankExtruder_6 = new BoxExtruder(0.054058f, 0.013286f);
        topperLeftPlankExtruder_6.setUV(14, 14);
        topperRightPlankExtruder_1 = new BoxExtruder(0.054058f, 0.013286f);
        topperRightPlankExtruder_1.setUV(14, 14);
        topperRightPlankExtruder_2 = new BoxExtruder(0.054058f, 0.013286f);
        topperRightPlankExtruder_2.setUV(14, 14);
        topperRightPlankExtruder_3 = new BoxExtruder(0.054058f, 0.013286f);
        topperRightPlankExtruder_3.setUV(14, 14);
        topperRightPlankExtruder_4 = new BoxExtruder(0.054058f, 0.013286f);
        topperRightPlankExtruder_4.setUV(14, 14);
        topperRightPlankExtruder_5 = new BoxExtruder(0.054058f, 0.013286f);
        topperRightPlankExtruder_5.setUV(14, 14);
        topperRightPlankExtruder_6 = new BoxExtruder(0.054058f, 0.013286f);
        topperRightPlankExtruder_6.setUV(14, 14);
        iboxLeftRailExtruder = new ShapeExtruder();
        iboxLeftRailExtruder.setShape(new Vector3[14]
        {
            new Vector3(0.046103f, 0f, 0f),
            new Vector3(0.048103f, -0.002f, 0f),
            new Vector3(0.048103f, -0.026f, 0f),
            new Vector3(0.046103f, -0.028f, 0f),
            new Vector3(0.021286f, -0.028f, 0f),
            new Vector3(0.021286f, -0.1144f, 0f),
            new Vector3(0.048772f, -0.1144f, 0f),
            new Vector3(0.048772f, -0.119108f, 0f),
            new Vector3(-0.054515f, -0.119108f, 0f),
            new Vector3(-0.054515f, -0.1144f, 0f),
            new Vector3(-0.032771f, -0.1144f, 0f),
            new Vector3(-0.032771f, -0.0065f, 0f),
            new Vector3(-0.054515f, -0.0065f, 0f),
            new Vector3(-0.054515f, 0f, 0f)
        }, true);
        iboxLeftRailExtruder.setUV(15, 15);
        iboxRightRailExtruder = new ShapeExtruder();
        iboxRightRailExtruder.setShape(new Vector3[14]
        {
            new Vector3(0.054515f, 0f, 0f),
            new Vector3(0.054515f, -0.0065f, 0f),
            new Vector3(0.032771f, -0.0065f, 0f),
            new Vector3(0.032771f, -0.1144f, 0f),
            new Vector3(0.054515f, -0.1144f, 0f),
            new Vector3(0.054515f, -0.119108f, 0f),
            new Vector3(-0.048772f, -0.119108f, 0f),
            new Vector3(-0.048772f, -0.1144f, 0f),
            new Vector3(-0.021286f, -0.1144f, 0f),
            new Vector3(-0.021286f, -0.028f, 0f),
            new Vector3(-0.046103f, -0.028f, 0f),
            new Vector3(-0.048103f, -0.026f, 0f),
            new Vector3(-0.048103f, -0.002f, 0f),
            new Vector3(-0.046103f, 0f, 0f)
        }, true);
        iboxRightRailExtruder.setUV(14, 15);
        metalFrontCrossTieExtruder_1 = new ShapeExtruder();
        metalFrontCrossTieExtruder_1.setShape(new Vector3[4]
        {
            new Vector3(0.022f, 0.04f, 0f),
            new Vector3(0.046f, 0.04f, 0f),
            new Vector3(0.046f, 0.035f, 0f),
            new Vector3(0.03f, 0.035f, 0f)
        }, true);
        metalFrontCrossTieExtruder_1.setUV(15, 14);
        metalFrontCrossTieExtruder_1.closeEnds = true;
        metalFrontCrossTieExtruder_2           = new ShapeExtruder();
        metalFrontCrossTieExtruder_2.setShape(new Vector3[4]
        {
            new Vector3(0.03f, 0.035f, 0f),
            new Vector3(0.03f, -0.035f, 0f),
            new Vector3(0.022f, -0.04f, 0f),
            new Vector3(0.022f, 0.04f, 0f)
        }, true);
        metalFrontCrossTieExtruder_2.setUV(15, 14);
        metalFrontCrossTieExtruder_2.closeEnds = true;
        metalFrontCrossTieExtruder_3           = new ShapeExtruder();
        metalFrontCrossTieExtruder_3.setShape(new Vector3[4]
        {
            new Vector3(0.03f, -0.035f, 0f),
            new Vector3(0.046f, -0.035f, 0f),
            new Vector3(0.046f, -0.04f, 0f),
            new Vector3(0.022f, -0.04f, 0f)
        }, true);
        metalFrontCrossTieExtruder_3.setUV(15, 14);
        metalFrontCrossTieExtruder_3.closeEnds = true;
        metalRearCrossTieExtruder_1            = new ShapeExtruder();
        metalRearCrossTieExtruder_1.setShape(new Vector3[4]
        {
            new Vector3(-0.046f, 0.04f, 0f),
            new Vector3(-0.022f, 0.04f, 0f),
            new Vector3(-0.03f, 0.035f, 0f),
            new Vector3(-0.046f, 0.035f, 0f)
        }, true);
        metalRearCrossTieExtruder_1.setUV(15, 14);
        metalRearCrossTieExtruder_1.closeEnds = true;
        metalRearCrossTieExtruder_2           = new ShapeExtruder();
        metalRearCrossTieExtruder_2.setShape(new Vector3[4]
        {
            new Vector3(-0.046f, -0.035f, 0f),
            new Vector3(-0.03f, -0.035f, 0f),
            new Vector3(-0.022f, -0.04f, 0f),
            new Vector3(-0.046f, -0.04f, 0f)
        }, true);
        metalRearCrossTieExtruder_2.setUV(15, 14);
        metalRearCrossTieExtruder_2.closeEnds = true;
        metalRearCrossTieExtruder_3           = new ShapeExtruder();
        metalRearCrossTieExtruder_3.setShape(new Vector3[4]
        {
            new Vector3(-0.022f, 0.04f, 0f),
            new Vector3(-0.022f, -0.04f, 0f),
            new Vector3(-0.03f, -0.035f, 0f),
            new Vector3(-0.03f, 0.035f, 0f)
        }, true);
        metalRearCrossTieExtruder_3.setUV(15, 14);
        metalRearCrossTieExtruder_3.closeEnds = true;
        metalIBeamExtruder_1 = new ShapeExtruder();
        metalIBeamExtruder_1.setShape(new Vector3[4]
        {
            new Vector3(-0.021f, 0.04f, 0f),
            new Vector3(0.021f, 0.04f, 0f),
            new Vector3(0.021f, 0.035f, 0f),
            new Vector3(-0.021f, 0.035f, 0f)
        }, true);
        metalIBeamExtruder_1.setUV(15, 14);
        metalIBeamExtruder_1.closeEnds = true;
        metalIBeamExtruder_2           = new ShapeExtruder();
        metalIBeamExtruder_2.setShape(new Vector3[4]
        {
            new Vector3(-0.005f, 0.037f, 0f),
            new Vector3(0.005f, 0.037f, 0f),
            new Vector3(0.005f, -0.037f, 0f),
            new Vector3(-0.005f, -0.037f, 0f)
        }, true);
        metalIBeamExtruder_2.setUV(15, 14);
        metalIBeamExtruder_2.closeEnds = true;
        metalIBeamExtruder_3           = new ShapeExtruder();
        metalIBeamExtruder_3.setShape(new Vector3[4]
        {
            new Vector3(-0.021f, -0.035f, 0f),
            new Vector3(0.021f, -0.035f, 0f),
            new Vector3(0.021f, -0.04f, 0f),
            new Vector3(-0.021f, -0.04f, 0f)
        }, true);
        metalIBeamExtruder_3.setUV(15, 14);
        metalIBeamExtruder_3.closeEnds = true;

        metalTopperCrossTie_1 = new ShapeExtruder();
        metalTopperCrossTie_1.setShape(new Vector3[4]
        {
            new Vector3(-0.030167f, -0.12228f, 0f),
            new Vector3(-0.002167f, -0.12228f, 0f),
            new Vector3(-0.000001f, -0.120113f, 0f),
            new Vector3(-0.030167f, -0.120113f, 0f)
        }, true);
        metalTopperCrossTie_1.setUV(15, 14);
        metalTopperCrossTie_1.closeEnds = true;
        metalTopperCrossTie_2           = new ShapeExtruder();
        metalTopperCrossTie_2.setShape(new Vector3[4]
        {
            new Vector3(-0.002167f, -0.12228f, 0f),
            new Vector3(-0.002167f, -0.150113f, 0f),
            new Vector3(-0.000001f, -0.150113f, 0f),
            new Vector3(-0.000001f, -0.120113f, 0f)
        }, true);
        metalTopperCrossTie_2.setUV(15, 14);
        metalTopperCrossTie_2.closeEnds = true;
        metalTopperCrossTie_3           = new ShapeExtruder();
        metalTopperCrossTie_3.setShape(new Vector3[4]
        {
            new Vector3(0.000001f, 0.290799f, 0f),
            new Vector3(0.030166f, 0.290799f, 0f),
            new Vector3(0.030166f, 0.288799f, 0f),
            new Vector3(0.002166f, 0.288799f, 0f)
        }, true);
        metalTopperCrossTie_3.setUV(15, 14);
        metalTopperCrossTie_3.closeEnds = true;
        metalTopperCrossTie_4           = new ShapeExtruder();
        metalTopperCrossTie_4.setShape(new Vector3[4]
        {
            new Vector3(0.000001f, 0.290799f, 0f),
            new Vector3(0.002166f, 0.288799f, 0f),
            new Vector3(0.002166f, 0.250466f, 0f),
            new Vector3(0.000001f, 0.250466f, 0f)
        }, true);
        metalTopperCrossTie_4.setUV(15, 14);
        metalTopperCrossTie_4.closeEnds = true;
        metalTopperCrossTie_5           = new ShapeExtruder();
        metalTopperCrossTie_5.setShape(new Vector3[4]
        {
            new Vector3(0f, -0.250868f, 0f),
            new Vector3(0.002166f, -0.250868f, 0f),
            new Vector3(0.002166f, -0.289201f, 0f),
            new Vector3(0f, -0.291201f, 0f)
        }, true);
        metalTopperCrossTie_5.setUV(15, 14);
        metalTopperCrossTie_5.closeEnds = true;
        metalTopperCrossTie_6           = new ShapeExtruder();
        metalTopperCrossTie_6.setShape(new Vector3[4]
        {
            new Vector3(0.002166f, -0.289201f, 0f),
            new Vector3(0.030166f, -0.289201f, 0f),
            new Vector3(0.030166f, -0.291201f, 0f),
            new Vector3(0f, -0.291201f, 0f)
        }, true);
        metalTopperCrossTie_6.setUV(15, 14);
        metalTopperCrossTie_6.closeEnds = true;
        metalTopperCrossTie_7           = new ShapeExtruder();
        metalTopperCrossTie_7.setShape(new Vector3[5]
        {
            new Vector3(-0.275188f, -0.006497f, 0f),
            new Vector3(-0.275188f, -0.042196f, 0f),
            new Vector3(-0.250868f, -0.042196f, 0f),
            new Vector3(-0.241076f, -0.02686f, 0f),
            new Vector3(-0.241076f, -0.006497f, 0f)
        }, true);
        metalTopperCrossTie_7.setUV(14, 15);
        metalTopperCrossTie_7.closeEnds = true;
        metalTopperCrossTie_8           = new ShapeExtruder();
        metalTopperCrossTie_8.setShape(new Vector3[5]
        {
            new Vector3(-0.275188f, -0.006497f, 0f),
            new Vector3(-0.275188f, -0.042196f, 0f),
            new Vector3(-0.250868f, -0.042196f, 0f),
            new Vector3(-0.241076f, -0.02686f, 0f),
            new Vector3(-0.241076f, -0.006497f, 0f)
        }, true);
        metalTopperCrossTie_8.setUV(15, 15);
        metalTopperCrossTie_8.closeEnds             = true;
        collisionMeshExtruder                       = new BoxExtruder(trackWidth, 0.02666f);
        buildVolumeMeshExtruder                     = new BoxExtruder(beamWidth, beamWidth);
        customBuildVolumeMeshExtruder               = new BoxExtruder(0.1f, 0.1f);
        customBuildVolumeMeshExtruder.closeEnds     = true;
        woodenVerticalSupportPostExtruder           = new BoxExtruder(0.043f, 0.043f);
        woodenVerticalSupportPostExtruder.closeEnds = true;
        woodenVerticalSupportPostExtruder.setUV(14, 14);
        base.setModelExtruders(topperLeftPlankExtruder_1, topperLeftPlankExtruder_2, topperLeftPlankExtruder_3, topperLeftPlankExtruder_4, topperLeftPlankExtruder_5, topperLeftPlankExtruder_6, topperRightPlankExtruder_1, topperRightPlankExtruder_2, topperRightPlankExtruder_3, topperRightPlankExtruder_4, topperRightPlankExtruder_5, topperRightPlankExtruder_6, woodenVerticalSupportPostExtruder);
    }