libprimis
libprimis copied to clipboard
Libprimis: Imprimis' 3D destroyable world engine
Three entries (RESERVED, LAYER, DETAIL) in `texture.h`'s vslot enum are no longer used, so they should be all cut together to reduce the number of vslots to keep juggled.
There are 88 (!) macros defined for various configurations of parameter passing to commands. There likely does not need to be more than ten actually defined to replicate this behavior.
Objects in `ui.cpp` are written in PascalCase, which is not the standard for other parts of the engine. Additionally, the UI objects are named in ways that only make sense...
Many locations in the code use pointers of type `void`, which nullifies the type safety that normal pointers have. While this isn't necessarily bad, potentially dangerous pointers like these should...
Zip map loading support relies on an integrated zip loading system that is not necessary (dumping the contents of the file into relevant directories works fine too). Because this feature...
Parts of `command.cpp` are nested 11-deep, making the code almost impossible to parse. This should be flattened to about half as deep if possible. `command.cpp` handles Cubescript functionality and is...
Multisample AA has serious performance issues on the engine's renderer, a fact reflected in Tesseract's renderer document: > Since Tesseract relies upon deferred shading, simply using MSAA by itself does...
The cardinal rotations `vrotate` is capable of is no longer relevant, as `vangle` is capable of this type of transformation; `vrotate`'s remaining functionality should be deposited into a more appropriate...
the `GENFACE*` macros in `stain.cpp` rely on hard to follow tricks like using macros to pass particular values to other macros depending on location in the code. This should be...
As the Imprimis engine will be designed largely for sunlit maps, having the sunlight be a key part of the shadow atlas rather than as an equal member compared to...