Ejemplo n.º 1
0
    // ----------------------------------------------------------------------------------------------------
    #endregion

    #region Bank & Asset Methods
    // ----------------------------------------------------------------------------------------------------
    /// <summary>
    /// Loads the banks.
    /// </summary>
    public bool LoadAllBanks(bool force = false)
    {
        FMODBankList bankListAsset = FMODBankList.LoadBankList();

        if (!force)
        {
            int bankCount;
            FMODStudioSystem.Instance.System.GetBankCount(out bankCount);
            if (bankListAsset != null && bankListAsset.BankList.Count == bankCount)
            {
                return(true);
            }
        }

        if (!bankListAsset)
        {
            Logger.LogError("FMOD Bank List not found, no banks loaded.");
        }
        else
        {
            Logger.LogMessage("Loading " + bankListAsset.BankList.Count + " Banks");

            if (this.loadedBanks == null)
            {
                this.loadedBanks = new List <Bank>(bankListAsset.BankList.Count);
            }
            else
            {
                this.loadedBanks.Clear();
            }

            foreach (var bankName in bankListAsset.BankList)
            {
                Logger.LogMessage("Loading Bank \"" + bankName + "\"");
                if (!LoadBank(bankName))
                {
                    return(false);
                }
            }
        }

        return(true);
    }
Ejemplo n.º 2
0
    private static bool CopyBanks(string path)
    {
        UnloadAllBanks();

        var info = new System.IO.DirectoryInfo(path);

        int    bankCount       = 0;
        string copyBanksString = "";
        var    banksToCopy     = new List <System.IO.FileInfo>();

        foreach (var fileInfo in info.GetFiles())
        {
            var ex = fileInfo.Extension;
            if (!ex.Equals(".bank", System.StringComparison.CurrentCultureIgnoreCase) &&
                !ex.Equals(".strings", System.StringComparison.CurrentCultureIgnoreCase))
            {
                Logger.LogWarning("Ignoring unexpected file: \"" + fileInfo.Name + "\": unknown file type: \"" + fileInfo.Extension + "\"");
                continue;
            }

            bankCount++;

            string bankMessage = "(added)";

            var oldBankPath = Path.Combine(Application.dataPath, Path.Combine("StreamingAssets", fileInfo.Name));
            if (System.IO.File.Exists(oldBankPath))
            {
                var oldFileInfo = new System.IO.FileInfo(oldBankPath);
                if (oldFileInfo.LastWriteTime == fileInfo.LastWriteTime)
                {
                    bankMessage = "(same)";
                }
                else if (oldFileInfo.LastWriteTime < fileInfo.LastWriteTime)
                {
                    bankMessage = "(newer)";
                }
                else
                {
                    bankMessage = "(older)";
                }
            }

            copyBanksString += fileInfo.Name + " " + bankMessage + "\n";
            banksToCopy.Add(fileInfo);
        }

        if (bankCount == 0)
        {
            EditorUtility.DisplayDialog("FMOD Studio Importer", "No .bank files found in the directory:\n" + path, "OK");
            return(false);
        }

        if (!EditorUtility.DisplayDialog("FMOD Studio Importer", "The import will modify the following files:\n" + copyBanksString, "Continue", "Cancel"))
        {
            return(false);
        }

        FMODBankList fmodBankList = ScriptableObject.CreateInstance <FMODBankList>();

        fmodBankList.GenerateBankList(banksToCopy);

        CreateDirectories(FMODBankList.AssetPath);
        AssetDatabase.CreateAsset(fmodBankList, FMODBankList.AssetPath);

        return(true);
    }