/// <summary> /// Add a new track group to the current cutscene. /// </summary> /// <param name="userData">TrackGroupContextData containing track group label and type</param> private void AddTrackGroup(object userData) { TrackGroupContextData data = userData as TrackGroupContextData; if (data != null) { GameObject item = CutsceneItemFactory.CreateTrackGroup(cutscene, data.Type, data.Label).gameObject; Undo.RegisterCreatedObjectUndo(item, string.Format("Create {0}", item.name)); } }
/// <summary> /// Show the "Add Track Group" context menu. /// </summary> /// <param name="cutscene">The current Cutscene that the track group will be added to.</param> public static void ShowAddTrackGroupContextMenu(Cutscene cutscene) { GenericMenu createMenu = new GenericMenu(); foreach (Type type in DirectorHelper.GetAllSubTypes(typeof(TrackGroup))) { TrackGroupContextData userData = getContextDataFromType(cutscene, type); string text = string.Format(userData.Label); createMenu.AddItem(new GUIContent(text), false, new GenericMenu.MenuFunction2(AddTrackGroup), userData); } createMenu.ShowAsContext(); }
/// <summary> /// Show the "Add Track Group" context menu. /// </summary> /// <param name="cutscene">The current Cutscene that the track group will be added to.</param> public static void ShowAddTrackGroupContextMenu(TimelineManager cutscene) { GenericMenu createMenu = new GenericMenu(); Type[] subTypes = DirectorHelper.GetAllSubTypes(typeof(TrackGroup)); for (int i = 0; i < subTypes.Length; i++) { TrackGroupContextData userData = getContextDataFromType(cutscene, subTypes[i]); string text = string.Format(userData.Label); createMenu.AddItem(new GUIContent(text), false, new GenericMenu.MenuFunction2(AddTrackGroup), userData); } createMenu.ShowAsContext(); }
private static TrackGroupContextData getContextDataFromType(Cutscene cutscene, Type type) { string label = string.Empty; foreach (TrackGroupAttribute attribute in type.GetCustomAttributes(typeof(TrackGroupAttribute), true)) { if (attribute != null) { label = attribute.Label; break; } } TrackGroupContextData userData = new TrackGroupContextData { Cutscene = cutscene, Type = type, Label = label }; return userData; }
private static TrackGroupContextData getContextDataFromType(Cutscene cutscene, Type type) { string label = string.Empty; foreach (TrackGroupAttribute attribute in type.GetCustomAttributes(typeof(TrackGroupAttribute), true)) { if (attribute != null) { label = attribute.Label; break; } } TrackGroupContextData userData = new TrackGroupContextData { Cutscene = cutscene, Type = type, Label = label }; return(userData); }
private TrackGroupContextData getContextDataFromType(Type type) { string label = string.Empty; object[] attrs = type.GetCustomAttributes(typeof(TrackGroupAttribute), true); for (int i = 0; i < attrs.Length; i++) { TrackGroupAttribute attribute = attrs[i] as TrackGroupAttribute; if (attribute != null) { label = attribute.Label; break; } } TrackGroupContextData userData = new TrackGroupContextData { Type = type, Label = label }; return(userData); }
/// <summary> /// Show the "Add Track Group" context menu. /// </summary> /// <param name="cutscene">The current Cutscene that the track group will be added to.</param> public static void ShowAddTrackGroupContextMenu(Cutscene cutscene) { GenericMenu createMenu = new GenericMenu(); { // foreach(var type in DirectorHelper.GetAllSubTypes(typeof(TrackGroup))) var __enumerator1 = (DirectorHelper.GetAllSubTypes(typeof(TrackGroup))).GetEnumerator(); while (__enumerator1.MoveNext()) { var type = (Type)__enumerator1.Current; { TrackGroupContextData userData = getContextDataFromType(cutscene, type); string text = string.Format(userData.Label); createMenu.AddItem(new GUIContent(text), false, new GenericMenu.MenuFunction2(AddTrackGroup), userData); } } } createMenu.ShowAsContext(); }
private TrackGroupContextData getContextDataFromType(Type type) { string label = string.Empty; { var __array3 = type.GetCustomAttributes(typeof(TrackGroupAttribute), true); var __arrayLength3 = __array3.Length; for (int __i3 = 0; __i3 < __arrayLength3; ++__i3) { var attribute = (TrackGroupAttribute)__array3[__i3]; { if (attribute != null) { label = attribute.Label; break; } } } } TrackGroupContextData userData = new TrackGroupContextData { Type = type, Label = label }; return(userData); }
/// <summary> /// Draw and update the toolbar for the director control /// </summary> /// <param name="toolbarArea">The area for the toolbar</param> private void updateToolbar(Rect toolbarArea) { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); // If there are no cutscenes, then only give option to create a new cutscene. if (GUILayout.Button(CREATE, EditorStyles.toolbarDropDown, GUILayout.Width(60))) { GenericMenu createMenu = new GenericMenu(); createMenu.AddItem(new_cutscene, false, openCutsceneCreatorWindow); createMenu.AddItem(default_cutscene, false, createDefaultCutscene); createMenu.AddItem(empty_cutscene, false, createEmptyCutscene); if (cutscene != null) { createMenu.AddSeparator(string.Empty); createMenu.AddItem(new_cutscene_trigger, false, createCutsceneTrigger); createMenu.AddSeparator(string.Empty); Type[] subTypes = DirectorHelper.GetAllSubTypes(typeof(TrackGroup)); for (int i = 0; i < subTypes.Length; i++) { TrackGroupContextData userData = getContextDataFromType(subTypes[i]); string text = string.Format(userData.Label); createMenu.AddItem(new GUIContent(text), false, new GenericMenu.MenuFunction2(AddTrackGroup), userData); } } createMenu.DropDown(new Rect(5, TOOLBAR_HEIGHT, 0, 0)); } // Cutscene selector cachedCutscenes = GameObject.FindObjectsOfType <Cutscene>(); if (cachedCutscenes != null && cachedCutscenes.Length > 0) { // Get cutscene names GUIContent[] cutsceneNames = new GUIContent[cachedCutscenes.Length]; for (int i = 0; i < cachedCutscenes.Length; i++) { cutsceneNames[i] = new GUIContent(cachedCutscenes[i].name); } // Sort alphabetically Array.Sort(cutsceneNames, delegate(GUIContent content1, GUIContent content2) { return(string.Compare(content1.text, content2.text)); }); int count = 1; // Resolve duplicate names for (int i = 0; i < cutsceneNames.Length - 1; i++) { int next = i + 1; while (next < cutsceneNames.Length && string.Compare(cutsceneNames[i].text, cutsceneNames[next].text) == 0) { cutsceneNames[next].text = string.Format("{0} (duplicate {1})", cutsceneNames[next].text, count++); next++; } count = 1; } Array.Sort(cachedCutscenes, delegate(Cutscene c1, Cutscene c2) { return(string.Compare(c1.name, c2.name)); }); // Find the currently selected cutscene. for (int i = 0; i < cachedCutscenes.Length; i++) { if (cutscene != null && cutscene.GetInstanceID() == cachedCutscenes[i].GetInstanceID()) { popupSelection = i; } } // Show the popup int tempPopup = EditorGUILayout.Popup(popupSelection, cutsceneNames, EditorStyles.toolbarPopup); if (cutscene == null || tempPopup != popupSelection || cutsceneInstanceID != cachedCutscenes[Math.Min(tempPopup, cachedCutscenes.Length - 1)].GetInstanceID()) { popupSelection = tempPopup; popupSelection = Math.Min(popupSelection, cachedCutscenes.Length - 1); FocusCutscene(cachedCutscenes[popupSelection]); } } if (cutscene != null) { if (GUILayout.Button(pickerImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { Selection.activeObject = cutscene; } if (GUILayout.Button(refreshImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { cutscene.Refresh(); } if (Event.current.control && Event.current.keyCode == KeyCode.Space) { cutscene.Refresh(); Event.current.Use(); } } GUILayout.FlexibleSpace(); if (betaFeaturesEnabled) { Texture resizeTexture = cropImage; if (directorControl.ResizeOption == DirectorEditor.ResizeOption.Scale) { resizeTexture = scaleImage; } Rect resizeRect = GUILayoutUtility.GetRect(new GUIContent(resizeTexture), EditorStyles.toolbarDropDown, GUILayout.Width(32)); if (GUI.Button(resizeRect, new GUIContent(resizeTexture, "Resize Option"), EditorStyles.toolbarDropDown)) { GenericMenu resizeMenu = new GenericMenu(); string[] names = Enum.GetNames(typeof(DirectorEditor.ResizeOption)); for (int i = 0; i < names.Length; i++) { resizeMenu.AddItem(new GUIContent(names[i]), directorControl.ResizeOption == (DirectorEditor.ResizeOption)i, chooseResizeOption, i); } resizeMenu.DropDown(new Rect(resizeRect.x, TOOLBAR_HEIGHT, 0, 0)); } } bool tempSnapping = GUILayout.Toggle(isSnappingEnabled, snapImage, EditorStyles.toolbarButton, GUILayout.Width(24)); if (tempSnapping != isSnappingEnabled) { isSnappingEnabled = tempSnapping; directorControl.IsSnappingEnabled = isSnappingEnabled; } //GUILayout.Button(rollingEditImage, EditorStyles.toolbarButton, GUILayout.Width(24)); GUILayout.Space(10f); if (GUILayout.Button(rescaleImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.Rescale(); } if (GUILayout.Button(new GUIContent(zoomInImage, "Zoom In"), EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.ZoomIn(); } if (GUILayout.Button(zoomOutImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.ZoomOut(); } GUILayout.Space(10f); Color temp = GUI.color; GUI.color = directorControl.InPreviewMode ? Color.red : temp; directorControl.InPreviewMode = GUILayout.Toggle(directorControl.InPreviewMode, PREVIEW_MODE, EditorStyles.toolbarButton, GUILayout.Width(150)); GUI.color = temp; GUILayout.Space(10); if (GUILayout.Button(settingsImage, EditorStyles.toolbarButton, GUILayout.Width(30))) { EditorWindow.GetWindow <DirectorSettingsWindow>(); } // Check if the Welcome Window exists and if so, show an icon for it. var helpWindowType = Type.GetType("CinemaSuite.CinemaSuiteWelcome"); if (helpWindowType != null) { if (GUILayout.Button(new GUIContent("?", "Help"), EditorStyles.toolbarButton)) { EditorWindow.GetWindow(helpWindowType); } } EditorGUILayout.EndHorizontal(); }
/// <summary> /// Draw and update the toolbar for the director control /// </summary> /// <param name="toolbarArea">The area for the toolbar</param> private void updateToolbar(Rect toolbarArea) { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); // If there are no cutscenes, then only give option to create a new cutscene. if (GUILayout.Button(CREATE, EditorStyles.toolbarDropDown, GUILayout.Width(60))) { GenericMenu createMenu = new GenericMenu(); createMenu.AddItem(new_cutscene, false, openCutsceneCreatorWindow); if (cutscene != null) { createMenu.AddSeparator(string.Empty); foreach (Type type in DirectorHelper.GetAllSubTypes(typeof(TrackGroup))) { TrackGroupContextData userData = getContextDataFromType(type); string text = string.Format(userData.Label); createMenu.AddItem(new GUIContent(text), false, new GenericMenu.MenuFunction2(AddTrackGroup), userData); } } createMenu.DropDown(new Rect(5, TOOLBAR_HEIGHT, 0, 0)); } // Cutscene selector cachedCutscenes = GameObject.FindObjectsOfType <Cutscene>(); if (cachedCutscenes != null && cachedCutscenes.Length > 0) { // Get cutscene names GUIContent[] cutsceneNames = new GUIContent[cachedCutscenes.Length]; for (int i = 0; i < cachedCutscenes.Length; i++) { cutsceneNames[i] = new GUIContent(cachedCutscenes[i].name); } // Sort alphabetically Array.Sort(cutsceneNames, delegate(GUIContent content1, GUIContent content2) { return(string.Compare(content1.text, content2.text)); }); Array.Sort(cachedCutscenes, delegate(Cutscene c1, Cutscene c2) { return(string.Compare(c1.name, c2.name)); }); // Find the currently selected cutscene. for (int i = 0; i < cachedCutscenes.Length; i++) { if (cutscene != null && cutscene.GetInstanceID() == cachedCutscenes[i].GetInstanceID()) { popupSelection = i; } } // Show the popup int tempPopup = EditorGUILayout.Popup(popupSelection, cutsceneNames, EditorStyles.toolbarPopup); if (tempPopup != popupSelection) { popupSelection = tempPopup; EditorPrefs.SetInt("DirectorControl.CutsceneID", cachedCutscenes[popupSelection].GetInstanceID()); } popupSelection = Math.Min(popupSelection, cachedCutscenes.Length - 1); cutscene = cachedCutscenes[popupSelection]; } if (cutscene != null) { if (GUILayout.Button(pickerImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { Selection.activeObject = cutscene; } if (GUILayout.Button(refreshImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { cutscene.Refresh(); } if (Event.current.control && Event.current.keyCode == KeyCode.Space) { cutscene.Refresh(); Event.current.Use(); } } GUILayout.FlexibleSpace(); bool tempSnapping = GUILayout.Toggle(isSnappingEnabled, snapImage, EditorStyles.toolbarButton, GUILayout.Width(24)); if (tempSnapping != isSnappingEnabled) { isSnappingEnabled = tempSnapping; directorControl.IsSnappingEnabled = isSnappingEnabled; } GUILayout.Button(rippleEditImage, EditorStyles.toolbarButton, GUILayout.Width(24)); GUILayout.Button(rollingEditImage, EditorStyles.toolbarButton, GUILayout.Width(24)); GUILayout.Space(10f); if (GUILayout.Button(rescaleImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.Rescale(); } if (GUILayout.Button(new GUIContent(zoomInImage, "Zoom In"), EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.ZoomIn(); } if (GUILayout.Button(zoomOutImage, EditorStyles.toolbarButton, GUILayout.Width(24))) { directorControl.ZoomOut(); } GUILayout.Space(10f); Color temp = GUI.color; GUI.color = directorControl.InPreviewMode ? Color.red : temp; directorControl.InPreviewMode = GUILayout.Toggle(directorControl.InPreviewMode, PREVIEW_MODE, EditorStyles.toolbarButton, GUILayout.Width(150)); GUI.color = temp; GUILayout.Space(10); if (GUILayout.Button("?", EditorStyles.toolbarButton)) { EditorWindow.GetWindow <DirectorHelpWindow>(); } EditorGUILayout.EndHorizontal(); }