public void GenerateCar()
    {
        float randomX           = Random.Range(m_MinX, m_MaxX);
        float randomY           = Random.Range(m_MinY, m_MaxY);
        float randomZ           = Random.Range(m_MinZ, m_MaxZ);
        float randomWheelRadius = Random.Range(m_WheelMinRadius, m_WheelMaxRadius);

        float        lowerToUpperProp = Random.Range(.3f, .5f);
        MeshTemplate lowerPart        = GenerateLowerPart(randomX, randomY, randomZ, lowerToUpperProp);
        MeshTemplate upperPart        = GenerateUpperPart(randomX, randomY, randomZ, lowerToUpperProp);

        List <MeshTemplate> wheels = new List <MeshTemplate>();

        wheels.Add(MeshTemplatePrimitives.Cylinder(new Vector3(randomX / 2, 0f, randomZ / 2 - 1f), randomWheelRadius, .2f, 12));
        wheels.Add(MeshTemplatePrimitives.Cylinder(new Vector3(randomX / 2, 0f, -randomZ / 2 + .6f), randomWheelRadius, .2f, 12));
        wheels.Add(MeshTemplatePrimitives.Cylinder(new Vector3(-randomX / 2, 0f, randomZ / 2 - 1f), randomWheelRadius, .2f, 12));
        wheels.Add(MeshTemplatePrimitives.Cylinder(new Vector3(-randomX / 2, 0f, -randomZ / 2 + .6f), randomWheelRadius, .2f, 12));

        MeshTemplate car = new MeshTemplate();

        car.Add(lowerPart);
        car.Add(upperPart);

        for (int i = 0; i < wheels.Count; i++)
        {
            car.Add(wheels[i]);
        }
        GetComponent <MeshFilter>().mesh = car.ToMesh();
    }