libprimis
libprimis copied to clipboard
Libprimis: Imprimis' 3D destroyable world engine
Attempt to close Issue #257 Remade from #258
Fixes #207
This is a paired effort alongside https://github.com/project-imprimis/libprimis-headers/pull/14 to make a common `vec2` struct for the whole engine. There still exists the `ivec` struct which has deliberately left untouched for the...
The vertex array object `vtxarray` is currently a POD struct which contains no member functions, despite the presence of free functions which are in practice essentially member functions of that...
Using `-1` for an invalid index is not very safe and also not necessary due to the existence of `std::optional`. With` std::optional` it should be possible to at least use...
There are many parts of the code, which if `-Wshadow` is enabled, will indicate that parameters are shadowing (taking the same name as) existing variables. This can be highly confusing...
Global variables should not exist, but also they should not require the explicit `::` scope resolution operator because they occupy the same namespace as the `globalparams` field in the Shader...
The radian is a ratio equal to 180/π degrees or 1/(2π) revolutions. Because (of course) `tools.h` has to do everything its way, the macro `RAD` is defined as π/180 which...
The particle renderer uses a hardcoded list of `partrender *` objects in a global variable called `parts`. These should be available for the game to define, not the engine.
The game, not the engine, should be deciding how many and what files are used to create stain effects. Right now they are defined in stain.cpp under the global variable...