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) 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) 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 possibly physics library ☐ Add Box2D to the project as an external library ☐ Add a scene to the tester to test Box2D usage Audio: 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) Game: ☐ Implement Run Mode interface class ☐ Load game project data ☐ Manage list of scenes ☐ Manage global scripts ☐ Handle Events from the core Scene: ☐ Manage scene scripts ☐ Manage game objects in scene Manage list of Regions: ☐ Track which regions should be loaded Region: ☐ List of renderable images for each layer Game Object: ☐ List of components Components: ☐ Transform ☐ Image ☐ Animation Controller ☐ Collider (maybe via Box2D?) ☐ Script ☐ RigidBody (via Box2D) Animations: ☐ Animated Sprite class Editor: @high ✔ Come up with project directory structure @done (9/17/2021, 6:46:44 PM) ☐ Make the editor a separate module @high ☐ Implement Run Mode interface class @high ☐ Reference raw asset files in a "content" folder@high ☐ Platform independant file browsing ☐ Scan script files to make sure they don't overwrite globals Raw Asset Importers: - Need classes to import raw resource files for the editor ☐ Raw Resource importer interface class ☐ Raw Image importer class ☐ Raw Sound importer class ☐ Raw font file importer class GUI Panels: Project Overview (Tree view): Game Viewport: Scene View: Tile Map Editor: ☐ Tile map canvas ☐ Tile map pallete ☐ Hideable grid ☐ Stamp creater Asset Viewer: Properties: Assets: Types: - Classes that represent each resource Types ✔ Image class @done (9/16/2021, 2:46:34 PM) ☐ Decouple Image class from OGLRenderer @high - Give the renderer a register image method that will take an Image and finish setting it up ☐ 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)