jubilant-funicular
Todo List
Namespace nta

Add Option type

prefix all include guards with NTA_

Get a linter or something

Decide what things you want to be CamelCase and which you want to snake_case

Replace (almost) all raw pointers with (potentially custom) smart pointers

Throughout codebase, indent case inside of switch blocks

Make sure this code is OS-agnostic

Have first-class support for arbitrary (i.e. user-defined) vertex types

Figure out how to get rid of this file

Class nta::CallbackManager

Add ability to base timing off of actual time instead of frames

make non-static (ideally, one CallbackManager per ScreenManager)

Class nta::Camera2D
Rename m_dimensions to union { m_extents; m_half_dimensions; }
Member nta::ContextData::getGLSLProgram (const utils::Path &progPath)
call resolve (?)
Member nta::ContextData::reloadTextures ()
Implement
Class nta::ErrorManager
There should be one of each "Manager" class type per ScreenManager or one per Window (i.e. they should not be static)
Member nta::Glyph::Glyph (crvec4 posRect, crvec4 uvRect, GLuint tex, float d, crvec4 col, float angle)
Use model matrix?
Class nta::InstanceBatch
Compare speed of this and SpriteBatch when there's no instancing being done
Member nta::InstanceBatch::add_glyph (crvec4 posRect, GLuint texture=0, crvec4 uvRect=glm::vec4(0, 0, 1, 1), crvec4 color=glm::vec4(1))
(?) add depth
Member nta::InstanceBatch::add_instance_data (const VertexAttrib *attribs, std::size_t num_attribs, void *data, GLsizeiptr size, GLuint divisor=1)
Push error to ErrorManager?
Member nta::IOManager::readFileToBuffer (crstring filePath, std::string &buffer)
Not copy code?
Member nta::Logger::writeErrorToLog (crstring error, ErrorType type=OTHER)
Make sure all the code that previously assumed this function always exits still behaves sensibly
Member nta::PrimitiveBatch::createRenderBatches ()
Render all Primitives using trianges since
Member nta::PrimitiveBatch::m_primitives
store primitives on the stack
Class nta::ResourceManager
Map from Path instead of std::string
Class nta::Result< T >
Use Result type everywhere it needs to be used
Class nta::ScreenManager
(?) Move m_glslMap and m_input to Window?
Member nta::ScreenManager::getCurrScreen () const
write log error if m_currScreen is out of range
Member nta::ScreenManager::owns_event (const SDL_Event &event) const
CamelCase
Class nta::SpriteBatch

Allow for custom vertex types (Important)

Rewrite to use glDrawElements instead of glDrawArrays

Member nta::SpriteBatch::addGlyph (crvec4 posRect, GLuint texture=0, crvec4 uvRect=glm::vec4(0, 0, 1, 1), crvec4 color=glm::vec4(1), float depth=0.5)
Give some of these different names?
Member nta::SpriteFont::init (TTF_Font *font)
Rename now that we're no longer using simulated annealing
Namespace nta::utils
Figure out a nice sub-library solution and implement it
Namespace nta::utils::check
Reexport everything from utils::check
Class nta::utils::IDFactory< GenIndex< IndexType, GenType > >
Add tests
Member nta::utils::Option< T >::get () const
Push an error to ErrorManager instead
Member nta::utils::ThreadPool::dispatcher ()
Can I reorganize to replace with a while(!kill)?
Class std::hash< utils::Wrapper< T, TAG > >
SFINAE or if constexpr or whatever
Class utils::Json
Make as_* functions safer and more versatile
Member utils::Json::dump (std::size_t indent=0, std::size_t offset=0) const
Clean up code
Member utils::Json::from_file (const std::string &path)
Move functionality to common.h
Member utils::Json::operator[] (const std::string &key)
Signal error if m_type != OBJECT
Member utils::Json::operator[] (const std::string &key) const
Signal error if m_type != OBJECT
Member utils::Json::tokenize (std::string curr)
Error cleanly
Class utils::JsonNum
add math operators