using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using BITKit; using BITKit.UX; using System.Linq; using UnityEngine.InputSystem; using Cysharp.Threading.Tasks; using System.Text; using System.IO; using UnityEngine.InputSystem.Interactions; namespace BITKit.Console { public class BITConsole : MonoBehaviour { [BITCommand] public static async void Clear() { await BITApp.SwitchToMainThread(); singleton.outputString.Clear(); singleton.text.text = string.Empty; } static BITConsole singleton; const string textFieldName = "TextField"; const string commandListViewName = "commands-listview"; const string textName = "Text"; const string scrollViewName = "context-scrollview"; [SerializeField] private UIDocument document; [SerializeReference] private InputActionReference toggleAction; [SerializeReference] public InputActionReference nextOrPreviousAction; private readonly InputActionGroup _inputActionGroup=new() { allowGlobalActivation = false }; public int logLineLimit = 64; private ListView commandListView; private TextField textField; private Label text; private ScrollView scrollView; private bool isActived; private List outputString = new(); private void Awake() { Application.logMessageReceivedThreaded += LogCallback; } private void Start() { singleton = this; var visualElement = document.rootVisualElement; textField = visualElement.Q(textFieldName); commandListView = visualElement.Q(commandListViewName); text = visualElement.Q