
Build System:
    ✔ Add a build option to do a build without the editor @done (9/17/2021, 7:25:08 PM)
    ☐ Modify .sh scripts to recognize the noeditor flag

Core:
    ☐ Add log settings to the state file
    ✔ Add run modes (Editor, Game, Test) to state file @done (9/15/2021, 7:27:03 PM)
    ✔ Add run mode interface class @done (9/15/2021, 8:22:35 PM)
    ☐ Read the window size and position on shutdown and write these to the state file
    
    Graphics:
        ✔ Decide on a font/text rendering system @done (9/7/2021, 1:39:53 PM)
        ✔ Add FreeType to the project @done (9/7/2021, 2:23:13 PM)
        ✔ Add a new class for font loading/management and text rendering @done (9/7/2021, 3:57:08 PM)
        ✔ Make the text renderer smarter about breaking up words on multiple lines @low @done (9/8/2021, 2:23:03 PM)
        ✔ Implement the Image creation methods @done (9/9/2021, 2:50:20 PM)
        ✔ Implement Render to Texture @done (9/15/2021, 7:00:33 PM)
        ✔ Adjust the font loading code to use the binary file buffer instead of ifstream @done (9/17/2021, 6:11:06 PM)
        ✔ Find a way to add rotation to shapes and images @done (10/29/2021, 7:35:14 PM)
        ✔ Add a DrawPolygon method that takes vertices and draws arbirary shapes @done (10/29/2021, 6:24:14 PM)
        ☐ Allow DrawPolygon to add a texture to the polygon @low 
        ✔ Refactor the drawing code to allow for rotation with cleaner code @high @done (10/29/2021, 8:36:24 PM)
        ✔ Test rotation of images @done (11/1/2021, 2:11:13 PM)
        ☐ Fix line rotation @low 
        ✔ Add Roboto-Regular.ttf as an internal font @high @done (11/3/2021, 8:35:51 PM)

        
    GUI:
        ✔ Dear ImGui class with basic initialization @done (9/10/2021, 1:42:19 PM)
        ✔ Debug log window @done (9/10/2021, 4:44:48 PM)
        ✔ Add key to show debug log window @done (9/13/2021, 6:47:44 PM)
        ☐ Add checkboxes to disable log categories and levels
        ✔ Add LUA Console window @done (10/26/2021, 4:43:41 PM)
        FileBrowser:
            ✔ Allow opening of listed directories @done (11/8/2021, 3:16:26 PM)
            ✔ Add indication that an item is directory @done (11/8/2021, 6:19:20 PM)
            ✔ Sort items by type (Directories should come first) @done (11/8/2021, 6:26:01 PM)
            ✔ Allow the user to type in a filename @done (11/9/2021, 3:26:16 PM)
            ✔ Add a "New Directory" button @done (11/8/2021, 7:15:51 PM)

    Input:
        ✔ Port over the Element2D input system and adjust it to use glfw @done (9/8/2021, 8:20:07 PM)
        ✔ Add the InputManager to the core @done (9/9/2021, 2:57:06 PM)

    Physics:
        ✔ Research Box2D as a possible physics library @done (10/27/2021, 7:40:44 PM)
        ✔ Add Box2D to the project as an external library @done (10/27/2021, 7:40:46 PM)
        ✔ Add a scene to the tester to test Box2D usage @done (10/28/2021, 2:42:45 PM)
        ☐ Come up with a way to wrap Box2D into an API

    Audio:
        ☐ Research the usage of OpenAL
        ☐ Add OpenAL to the project
        ☐ Design Audio API

    Scripting:
        Script Managment class:
            ☐ Manage LUA states
            ☐ Initialize new scripts
        
        Interface Class:
            ☐ Provide Methods that give access to the C++ code

Utils:
    ✔ Make Logger fully static (no need to ever GetInstance) @done (10/26/2021, 4:43:55 PM)
        ✔ Need to add a static initialize method @done (10/26/2021, 4:43:57 PM)
    ☐ Add a templated return value to the OK variant of OpRes @low
        

Assets:

    ☐ Internal Asset Manager @high 
        

    Types:
        - Classes that represent each resource Types
        ✔ Image class @done (9/16/2021, 2:46:34 PM)
        ✔ Decouple Image class from OGLRenderer @high @done (10/27/2021, 7:41:50 PM)
        ☐ Font class
        ☐ Sound class
        ☐ Script class

    Loaders:
        - Need class (or classes?) to load resources from the packed format that the pipeline generates
        Come up with binary file formats for each type:
            ☐ .xml (This will probably be multiple different formats depending on what the .xml file is describing)
            ☐ Image
            ☐ Script
            ☐ Audio

    Asset Pipeline:
        ☐ Read through the contents folder and generate asset files in a custom format (useable by the engine)

Tester:
    - A special class that is used to unit-test features of the engine
    ✔ Implement Run Mode interface class @done (10/25/2021, 7:37:00 PM)
    ✘ Needs a timer to keep track of how long a test has run @cancelled (10/26/2021, 4:36:45 PM)
    ✘ Main Tick method should use the timer to determine when to switch to the next test @cancelled (10/26/2021, 4:36:16 PM)
    ✔ Add function for testing render to Texture @done (10/26/2021, 4:35:52 PM)
    ✔ Add function for testing input @done (10/26/2021, 4:36:05 PM)
    ✔ Add function for testing text rendering @done (10/26/2021, 4:35:54 PM)
    ✔ Add function for testing shape drawing @done (10/26/2021, 4:35:58 PM)
    ✔ Add function for testing image drawing @done (10/26/2021, 4:36:00 PM)
    