Пример #1
0
    private static bool ImportAndRefresh(string filePath)
    {
        Logger.LogMessage("Importing from path \"" + filePath + "\"");

        CopyBanks(filePath);

        if (!LoadAllBanks())
        {
            return(false);
        }

        List <FMODAsset> existingAssets = new List <FMODAsset>();

        GatherExistingAssets(existingAssets);

        List <FMODAsset> newAssets = new List <FMODAsset>();

        GatherNewAssets(filePath, newAssets);

        var assetsToDelete = existingAssets.Except(newAssets, new FMODAssetGUIDComparer());
        var assetsToAdd    = newAssets.Except(existingAssets, new FMODAssetGUIDComparer());

        var assetsToMoveFrom = existingAssets.Intersect(newAssets, new FMODAssetGUIDComparer());
        var assetsToMoveTo   = newAssets.Intersect(existingAssets, new FMODAssetGUIDComparer());

        var assetsToMove = assetsToMoveFrom.Except(assetsToMoveTo, new FMODAssetPathComparer());

        if (!assetsToDelete.Any() && !assetsToAdd.Any() && !assetsToMove.Any())
        {
            Logger.LogMessage("Banks updated. Events list unchanged " + System.DateTime.Now.ToString(@"[hh:mm tt]"));
        }
        else
        {
            string assetsToDeleteFormatted = "";
            foreach (var asset in assetsToDelete)
            {
                assetsToDeleteFormatted += eventToAssetPath(asset.path) + "\n";
            }

            string assetsToAddFormatted = "";
            foreach (var asset in assetsToAdd)
            {
                assetsToAddFormatted += eventToAssetPath(asset.path) + "\n";
            }

            string assetsToMoveFormatted = "";
            foreach (var asset in assetsToMove)
            {
                var fromPath = assetsToMoveFrom.First(a => a.id == asset.id).path;
                var toPath   = assetsToMoveTo.First(a => a.id == asset.id).path;
                assetsToMoveFormatted += fromPath + "  moved to  " + toPath + "\n";
            }

            string deletionMessage =
                (assetsToDelete.Count() == 0 ? "No assets removed" : "Removed assets: " + assetsToDelete.Count()) + "\n" +
                (assetsToAdd.Count() == 0 ? "No assets added" : "Added assets: " + assetsToAdd.Count()) + "\n" +
                (assetsToMove.Count() == 0 ? "No assets moved" : "Moved assets: " + assetsToMove.Count()) + "\n" +
                ((assetsToDelete.Count() != 0 || assetsToAdd.Count() != 0 || assetsToMove.Count() != 0) ? "\nSee console for details" : "");

            Logger.LogMessage("Details " + System.DateTime.Now.ToString(@"[hh:mm tt]") + "\n\n" +
                              (assetsToDelete.Count() == 0 ? "No assets removed" : "Removed Assets:\n" + assetsToDeleteFormatted) + "\n" +
                              (assetsToAdd.Count() == 0 ? "No assets added" : "Added Assets:\n" + assetsToAddFormatted) + "\n" +
                              (assetsToMove.Count() == 0 ? "No assets moved" : "Moved Assets:\n" + assetsToMoveFormatted) + "\n" +
                              "________________________________");

            if (!EditorUtility.DisplayDialog("FMOD Studio Importer", deletionMessage, "Continue", "Cancel"))
            {
                return(false);                // User clicked cancel
            }
        }

        ImportAssets(assetsToAdd);
        DeleteMissingAssets(assetsToDelete);
        MoveExistingAssets(assetsToMove, assetsToMoveFrom, assetsToMoveTo);

        AssetDatabase.Refresh();

        return(true);
    }
Пример #2
0
    /// <summary>
    /// Initializes this instance.
    /// </summary>
    private void Initialize()
    {
        if (isInitialized && this.system != null && this.system.IsValid())
        {
            return;
        }
        isInitialized = true;

        Logger.LogMessage("Initializing FMOD");

        // Do these hacks before calling ANY fmod functions!
        if (!UnityUtil.ForceLoadLowLevelBinary())
        {
            Logger.LogError("Unable to load low level binary!");
        }

        Logger.LogMessage("Creating FMOD System");
        Logger.ErrorCheck(FMOD.Studio.System.Create(out system));

        if (system == null)
        {
            Logger.LogError("Unable to create FMOD System!");
            return;
        }

        Logger.LogMessage("System.initialize (" + system + ")");
        FMOD.Studio.InitFlags flags = FMOD.Studio.InitFlags.Normal;
#if FMOD_LIVEUPDATE
        flags |= FMOD.Studio.INITFLAGS.LIVEUPDATE;
#endif

        FMOD.Result result = FMOD.Result.Ok;

        system.GetLowLevelSystem(out lowLevelSystem);
        UpdateDSPBufferSize();

        result = system.Initialize(1024, flags, FMOD.InitFlags.Normal, global::System.IntPtr.Zero);

        if (result == FMOD.Result.ErrorNetSocket)
        {
#if false && FMOD_LIVEUPDATE
            UnityUtil.LogWarning("LiveUpdate disabled: socket in already in use");
            flags &= ~FMOD.Studio.INITFLAGS.LIVEUPDATE;
            result = system.init(1024, flags, FMOD.INITFLAGS.NORMAL, (System.IntPtr)null);
#else
            Logger.LogError("Unable to initalize with LiveUpdate: socket is already in use");
#endif
        }
        else if (result == FMOD.Result.ErrorHeaderMismatch)
        {
            Logger.LogError("Version mismatch between C# script and FMOD binary, restart Unity and reimport the integration package to resolve this issue.");
        }
        else
        {
            Logger.ErrorCheck(result);
        }


        LoadPlugins();

        LoadAllBanks();
    }