Deprecating / Refactoring
- Interlacing and non 8bit PNGs Supporting these PNG formats is bloat as interlacing PNGs are slower to load, and non-8 bit depth PNGs cause all readers to check for bit depth. Removing the ImageUtil function for remapping bit depth would also be good.
- EmotionEvent Originally used for OnKey, which now has custom logic to track event propagation, this is no longer necessary and only causes random lambas around the codebase to have to return a boolean. These should be converted to C# events.
- ~Speaking of OnKey, there's no need to allocate a bool array for each entry, some of them don't care if they get an up. The default should be to allocate the full key tracker, but system input functions, and ones like the one used in the ImGui plugin are just increasing memory usage by being there. Add a boolean to AddListener and branch. Don't include those without allocated trackers in the object pool.~
- YOffset is the same for all AtlasGlyph in a FontAtlas. Move the property there instead of storing it in the glyph. Anyone who requests its value currently also has a reference to the font, so the glyph doesn't have to hold one. Remove the "YBearing" property. Be careful not to break the tests.
~TransformRenderable is confusing, and the model matrix is rarely used (only by classes such as RichText which overoptimize their drawing). The memory overhead in TileMap is not worth it. Along with removing this, the automatic matrix push in the RenderComposer should also go, as it breaks batches.~
CrossPlatformPath and MakeStringPathSafe in the helpers file are no longer needed?
~Main thread does nothing but sleep in Parallel.FastLoops essentially idling. Maybe a new task system is in order?~
FlipX and FlipY arguments to RenderSprite should be grouped in a enum. Introduce rotation in 90 degree increments (90/180/270) both before and after flip. Add flag combining.
enum UVTransformation {
Rotate90,
FlipX,
FlipY,
Rotate90AfterFlip
}
CoroutineManager and ITimer are flawed. Cant create alternate time incrementors and there's a lot of dead weight in that API
BaseMap's world tree needs to be replaced with a grid for allocation free iteration and tags instead of world tree layers