UP-Viagg-io/Viagg-io/Assets/Plugins/FMOD/src/StudioGlobalParameterTrigger.cs
2024-10-18 16:04:50 +02:00

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;
}
}
}
}
}