57 lines
2.1 KiB
C#
57 lines
2.1 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
namespace FMODUnity
|
|
{
|
|
[AddComponentMenu("FMOD Studio/FMOD Studio Global Parameter Trigger")]
|
|
public class StudioGlobalParameterTrigger: EventHandler
|
|
{
|
|
[ParamRef]
|
|
[FormerlySerializedAs("parameter")]
|
|
public string Parameter;
|
|
|
|
public EmitterGameEvent TriggerEvent;
|
|
|
|
[FormerlySerializedAs("value")]
|
|
public float Value;
|
|
|
|
private FMOD.Studio.PARAMETER_DESCRIPTION parameterDescription;
|
|
public FMOD.Studio.PARAMETER_DESCRIPTION ParameterDescription { get { return parameterDescription; } }
|
|
|
|
protected override void HandleGameEvent(EmitterGameEvent gameEvent)
|
|
{
|
|
if (TriggerEvent == gameEvent)
|
|
{
|
|
TriggerParameters();
|
|
}
|
|
}
|
|
|
|
public void TriggerParameters()
|
|
{
|
|
bool paramNameSpecified = !string.IsNullOrEmpty(Parameter);
|
|
if (paramNameSpecified)
|
|
{
|
|
FMOD.RESULT result = FMOD.RESULT.OK;
|
|
bool paramIDNeedsLookup = string.IsNullOrEmpty(parameterDescription.name);
|
|
if (paramIDNeedsLookup)
|
|
{
|
|
result = RuntimeManager.StudioSystem.getParameterDescriptionByName(Parameter, out parameterDescription);
|
|
if (result != FMOD.RESULT.OK)
|
|
{
|
|
RuntimeUtils.DebugLogError(string.Format(("[FMOD] StudioGlobalParameterTrigger failed to lookup parameter {0} : result = {1}"), Parameter, result));
|
|
return;
|
|
}
|
|
}
|
|
|
|
result = RuntimeManager.StudioSystem.setParameterByID(parameterDescription.id, Value);
|
|
if (result != FMOD.RESULT.OK)
|
|
{
|
|
RuntimeUtils.DebugLogError(string.Format(("[FMOD] StudioGlobalParameterTrigger failed to set parameter {0} : result = {1}"), Parameter, result));
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|