
Editor Action System:
    - The main benefits of this are:
        - 1: Central location for all actions (all action responsibilty goes to the editor class)
        - 2: Actions are descretely organized into objects
        - 3: allows for an action history with undo support

    ☐ All actions should go through the main editor (or the asset editor ie. the tile map editor)
        - Context menus can remain in the panel classes but the resulting actions should be sent to the appropriate editor
        ☐ Actions should be encapsulated, command pattern?
        ☐ Actions should be undoable
            ☐ Concrete Action classes should have an undo implementation
            ☐ Action History Stack in the Editor
        ☐ Refactor all panels of the main editor to use the actions system
            ☐ World Tree
            ☐ Content Browser
            ☐ World View
            ☐ Properties View 


☐ Create base classes for serializeable objects
    ✔ JSON serializeable @done(22-08-12 19:19)
    ☐ Binary serializeable

Renderer rewrite:
    ✔ Re-integrate the new renderer into the editor @done(22-08-31 16:22)
        ✔ Clean up class name differences @done(22-08-30 15:58)
        ✔ Hook up update and render calls between the core and the editor @done(22-08-31 16:22)
        ✔ Re-write render code in map tools and assets @done(22-08-31 16:22)
            ✔ Tilemap @done(22-08-31 16:22)
            ✔ TileSet @done(22-08-31 16:22)
            ✔ MapCanvas @done(22-08-31 16:22)
            ✔ TileSetView @done(22-08-31 16:22)
    ✔ Add double buffer to the VertexBuffer class with a Flush method to send the verts to the gpu @high @done(22-08-29 15:14)
    ✔ Add Draw method to the VertexBuffer class @high @done(22-08-29 15:06)
    ✔ Batch rendering minimally working @done(22-08-12 19:19)
    ✔ See if it's possible/better to move the matrix math into the shaders @high @done(22-08-15 14:23)
    ✔ Textures in batch renderer @high @done(22-08-18 16:09)
    ✔ Add sprite sheet logic to DrawQuad @done(22-08-18 16:13)
    
    ✔ DrawSprite method @done(22-08-18 16:42)
        - Just calls DrawQuad
        ✘ Sprite shader @cancelled(22-08-18 16:09)
        - Moved the "Sprite" logic into the DrawQuad method instead

    ✔ Text Renderer @done(22-08-18 16:10)
        ✔ Font loading @done(22-08-18 16:13)
            ✔ Generate single conposite texture of all font bitmap data @done(22-08-18 16:13)
        ✔ DrawString @done(22-08-18 16:14)

    ✔ DrawElipse @low @done(22-08-30 14:26)
        ✔ Elipse Shader @done(22-08-30 14:26)
        ✔ Elipse Batch data @done(22-08-30 14:26)

    ✔ DrawLine @low @done(22-08-29 15:14)
        ✔ Line Shader @done(22-08-22 19:46)
        ✔ Line Batch data @done(22-08-29 15:14)
    