private static void GeneratePlank(GameObject segmentObject, RailPathPoint p1, RailPathPoint p2, RailSettings settings, Vector3 toVector, Vector3 toVectorPpc)
    {
        GameObject plankObject = MeshGenerator.CreateEmptyObject("Plank", "Ground", segmentObject.transform);

        Vector3[] vertices  = new Vector3[0];
        int[]     triangles = new int[0];

        Vector3 frontOrigin  = p1.Position + toVector / 3f;
        Vector3 backOrigin   = p1.Position + toVector / 3f * 2f;
        Vector3 heightOffset = new Vector3(0f, settings.PlankHeight, 0f);

        Vector3 leftBackTop   = backOrigin - (toVectorPpc * settings.PlankWidth / 2f) + heightOffset;
        Vector3 rightBackTop  = backOrigin + (toVectorPpc * settings.PlankWidth / 2f) + heightOffset;
        Vector3 rightFrontTop = frontOrigin + (toVectorPpc * settings.PlankWidth / 2f) + heightOffset;
        Vector3 leftFrontTop  = frontOrigin - (toVectorPpc * settings.PlankWidth / 2f) + heightOffset;

        Vector3 leftBackBot   = backOrigin - (toVectorPpc * settings.PlankWidth / 2f);
        Vector3 rightBackBot  = backOrigin + (toVectorPpc * settings.PlankWidth / 2f);
        Vector3 rightFrontBot = frontOrigin + (toVectorPpc * settings.PlankWidth / 2f);
        Vector3 leftFrontBot  = frontOrigin - (toVectorPpc * settings.PlankWidth / 2f);

        MeshGenerator.AddCuboid(ref vertices, ref triangles, leftBackTop, rightBackTop, rightFrontTop, leftFrontTop, leftBackBot, rightBackBot, rightFrontBot, leftFrontBot);
        MeshGenerator.ApplyMesh(plankObject, vertices, triangles, MaterialHandler.Instance.RailPlankColor);
    }