public override void ProcessFrame(Playable playable, FrameData info, object playerData) { double time = playable.GetTime(); MidiEventReceiver trackBinding = playerData as MidiEventReceiver; if (!trackBinding) { return; } m_midiEventReceiver = trackBinding; // Debug.Log( playable.GetGraph().GetRootPlayable(0).GetPlayState() ); // Debug.Log(m_previousState); if (Director.state == PlayState.Paused) { m_lastTime = playable.GetTime(); // DispatchEvents(m_seq.Start((float)playable.GetTime())); } // On play if (Director.state == PlayState.Playing && m_previousState == PlayState.Paused) { if (m_seq != null) { Debug.Log("Start it " + m_lastTime); LoadSong(); LoadSequencer(); DispatchEvents(m_seq.Start((float)m_lastTime)); } } m_previousState = Director.state; if (!m_FirstFrameHappened) { m_FirstFrameHappened = true; } if (m_seq != null && m_seq.Playing) { // Update the sequencer and dispatch incoming events. DispatchEvents(m_seq.Advance(info.deltaTime)); } }
// NOTE: This function is called at runtime and edit time. Keep that in mind when setting the values of properties. public override void ProcessFrame(Playable playable, FrameData info, object playerData) { MidiEventReceiver trackBinding = playerData as MidiEventReceiver; if (!trackBinding) { return; } int inputCount = playable.GetInputCount(); for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); ScriptPlayable <MidiEventBehaviour> inputPlayable = (ScriptPlayable <MidiEventBehaviour>)playable.GetInput(i); MidiEventBehaviour input = inputPlayable.GetBehaviour(); // Use the above variables to process each frame of this playable. } }