----- TO DO LIST ----- TODO now: the collision system doesn't use the "isTrigger" bool properly. Add support for shadows and other complex lighting. Also add post-processing. Add AABB colliders, sphere colliders, and mesh colliders. Support animations and skinned meshes. At some point, add game controller support. Make sure it works well with the InputManager class. * Was implemented in the past: * For font rendering, put all ASCII characters in one large texture and use 'instancing' (and uniform buffer objects?) to reduce draw calls. ----- DONE ----- For mesh rendering, give every mesh-renderer a ShaderMaterial which, depending on the shader, defines how the mesh reacts to light and also stores a reference to its texture(s). -- Also make a model loader that works with multiple meshes (by creating many objects). The engine needs an event/message system, this will be helpful for collision detection. Also helpful for general gameplay logic. The entire vulkan backend needs redesigning without so many classes Place all instances of a particular component in contiguous memory: I.e., a scene holds many std::vectors, one for each type of component. These vectors are looped through every frame. This should optimise things by improving the memory layout of the program, significantly reducing cache misses.