public void Start()
        {
            target = Camera.main.transform;

                Cam = Camera.main;

                Player = transform.InverseTransformPoint(target.position );

                Generator = this;

                Parent = transform;

                VoxelChunk.parent = transform;

                VoxelChunk.generator = Generator;

                MeshFactory.m_surfaceLevel = m_surfaceLevel;

                MeshFactory.generator = Generator;

                m_surfacePerlin = new PerlinNoise(m_surfaceSeed);

                m_cavePerlin = new PerlinNoise(m_surfaceSeed/2);

                MeshFactory.SurfacePerlin = m_surfacePerlin;

                MeshFactory.CavePerlin = m_cavePerlin;

                MeshFactory.MarchingCubes = new MarchingCubes();

                MeshFactory.MarchingCubesVoxels = new MarchingCubes();

                MeshFactory.MakeCaves = MakeCaves;

                Offset = new Vector3(m_voxelWidth, m_voxelHeight/2, m_voxelLength);

                ParentPos = Parent.position;

                MarchingCubes.SetTarget(126);

                MarchingCubes.SetWindingOrder(0, 1, 2);

                CanContinue = true;
                StartCoroutine(StartThreads());
        }