Пример #1
0
        private void DoTrackBindingGUI(Rect rect, Rect headerRect, ITimelineState state)
        {
            float num = 130f;

            rect.set_y(rect.get_y() + (rect.get_height() - 16f) / 2f);
            rect.set_height(16f);
            rect.set_width(headerRect.get_xMax() - num - rect.get_xMin());
            Object genericBinding = state.currentDirector.GetGenericBinding(base.track);

            if (rect.Contains(Event.get_current().get_mousePosition()) && TimelineTrackGUI.IsDraggingEvent() && DragAndDrop.get_objectReferences().Length == 1)
            {
                this.HandleDragAndDrop(state, TimelineTrackGUI.GetRequiredBindingType(this.m_Bindings[0]));
            }
            else
            {
                TrackAsset track = base.track;
                switch (this.m_Bindings[0].get_streamType())
                {
                case 0:
                {
                    EditorGUI.BeginChangeCheck();
                    Animator animator = EditorGUI.ObjectField(rect, genericBinding, typeof(Animator), true) as Animator;
                    if (EditorGUI.EndChangeCheck())
                    {
                        TimelineTrackGUI.SetTrackBinding(state, track, (!(animator == null)) ? animator.get_gameObject() : null);
                    }
                    goto IL_1E8;
                }

                case 1:
                {
                    EditorGUI.BeginChangeCheck();
                    AudioSource objectToBind = EditorGUI.ObjectField(rect, genericBinding, typeof(AudioSource), true) as AudioSource;
                    if (EditorGUI.EndChangeCheck())
                    {
                        TimelineTrackGUI.SetTrackBinding(state, track, objectToBind);
                    }
                    goto IL_1E8;
                }

                case 3:
                    if (this.m_Bindings[0].get_sourceBindingType() != null && typeof(Object).IsAssignableFrom(this.m_Bindings[0].get_sourceBindingType()))
                    {
                        EditorGUI.BeginChangeCheck();
                        Object objectToBind2 = EditorGUI.ObjectField(rect, genericBinding, this.m_Bindings[0].get_sourceBindingType(), true);
                        if (EditorGUI.EndChangeCheck())
                        {
                            TimelineTrackGUI.SetTrackBinding(state, track, objectToBind2);
                        }
                    }
                    goto IL_1E8;
                }
                throw new NotImplementedException("");
                IL_1E8 :;
            }
        }
Пример #2
0
        private void HandleDragAndDrop(ITimelineState state, Type requiredComponent)
        {
            DragAndDropVisualMode dragAndDropVisualMode = 32;

            if (requiredComponent != null && requiredComponent.IsInstanceOfType(DragAndDrop.get_objectReferences()[0]))
            {
                dragAndDropVisualMode = 2;
                if (Event.get_current().get_type() == 10)
                {
                    TimelineTrackGUI.SetTrackBinding(state, base.track, DragAndDrop.get_objectReferences()[0]);
                }
            }
            else if (typeof(Component).IsAssignableFrom(requiredComponent))
            {
                GameObject gameObjectBeingDragged = DragAndDrop.get_objectReferences()[0] as GameObject;
                if (gameObjectBeingDragged != null)
                {
                    dragAndDropVisualMode = 2;
                    if (Event.get_current().get_type() == 10)
                    {
                        Component component = gameObjectBeingDragged.GetComponent(requiredComponent);
                        if (component == null)
                        {
                            string      str         = requiredComponent.ToString().Split(".".ToCharArray()).Last <string>();
                            GenericMenu genericMenu = new GenericMenu();
                            genericMenu.AddItem(EditorGUIUtility.TextContent("Create " + str + " on " + gameObjectBeingDragged.get_name()), false, delegate(object nullParam)
                            {
                                Undo.AddComponent(gameObjectBeingDragged, requiredComponent);
                                TimelineTrackGUI.SetTrackBinding(state, this.track, gameObjectBeingDragged);
                            }, null);
                            genericMenu.AddSeparator("");
                            genericMenu.AddItem(EditorGUIUtility.TextContent("Cancel"), false, delegate(object userData)
                            {
                            }, null);
                            genericMenu.ShowAsContext();
                        }
                        else
                        {
                            TimelineTrackGUI.SetTrackBinding(state, base.track, gameObjectBeingDragged);
                        }
                    }
                }
            }
            DragAndDrop.set_visualMode(dragAndDropVisualMode);
            if (dragAndDropVisualMode == 2)
            {
                DragAndDrop.AcceptDrag();
            }
        }