// Amplify Shader Editor - Visual Shader Editing Tool // Copyright (c) Amplify Creations, Lda using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace AmplifyShaderEditor { public class ConsoleLogItem { public NodeMessageType ItemType; public string ItemMessage; public ConsoleLogItem( NodeMessageType itemType, string itemMessage ) { ItemType = itemType; ItemMessage = itemMessage; } } public sealed class ConsoleLogWindow : MenuParent { const float ToolbarHeight = 32; private List m_messages = new List(); public ConsoleLogWindow( AmplifyShaderEditorWindow parentWindow ) : base( parentWindow, 0, 0, 0, 128, string.Empty, MenuAnchor.BOTTOM_LEFT, MenuAutoSize.NONE ) { m_isActive = false; } public void AddMessage( NodeMessageType itemType, string itemMessage ) { //m_messages.Insert( 0, new ConsoleLogItem( itemType, itemMessage ) ); } public override void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus ) { base.Draw( parentPosition, mousePosition, mouseButtonId, hasKeyboadFocus ); Rect toolbarArea = m_transformedArea; toolbarArea.height = ToolbarHeight; GUILayout.BeginArea( toolbarArea, m_content, m_style ); EditorGUILayout.BeginHorizontal(); { if( GUILayout.Button( "Clear", GUILayout.MaxWidth( 50 ) ) ) { m_messages.Clear(); } } EditorGUILayout.EndHorizontal(); GUILayout.EndArea(); m_transformedArea.y += ToolbarHeight; m_transformedArea.height -= ToolbarHeight; GUILayout.BeginArea( m_transformedArea, m_content, m_style ); { EditorGUILayout.BeginVertical(); { m_currentScrollPos = EditorGUILayout.BeginScrollView( m_currentScrollPos, GUILayout.Width( 0 ), GUILayout.Height( 0 ) ); { int count = m_messages.Count; for( int i = 0; i < count; i++ ) { EditorGUILayout.LabelField( i + ": " + m_messages[ i ].ItemMessage ); } } EditorGUILayout.EndScrollView(); } EditorGUILayout.EndVertical(); } GUILayout.EndArea(); //if( Event.current.type == EventType.keyDown && Event.current.keyCode == KeyCode.Alpha1 ) //{ // UIUtils.ShowMessage( "Test Message " + m_messages.Count ); //} } public void ClearMessages() { m_messages.Clear(); } public void Toggle() { //m_isActive = !m_isActive; } public override void Destroy() { base.Destroy(); m_messages.Clear(); m_messages = null; } } }