wall size should be monitor size text size match somehow --------------------------------- zoom to wall on key press down. if other key pressed move to wall. if zoom on editor "i" to start and jump? add jetpack? -------------------------------- i need to store the big info text meshes so displaying them is not that expensive. --------------------------------- Text::Handler - handles tokens and lines as one commplete text structure so it can easily get tokenized from tree-sitter - holds text like in a textedocument. so text has a width, height text-align line-height, word-spacing cursor position, scroll position, position in world space - gets lexed from tree-sitter - if the text changes re lex and set color - lines - tokens - render options, underline lines, border text-window , font-size,.. - can handle token rotation (so all tokens follow player in a specific rotation (makes it easy to read the text -- is actually implemented)) - can render the tokens Text::Line - position, linenumber, shallRenderNumbers, line height, word spacing - tokens - can belong to Text Text::Token - color from Text tokenizer or color from single token linting if not belonging to a text (save that value) or color because the color shall be a static color (can get set) - gets parsed from tree-sitter if not already known - list of tookens for fast lookup if creating new ones - has a position in world space - can get picked up and shot with projectile - can belong to Line - rotate to players eye horizontally - rotate to players eye vertically - rotate to players eye horizontally and vertically - (old Text3d) Token::Ai - jiggle - hover - attack player (steal token/drop token) - flee from player A Token can shoot another Token out of a Text with a Projectile. I can pick up tokens out of a Text (as we currently can from the EditorWall) Linting is an asyncroun job. before Token get a default color. We take the Linting when it is ready , we dont wait for it. We just need to recreate the text mesh if the token key has changed. Tokenizer(TreeSitter) - lexes in background and applies color and key when found to token. - Lexes when Text changed Wall::Editor - can own Text - vim like editing option - fixes Text position on the wall - i can shoot words inbetween other words or lines (as we can) Text - big namespace with classes and structs - Text in plain - we might want to store that tokenized or in lines or in lines and tokenized depending on whats enabled - can get rendered - has a default color - can jiggle - can get editted with vim like style at the editor wall par example - can be a label/get gicked/ etc - can get tokenized for tokenized-coloring (tree-sitter) - can get scrolled to a specific position struct Text { } ---------------------------- - Dont pick up words through floor ----------------------------- - i need a propper Word class - currently have "WorldText" but - create new word -- init - detect collission with word -- physics should be in "system/physics,..." - so "WorldText" needs a cleanup? - move word -- update -- is also physics? - how to handle pick up? - how do we keep track of all words? - extra class for (datatypes, names,....) - i need a bin to remove a word - i need a funneal to add a word to wall - draw belongs to "world"? - i need a Wall that displays the words we added to "code" - need a posibility to remove a word - text slides up if i add a ";" or a "\"