private void Update()
        {
            if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject())
            {
                Vector3 clickPos = UtilsClass.GetMouseWorldPosition();
                if (m_activeBuildingType != null)
                {
                    if (CanSpawnBuilding(m_activeBuildingType, clickPos, out string errorMessage))
                    {
                        if (ResourceManager.Instance.CanAfford(m_activeBuildingType.constructionResourceCostArray))
                        {
                            ResourceManager.Instance.SpendResources(m_activeBuildingType.constructionResourceCostArray);
                            BuildingConstruction.Create(UtilsClass.GetMouseWorldPosition(), m_activeBuildingType);

                            SoundManager.Instance.PlaySound(SoundManager.Sound.BuildingPlaced);
                        }
                        else
                        {
                            TooltipUI.Instance.Show($"Cannot afford {m_activeBuildingType.GetConstructionResourceCostString()}", new TooltipUI.TooltipTimer {
                                timer = 2f
                            });
                        }
                    }
                    else
                    {
                        TooltipUI.Instance.Show(errorMessage, new TooltipUI.TooltipTimer {
                            timer = 2f
                        });
                    }
                }
            }
        }
        public static BuildingConstruction Create(Vector3 position, BuildingTypeSO buildingType)
        {
            Transform buildingConstructionTransform = Instantiate(GameAssets.Instance.pfBuildingConstruction, position, Quaternion.identity);

            BuildingConstruction buildingConstruction = buildingConstructionTransform.GetComponent <BuildingConstruction>();

            buildingConstruction.SetBuildingType(buildingType);

            return(buildingConstruction);
        }