Пример #1
0
    public List <FmodEvent> loadEventsFromFile(string assetPath, string assetName, FmodEventAsset asset)
    {
        FMOD.EventGroup       eventgroup  = null;
        FMOD.RESULT           result      = FMOD.RESULT.OK;
        List <FmodEvent>      events      = new List <FmodEvent>();
        List <FmodEventGroup> eventGroups = new List <FmodEventGroup>();
        int            numGroups          = 0;
        FmodEventGroup toAdd = null;

        FMOD.EVENT_LOADINFO loadInfo = new FMOD.EVENT_LOADINFO();
        FMOD.EventProject   project  = null;

        _loadFile(assetPath, assetName, ref loadInfo, ref project);
        _getSoundBankNames(asset);

        FMOD.EVENT_PROJECTINFO projectInfo = new FMOD.EVENT_PROJECTINFO();
        project.getInfo(ref projectInfo);
        asset.setProjectName(new string(projectInfo.name));

        result = project.getNumGroups(ref numGroups);
        ERRCHECK(result);
        for (int i = 0; i < numGroups; i++)
        {
            result = project.getGroupByIndex(i, false, ref eventgroup);
            ERRCHECK(result);
            toAdd = FmodEventGroup.CreateInstance("FmodEventGroup") as FmodEventGroup;
            toAdd.Initialize(eventgroup, null, asset);
            eventGroups.Add(toAdd);
            events.AddRange(toAdd.getAllEvents());
        }
        asset.setEventGroups(eventGroups);
        loadReverbsFromFile(asset);
        return(events);
    }
Пример #2
0
    protected void _loadFile(string assetPath, string assetName, ref FMOD.EVENT_LOADINFO loadInfo, ref FMOD.EventProject project)
    {
        FMOD.RESULT result = FMOD.RESULT.OK;
        string      key    = assetPath + "/" + assetName;

        if (m_loadedProjects.ContainsKey(key))
        {
            loadInfo = m_loadInfos[key];
            project  = m_loadedProjects[key];
            return;
        }
        if (m_eventSystemWasInit == false)
        {
            init();
        }
        result = getEventSystem().setMediaPath(assetPath + "/");
        ERRCHECK(result);
        //load a .fev file exported from FMOD Designer
        result = getEventSystem().load(assetName, ref loadInfo, ref project);         // we should only pass here once per file
        ERRCHECK(result);
        if (result == FMOD.RESULT.ERR_EVENT_ALREADY_LOADED)
        {
            throw new Exception("Error: Event file already loaded: " + assetPath + "/" + assetName);
        }
        if (result == FMOD.RESULT.OK)
        {
            m_loadedProjects[key] = project;
            m_loadInfos[key]      = loadInfo;
        }
    }
Пример #3
0
    public FMOD.RESULT loadEventFromFile(FmodEventAudioSource src)
    {
        FmodEvent      evt   = src.getSource();
        FmodEventAsset asset = evt.getAsset();

        FMOD.RESULT         result    = FMOD.RESULT.OK;
        FMOD.EVENT_LOADINFO loadInfo  = new FMOD.EVENT_LOADINFO();
        FMOD.EventProject   project   = null;
        FMOD.Event          fmodEvent = null;

        _loadFile(asset.getMediaPath(), asset.getName(), ref loadInfo, ref project);
        _loadEventGroup(evt);
        result = _loadEvent(evt, ref fmodEvent);
        ERRCHECK(result);
        if (result == FMOD.RESULT.OK)
        {
            src.SetEvent(fmodEvent);
        }
        return(result);
    }