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 :; } }
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(); } }