Beispiel #1
0
    void Update()
    {
        TimelineUtilities.Initialize();

        if (properties == null)
        {
            properties = new MaterialPropertyBlock();
        }

        if (m_light == null)
        {
            m_light = GetComponentInChildren <Light>();
        }

        if (m_renderer == null)
        {
            m_renderer = GetComponent <MeshRenderer>();
        }

        m_light.color = LightColor;
        properties.SetColor("_EmissionColor", 4 * LightColor);
        m_renderer.SetPropertyBlock(properties);

        UpdateProperties();
        UpdateView();
    }
        private void Start()
        {
            mixers = new List <AnimationLayerMixerPlayable>();
            for (var i = 0; i < dir.playableGraph.GetOutputCount(); i++)
            {
                var p = dir.playableGraph.GetRootPlayable(i);
                if (!p.IsValid())
                {
                    continue;
                }
                Debug.Log(p.GetPlayableType());
                Debug.Log("OUTPUT: " + i + " = " + p.GetPlayableType() + ", outputs: " + p.GetOutputCount() + ", inputs: " + p.GetInputCount());
                Traverse(p, mixers);
            }

            var arr = dir.playableAsset.outputs.ToArray();

            for (var i = 0; i < arr.Length; i++)
            {
                var entry = arr[i];

                if (entry.outputTargetType == typeof(Animator))
                {
                    var binding = dir.GetGenericBinding(entry.sourceObject);
                    var b2      = dir.GetReferenceValue(new PropertyName(entry.streamName), out var valid);
                    Debug.Log("BINDING: " + i + ", " + binding + ", " + b2 + " valid=" + valid + "  " + entry.streamName + " - " + entry.sourceObject +
                              ", " + binding);
                    boundAnimators.Add(binding as Animator);
                }
                else
                {
                    var binding = dir.GetGenericBinding(entry.sourceObject);
                    var b2      = dir.GetReferenceValue(new PropertyName(entry.streamName), out var valid);
                    Debug.Log("BINDING: " + i + " is " + entry.outputTargetType + " for " + b2 + ", " + entry.streamName + ", " + binding);
                }
            }

            if (InjectOnStart)
            {
                InjectMixers();
            }

            Debug.Log("-----------");
            if (TimelineUtilities.TryFindTimelinePlayable(dir.playableGraph, out var timeline))
            {
                Debug.Log(timeline.GetPlayableType() + ", " + timeline.GetType());
                if (TimelineUtilities.TryInjectMixer(dir, timeline, GetComponent <Animator>(), out var mixer))
                {
                    Debug.Log("INJECTED MIXER" + mixer);
                }
            }
        }