What is this? It's an all-in-one method to detect mouse inputs based on the specifications of UI elements on the screen. This is primarily for personal use. (sharing so I can access from main account) However, it could be of use to some people. Making full documentation would take a lot of time, but here is some nonetheless. Yes, it is extremely similar to the commands that TextboxKit uses. This is intentional, as they're both part of my personal ProjectKit. ------- Stream commands (comma indicates new line/item in UI.Stream): BOUNDS, [x], [y], [width], [height] // sets Single or Grid bounds, (x,y) is bottom-left X, [x], [width] Y, [y], [height] SINGLE, [label] // detects if the mouse is in the bounds, and outputs a label if so ROWS, [amount] // sets number of rows to detect in a uniform grid. Can be set to inf. COLUMNS, [amount] // sets number of columns to detect in a uniform grid. Can be set to inf ELEM, [width], [height] // sets the width and height of grid elements SPACE, [xSpace], [ySpace] // sets the spacing between grid elements ALIGN, [xAlign], [yAlign] // sets the alignment mode for grid elements within the bounds SCROLL, [xScroll], [yScroll] // sets the scroll values GRID, [label] // detects if the mouse is in a grid element as defined by values above, and outputs a label and grid position if so ORIENT, [flipX], [flipY] // controls if the grid positions should have a positive correlation with their actual position, or the opposite ANCHOR, [xAnchor], [yAnchor] // sets the relative anchor positions for the outputs of GETVISIBLE. 0.5 is centered. PREFIX, [prefix] // sets the prefix used before the label in the UI.Visible list when using GETVISIBLE. default is #. should not be numeric. GETVISIBLE, [label] // throws the visible elements of the currently defined grid to UI.Visible. Particularly useful for rendering. Alignments: l // lower bound c // centered h // higher bound Some notes: - Element indexing is calculated from the bottom left to the top right - Order your UI elements in the stream by putting the ones that appear on top (visually) first--once one UI input is detected, the rest of the commands in the stream are ignored each time you execute UI.execute.