void OnConnectToDF()
    {
        Debug.Log("Connected");
        enabled = true;
        mesher  = BlockMesher.GetMesher(meshingThreads);
        // Initialize materials
        if (materials == null)
        {
            materials = new Dictionary <MatPairStruct, RemoteFortressReader.MaterialDefinition>();
        }
        materials.Clear();
        foreach (RemoteFortressReader.MaterialDefinition material in DFConnection.Instance.NetMaterialList.material_list)
        {
            materials[material.mat_pair] = material;
        }
        // Initialize items
        if (items == null)
        {
            items = new Dictionary <MatPairStruct, RemoteFortressReader.MaterialDefinition>();
        }
        items.Clear();
        foreach (RemoteFortressReader.MaterialDefinition material in DFConnection.Instance.NetItemList.material_list)
        {
            items[material.mat_pair] = material;
        }

        SaveTileTypeList();
        SaveMaterialList(DFConnection.Instance.NetMaterialList.material_list, "MaterialList.csv");
        SaveMaterialList(DFConnection.Instance.NetItemList.material_list, "ItemList.csv");
        SaveBuildingList();

        UpdateView();

        blockListTimer.Start();
        cullTimer.Start();
        lazyLoadTimer.Start();

        InitializeBlocks();
    }