public override void prepare(TrackSegment4 trackSegment, GameObject putMeshOnGO)
    {
        base.prepare(trackSegment, putMeshOnGO);
        putMeshOnGO.GetComponent <Renderer>().sharedMaterial = this.material;
        this.leftRailExtruder = new BoxExtruder(railSize, railSize);
        this.leftRailExtruder.setUV(15, 14);
        this.rightRailExtruder = new BoxExtruder(railSize, railSize);
        this.rightRailExtruder.setUV(15, 14);

        SupportBeamExtruder = new BoxExtruder(SupoortBeamSize, SupoortBeamSize);
        SupportBeamExtruder.setUV(14, 15);
        SupportBeamExtruder.closeEnds = true;

        SupportBottomBeamExtruder = new BoxExtruder(SupoortBeamSize * 2.0f, SupoortBeamSize);
        SupportBottomBeamExtruder.setUV(14, 15);
        SupportBottomBeamExtruder.closeEnds = true;


        TrackBeamExtruder     = new BoxExtruder[4];
        TrackBeamExtruder [0] = new BoxExtruder(.145123f, railSize);
        TrackBeamExtruder [1] = new BoxExtruder(0.0448f, railSize);
        TrackBeamExtruder [2] = new BoxExtruder(0.125123f, railSize);
        TrackBeamExtruder [3] = new BoxExtruder(0.09f, railSize);

        for (int x = 0; x < 4; x++)
        {
            TrackBeamExtruder [x].setUV(15, 15);
            TrackBeamExtruder [x].closeEnds = true;
        }

        this.collisionMeshExtruder             = new BoxExtruder(base.trackWidth, 0.022835f);
        this.buildVolumeMeshExtruder           = new BoxExtruder(base.trackWidth, 0.7f);
        this.buildVolumeMeshExtruder.closeEnds = true;
    }
    public override void prepare(TrackSegment4 trackSegment, GameObject putMeshOnGO)
    {
        base.prepare(trackSegment, putMeshOnGO);

        liftExtruder1 = null;

        if (trackSegment.isLifthill && (trackSegment is ChangeHeight4 || trackSegment.getStartpoint().y != trackSegment.getEndpoint().y || (UnityEngine.Object)frictionWheelsGO == (UnityEngine.Object)null))
        {
            liftExtruder1 = instantiateLiftExtruder(trackSegment);
        }

        putMeshOnGO.GetComponent <Renderer>().sharedMaterial = base.material;
        centerTubeExtruder = new TubeExtruder(centerTubeRadius, centerTubeVertCount);
        centerTubeExtruder.setUV(14, 15);
        centerTubeExtruder.closeEnds = true;
        centerBoxExtruder            = new BoxExtruder(centerTubeRadius * 2f, centerTubeRadius * 2f);
        centerBoxExtruder.setUV(14, 15);
        centerBoxExtruder.closeEnds = true;
        leftTubeExtruder            = new TubeExtruder(sideTubesRadius, sideTubesVertCount);
        leftTubeExtruder.setUV(15, 14);
        rightTubeExtruder = new TubeExtruder(sideTubesRadius, sideTubesVertCount);
        rightTubeExtruder.setUV(15, 14);
        centerCrossTubeExtruder = new ResizableTubeExtruder(1f, centerTubeVertCount);
        centerCrossTubeExtruder.setUV(14, 15);
        centerCrossTubeExtruder.closeEnds = true;
        sideCrossTubeExtruder             = new ResizableTubeExtruder(1f, centerTubeVertCount);
        sideCrossTubeExtruder.setUV(15, 14);
        crossBoxExtruder = new BoxExtruder(sideTubesRadius * 2f, sideTubesRadius * 1.8f);
        crossBoxExtruder.setUV(14, 14);
        collisionMeshExtruder                  = new BoxExtruder(base.trackWidth, 0.02665f);
        base.buildVolumeMeshExtruder           = new BoxExtruder(base.trackWidth, 0.8f);
        base.buildVolumeMeshExtruder.closeEnds = true;
        base.setModelExtruders(centerTubeExtruder, leftTubeExtruder, rightTubeExtruder);
    }
Esempio n. 3
0
 public override void prepare(TrackSegment4 trackSegment, GameObject putMeshOnGO)
 {
     base.prepare(trackSegment, putMeshOnGO);
     putMeshOnGO.GetComponent <Renderer>().sharedMaterial = this.material;
     this.centerTubeExtruder = new TubeExtruder(centerTubeRadius, centerTubeVertCount);
     this.centerTubeExtruder.setUV(14, 15);
     this.leftTubeExtruder = new TubeExtruder(sideTubesRadius, sideTubesVertCount);
     this.leftTubeExtruder.setUV(14, 14);
     this.rightTubeExtruder = new TubeExtruder(sideTubesRadius, sideTubesVertCount);
     this.rightTubeExtruder.setUV(14, 14);
     this.collisionMeshExtruder             = new BoxExtruder(base.trackWidth, 0.02666f);
     this.buildVolumeMeshExtruder           = new BoxExtruder(base.trackWidth, 0.8f);
     this.buildVolumeMeshExtruder.closeEnds = true;
 }
 public override void prepare(TrackSegment4 trackSegment, GameObject putMeshOnGo)
 {
     base.prepare(trackSegment, putMeshOnGo);
     putMeshOnGo.GetComponent <Renderer>().sharedMaterial = material;
     centerTubeExtruder = new TubeExtruder(CenterTubeRadius, CenterTubeVertCount);
     centerTubeExtruder.setUV(14, 14);
     leftTubeExtruder = new TubeExtruder(SideTubesRadius, SideTubesVertCount);
     leftTubeExtruder.setUV(14, 15);
     rightTubeExtruder = new TubeExtruder(SideTubesRadius, SideTubesVertCount);
     rightTubeExtruder.setUV(14, 15);
     collisionMeshExtruder             = new BoxExtruder(trackWidth, 0.02666f);
     buildVolumeMeshExtruder           = new BoxExtruder(trackWidth, 0.8f);
     buildVolumeMeshExtruder.closeEnds = true;
 }
    protected override void build()
    {
        base.boundingVolumes.AddRange(base.GetComponentsInChildren <BoundingVolume>());
        base.transform.position = base.origin;
        Vector3 tangent = base.tangent;

        tangent.y = 0f;
        base.transform.forward                      = tangent;
        woodenVerticalSupportPostExtruder           = new BoxExtruder(0.043f, 0.043f);
        woodenVerticalSupportPostExtruder.closeEnds = true;
        woodenVerticalSupportPostExtruder.setUV(14, 14);
        concreteVerticalSupportFooterExtruder           = new BoxExtruder(0.15f, 0.15f);
        concreteVerticalSupportFooterExtruder.closeEnds = true;
        concreteVerticalSupportFooterExtruder.setUV(0, 8);
        woodenHorizontalSupportPostExtruder           = new BoxExtruder(0.03f, 0.06f);
        woodenHorizontalSupportPostExtruder.closeEnds = true;
        woodenHorizontalSupportPostExtruder.setUV(14, 14);
        render();
    }
Esempio n. 6
0
        public override void prepare(TrackSegment4 trackSegment, GameObject putMeshOnGO)
        {
            base.prepare(trackSegment, putMeshOnGO);
            putMeshOnGO.GetComponent <Renderer>().sharedMaterial = material;

            trackBase = new BoxExtruder(.7172f, .0292f);
            trackBase.setUV(15, 15);

            leftRail  = new BoxExtruder(.06718f, .05529f);
            rightRail = new BoxExtruder(.06718f, .05529f);
            leftRail.setUV(14, 15);
            rightRail.setUV(14, 15);

            leftRailInner  = new BoxExtruder(.005535f, .04158f);
            rightRailInner = new BoxExtruder(.005535f, .04158f);
            leftRailInner.setUV(15, 14);
            rightRailInner.setUV(15, 14);


            collisionMeshExtruder             = new BoxExtruder(trackWidth, 0.022835f);
            buildVolumeMeshExtruder           = new BoxExtruder(trackWidth, 0.7f);
            buildVolumeMeshExtruder.closeEnds = true;
        }
    public override void afterExtrusion(TrackSegment4 trackSegment, GameObject putMeshOnGO)
    {
        base.afterExtrusion(trackSegment, putMeshOnGO);
        int   crossBeamIndex = 0;
        float pos            = 0.0f;

        //adds random wood planks as supports
        while (pos < trackSegment.getLength(0))
        {
            float tForDistance = trackSegment.getTForDistance(pos, 0);

            Vector3 normal      = trackSegment.getNormal(tForDistance);
            Vector3 tangetPoint = trackSegment.getTangentPoint(tForDistance);
            Vector3 binormal    = Vector3.Cross(normal, tangetPoint).normalized;
            Vector3 pivot       = base.getTrackPivot(trackSegment.getPoint(tForDistance, 0), normal);

            float       crossBeamOffset           = BeamSizeVariation [crossBeamIndex % BeamSizeVariation.Length];
            BoxExtruder selectedCrossBeamExtruder = TrackBeamExtruder [(crossBeamIndex + 10) % TrackBeamExtruder.Length];

            Vector3 left  = tangetPoint.normalized * (selectedCrossBeamExtruder.width / 2.0f) + Vector3.down * railSize + pivot + binormal * (base.trackWidth + crossBeamOffset) / 2f;
            Vector3 right = tangetPoint.normalized * (selectedCrossBeamExtruder.width / 2.0f) + Vector3.down * railSize + pivot - binormal * (base.trackWidth + crossBeamOffset) / 2f;

            pos += TrackBeamExtruder[(crossBeamIndex + 10) % TrackBeamExtruder.Length].width + .03f;
            if (pos > trackSegment.getLength(0))
            {
                break;
            }

            selectedCrossBeamExtruder.extrude(left, binormal * -1f, normal);
            selectedCrossBeamExtruder.extrude(right, binormal * -1f, normal);
            selectedCrossBeamExtruder.end();

            crossBeamIndex++;
        }
        if (!(trackSegment is Station))
        {
            pos = 0.0f;
            float segments = trackSegment.getLength(0) / (float)Mathf.RoundToInt(trackSegment.getLength(0) / this.crossBeamSpacing);
            //inbetween supports for edge of track
            while (pos < trackSegment.getLength(0))
            {
                float tForDistance = trackSegment.getTForDistance(pos, 0);

                Vector3 normal      = trackSegment.getNormal(tForDistance);
                Vector3 tangetPoint = trackSegment.getTangentPoint(tForDistance);
                Vector3 binormal    = Vector3.Cross(normal, tangetPoint).normalized;
                Vector3 pivot       = base.getTrackPivot(trackSegment.getPoint(tForDistance, 0), normal);


                float crossBeamOffset = BeamSizeVariation [crossBeamIndex % BeamSizeVariation.Length] * .3f;

                Vector3 left  = pivot + binormal * (SupportBoxArea / 2.0f) + Vector3.down * (railSize + railSize + SupoortBeamSize / 2.0f);
                Vector3 right = pivot - binormal * (SupportBoxArea / 2.0f) + Vector3.down * (railSize + railSize + SupoortBeamSize / 2.0f);

                SupportBeamExtruder.extrude(left + binormal * crossBeamOffset, binormal * -1f, normal);
                SupportBeamExtruder.extrude(right - binormal * crossBeamOffset, binormal * -1f, normal);
                SupportBeamExtruder.end();

                float bottom = Mathf.FloorToInt(left.y);
                if (bottom > Mathf.FloorToInt(right.y))
                {
                    bottom = Mathf.FloorToInt(right.y);
                }

                SupportBeamExtruder.extrude(left, normal, binormal);
                SupportBeamExtruder.extrude(new Vector3(left.x, bottom, left.z), normal, binormal);
                SupportBeamExtruder.end();

                SupportBeamExtruder.extrude(right, normal, binormal);
                SupportBeamExtruder.extrude(new Vector3(right.x, bottom, right.z), normal, binormal);
                SupportBeamExtruder.end();

                SupportBottomBeamExtruder.extrude(new Vector3(left.x, bottom, left.z) + new Vector3(binormal.x, 0, binormal.z) * (.5f / 2.0f), binormal * -1f, Vector3.down);
                SupportBottomBeamExtruder.extrude(new Vector3(right.x, bottom, right.z) - new Vector3(binormal.x, 0, binormal.z) * (.5f / 2.0f), binormal * -1f, Vector3.down);
                SupportBottomBeamExtruder.end();


                pos += segments;
                crossBeamIndex++;
            }
        }
    }
    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);
    }