Spite - Bloodsun
My work on this project
A lot of the basic core features of the engine is based on my previous work. The most substantial one probably being the eventsystem. What started as a simple postmaster evolved to a generalized system designed to support more specialized observers for use cases such as input handling and file watching.
Our engine was wrapped around EnTT, a third party ECS. As I had previous experience with this kind of workflow I set up a couple of foundation pieces, such as rendering, and helped the rest of the team get into the ECS way of thinking.
I was tasked with making parts of the boss and at the time we had no way to separate behaviours, hence the statemachine. Since the separation of behaviour was an issue in all of our character controllers, I wanted to make something generalized.
The statemachine is defined in compiletime using enums. This might not have been the best way to do it but I'm pleased with how easy it is to use.
I'm a big fan of smart pointers and this project I took the time to make a memory pool that returns shared pointers. Once all references are lost, the instance runs it's injected reset function and gets returned to the pool. It's a simple system but it reliefs the user from having to worry about allocation and deallocation of e.g. models and it has seen heavy usage.
The resource manager itself simply consists of a couple of these shared memory pools along with a list of weak references to keep track of what resources have been previously loaded and still might be active.