private void Add_HC_TLC(GameObject go, float sdq)
        {
            HierarchicalComponent goHC = go.AddComponent <HierarchicalComponent>();

            goHC.subdivisionDistanceSquared = sdq;
            TextLabelComponent goTLC = go.AddComponent <TextLabelComponent>();
        }
        IEnumerator constructAll(List <IslandGO> islandGOs)
        {
            for (int i = 0; i < islandGOs.Count; i++)
            {
                Add_HC_TLC(islandGOs[i].gameObject, GlobalVar.subdivisionDistanceIslandSquared);
                HierarchicalComponent islandHC  = islandGOs[i].gameObject.GetComponent <HierarchicalComponent>();
                TextLabelComponent    islandTLC = islandGOs[i].gameObject.GetComponent <TextLabelComponent>();
                islandTLC.relativeHeight = 0.3f;

                List <Region> regions = islandGOs[i].getRegions();
                for (int c = 0; c < regions.Count; c++)
                {
                    Add_HC_TLC(regions[c].gameObject, GlobalVar.subdivisionDistanceCountrySquared);
                    HierarchicalComponent regionHC  = regions[c].gameObject.GetComponent <HierarchicalComponent>();
                    TextLabelComponent    regionTLC = regions[c].gameObject.GetComponent <TextLabelComponent>();
                    regionTLC.relativeHeight = 0.2f;
                    regionTLC.relativeScale  = 0.75f;

                    regionHC.parentComponent = islandHC;
                    islandHC.childrenComponents.Add(regionHC);

                    List <Building> cus = regions[c].getBuildings();
                    for (int b = 0; b < cus.Count; b++)
                    {
                        Add_HC_TLC(cus[b].gameObject, GlobalVar.subdivisionDistanceCUSquared);
                        HierarchicalComponent buildingHC  = cus[b].gameObject.GetComponent <HierarchicalComponent>();
                        TextLabelComponent    buildingTLC = cus[b].gameObject.GetComponent <TextLabelComponent>();
                        buildingTLC.relativeHeight = 0.1f;
                        buildingTLC.relativeScale  = 0.5f;

                        buildingHC.parentComponent = regionHC;
                        regionHC.childrenComponents.Add(buildingHC);
                    }

                    #region RegionArea
                    HierarchicalComponent regionAreaHC = regions[c].getRegionArea().AddComponent <HierarchicalComponent>();
                    regionAreaHC.parentComponent = regionHC;
                    regionHC.childrenComponents.Add(regionAreaHC);
                    #endregion


                    bakeRegionMesh(regions[c]);
                }

                #region ExportDock
                Add_HC_TLC(islandGOs[i].getExportDock(), GlobalVar.subdivisionDistanceCUSquared);
                HierarchicalComponent exportDockHC = islandGOs[i].getExportDock().GetComponent <HierarchicalComponent>();
                exportDockHC.parentComponent = islandHC;
                islandHC.childrenComponents.Add(exportDockHC);
                #endregion
                #region ImportDock
                Add_HC_TLC(islandGOs[i].getImportDock(), GlobalVar.subdivisionDistanceCUSquared);
                HierarchicalComponent importDockHC = islandGOs[i].getImportDock().GetComponent <HierarchicalComponent>();
                importDockHC.parentComponent = islandHC;
                islandHC.childrenComponents.Add(importDockHC);
                #endregion
                #region Coast
                HierarchicalComponent coastHC = islandGOs[i].getCoast().AddComponent <HierarchicalComponent>();
                coastHC.parentComponent            = islandHC;
                coastHC.subdivisionDistanceSquared = GlobalVar.subdivisionDistanceCUSquared;
                islandHC.childrenComponents.Add(coastHC);
                #endregion


                bakeIslandMesh(islandGOs[i]);
                Deactivate(islandGOs[i]);

                yield return(null);
            }

            Debug.Log("Finished with Island-Hierarchy injection!");
            status = Status.Finished;
            cb();
        }