The current Entity system looks like it's not worth maintaining in the long-run.
Issues with the current entity system:
data is not decoupled from logic - code maintenance can be very problematic as the code-base grows.
logic duplication - each component class contains logic that could be wrapped in a single instance, instead an instance is created for each component, this can hurt performance.
a) we need to fix collider clipping, and we can't due to the way that the MovementComponent is being used for every entity. To swap that out for a different implementation is a mammoth of a refactor.
b) implementing each additional shader to the scene will radically change how we need to render things (and in what order), and that isn't really possible with how we're rendering things right now
The current Entity system looks like it's not worth maintaining in the long-run.
Issues with the current entity system: