It is useful to have all types registered before they are allocated
because the memory needed for them can then be allocated before any of
it is required, speeding up allocations because a pool may have been
created beforehand.
The pool allocator would only allocate one item and then stop, its
allocation wasn't reset correctly because of a comparison operator
being the wrong way around.
A window can now be closed by clicking on the X in the title bar. The
input controller is already running in its own thread, calling the
handler-functions given to it on an event's arrival.
Those vectors are needed for storing a position that is only on fixed
points on a grid. The position and size of a window must be expressed
as integer vectors, for example.
The ini parser will come in handy for configurations, for example once
the time has come for adding shader packs.
The parser isn't tested yet; writing some (automatic) tests would be a
really good idea.
The utilities are grouped into the following categories:
- Math
Matrices, vectors and special rounding functions are included in the
math category. This still is severely lacking in functionality.
- Containers
Datatypes for storing arbitrary data in a special way, for example
for being able to search through it quickly, in the case of a map.
Currently the only function in this category is for testing how long
a string is, with a maximum number of bytes to check.
- Allocation
Special-purpose memory allocators with restrictions on what they can
allocate. The restrictions are used to be faster in those use cases.
- UUID
Universally-unique identifiers are used to identify one specific
object within the engine's lifetime.
The key for getting the path of the own module in the includes.txt is
no longer '{self}', but rather '{module}', as that is a little easier
to understand.