// Use this for initialization
    void Start()
    {
        collectedPoints = new Dictionary <IndexedVector3, Color>();

        options = new ParallelOptions();
        options.MaxDegreeOfParallelism = maxThreadNum;

        converter.SetupPointScaning(filePath);

        meshesRoot = new GameObject();
        meshesRoot.transform.parent = transform;
        baker.SetUp(meshesRoot.transform);

        ChunkedMeshesManager chunkedMeshesManager = meshesRoot.AddComponent <ChunkedMeshesManager>();

        chunkedMeshesManager.chunkSize      = arranger.ChunkSize;
        chunkedMeshesManager.chunksParent   = meshesRoot;
        chunkedMeshesManager.indexedObjects = new IndexedGameObjects();

        converter.processUp               += ConverterProcessUp;
        converter.allProcessUp            += ConverterAllProcessUp;
        collector.finishCollectingProcess += CollectingProcessUp;
        arranger.finishArranging          += ArrangingProcessUp;
        arranger.finishProcess            += ChunkingProcessUp;
        slicer.finishProcess              += SlicerProcessUp;
        cuber.finish       += CubingProcessUp;
        baker.finishBaking += MeshesBaked;
        saver.finishSaving += MeshesSaved;

        CallConverterProcess();
    }
    void MeshesBaked(object sender, MeshBaker.FinishBakingArgs args)
    {
        stateNow = State.CallSave;

        chunkedMeshes.Clear();

        ChunkedMeshesManager chunkedMeshesManager = meshesRoot.GetComponent <ChunkedMeshesManager>();

        chunkedMeshesManager.indexedObjects.Update(cubingProcessingIndex, new List <GameObject>(args.gameObjects));
        CallPointsToCube();
    }