Beispiel #1
0
        // -- //

        void PlayOneShot(string eventName, EventPayload data)
        {
            FMODEventInstance = FMODUnity.RuntimeManager.CreateInstance(eventName);

            SetupSpacePosition(data.Has(_customPositionInEventPayload), data.Get <Vector3>(_customPositionInEventPayload));
            FMODEventInstance.start();
            FMODEventInstance.release();
        }
Beispiel #2
0
        // -- LISTENERS -- //

        void OnStartEvent(EventPayload data)
        {
            if (_playOneShot)
            {
                if (!_cumulatePlayOneShot)
                {
                    FMODEventInstance.stop(_stopMode);
                }

                PlayOneShot(_FMODEvent, data);
                return;
            }

            playing        = true;
            currentPayload = data;

            FeedParameters(data);
            FMODEventInstance.start();
        }
Beispiel #3
0
        void _Trigger(string eventName, EventPayload data = null, object target = null, object emitter = null)
        {
            EventInvoker <EventPayload> invoker;

            if (events.TryGetValue(eventName, out invoker))
            {
                currentEvent    = eventName;
                invoker.Emitter = emitter;
                invoker.Target  = target;

                if (data == null)
                {
                    invoker.Invoke();
                }
                else
                {
                    invoker.Invoke(data);
                }

                currentEvent = NO_EVENT;
            }
        }
Beispiel #4
0
        void FeedParameters(EventPayload data)
        {
            int floatLoop = data.GetParametersOfType <float>(ref floatParameters);
            int boolLoop  = data.GetParametersOfType <bool>(ref boolParameters);

            for (int i = 0; i < _parameters.Length; ++i)
            {
                FMODEventInstance.setParameterValue(_parameters[i].name, _parameters[i].value);
            }

            for (int i = 0; i < floatLoop; ++i)
            {
                FMODEventInstance.setParameterValue(floatParameters[i], data.Get <float>(floatParameters[i]));
            }

            for (int i = 0; i < boolLoop; ++i)
            {
                // All bool are converted to float. True = 1.0f, False = 0.0f
                FMODEventInstance.setParameterValue(boolParameters[i], data.Get <bool>(boolParameters[i]) ? 1.0f : 0.0f);
            }

            SetupSpacePosition(data.Has(_customPositionInEventPayload), data.Get <Vector3>(_customPositionInEventPayload));
        }
Beispiel #5
0
 static public void Trigger(string eventName, EventPayload data, object target = null, object emitter = null)
 {
     Instance._Trigger(eventName, data, target, emitter);
 }
Beispiel #6
0
 void OnStopEvent(EventPayload data)
 {
     FMODEventInstance.stop(_stopMode);
     playing        = false;
     currentPayload = null;
 }