Go to file
Ed_ b4c6fd1866 More fixes & performance improvements
Still havent figured out the realloc issue with virtual arenas... But the fixes the slab perforamnce mitigate it at least.
2024-03-12 02:32:16 -04:00
.vscode Got whitespace parser working + widget generation for basic case! 2024-03-10 10:31:21 -04:00
assets Font drawing is nice now 2024-02-13 17:16:39 -05:00
code More fixes & performance improvements 2024-03-12 02:32:16 -04:00
docs/assets First text box!!! 2024-03-09 10:21:48 -05:00
examples It works but there is a memory issue... (parsing in tick update) 2024-03-10 20:09:04 -04:00
scripts Added screeenspace culling for ui boxes 2024-03-11 02:05:30 -04:00
thirdparty update odin repo 2024-03-09 14:53:51 -05:00
.editorconfig Update editor config for odin support 2024-01-30 01:28:39 -05:00
.gitignore Updates to gitignore and ols config 2024-02-24 22:29:18 -05:00
Debug.rdbg Memory setup for hot-reload & save states 2024-01-22 00:22:06 -05:00
launch.odin_old Minor cleanup for formatting, reverse verify condition usage 2024-02-23 09:36:23 -05:00
ols.json Dragging! & basic proportional box resize frm cursor distance to box pos 2024-03-08 03:34:21 -05:00
Readme.md First text box!!! 2024-03-09 10:21:48 -05:00

Sectr Prototype

img

This prototype aims to flesh out ideas I've wanted to explore futher when it came to code editing and tools for code in general.

The things to explore:

  • 2D canvas for laying out code visualized in various types of ASTs
  • WYSIWYG frontend ASTs
  • Making AST editing as versatile as text editing.
  • High-performance generating a large amount of UI widget boxes with proper auto-layout & no perceptible rendering-lag or input lag for interactions (framtimes stable).

The project is so far in a "codebase boostrapping" phase.

The project's is organized into 2 modules sectr_host & sectr. The host module loads the main module & its memory. Hot-reloading it's dll when it detects a change.

The dependencies are:

  • Odin Compiler
  • Odin repo's base, core, and vendor(raylib) libaries
  • An ini parser

The client(sectr) module's organization is relatively flat due to the nature of odin's package management not allowing for cyclic dependencies across modules, and modules can only be in one directory.

Even so the notatble groups are:

  • API : Provides the overarching interface of the app's general behavior. Host uses this to provide the client its necessary data and exection env.
    • Has the following definitions: startup, shutdown, reload, tick, clean_frame
  • Grime : Name speaks for itself, stuff not directly related to the target features to iterate upon for the prototype.
    • Defining dependency aliases or procedure overload tables, rolling own allocator, data structures, etc.
  • Font Provider : Manages fonts.
    • When loading fonts, the provider currently uses raylib to generate bitmap glyth sheets for a range of font sizes at once.
    • Goal is to eventually render using SDF shaders.
  • Input : Standard input pooling and related features. Platform abstracted via raylib for now.
  • Parser : AST generation, editing, and serialization. A 1/3 of this prototype will most likely be this alone.
  • UI : AST visualzation & editing, backend visualization, project organizationa via workspaces (2d cavnases)
    • Will most likely be the bulk of this prototype.
    • PIMGUI (Persistent Immediate Mode User Interface);
    • Auto-layout with heavy procedural generation of box widgets