public void ScrollToItem(OSCConsolePacket consoleMessage) { if (consoleMessage == null) { return; } var messageItem = GetItemIndex(consoleMessage); if (messageItem < 0) { return; } var itemY = _lineHeight * messageItem; if (itemY < _scrollPosition.y) { _scrollPosition.y = itemY; } else if (itemY > _scrollPosition.y + _lastContentRect.height - _lineHeight) { _scrollPosition.y = itemY - _lastContentRect.height + _lineHeight; } }
private static void DrawIcons(OSCConsolePacket consoleMessage, ref Rect dataRect) { Texture2D consoleTexture = null; if (consoleMessage.PacketType == OSCConsolePacketType.Received) { consoleTexture = OSCEditorTextures.Receiver; } else if (consoleMessage.PacketType == OSCConsolePacketType.Transmitted) { consoleTexture = OSCEditorTextures.Transmitter; } GUI.DrawTexture(PaddingRect(dataRect, 4), consoleTexture); dataRect.x += dataRect.height; dataRect.width -= dataRect.height; if (consoleMessage.Packet != null) { var packetTypeTextire = consoleMessage.Packet.IsBundle() ? OSCEditorTextures.Bundle : OSCEditorTextures.Message; GUI.DrawTexture(PaddingRect(dataRect, 4), packetTypeTextire); } dataRect.x += dataRect.height; dataRect.width -= dataRect.height; }
private void DrawIcons(ref Rect iconsRect, OSCConsolePacket consolePacket) { var padding = 4; var consoleTexture = (Texture2D)null; if (consolePacket.PacketType == OSCConsolePacketType.Received) { consoleTexture = OSCEditorTextures.Receiver; } else if (consolePacket.PacketType == OSCConsolePacketType.Transmitted) { consoleTexture = OSCEditorTextures.Transmitter; } GUI.DrawTexture(new Rect(iconsRect.x + padding, iconsRect.y + padding, iconsRect.height - padding * 2f, iconsRect.height - padding * 2f), consoleTexture); iconsRect.x += iconsRect.height; iconsRect.width -= iconsRect.height; GUI.DrawTexture(new Rect(iconsRect.x + padding, iconsRect.y + padding, iconsRect.height - padding * 2f, iconsRect.height - padding * 2f), consolePacket.Packet.IsBundle() ? OSCEditorTextures.Bundle : OSCEditorTextures.Message); iconsRect.x += iconsRect.height; iconsRect.width -= iconsRect.height; }
public void ScrollToItem(OSCConsolePacket consolePacket) { if (consolePacket == null) { return; } var packetIndex = _consoleBuffer.IndexOf(SelectedMessage); if (packetIndex < 0) { return; } var itemY = _lineHeight * packetIndex; if (itemY < _scrollPosition.y) { _scrollPosition.y = itemY; } else if (itemY > _scrollPosition.y + _lastContentRect.height - _lineHeight) { _scrollPosition.y = itemY - _lastContentRect.height + _lineHeight; } }
private static void DrawItem(Rect itemRect, int index, OSCConsolePacket consoleContainer, bool selected) { var dataRect = new Rect(0, 0, itemRect.width, itemRect.height); var backStyle = index % 2 != 0 ? OSCEditorStyles.ConsoleItemBackEven : OSCEditorStyles.ConsoleItemBackOdd; if (Event.current.type == EventType.Repaint) { backStyle.Draw(itemRect, false, false, selected, false); } GUI.BeginGroup(itemRect); DrawIcons(consoleContainer, ref dataRect); /* * if (collapse) * { * var collapseRect = new Rect(dataRect.x + 2, dataRect.y + 2, dataRect.height * 1.5f - 4, dataRect.height - 4); * * GUI.Box(collapseRect, "", EditorStyles.helpBox); * GUI.Label(collapseRect, consoleContainer.Count.ToString(), OSCEditorStyles.CenterLabel); * * dataRect.x += collapseRect.width + 4; * dataRect.width -= collapseRect.height + 4; * } */ GUI.Label(dataRect, ItemToString(consoleContainer), OSCEditorStyles.ConsoleLabel); GUI.EndGroup(); }
private static void ShowMessageGenericMenu(OSCConsolePacket consoleMessage) { var genericMenu = new GenericMenu(); genericMenu.AddItem(_openInDebugContent, false, OpenInDebugCallback, consoleMessage); genericMenu.AddItem(_generateCodeContent, false, GenerateCodeCallback, consoleMessage); genericMenu.ShowAsContext(); }
private static void Log(OSCConsolePacket message) { // COPY PACKET var rawData = OSCConverter.Pack(message.Packet); message.Packet = OSCConverter.Unpack(rawData); OSCConsole.ConsoleBuffer.Add(message); }
public static void Received(OSCEditorReceiver receiver, IOSCPacket packet) { var message = new OSCConsolePacket(); message.Info = $"<color=green>Editor Receiver</color>: {receiver.LocalPort}. From: {(packet.Ip != null ? packet.Ip.ToString() : "Debug")}"; message.PacketType = OSCConsolePacketType.Received; message.Packet = packet; Log(message); }
public static void Transmitted(OSCEditorTransmitter transmitter, IOSCPacket packet) { var message = new OSCConsolePacket(); message.Info = $"<color=green>Editor Transmitter</color>: {transmitter.RemoteHost}:{transmitter.RemotePort}"; message.PacketType = OSCConsolePacketType.Transmitted; message.Packet = packet; Log(message); }
public void SelectLastItem() { if (_consoleBuffer.Length <= 0) { return; } _selectedMessage = _consoleBuffer[_consoleBuffer.Length - 1]; ScrollToItem(_selectedMessage); }
public void SelectPreviousItem() { if (_consoleBuffer.Length <= 0) { return; } var currentIndex = GetItemIndex(_selectedMessage); _selectedMessage = _consoleBuffer[Mathf.Clamp(currentIndex - 1, 0, _consoleBuffer.Length - 1)]; ScrollToItem(_selectedMessage); }
private int GetItemIndex(OSCConsolePacket consoleMessage) { for (var index = 0; index < _consoleBuffer.Length; index++) { if (_consoleBuffer[index] == consoleMessage) { return(index); } } return(-1); }
private static string ItemToString(OSCConsolePacket consoleMessage) { if (consoleMessage == null) { return(string.Empty); } var stringMessage = PacketToString(consoleMessage.Packet); stringMessage += "\n" + consoleMessage.Info; return(stringMessage); }
public static List <OSCConsolePacket> LoadConsoleMessages(string filePath) { var list = new List <OSCConsolePacket>(); if (!File.Exists(filePath)) { SaveConsoleMessages(filePath, list); return(list); } var document = new XmlDocument(); try { document.Load(filePath); var rootElement = document.FirstChild; foreach (XmlNode messageElement in rootElement.ChildNodes) { var consoleMessage = new OSCConsolePacket(); var instanceAttribute = messageElement.Attributes["info"]; consoleMessage.Info = instanceAttribute.InnerText; var typeAttribute = messageElement.Attributes["type"]; consoleMessage.PacketType = (OSCConsolePacketType)Enum.Parse(typeof(OSCConsolePacketType), typeAttribute.InnerText); var timestampAttribute = messageElement.Attributes["timestamp"]; if (timestampAttribute != null) { consoleMessage.TimeStamp = timestampAttribute.InnerText; } var packetElement = messageElement["packet"]; consoleMessage.Packet = OSCUtilities.FromBase64String(packetElement.InnerText); list.Add(consoleMessage); } } catch (Exception e) { Debug.LogFormat("[OSCConsole] Error: {0}", e); list.Clear(); } return(list); }
private void DrawItem(ref Rect itemRect, int index, OSCConsolePacket consolePacket, bool selected) { using (new GUI.GroupScope(itemRect)) { var localRect = itemRect; localRect.x = localRect.y = 0; if (Event.current.type == EventType.Repaint) { var backStyle = index % 2 != 0 ? OSCEditorStyles.ConsoleItemBackEven : OSCEditorStyles.ConsoleItemBackOdd; backStyle.Draw(localRect, false, false, selected, false); } DrawIcons(ref localRect, consolePacket); GUI.Label(localRect, consolePacket.ToString(), OSCEditorStyles.ConsoleLabel); } }
private static void DrawItem(Rect itemRect, int index, OSCConsolePacket consoleContainer, bool selected) { var dataRect = new Rect(0, 0, itemRect.width, itemRect.height); var backStyle = index % 2 != 0 ? OSCEditorStyles.ConsoleItemBackEven : OSCEditorStyles.ConsoleItemBackOdd; if (Event.current.type == EventType.Repaint) { backStyle.Draw(itemRect, false, false, selected, false); } GUI.BeginGroup(itemRect); DrawIcons(consoleContainer, ref dataRect); GUI.Label(dataRect, ItemToString(consoleContainer), OSCEditorStyles.ConsoleLabel); GUI.EndGroup(); }
public static OSCConsolePacket[] GetConsoleBuffer(bool transmitted, bool received) { if (ConsoleBuffer == null || (ConsoleBuffer != null && ConsoleBuffer.Count == 0)) { return(_emptyBuffer); } var requireRebuild = false; if (_previousTransmitted != transmitted || _previousReceived != received) { _previousTransmitted = transmitted; _previousReceived = received; requireRebuild = true; } else if (ConsoleBuffer.Count > 0) { requireRebuild = (ConsoleBuffer[0] != _lastMessage); } if (!requireRebuild) { return(_tempBuffer); } _lastMessage = ConsoleBuffer.Count > 0 ? ConsoleBuffer[0] : null; var consoleList = new List <OSCConsolePacket>(); foreach (var consoleMessage in ConsoleBuffer) { if ((transmitted && consoleMessage.PacketType == OSCConsolePacketType.Transmitted) || (received && consoleMessage.PacketType == OSCConsolePacketType.Received)) { consoleList.Add(consoleMessage); } } _tempBuffer = consoleList.ToArray(); return(_tempBuffer); }
private void DrawToolbar(Rect contentRect) { GUILayout.BeginArea(new Rect(0, 0, contentRect.width, 18)); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); var clearButton = GUILayout.Button(_clearContent, EditorStyles.toolbarButton, GUILayout.Height(45f)); GUILayout.Space(5f); _showReceived = GUILayout.Toggle(_showReceived, _recevedContent, EditorStyles.toolbarButton); _showTransmitted = GUILayout.Toggle(_showTransmitted, _transmittedContent, EditorStyles.toolbarButton); GUILayout.FlexibleSpace(); GUILayout.Space(5f); //GUILayout.Label(_filterContent); _filterDrawer.Draw(); GUILayout.Space(5f); _trackLast = GUILayout.Toggle(_trackLast, _trackLastContent, EditorStyles.toolbarButton); GUILayout.Space(5f); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); GUILayout.EndArea(); if (clearButton) { OSCWindowConsole.Clear(); _selectedMessage = null; } }
protected override void DrawContent(Rect contentRect) { GUILayout.BeginArea(new Rect(0, 0, contentRect.width, 18)); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); var clearButton = GUILayout.Button(_clearContent, EditorStyles.toolbarButton, GUILayout.Height(45f)); GUILayout.Space(5f); _showReceived = GUILayout.Toggle(_showReceived, _recevedContent, EditorStyles.toolbarButton); _showTransmitted = GUILayout.Toggle(_showTransmitted, _transmittedContent, EditorStyles.toolbarButton); GUILayout.Space(5f); _trackLast = GUILayout.Toggle(_trackLast, _trackLastContent, EditorStyles.toolbarButton); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); GUILayout.EndArea(); contentRect.y += 18; contentRect.height -= 18; _lastContentRect = new Rect(contentRect); _consoleBuffer = OSCWindowConsole.GetConsoleBuffer(_showTransmitted, _showReceived); if (_trackLast) { if (_consoleBuffer.Length > 0) { _selectedMessage = _consoleBuffer[0]; } else { _selectedMessage = null; } } var viewRect = new Rect(contentRect); viewRect.height = _consoleBuffer.Length * _lineHeight; if (viewRect.height > contentRect.height) { viewRect.width -= 15f; } var itemRect = new Rect(0, viewRect.y, viewRect.width, _lineHeight); _scrollPosition = GUI.BeginScrollView(contentRect, _scrollPosition, viewRect); var drawed = false; for (var index = 0; index < _consoleBuffer.Length; index++) { var drawItem = !((itemRect.y + itemRect.height < _scrollPosition.y) || (itemRect.y > _scrollPosition.y + contentRect.height + itemRect.height)); if (drawItem) { drawed = true; var consoleMessage = _consoleBuffer[index]; var selected = _selectedMessage == consoleMessage; var color = GUI.color; DrawItem(itemRect, index, consoleMessage, selected); GUI.color = color; if (Event.current.type == EventType.MouseDown && itemRect.Contains(Event.current.mousePosition)) { if (Event.current.button == 0) { _trackLast = false; if (_selectedMessage != consoleMessage) { _selectedMessage = consoleMessage; _parentWindow.Repaint(); } Event.current.Use(); } else if (Event.current.button == 1) { ShowMessageGenericMenu(consoleMessage); Event.current.Use(); } } } else if (drawed) { break; } itemRect.y += itemRect.height; } GUI.EndScrollView(true); if (clearButton) { OSCWindowConsole.Clear(); _selectedMessage = null; } }
protected override void DrawContent(Rect contentRect) { // TOOLBAR DrawToolbar(contentRect); contentRect.y += 18; contentRect.height -= 18; _lastContentRect = new Rect(contentRect); _consoleBuffer = OSCWindowConsole.GetConsoleBuffer(_showTransmitted, _showReceived, _filterDrawer.FilterValue); if (_trackLast) { if (_consoleBuffer.Length > 0) { _selectedMessage = _consoleBuffer[0]; } else { _selectedMessage = null; } } var viewRect = new Rect(contentRect); viewRect.height = _consoleBuffer.Length * _lineHeight; if (viewRect.height > contentRect.height) { viewRect.width -= 15f; } var itemRect = new Rect(0, viewRect.y, viewRect.width, _lineHeight); _scrollPosition = GUI.BeginScrollView(contentRect, _scrollPosition, viewRect); var drawed = false; for (var index = 0; index < _consoleBuffer.Length; index++) { var drawItem = !((itemRect.y + itemRect.height < _scrollPosition.y) || (itemRect.y > _scrollPosition.y + contentRect.height + itemRect.height)); if (drawItem) { drawed = true; var consoleMessage = _consoleBuffer[index]; var selected = _selectedMessage == consoleMessage; var color = GUI.color; DrawItem(itemRect, index, consoleMessage, selected); GUI.color = color; if (Event.current.type == EventType.MouseDown && itemRect.Contains(Event.current.mousePosition)) { GUIUtility.keyboardControl = 0; if (Event.current.button == 0) { _trackLast = false; if (_selectedMessage != consoleMessage) { _selectedMessage = consoleMessage; _parentWindow.Repaint(); } Event.current.Use(); } else if (Event.current.button == 1) { ShowMessageGenericMenu(consoleMessage); Event.current.Use(); } } } else if (drawed) { break; } itemRect.y += itemRect.height; } GUI.EndScrollView(true); }
public static OSCConsolePacket[] GetConsoleBuffer(bool transmitted, bool received, string filter) { if (ConsoleBuffer == null || ConsoleBuffer.Count == 0) { return(_emptyBuffer); } var requireRebuild = false; if (_previousTransmitted != transmitted || _previousReceived != received || _previousFilter != filter) { _previousTransmitted = transmitted; _previousReceived = received; _previousFilter = filter; requireRebuild = true; } else { requireRebuild = ConsoleBuffer[0] != _lastMessage; } if (!requireRebuild) { return(_tempBuffer); } _lastMessage = ConsoleBuffer[0]; var consoleList = new List <OSCConsolePacket>(); var inverse = filter.StartsWith("!"); if (inverse) { filter = filter.Remove(0, 1); } foreach (var consoleMessage in ConsoleBuffer) { if (transmitted && consoleMessage.PacketType == OSCConsolePacketType.Transmitted || received && consoleMessage.PacketType == OSCConsolePacketType.Received) { if (!string.IsNullOrEmpty(filter)) { var address = consoleMessage.Packet.Address; var compare = OSCUtilities.CompareAddresses(filter, address); if (inverse && compare || !inverse && !compare) { continue; } } consoleList.Add(consoleMessage); } } _tempBuffer = consoleList.ToArray(); return(_tempBuffer); }