public override void ProcessFrame(Playable playable, FrameData info, object playerData)
    {
        base.ProcessFrame(playable, info, playerData);

        if (info.deltaTime == 0)
        {
            return;
        }

        Transform trackBinding = playerData as Transform;

        int inputCount = playable.GetInputCount();

        for (int i = 0; i < inputCount; i++)
        {
            ScriptPlayable <SoundTimelineBehaviour> inputBehaviour = (ScriptPlayable <SoundTimelineBehaviour>)playable.GetInput(i);
            SoundTimelineBehaviour input = inputBehaviour.GetBehaviour();

            if (input.triggered)
            {
                input.triggered = false;

                if (Game.SoundSystem == null)
                {
                    GameDebug.LogWarning("SoundTimeline: You should not try to play sound with no soundsystem");
                    return;
                }

                Profiler.BeginSample("Play sound");
                switch (input.position)
                {
                case SoundTimelineBehaviour.SoundPosition.None:
                    //Game.SoundSystem.Play(input.sound);
                    break;

                case SoundTimelineBehaviour.SoundPosition.Position:
                    if (trackBinding == null)
                    {
                        GameDebug.LogError("Cant play timeline sound as no transform is defined for track. Sound:" + input.sound.name);
                        break;
                    }
                    //Game.SoundSystem.Play(input.sound, trackBinding.position);
                    break;

                case SoundTimelineBehaviour.SoundPosition.Follow:
                    if (trackBinding == null)
                    {
                        GameDebug.LogError("Cant play timeline sound as no transform is defined for track. Sound:" + input.sound.name);
                        break;
                    }
                    //Game.SoundSystem.Play(input.sound, trackBinding);
                    break;
                }
                Profiler.EndSample();
            }
        }
    }
    public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
    {
        var playable = ScriptPlayable <SoundTimelineBehaviour> .Create(graph, template);

        SoundTimelineBehaviour clone = playable.GetBehaviour();

        clone.sound    = sound;
        clone.position = position;
        return(playable);
    }