/// <summary>
    /// This function loads pools from asset
    /// </summary>
    void LoadPools()
    {
        if (Application.isPlaying)
        {
            return;
        }
        pools.Clear();
        F3DPoolManagerDB myManager = database as F3DPoolManagerDB;

        if (myManager != null)
        {
            databaseName      = myManager.namer;
            menu.databaseName = databaseName;
            if (myManager.pools != null)
            {
                string[] poolNamesTemp = new string[myManager.pools.Count];
                int      n             = 0;
                foreach (F3DPoolContainer cont in myManager.pools)
                {
                    pools.Add(cont);
                    poolNamesTemp[n] = cont.poolName;
                    n++;
                }
                poolNames = poolNamesTemp;
            }
        }
    }
    /// <summary>
    /// Saving current manager
    /// </summary>
    void SaveManager()
    {
        if (Application.isPlaying)
        {
            return;
        }
        F3DPoolManagerDB newManager = ScriptableObject.CreateInstance <F3DPoolManagerDB>();

        newManager.pools = pools;
        if (databaseName == "")
        {
            databaseName = "DefaultDatabase";
        }
        if (lastLoadedDatabaseName != "")
        {
            if (lastLoadedDatabaseName != databaseName)
            {
                AssetDatabase.DeleteAsset(assetPath + lastLoadedDatabaseName + ".asset");
            }
        }
        newManager.namer = databaseName;
        AssetDatabase.CreateAsset(newManager, assetPath + databaseName + ".asset");
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
        database = newManager;
        pools    = newManager.pools;
    }
    /// <summary>
    /// Updating local manager
    /// </summary>
    void LoadDatabase()
    {
        F3DPoolManagerDB newManager = Resources.Load("F3DPoolManagerCache/" + databaseName) as F3DPoolManagerDB;

        if (newManager != null)
        {
            database               = newManager;
            databaseName           = newManager.namer;
            lastLoadedDatabaseName = databaseName;
            menu.databaseName      = databaseName;
            LoadPools();
            UpdateHaveToShowArray();
            LoadAllVariables();
        }
    }
    /// <summary>
    /// Creation of new database
    /// </summary>
    void CreateNewDatabasePressed()
    {
        if (Application.isPlaying)
        {
            return;
        }
        F3DPoolManagerDB newManager = ScriptableObject.CreateInstance <F3DPoolManagerDB>();

        newManager.pools = new List <F3DPoolContainer>();
        string namer = currentDatabaseName;

        if (namer == "")
        {
            namer               = "GeneratedDataBase";
            databaseName        = namer;
            currentDatabaseName = namer;
        }
        if (AssetDatabase.LoadAssetAtPath(assetPath + namer + ".asset", typeof(ScriptableObject)) == null)
        {
            databaseName        = namer;
            currentDatabaseName = namer;
            newManager.namer    = databaseName;
            AssetDatabase.CreateAsset(newManager, assetPath + databaseName + ".asset");
            AssetDatabase.SaveAssets();
            pools    = new List <F3DPoolContainer>();
            database = newManager;
            LoadPools();
        }
        else
        {
            int    j = 0;
            string disNumberedName = namer;
            int    toCut           = 0;
            int    endPos          = 0;
            if (disNumberedName[disNumberedName.Length - 1] == ')')
            {
                while (disNumberedName[disNumberedName.Length - 1 - toCut] != '(')
                {
                    toCut++;
                    if (toCut <= 0)
                    {
                        toCut = -1;
                        break;
                    }
                }
                toCut++;
                if (toCut >= 0)
                {
                    endPos = disNumberedName.Length - 1 - toCut;
                    if (disNumberedName[endPos] == ' ')
                    {
                    }
                }
                else
                {
                    endPos = disNumberedName.Length - 1;
                }
                disNumberedName = disNumberedName.Substring(0, endPos);
            }
            j = 0;
            while (AssetDatabase.LoadAssetAtPath(assetPath + disNumberedName + " (" + j.ToString() + ")" + ".asset", typeof(ScriptableObject)) != null)
            {
                j++;
            }
            databaseName        = disNumberedName + " (" + j.ToString() + ")";
            currentDatabaseName = databaseName;
            newManager.namer    = databaseName;
            AssetDatabase.CreateAsset(newManager, assetPath + databaseName + ".asset");
            AssetDatabase.SaveAssets();
            pools    = new List <F3DPoolContainer>();
            database = newManager;
            LoadPools();
        }
    }