void GenerateStellarDataBlocks()
        {
            Vector3 textLocation;
            Vector3 textLocation2;

            foreach (GameObject star in galaxyDataRef.GalaxyStarList)
            {
                if (star != null)
                {
                    if (star.GetComponent<Star>().tag != "Companion Star") // if not a companion star
                    {
                        string civNames = "";
                        string civTolerance = "";
                        bool civOwnerFound = false;
                        Color civColor = Color.grey;

                        var nameVector = Camera.main.WorldToScreenPoint(star.transform.position); // gets the screen point of the star's transform position
                        textLocation = new Vector3(nameVector.x, nameVector.y, 0); // where the text box is located
                        textLocation2 = new Vector3(nameVector.x, nameVector.y, 0); // where the lower text box is located

                        // create the text objects
                        GameObject starName = Instantiate(starNameObject, textLocation, Quaternion.identity) as GameObject;
                        StellarObjectDataBlock starDataBlock = new StellarObjectDataBlock();  // create a new star data block
                        GameObject provinceName = Instantiate(starNameObject, textLocation2, Quaternion.identity) as GameObject;
                        StellarObjectDataBlock lowerProvinceDataBlock = new StellarObjectDataBlock(); // create the lower data block for province info

                        starName.transform.SetParent(galaxyPlanetInfoCanvas.transform.Find("Galaxy Data Panel"), true); // attach the blocks to the panel
                        provinceName.transform.SetParent(galaxyPlanetInfoCanvas.transform.Find("Galaxy Data Panel"), true);  // attach the blocks to the panel

                        // add the owning civs if present
                        foreach (Civilization civ in gameDataRef.CivList)
                        {
                            List<StarData> civSystems = new List<StarData>();
                            civSystems = HelperFunctions.DataRetrivalFunctions.GetCivSystemList(civ);

                            if (!civOwnerFound)
                            {
                                foreach (StarData sys in civSystems)
                                {
                                    if (sys.ID == star.GetComponent<Star>().starData.ID)
                                    {
                                        bool systemIsCapital = false;
                                        foreach (PlanetData pData in sys.PlanetList)
                                        {
                                            if (pData.ID == civ.CapitalPlanetID)
                                            {
                                                systemIsCapital = true;
                                                break;
                                            }
                                        }
                                        if (systemIsCapital)
                                            civNames += " (" + civ.Name.ToUpper() + " HOME SYSTEM," + civ.Size.ToString() + ")";
                                        else
                                            civNames += " (" + civ.Name.ToUpper() + "," + civ.Size.ToString() + ")";

                                        civNames += " (" + civ.Type.ToString() + ")";
                                        if (sys.AssignedProvinceID != "")
                                            civNames += "(PROV NAME: " + HelperFunctions.DataRetrivalFunctions.GetProvince(sys.AssignedProvinceID).Name.ToUpper() + ")";
                                        civColor = civ.Color;
                                        civTolerance = "(TOL: " + civ.PlanetMinTolerance.ToString("N0") + ")";
                                        civOwnerFound = true;
                                        break;
                                    }
                                }
                            }
                        }

                        if (!gameDataRef.DebugMode)
                            starName.GetComponent<Text>().text = star.GetComponent<Star>().starData.Name.ToUpper() + "[" + star.GetComponent<Star>().starData.IntelValue.ToString("N0") + "]"; //+ civNames;
                        else
                            starName.GetComponent<Text>().text = star.GetComponent<Star>().starData.Name.ToUpper() + civNames;
                        starName.GetComponent<Text>().color = civColor;
                        starName.transform.localPosition = new Vector3(textLocation.x - (Screen.width / 2),textLocation.y - (Screen.height / 2),0); // reset after making a parent to canvas relative coordinates (pivot in center)
                        starName.transform.localScale = new Vector3(1, 1, 1); // do not scale
                        starName.name = star.GetComponent<Star>().starData.ID;

                        provinceName.transform.localPosition = new Vector3(textLocation.x - (Screen.width / 2), textLocation.y - (Screen.height / 2), 0); // reset after making a parent to canvas relative coordinates (pivot in center)
                        provinceName.transform.localScale = new Vector3(1, 1, 1); // do not scale
                        provinceName.name = star.GetComponent<Star>().starData.ID;

                        // assign to the star data block
                        starDataBlock.objectRotation = 0f;
                        starDataBlock.ownerName = civNames;
                        starDataBlock.blockType = StellarObjectDataBlock.eBlockType.Star;
                        starDataBlock.stellarObject = star;
                        starDataBlock.ownerColor = civColor;

                        starDataBlock.ownerTolerance = civTolerance;
                        starDataBlock.textObject = starName;
                        listTextObjectsCreated.Add(starDataBlock);

                        // assign to the secondary data block
                        lowerProvinceDataBlock.objectRotation = 0f;
                        lowerProvinceDataBlock.ownerName = civNames;
                        lowerProvinceDataBlock.blockType = StellarObjectDataBlock.eBlockType.Lower;
                        lowerProvinceDataBlock.stellarObject = star;
                        lowerProvinceDataBlock.ownerColor = civColor;
                        lowerProvinceDataBlock.textObject = provinceName;
                        listTextObjectsCreated.Add(lowerProvinceDataBlock);

                    }
                }
            }

            foreach (GameObject nebula in galaxyDataRef.stellarPhenonomaList)
            {
                if (nebula != null)
                {
                        var nameVector = Camera.main.WorldToScreenPoint(nebula.transform.position); // gets the screen point of the star's transform position
                        Vector2 vectorTwo = GUIUtility.ScreenToGUIPoint(new Vector2(nameVector.x, nameVector.y)); // gets center of star on screen position
                        textLocation = new Vector3(nameVector.x, nameVector.y, 0); // where the text box is located

                        // create the text object
                        GameObject stellarObjectName = Instantiate(starNameObject, textLocation, Quaternion.identity) as GameObject;
                        StellarObjectDataBlock stellarObjectDataBlock = new StellarObjectDataBlock();  // create a new star data block

                        stellarObjectName.transform.SetParent(galaxyPlanetInfoCanvas.transform, true);
                        stellarObjectName.GetComponent<Text>().text = nebula.GetComponent<Nebula>().nebulaData.Name.ToUpper();
                        stellarObjectName.transform.localPosition = new Vector3(textLocation.x - (Screen.width / 2), textLocation.y - (Screen.height / 2), 1); // reset after making a parent to canvas relative coordinates (pivot in center)
                        stellarObjectName.transform.localScale = new Vector3(1, 1, 1); // do not scale
                        stellarObjectName.GetComponent<LetterSpacing>().spacing = 40; // space out the letters
                        stellarObjectName.GetComponent<Text>().fontSize = 20;

                        // assign to the star data block
                        stellarObjectDataBlock.objectRotation = nebula.GetComponent<Nebula>().nebulaData.TextRotation;
                        stellarObjectDataBlock.blockType = StellarObjectDataBlock.eBlockType.Nebula;
                        stellarObjectDataBlock.stellarObject = nebula;
                        stellarObjectDataBlock.textObject = stellarObjectName;
                        listTextObjectsCreated.Add(stellarObjectDataBlock);

                        stellarObjectName.transform.Rotate(new Vector3(0, 0, stellarObjectDataBlock.objectRotation));
                }
            }
            systemNameDrawn = true;
        }
        void GenerateProvinceNames()
        {
            foreach (Province pData in galaxyDataRef.ProvinceList)
            {
                Vector3 textLocation = new Vector3(pData.ProvinceCenter.x, pData.ProvinceCenter.y, 0); // where the text box is located
                GameObject provinceName = Instantiate(starNameObject, pData.ProvinceCenter, Quaternion.identity) as GameObject;
                StellarObjectDataBlock starDataBlock = new StellarObjectDataBlock();  // create a new star data block
                provinceName.transform.SetParent(galaxyPlanetInfoCanvas.transform.Find("Galaxy Data Panel"), true); // attach the blocks to the panel

                provinceName.transform.localPosition = textLocation; //new Vector3(textLocation.x - (Screen.width / 2), textLocation.y - (Screen.height / 2), 0); // reset after making a parent to canvas relative coordinates (pivot in center)
                provinceName.transform.localScale = new Vector3(1, 1, 1); // do not scale
                provinceName.tag = "Province"; // tag for selection
                provinceName.name = pData.ID;

                starDataBlock.objectRotation = 0f;
                starDataBlock.ownerName = pData.Name.ToUpper() + " PROVINCE";
                starDataBlock.provinceBounds = pData.ProvinceBounds; // to set the size of the label
                starDataBlock.provinceObjectLocation = textLocation; // provinceName.transform.localPosition;
                starDataBlock.ownerColor = HelperFunctions.DataRetrivalFunctions.FindProvinceOwnerColor(pData);
                starDataBlock.blockType = StellarObjectDataBlock.eBlockType.Province;
                starDataBlock.textObject = provinceName;
                listTextObjectsCreated.Add(starDataBlock);

            }
        }