public override void Check( CutsceneEditor editor, ErrorManager manager, int tokenIndex, Token token, object value, int fieldIndex, FieldInfo info) { var reference = value as Reference; var player = editor.Player; if (reference == null || player == null) { return; } var id = reference.Id; if (Resolve(reference, editor.Cutscene, player)) { return; } var msg = string.Format("Couldn't resolve reference of id {0} in field {1}.", id, info.Name); manager.NotifyError(tokenIndex, fieldIndex, ErrorLevel.High, msg, ShiroiStyles.NullSupportedMessage); }
public override void Check( CutsceneEditor editor, ErrorManager manager, int tokenIndex, Token token, object value, int fieldIndex, FieldInfo info) { if (Attribute.GetCustomAttribute(info, typeof(EmptyStringSupportedAttribute)) != null) { return; } var s = value as string; if (s == null) { return; } if (!string.IsNullOrEmpty(s)) { return; } var msg = string.Format("Field {0} has an empty string.", info.Name); manager.NotifyError( tokenIndex, fieldIndex, ErrorLevel.Medium, msg, "Please assign it or annotate the field as EmptyStringSupported."); }
public override void Check( CutsceneEditor editor, ErrorManager manager, int tokenIndex, Token token, object value, int fieldIndex, FieldInfo info) { if (Attribute.GetCustomAttribute(info, typeof(NullSupportedAttribute)) != null) { return; } var reference = value as FutureReference; if (reference == null) { return; } var id = reference.Id; if (editor.Cutscene.FutureManager.GetFuture(id) != null) { return; } var msg = string.Format("Couldn't find future of id {0} in field {1}.", id, info.Name); manager.NotifyError(tokenIndex, fieldIndex, ErrorLevel.High, msg, ShiroiStyles.NullSupportedMessage); }
static void Init() { // Get existing open window or if none, make a new one: CutsceneEditor window = (CutsceneEditor)EditorWindow.GetWindow(typeof(CutsceneEditor)); window.Show(); }
public static Cutscene CreateCutscene() { var cutscene = Cutscene.Create(); CutsceneEditor.ShowWindow(cutscene); Selection.activeObject = cutscene; return(cutscene); }
public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, string value, Type valueType, FieldInfo fieldInfo, Setter setter) { if (value == null) { value = string.Empty; } setter(EditorGUI.TextField(rect, name, value)); }
public override bool Open() { Loader = new CutsceneLoader(file); CutsceneEditor editor = new CutsceneEditor(this); editor.Show(); return(true); }
public override void OnInspectorGUI() { cutscene = (Cutscene)target; var e = Event.current; GUI.skin.GetStyle("label").richText = true; if (e.rawType == EventType.MouseDown && e.button == 0) //generic undo { Undo.RegisterFullObjectHierarchyUndo(cutscene.groupsRoot.gameObject, "Cutscene Inspector"); Undo.RecordObject(cutscene, "Cutscene Inspector"); willDirty = true; } if (e.rawType == EventType.MouseUp && e.button == 0 || e.rawType == EventType.KeyUp) { willDirty = true; if (CutsceneUtility.selectedObject != null && CutsceneUtility.selectedObject.startTime <= cutscene.currentTime) { willResample = true; } } GUILayout.Space(5); if (GUILayout.Button("EDIT IN SLATE")) { CutsceneEditor.ShowWindow(cutscene); } GUILayout.Space(5); DoCutsceneInspector(); DoSelectionInspector(); if (willDirty) { willDirty = false; EditorUtility.SetDirty(cutscene); if (CutsceneUtility.selectedObject as UnityEngine.Object != null) { EditorUtility.SetDirty((UnityEngine.Object)CutsceneUtility.selectedObject); } } if (willResample) //resample after the changes on fresh gui pass { willResample = false; //delaycall so that other gui controls are finalized before resample. EditorApplication.delayCall += () => { if (cutscene != null) { cutscene.ReSample(); } }; } Repaint(); }
public CutsceneTimeline(CutsceneEditor ed) { this.ed = ed; navigation = new CutsceneNavigation(ed); tracksView = new CutsceneTracksView(ed); trackControls = new CutsceneTrackControls(ed); trackInfo = new CutsceneTrackInfo(ed); }
public TokenList(CutsceneEditor editor) { this.editor = editor; states = new[] { new TokenStateTuple(EventType.MouseDown, OnMouseDown), new TokenStateTuple(EventType.MouseUp, OnMouseUp), new TokenStateTuple(EventType.MouseDrag, OnMouseDrag), new TokenStateTuple(EventType.KeyDown, OnKeyDown), }; }
protected virtual void InvokeOnEndErrorChecking(CutsceneEditor editor) { foreach (var checker in ErrorCheckers.Checkers) { var listener = checker as IOnEndCheckListener; if (listener != null) { listener.OnEnd(this, editor); } } }
private void InvokeOnBeginErrorChecking(CutsceneEditor editor) { foreach (var checker in ErrorCheckers.Checkers) { var listener = checker as IOnBeginCheckListener; if (listener != null) { listener.OnBegin(this, editor); } } }
public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, FutureReference <T> value, Type valueType, FieldInfo fieldInfo, Setter setter) { if (value == null) { value = new FutureReference <T>(); } value.Id = DrawFuture(cutscene, tokenIndex, rect, name, value.Id); setter(value); }
public override void Check(CutsceneEditor editor, ErrorManager manager, int tokenIndex, Token token, object value, int fieldIndex, FieldInfo info) { var cutscene = editor.Cutscene; foreach (var future in cutscene.FutureManager.Futures) { var provider = future.Provider; if (provider >= cutscene.Count || provider < 0) { var msg = string.Format("Future {0}'s provider ({1}) doesn't exist!", future, provider); manager.NotifyError(tokenIndex, fieldIndex, ErrorLevel.High, msg); } } }
public override void Check( CutsceneEditor editor, ErrorManager manager, int tokenIndex, Token token, object value, int fieldIndex, FieldInfo info) { if (!(value is Reference) && !(value is FutureReference)) { return; } Increment(ReferenceUtility.GetID(value)); }
public void DrawErrors(CutsceneEditor editor) { InvokeOnBeginErrorChecking(editor); ErrorCheckers.CheckErrors(editor, errors); InvokeOnEndErrorChecking(editor); var cutscene = editor.Cutscene; var totalErrors = errors.Count; if (totalErrors <= 0) { return; } var max = (from message in errors select message.Level).Max(); ShowErrors = GUILayout.Toggle(ShowErrors, GetErrorContent(totalErrors, max), ShiroiStyles.GetErrorStyle(max), GUILayout.MinHeight(ShiroiStyles.SingleLineHeight * 2)); if (!ShowErrors) { GUILayout.Space(ShiroiStyles.SpaceHeight); return; } var init = GUI.backgroundColor; foreach (var errorMessage in errors) { var lines = errorMessage.Lines; var height = (lines.Length + 1) * ShiroiStyles.SingleLineHeight; var rect = GUILayoutUtility.GetRect(10, height, ShiroiStyles.ExpandWidthOption); Rect iconRect; Rect messagesRect; rect.Split(ShiroiStyles.IconSize, out iconRect, out messagesRect); GUI.backgroundColor = ShiroiStyles.GetColor(errorMessage.Level); GUI.Box(rect, GUIContent.none); GUI.Box(iconRect, ShiroiStyles.GetContent(errorMessage.Level)); var index = errorMessage.TokenIndex; var token = cutscene[index]; var label = string.Format("Token #{0} ({1})", index, token.GetType().Name); GUI.Label(messagesRect.GetLine(0), label, ShiroiStyles.Bold); for (uint i = 0; i < lines.Length; i++) { var pos = messagesRect.GetLine(i + 1); GUI.Label(pos, lines[i]); } } GUILayout.Space(ShiroiStyles.SpaceHeight); GUI.backgroundColor = init; }
public static void CheckErrors(CutsceneEditor editor, List <ErrorMessage> errors) { var cutscene = editor.Cutscene; var total = cutscene.Count; for (var i = 0; i < total; i++) { var token = cutscene[i]; var mapped = MappedToken.For(token); foreach (var checker in Checkers) { for (var fieldIndex = 0; fieldIndex < mapped.SerializedFields.Length; fieldIndex++) { var serializedField = mapped.SerializedFields[fieldIndex]; var value = serializedField.GetValue(token); checker.Check(editor, editor.ErrorManager, i, token, value, fieldIndex, serializedField); } } } }
public void OnEnd(ErrorManager obj, CutsceneEditor editor) { var cutscene = editor.Cutscene; foreach (var future in cutscene.FutureManager.Futures) { var pIndex = future.Provider; if (pIndex >= cutscene.Count) { continue; } var provider = cutscene[pIndex]; var id = future.Id; if (GetUses(id) > 0) { continue; } var msg = string.Format("Future {0} ({1}) is never used!", future.Name, id); obj.NotifyError(pIndex, -1, ErrorLevel.Medium, msg); } }
public override void Check( CutsceneEditor editor, ErrorManager manager, int tokenIndex, Token token, object value, int fieldIndex, FieldInfo info) { if (Attribute.GetCustomAttribute(info, typeof(NullSupportedAttribute)) != null) { return; } if (value != null) { return; } var msg = string.Format("Field {0} is null!", info.Name); manager.NotifyError(tokenIndex, fieldIndex, ErrorLevel.High, msg, ShiroiStyles.NullSupportedMessage); }
//TODO: Make this less horrible public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, Reference <T> value, Type valueType, FieldInfo fieldInfo, Setter setter) { if (value == null) { value = new Reference <T>(); } GUIContent label; var found = player == null ? null : value.Resolve(player); switch (value.Type) { case Reference.ReferenceType.Future: label = name; break; case Reference.ReferenceType.Exposed: label = ExposedReferenceDrawer <T> .GetLabel(found, value.PropertyName, new GUIContent(name)); break; default: return; } var labelWidth = GUIStyle.none.CalcSize(new GUIContent(label)).x; var r2 = rect.SubRect(TypeWidth, rect.height, labelWidth + LabelOffset); value.Type = (Reference.ReferenceType)EditorGUI.EnumPopup(r2, value.Type); switch (value.Type) { case Reference.ReferenceType.Exposed: value.Id = DrawExposed(value, player, rect, name); break; case Reference.ReferenceType.Future: value.Id = DrawFuture(value, cutscene, rect, name, tokenIndex); break; } setter(value); }
public override void Check( CutsceneEditor editor, ErrorManager manager, int tokenIndex, Token token, object value, int fieldIndex, FieldInfo info) { if (Attribute.GetCustomAttribute(info, typeof(NullSupportedAttribute)) != null) { return; } var fieldType = info.FieldType; if (!fieldType.IsGenericType || fieldType.GetGenericTypeDefinition() != ExposedReferenceType) { return; } var generic = fieldType.GetGenericArguments()[0]; var propertyNameInfo = GetPropertyNameInfo(generic); var defaultValueInfo = GetDefaultValueInfo(generic); var propertyName = (PropertyName)propertyNameInfo.GetValue(value); var defaultObject = defaultValueInfo.GetValue(value) as Object; if (MimicExposedResolve(editor.Player, propertyName, defaultObject) != null) { return; } var msg = string.Format( "Couldn't resolve exposed reference of id {0} in field {1}.", propertyName, info.Name); manager.NotifyError(tokenIndex, fieldIndex, ErrorLevel.High, msg, ShiroiStyles.NullSupportedMessage); }
public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, ExposedReference <T> value, Type valueType, FieldInfo fieldInfo, Setter setter) { setter(DrawExposed(player, value, name, rect)); }
public CutsceneTracksView(CutsceneEditor ed) { this.ed = ed; }
public ContextWindow(CutsceneEditor currentEditor) { CurrentEditor = currentEditor; }
//readonly CutsceneEditor ed; public CutscenePreview(CutsceneEditor ed) { //this.ed = ed; }
public CutsceneOptions(CutsceneEditor ed) { this.ed = ed; }
public CutsceneTrackControls(CutsceneEditor ed) { this.ed = ed; }
public CutsceneNavigation(CutsceneEditor ed) { this.ed = ed; playbackControls = new CutscenePlaybackControls(ed); timecodeBar = new CutsceneTimecodeBar(ed); }
public abstract void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, object value, Type valueType, FieldInfo fieldInfo, Setter setter);
public void OnBegin(ErrorManager manager, CutsceneEditor editor) { uses.Clear(); }
public CutsceneMediaWindow(CutsceneEditor ed) { this.ed = ed; }
public CutsceneTimecodeBar(CutsceneEditor ed) { this.ed = ed; }
public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, Quaternion value, Type valueType, FieldInfo fieldInfo, Setter setter) { setter(Quaternion.Euler(EditorGUI.Vector3Field(rect, name, value.eulerAngles))); }
public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, Vector3Int value, Type valueType, FieldInfo fieldInfo, Setter setter) { setter(EditorGUI.Vector3IntField(rect, name, value)); }
public CutsceneTrackInfo(CutsceneEditor ed) { this.ed = ed; }
public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, object value, Type valueType, FieldInfo fieldInfo, Setter setter) { EditorGUI.LabelField(rect, string.Format("Couldn't find drawer for field '{0}' of type '{1}'", name, valueType.Name)); }
public TokenSelectorWindow(CutsceneEditor currentEditor) { CurrentEditor = currentEditor; }
public CutsceneTools(CutsceneEditor ed) { this.ed = ed; }
public static void OpenDirectorWindow() { CutsceneEditor.ShowWindow(null); }
public CutsceneEffectsWindow(CutsceneEditor ed) { this.ed = ed; }
public abstract void Check(CutsceneEditor editor, ErrorManager manager, int tokenIndex, Token token, object value, int fieldIndex, FieldInfo info);