static FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, IntPtr instancePtr, IntPtr parameterPtr)
    {
        // Recreate the event instance object
        FMOD.Studio.EventInstance instance = new FMOD.Studio.EventInstance(instancePtr);

        // Retrieve the user data
        IntPtr timelineInfoPtr;

        instance.getUserData(out timelineInfoPtr);

        // Get the object to store beat and marker details
        GCHandle     timelineHandle = GCHandle.FromIntPtr(timelineInfoPtr);
        TimelineInfo timelineInfo   = (TimelineInfo)timelineHandle.Target;

        switch (type)
        {
        case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT:
        {
            var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));
            timelineInfo.currentMusicBar = parameter.bar;
        }
        break;

        case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER:
        {
            var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
            timelineInfo.lastMarker = parameter.name;
        }
        break;
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 2
0
    static FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
    {
        // Retrieve the user data
        IntPtr timelineInfoPtr;

        FMOD.RESULT result = instance.getUserData(out timelineInfoPtr);
        if (result != FMOD.RESULT.OK)
        {
            UnityEngine.Debug.LogError("Timeline Callback error: " + result);
        }
        else if (timelineInfoPtr != IntPtr.Zero)
        {
            // Get the object to store beat and marker details
            GCHandle     timelineHandle = GCHandle.FromIntPtr(timelineInfoPtr);
            TimelineInfo timelineInfo   = (TimelineInfo)timelineHandle.Target;

            switch (type)
            {
            case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT:
            {
                var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));
                timelineInfo.currentMusicBeat = parameter.beat;
            }
            break;

            case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER:
            {
                var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
                timelineInfo.lastMarker = parameter.name;
            }
            break;
            }
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 3
0
    public FMOD.RESULT StudioEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, IntPtr instancePtr, IntPtr parameters)
    {
        if (type == FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER)
        {
            var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameters, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));

            List <UnityAction> toCall;
            var markerName = parameter.name + "";
            var succes     = markerCallbacks.TryGetValue(markerName, out toCall);

            if (succes)
            {
                foreach (var action in toCall)
                {
                    action();
                    UnityEngine.Debug.Log("Reached marker: " + markerName);
                }
            }
        }
        if (type == FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT)
        {
            foreach (var action in beatCallbacks)
            {
                action();
            }
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 4
0
        static FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
        {
            // Retrieve the user data
            IntPtr timelineInfoPtr;

            FMOD.RESULT result = instance.getUserData(out timelineInfoPtr);

            if (result != FMOD.RESULT.OK)
            {
                Debug.LogError("Timeline Callback error: " + result);
            }
            else if (timelineInfoPtr != IntPtr.Zero)
            {
                // Get the object to store beat and marker details
                GCHandle     timelineHandle = GCHandle.FromIntPtr(timelineInfoPtr);
                TimelineInfo timelineInfo   = (TimelineInfo)timelineHandle.Target;

                switch (type)
                {
                case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT:
                {
                    var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));
                    //print("BEAT " + parameter.beat + " CALLBACK");
                    timelineInfo.currentMusicBar                = parameter.bar;
                    timelineInfo.currentMusicBeat               = parameter.beat;
                    timelineInfo.currentMusicTempo              = parameter.tempo;
                    timelineInfo.currentMusicPosition           = parameter.position;
                    timelineInfo.currentMusicTimeSignatureUpper = parameter.timesignatureupper;
                    timelineInfo.currentMusicTimeSignatureLower = parameter.timesignaturelower;
                    FmodMusicHandler.instance.onBeatDelegate();
                }
                break;

                case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER:
                {
                    var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
                    timelineInfo.lastMarker = parameter.name;
                    //print(parameter.name + " MARKER CALLBACK");
                    if (FmodChordInterpreter.instance != null && FmodChordInterpreter.instance.IsFmodMarkerChordInformation(parameter.name))
                    {
                        FmodChordInterpreter.instance.ParseChordFromMarker(parameter.name);
                        if (FmodMusicHandler.instance.onChordMarkerDelegate != null)
                        {
                            FmodMusicHandler.instance.onChordMarkerDelegate(FmodChordInterpreter.instance.GetFmodChord());
                        }
                        //FmodChordInterpreter.instance.PrintCurrentChord();
                    }
                }
                break;

                case FMOD.Studio.EVENT_CALLBACK_TYPE.STARTED:
                {
                    //print("FMOD EVENT STARTED!");
                }
                break;
                }
            }
            return(FMOD.RESULT.OK);
        }
    static FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
    {
        //Debug.Log("callback");
        // Retrieve the user data
        IntPtr timelineInfoPtr;

        FMOD.RESULT result = instance.getUserData(out timelineInfoPtr);
        if (result != FMOD.RESULT.OK)
        {
            Debug.LogError("Timeline Callback error: " + result);
        }
        else if (timelineInfoPtr != IntPtr.Zero)
        {
            // Get the object to store beat and marker details
            GCHandle     timelineHandle = GCHandle.FromIntPtr(timelineInfoPtr);
            TimelineInfo timelineInfo   = (TimelineInfo)timelineHandle.Target;

            var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));
            if (parameter.tempo != 0)
            {
                bpm = (int)parameter.tempo;
            }
            switch (type)
            {
            case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT:
            {
                //var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));
                timelineInfo.currentMusicBar = parameter.bar;
                bar = timelineInfo.currentMusicBar;
                //Debug.Log("bedug 1");

                timelineInfo.currentMusicBeat = parameter.beat;
                beat = timelineInfo.currentMusicBeat;
            }
            break;

            case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER:
            {
                var marker_param = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
                timelineInfo.lastMarker = marker_param.name;
                marker = timelineInfo.lastMarker;

                //var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));
                //timelineInfo.currentMusicBeat = parameter.beat;
                //beat = timelineInfo.currentMusicBeat;

                //markerEvent.Invoke();
                //Debug.Log("bedug 2");
            }
            break;
            }
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 6
0
    static private FMOD.RESULT OnEventInstanceStopped(FMOD.Studio.EVENT_CALLBACK_TYPE type, IntPtr _event, IntPtr parameters)
    {
        FMOD.Studio.EventInstance instance = new FMOD.Studio.EventInstance(_event);

        IntPtr data;

        instance.getUserData(out data);

        ((Stack <FMOD.Studio.EventInstance>)GCHandle.FromIntPtr(data).Target).Push(instance);

        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 7
0
    FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
    {
        IntPtr timelineInfoPtr;

        FMOD.RESULT result = instance.getUserData(out timelineInfoPtr);
        if (result != FMOD.RESULT.OK)
        {
            Debug.LogError("Timeline Callback error: " + result);
        }
        else if (timelineInfoPtr != IntPtr.Zero)
        {
            GCHandle     timelineHandle = GCHandle.FromIntPtr(timelineInfoPtr);
            TimelineInfo timelineInfo   = (TimelineInfo)timelineHandle.Target;

            switch (type)
            {
            case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT:
            {
                var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));
                timelineInfo.currentBeat = parameter.beat;
                timelineInfo.bpm         = parameter.tempo;
                if (OnBeat != null)
                {
                    OnBeat();
                }
            }
            break;

            case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER:
            {
                var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
                if (OnMarker != null)
                {
                    OnMarker();
                }
                timelineInfo.lastMarker         = parameter.name;
                timelineInfo.lastMarkerPosition = parameter.position / 1000f;
            }
            break;

            case FMOD.Studio.EVENT_CALLBACK_TYPE.STOPPED:
            {
                print("stopped");
            }
            break;
            }
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 8
0
    public FMOD.RESULT BeatEventCallBack(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance eventInstance, IntPtr parameters)//this function is called on each beat and it needs to return an a FMOD result and contain all of this information
    {
        beatCounter++;
        print("Callback called" + beatCounter);
        if (beatCounter >= 16)   //after 16 beats we will change the key

        {
            switch (musicKey) // switch allows us to switch between statements, our variable is musicKey and we'll switch between b minor and f#
            {
            case Music_Key.Key_BMinor:
                musicKey = Music_Key.Key_FSharp; // when the musicKey is b minor, switch to fsharp
                break;                           //exits the function

            case Music_Key.Key_FSharp:
                musicKey = Music_Key.Key_BMinor;     // when the musicKey is fsharp, switch to bminor
                break;

            default:
                Debug.LogError("Music Key is unknown");

                break;     //if nothing else matches
            }

            beatCounter = 0;
        }

        if (playStinger == true)
        {
            switch (musicKey)
            {
            case Music_Key.Key_BMinor:
                RuntimeManager.PlayOneShot("event:/Stinger_Bminor");     // if the muskcKey is bminor, play the bminor stinger
                break;

            case Music_Key.Key_FSharp:
                RuntimeManager.PlayOneShot("event:/Stinger_FSharp");     // if the musicKey is fsharp, play the fsharp stinger
                break;

            default:
                Debug.LogError("Music Key is unknown");

                break;     //if nothing else matches
            }

            playStinger = false; //this turns the bool off, so we don't play the stinger over and over again
        }
        return(FMOD.RESULT.OK);  //this is an enum - a list of states, we need to return a result for callbacks
    }
    private FMOD.RESULT CallBackTriggered(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
    {
        var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));

        if (parameter.name == "Percussion Hit")
        {
            mausoleumShakeAnimation.Play(0);
        }
        if (parameter.name == "Flicker On")
        {
            flickerScript.flickerOn();
        }
        if (parameter.name == "Flicker Off")
        {
            flickerScript.flickerOff();
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 10
0
    private FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
    {
        if (type == FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT)
        {
            beatProperties = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));

            if (changeCameraColor)
            {
                camera.backgroundColor = UnityEngine.Random.ColorHSV();
            }

            beatCount++;
        }
        else if (type == FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER)
        {
            currentMarkerProperties = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
            currentMarker           = currentMarkerProperties.name;
        }

        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 11
0
    FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, IntPtr instance, IntPtr parameterPtr)
    {
        switch (type)
        {
        case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT:
        {
            var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));

            myAnimation.SetTrigger("Beat");
        }
        break;

        case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER:
        {
            var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
            //Debug.Log ("marks:" + parameter.name + " " + parameter.position );
        }
        break;
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 12
0
    static FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, IntPtr instancePtr, IntPtr parameterPtr)
    {
        FMOD.Studio.EventInstance instance = new FMOD.Studio.EventInstance(instancePtr);
        // Retrieve the user data
        IntPtr timelineInfoPtr;

        FMOD.RESULT result = instance.getUserData(out timelineInfoPtr);
        if (result != FMOD.RESULT.OK)
        {
            Debug.LogError("Timeline Callback error: " + result);
        }

        else if (timelineInfoPtr != IntPtr.Zero)
        {
            // Get the object to store beat and marker details
            GCHandle     timelineHandle = GCHandle.FromIntPtr(timelineInfoPtr);
            TimelineInfo timelineInfo   = (TimelineInfo)timelineHandle.Target;

            switch (type)
            {
            case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT:
            {
                var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));
                timelineInfo.currentMusicBeat = parameter.beat;
                beat       = timelineInfo.currentMusicBeat;
                bpm        = parameter.tempo;
                secPerBeat = 60f / bpm;

                // Event firing for on beat events.
                if (OnBeat != null)
                {
                    OnBeat();
                }

                // Event firing for every other beat.
                if (beat % 2 != 0)
                {
                    if (OnOtherBeat != null)
                    {
                        OnOtherBeat();
                    }
                }
            }
            break;

            case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER:
            {
                var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
                timelineInfo.lastMarker = parameter.name;
                marker = timelineInfo.lastMarker;


                markerTimeLinePosition = timelinePosition;

                if (marker.Equals("ENDGAME"))
                {
                    GameManager.EndMinigame();
                }

                // Event firing for OnMarker events.
                OnMarker?.Invoke();
            }
            break;
            }
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 13
0
    static FMOD.RESULT DialogueEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
    {
        IntPtr stringPtr;

        instance.getUserData(out stringPtr);

        GCHandle stringHandle = GCHandle.FromIntPtr(stringPtr);
        String   key          = stringHandle.Target as String;

        switch (type)
        {
        case FMOD.Studio.EVENT_CALLBACK_TYPE.CREATE_PROGRAMMER_SOUND:
        {
            FMOD.MODE soundMode = FMOD.MODE.LOOP_NORMAL | FMOD.MODE.CREATECOMPRESSEDSAMPLE | FMOD.MODE.NONBLOCKING;
            var       parameter = (FMOD.Studio.PROGRAMMER_SOUND_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.PROGRAMMER_SOUND_PROPERTIES));

            if (key.Contains("."))
            {
                FMOD.Sound dialogueSound;
                var        soundResult = FMODUnity.RuntimeManager.CoreSystem.createSound(Application.streamingAssetsPath + "/" + key, soundMode, out dialogueSound);
                if (soundResult == FMOD.RESULT.OK)
                {
                    parameter.sound         = dialogueSound.handle;
                    parameter.subsoundIndex = -1;
                    Marshal.StructureToPtr(parameter, parameterPtr, false);
                }
            }
            else
            {
                FMOD.Studio.SOUND_INFO dialogueSoundInfo;
                var keyResult = FMODUnity.RuntimeManager.StudioSystem.getSoundInfo(key, out dialogueSoundInfo);
                if (keyResult != FMOD.RESULT.OK)
                {
                    break;
                }
                FMOD.Sound dialogueSound;
                var        soundResult = FMODUnity.RuntimeManager.CoreSystem.createSound(dialogueSoundInfo.name_or_data, soundMode | dialogueSoundInfo.mode, ref dialogueSoundInfo.exinfo, out dialogueSound);
                if (soundResult == FMOD.RESULT.OK)
                {
                    parameter.sound         = dialogueSound.handle;
                    parameter.subsoundIndex = dialogueSoundInfo.subsoundindex;
                    Marshal.StructureToPtr(parameter, parameterPtr, false);
                }
            }
        }
        break;

        case FMOD.Studio.EVENT_CALLBACK_TYPE.DESTROY_PROGRAMMER_SOUND:
        {
            var parameter = (FMOD.Studio.PROGRAMMER_SOUND_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.PROGRAMMER_SOUND_PROPERTIES));
            var sound     = new FMOD.Sound();
            sound.handle = parameter.sound;
            sound.release();
        }
        break;

        case FMOD.Studio.EVENT_CALLBACK_TYPE.DESTROYED:
            stringHandle.Free();
            break;
        }
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 14
0
    FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, IntPtr instance, IntPtr parameterPtr)
    {
        switch (type)
        {
        case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_BEAT:
        {
            var parameter = (FMOD.Studio.TIMELINE_BEAT_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_BEAT_PROPERTIES));



            BeatDuration = Time.time - lastBeatTime;
            lastBeatTime = Time.time;
            //Debug.Log ("Time " + BeatDuration);

            currentBeat++;
            if (currentBeat > 3)
            {
                currentBeat = 0;
            }

            if (currentBeat >= 0)
            {
                switch (cicle[currentBeat])
                {
                case BeatTypes.Normal:
                    EventManager.TriggerEvent("OnBeatZagal", BeatTypes.Normal);
                    EventManager.TriggerEvent("OnBeatPlayer", BeatTypes.Normal);
                    break;

                case BeatTypes.ZagalLaunch:
                    EventManager.TriggerEvent("OnBeatZagal", BeatTypes.ZagalLaunch);
                    EventManager.TriggerEvent("OnBeatPlayer", BeatTypes.ZagalLaunch);

                    int garbageType = UnityEngine.Random.Range(0, 4);
                    flyingGarbage.Enqueue((GarbageTypes)garbageType);
                    currentgarbage = Instantiate(garbage [garbageType], new Vector3(4.9f, 7.1f, 0f), Quaternion.identity);
                    currentgarbage.GetComponent <Animator> ().speed = 1 * (1 / (BeatDuration * 2));

                    break;

                case BeatTypes.Catch:

                    if (flyingGarbage.Dequeue() == playerTrashCan && playerTimeMargin > (Time.time - playerPushTime))
                    {
                        EventManager.TriggerEvent("OnBeatZagal", BeatTypes.Catch);
                        //EventManager.TriggerEvent("OnBeatPlayer", BeatTypes.Catch);
                    }
                    else
                    {
                        if (!succeed)
                        {
                            EventManager.TriggerEvent("OnBeatZagal", BeatTypes.Fail);
                            EventManager.TriggerEvent("OnBeatPlayer", BeatTypes.Fail);
                        }
                    }

                    break;

                default:
                    EventManager.TriggerEvent("OnBeatZagal", BeatTypes.Normal);
                    EventManager.TriggerEvent("OnBeatPlayer", BeatTypes.Normal);
                    break;
                }
            }
            else
            {
                EventManager.TriggerEvent("OnBeatZagal", BeatTypes.Normal);
                EventManager.TriggerEvent("OnBeatPlayer", BeatTypes.Normal);
            }
        }
        break;

        case FMOD.Studio.EVENT_CALLBACK_TYPE.TIMELINE_MARKER:
        {
            var parameter = (FMOD.Studio.TIMELINE_MARKER_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.TIMELINE_MARKER_PROPERTIES));
            //Debug.Log ("marks:" + parameter.name + " " + parameter.position );
        }
        break;
        }
        succeed = false;
        return(FMOD.RESULT.OK);
    }
Ejemplo n.º 15
0
 static FMOD.RESULT StoppedOneShotEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
 {
     Debug.Log("2. RELEASE ONE SHOT EVENT");
     return(FMOD.RESULT.OK);
 }
        static FMOD.RESULT DialogueEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, IntPtr instancePtr, IntPtr parameterPtr)
        {
            FMOD.Studio.EventInstance instance = new FMOD.Studio.EventInstance(instancePtr);

            // Retrieve the user data
            IntPtr stringPtr;

            instance.getUserData(out stringPtr);

            // Get the string object
            GCHandle stringHandle = GCHandle.FromIntPtr(stringPtr);
            String   key          = stringHandle.Target as String;

            switch (type)
            {
            case FMOD.Studio.EVENT_CALLBACK_TYPE.CREATE_PROGRAMMER_SOUND: {
                FMOD.MODE soundMode = FMOD.MODE.DEFAULT | FMOD.MODE.CREATESTREAM;
                var       parameter = (FMOD.Studio.PROGRAMMER_SOUND_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.PROGRAMMER_SOUND_PROPERTIES));

                if (key.Contains("."))
                {
                    FMOD.Sound dialogueSound;
                    var        soundResult = FMODUnity.RuntimeManager.CoreSystem.createSound(Application.streamingAssetsPath + "/" + key, soundMode, out dialogueSound);
                    if (soundResult == FMOD.RESULT.OK)
                    {
                        parameter.sound         = dialogueSound.handle;
                        parameter.subsoundIndex = -1;
                        Marshal.StructureToPtr(parameter, parameterPtr, false);
                    }
                }
                else
                {
                    FMOD.Studio.SOUND_INFO dialogueSoundInfo;
                    var keyResult = FMODUnity.RuntimeManager.StudioSystem.getSoundInfo(key, out dialogueSoundInfo);
                    if (keyResult != FMOD.RESULT.OK)
                    {
                        break;
                    }
                    FMOD.Sound dialogueSound;
                    var        soundResult = FMODUnity.RuntimeManager.CoreSystem.createSound(dialogueSoundInfo.name_or_data, soundMode | dialogueSoundInfo.mode, ref dialogueSoundInfo.exinfo, out dialogueSound);
                    if (soundResult == FMOD.RESULT.OK)
                    {
                        parameter.sound         = dialogueSound.handle;
                        parameter.subsoundIndex = dialogueSoundInfo.subsoundindex;
                        Marshal.StructureToPtr(parameter, parameterPtr, false);
                    }
                }
            }
            break;

            case FMOD.Studio.EVENT_CALLBACK_TYPE.DESTROY_PROGRAMMER_SOUND: {
                var parameter = (FMOD.Studio.PROGRAMMER_SOUND_PROPERTIES)Marshal.PtrToStructure(parameterPtr, typeof(FMOD.Studio.PROGRAMMER_SOUND_PROPERTIES));
                var sound     = new FMOD.Sound();
                sound.handle = parameter.sound;
                sound.release();
            }
            break;

            case FMOD.Studio.EVENT_CALLBACK_TYPE.DESTROYED:
                // Now the event has been destroyed, unpin the string
                // memory so it can be garbage collected
                stringHandle.Free();
                break;
            }
            return(FMOD.RESULT.OK);
        }
Ejemplo n.º 17
0
 /// <summary>
 /// Assigns a user callback for every subsequent instance of this event.
 /// </summary>
 public void SetCallback(FMOD.Studio.EVENT_CALLBACK callback, FMOD.Studio.EVENT_CALLBACK_TYPE callbackMask) =>
 Native.setCallback(callback, callbackMask);