Exemplo n.º 1
0
		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);

			}

		}
Exemplo n.º 2
0
		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);

			}

		}