private void PasteClipboardFromSystemBuffer(object obj) { int index = (int)obj; string systemBuffer = GUIUtility.systemCopyBuffer; if (string.IsNullOrEmpty(systemBuffer) || !systemBuffer.StartsWith("Inspect+", StringComparison.Ordinal)) { return; } using (MemoryStream stream = new MemoryStream(Convert.FromBase64String(systemBuffer.Substring(8)))) using (BinaryReader reader = new BinaryReader(stream)) { SerializedClipboard _clipboard = new SerializedClipboard(reader); if (clipboard.Count >= CLIPBOARD_CAPACITY) { clipboard.RemoveAt(0); clipboardValues.RemoveAt(0); } clipboard.Insert(index, _clipboard); clipboardValues.Insert(index, _clipboard.RootValue.GetClipboardObject(null)); ActiveClipboardIndex = index; Repaint(); SaveClipboard(); } }
public static void RemoveClipboard(SerializedClipboard clipboard) { int index = PasteBinWindow.clipboard.IndexOf(clipboard); if (index >= 0) { RemoveClipboard(index); if (mainWindow) { mainWindow.Repaint(); } } }
public static void DrawClipboardOnGUI(SerializedClipboard clipboard, object clipboardValue, bool isActiveClipboard, bool showTooltip) { if (clipboardLabelGUIStyle == null) { clipboardLabelGUIStyle = new GUIStyle(EditorStyles.boldLabel) { wordWrap = true } } ; if (!isActiveClipboard) { GUILayout.BeginVertical(PasteBinTooltip.Style); } else { Color backgroundColor = GUI.backgroundColor; GUI.backgroundColor = Color.Lerp(backgroundColor, ACTIVE_CLIPBOARD_COLOR, 0.5f); GUILayout.BeginVertical(PasteBinTooltip.Style); GUI.backgroundColor = backgroundColor; } if (showTooltip) { EditorGUILayout.LabelField(clipboard.LabelContent, clipboardLabelGUIStyle); } else { EditorGUILayout.LabelField(clipboard.Label, clipboardLabelGUIStyle); } EditorGUI.indentLevel++; if (clipboardValue == null || clipboardValue.Equals(null) || clipboardValue is Object) { EditorGUILayout.ObjectField(GUIContent.none, clipboardValue as Object, typeof(Object), true); } else if (clipboardValue is long) { EditorGUILayout.TextField(GUIContent.none, ((long)clipboardValue).ToString()); } else if (clipboardValue is double) { EditorGUILayout.TextField(GUIContent.none, ((double)clipboardValue).ToString()); } else if (clipboardValue is Color) { EditorGUILayout.ColorField(GUIContent.none, (Color)clipboardValue); } else if (clipboardValue is string) { EditorGUILayout.TextField(GUIContent.none, (string)clipboardValue); } else if (clipboardValue is bool) { EditorGUILayout.Toggle(GUIContent.none, (bool)clipboardValue); } else if (clipboardValue is AnimationCurve) { EditorGUILayout.CurveField(GUIContent.none, (AnimationCurve)clipboardValue); } else if (clipboardValue is Gradient) { gradientField.Invoke(null, new object[] { GUIContent.none, clipboardValue, null }); } else if (clipboardValue is VectorClipboard) { EditorGUILayout.Vector4Field(GUIContent.none, (VectorClipboard)clipboardValue); } else if (clipboardValue is ArrayClipboard) { ArrayClipboard obj = (ArrayClipboard)clipboardValue; EditorGUILayout.TextField(GUIContent.none, string.Concat(obj.elementType, "[", obj.elements.Length, "] array")); } else if (clipboardValue is GenericObjectClipboard) { EditorGUILayout.TextField(GUIContent.none, ((GenericObjectClipboard)clipboardValue).type + " object"); } else if (clipboardValue is ManagedObjectClipboard) { EditorGUILayout.TextField(GUIContent.none, ((ManagedObjectClipboard)clipboardValue).type + " object (SerializeField)"); } else if (clipboardValue is GameObjectHierarchyClipboard) { EditorGUILayout.TextField(GUIContent.none, ((GameObjectHierarchyClipboard)clipboardValue).name + " (Complete GameObject)"); } else if (clipboardValue is AssetFilesClipboard) { EditorGUILayout.TextField(GUIContent.none, ((AssetFilesClipboard)clipboardValue).paths[0] + " (Asset File)"); } else { EditorGUILayout.TextField(GUIContent.none, clipboard.RootValue.GetType().Name + " object"); } EditorGUI.indentLevel--; GUILayout.EndVertical(); }