public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) { #if UNITY_EDITOR if (!string.IsNullOrEmpty(eventName)) #else if (!cachedParameters && !string.IsNullOrEmpty(eventName)) #endif { FMOD.Studio.EventDescription eventDescription; FMODUnity.RuntimeManager.StudioSystem.getEvent(eventName, out eventDescription); for (int i = 0; i < parameters.Length; i++) { FMOD.Studio.PARAMETER_DESCRIPTION parameterDescription; eventDescription.getParameterDescriptionByName(parameters[i].Name, out parameterDescription); parameters[i].ID = parameterDescription.id; } cachedParameters = true; } var playable = ScriptPlayable <FMODEventPlayableBehavior> .Create(graph, template); behavior = playable.GetBehaviour(); behavior.TrackTargetObject = TrackTargetObject; behavior.eventName = eventName; behavior.stopType = stopType; behavior.parameters = parameters; behavior.OwningClip = OwningClip; return(playable); }
public override void ProcessFrame(Playable playable, FrameData info, object playerData) { #if UNITY_EDITOR /* * Process frame is called from OnGUI() when auditioning. * Check playing to avoid retriggering sounds while scrubbing or repainting. * Check IsQuitting to avoid accessing the RuntimeManager during the Play-In-Editor to Editor transition. */ bool playing = playable.GetGraph().IsPlaying(); if (!playing) { return; } /* When auditioning manually update the StudioSystem in place of the RuntimeManager. */ if (!Application.isPlaying) { FMODUnity.RuntimeManager.StudioSystem.update(); } #endif //UNITY_EDITOR int inputCount = playable.GetInputCount(); float time = (float)playable.GetGraph().GetRootPlayable(0).GetTime(); for (int i = 0; i < inputCount; i++) { ScriptPlayable <FMODEventPlayableBehavior> inputPlayable = (ScriptPlayable <FMODEventPlayableBehavior>)playable.GetInput(i); FMODEventPlayableBehavior input = inputPlayable.GetBehaviour(); input.UpdateBehaviour(time); } }
public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) { #if UNITY_EDITOR if (!eventReference.IsNull) #else if (!cachedParameters && !eventReference.IsNull) #endif { FMOD.Studio.EventDescription eventDescription = RuntimeManager.GetEventDescription(eventReference); for (int i = 0; i < parameters.Length; i++) { FMOD.Studio.PARAMETER_DESCRIPTION parameterDescription; eventDescription.getParameterDescriptionByName(parameters[i].Name, out parameterDescription); parameters[i].ID = parameterDescription.id; } List <ParameterAutomationLink> parameterLinks = template.parameterLinks; for (int i = 0; i < parameterLinks.Count; i++) { FMOD.Studio.PARAMETER_DESCRIPTION parameterDescription; eventDescription.getParameterDescriptionByName(parameterLinks[i].Name, out parameterDescription); parameterLinks[i].ID = parameterDescription.id; } cachedParameters = true; } var playable = ScriptPlayable <FMODEventPlayableBehavior> .Create(graph, template); behavior = playable.GetBehaviour(); behavior.TrackTargetObject = TrackTargetObject; behavior.eventReference = eventReference; behavior.stopType = stopType; behavior.parameters = parameters; behavior.OwningClip = OwningClip; return(playable); }