public void DrawTransitionChooser(AttachItem attach, FD.FlowWindow fromWindow, FD.FlowWindow toWindow, bool doubleSided) { if (this.drawWindowContent == false) return; if (toWindow.IsEnabled() == false) return; if (toWindow.IsContainer() == true) return; var factor = 0.5f; var transitionsContainer = fromWindow; var namePrefix = string.Empty; if (fromWindow.IsSmall() == true && fromWindow.IsABTest() == true) { // is ABTest //Debug.Log(fromWindow.id + " => " + toWindow.id + " :: " + attach.index + " :: " + doubleSided); transitionsContainer = FlowSystem.GetWindow(fromWindow.abTests.sourceWindowId); if (transitionsContainer == null) return; namePrefix = string.Format("Variant{0}", attach.index.ToString()); factor = 0.2f; } else { if (toWindow.IsSmall() == true) { if (toWindow.IsFunction() == false) return; } } if (FlowSystem.GetData().modeLayer == ModeLayer.Audio) { if (FlowSystem.GetData().HasView(FlowView.AudioTransitions) == false) return; } else { if (FlowSystem.GetData().HasView(FlowView.VideoTransitions) == false) return; } const float size = 32f; const float offset = size * 0.5f + 5f; Vector2 centerOffset = Flow.OnDrawNodeCurveOffset(this, attach, fromWindow, toWindow, doubleSided); if (doubleSided == true) { var q = Quaternion.LookRotation(toWindow.rect.center - fromWindow.rect.center, Vector3.back); var attachRevert = FlowSystem.GetAttachItem(toWindow.id, fromWindow.id); this.DrawTransitionChooser(attachRevert, toWindow, toWindow, fromWindow, centerOffset, q * Vector2.left * offset, size, factor, namePrefix); this.DrawTransitionChooser(attach, fromWindow, fromWindow, toWindow, centerOffset, q * Vector2.right * offset, size, factor, namePrefix); } else { this.DrawTransitionChooser(attach, transitionsContainer, fromWindow, toWindow, centerOffset, Vector2.zero, size, factor, namePrefix); } }
public void DrawTransitionChooser(AttachItem attach, FD.FlowWindow transitionsContainer, FD.FlowWindow fromWindow, FD.FlowWindow toWindow, Vector2 centerOffset, Vector2 offset, float size, float factor = 0.5f, string namePrefix = "") { var _size = Vector2.one * size; var rect = new Rect(Vector2.Lerp(fromWindow.rect.center + centerOffset, toWindow.rect.center, factor) + offset - _size * 0.5f, _size); var icon = "TransitionIcon"; if (FlowSystem.GetData().modeLayer == ModeLayer.Audio) { icon = "TransitionIconAudio"; } var transitionStyle = ME.Utilities.CacheStyle("UI.Windows.Styles.DefaultSkin", icon, (name) => FlowSystemEditorWindow.defaultSkin.FindStyle(name)); var transitionStyleBorder = ME.Utilities.CacheStyle("UI.Windows.Styles.DefaultSkin", "TransitionIconBorder", (name) => FlowSystemEditorWindow.defaultSkin.FindStyle(name)); if (transitionStyle != null && transitionStyleBorder != null) { //if (fromWindow.GetScreen() != null) { System.Action onClick = () => { if (FlowSystem.GetData().modeLayer == ModeLayer.Flow) { FlowChooserFilter.CreateTransition<TransitionVideoInputTemplateParameters>(transitionsContainer, fromWindow, toWindow, attach.index, "/Transitions", namePrefix, (element) => { FlowSystem.Save(); }); } else if (FlowSystem.GetData().modeLayer == ModeLayer.Audio) { FlowChooserFilter.CreateTransition<TransitionAudioInputTemplateParameters>(transitionsContainer, fromWindow, toWindow, attach.index, "/Transitions", namePrefix, (element) => { FlowSystem.Save(); }); } }; // Has transition or not? TransitionBase transition = null; TransitionInputParameters transitionParameters = null; IPreviewEditor editor = null; if (FlowSystem.GetData().modeLayer == ModeLayer.Flow) { transition = attach.transition; transitionParameters = attach.transitionParameters; editor = attach.editor; } else if (FlowSystem.GetData().modeLayer == ModeLayer.Audio) { transition = attach.audioTransition; transitionParameters = attach.audioTransitionParameters; editor = attach.editorAudio; } var hasTransition = transition != null && transitionParameters != null; if (hasTransition == true) { GUI.DrawTexture(rect, Texture2D.blackTexture, ScaleMode.ScaleAndCrop, false); var hovered = GUI.enabled && rect.Contains(Event.current.mousePosition); if (editor == null) { editor = Editor.CreateEditor(transitionParameters) as IPreviewEditor; if (FlowSystem.GetData().modeLayer == ModeLayer.Flow) { attach.editor = editor; } else if (FlowSystem.GetData().modeLayer == ModeLayer.Audio) { attach.editorAudio = editor; } hovered = true; } if (editor.HasPreviewGUI() == true) { if (hovered == false) { editor.OnDisable(); } else { editor.OnEnable(); } var style = new GUIStyle(EditorStyles.toolbarButton); editor.OnPreviewGUI(Color.white, rect, style, false, false, hovered); } if (GUI.Button(rect, string.Empty, transitionStyleBorder) == true) { onClick(); } } else { GUI.Box(rect, string.Empty, transitionStyle); if (GUI.Button(rect, string.Empty, transitionStyleBorder) == true) { onClick(); } } //} } }
public void DrawTransitionChooser(AttachItem attach, FD.FlowWindow fromWindow, FD.FlowWindow toWindow, bool doubleSided) { if (toWindow.IsEnabled() == false) return; if (toWindow.IsContainer() == true) return; if (toWindow.IsSmall() == true && toWindow.IsFunction() == false) return; const float size = 32f; const float offset = size * 0.5f + 5f; if (doubleSided == true) { var q = Quaternion.LookRotation(toWindow.rect.center - fromWindow.rect.center, Vector3.back); var attachRevert = FlowSystem.GetAttachItem(toWindow.id, fromWindow.id); this.DrawTransitionChooser(attachRevert, toWindow, fromWindow, q * Vector2.left * offset, size); this.DrawTransitionChooser(attach, fromWindow, toWindow, q * Vector2.right * offset, size); } else { this.DrawTransitionChooser(attach, fromWindow, toWindow, Vector2.zero, size); } }