The main goal of Heavy is to make it as close to SFML syntax as possible. For example creating rigid body is easy as hv::RigidBody rb;
and thats really it.
As inexperienced programmer I thought it will come up clumsy and inefficient so I called it heavy. In the opposite it come up pretty well (beside few things).
- Uses separate thread for drawing resulting in higher performance
- Separate update and fixed update allows for better physics simulations
- Custom renderer makes lights and shadow possible
- Delta time and fixed delta time accessible from everywhere
- Well abstracted box2d made easy to use for everyone
- Many profiler macros integrated from Optick
- Lights and shadows easy in use and control
- Asynchronous asset load
- Runtime - main class, runs the application
- Asset Manager - used to store textures etc.
- Asset Loader - used to asynchronously load assets
- Camera - overall camera controll features functions as shake etc.
- Colliders - different colliders for convex shapes featuring drawing
- Event Dispatcher - allows you to control events from everywhere
- Fixed Clock - featuring start and stop
- Heavy Math and Utilities - different math and conversion functions
- Key Check - checks user input can work in not repeat mode
- Particle Emitter - creating and controlling squared particles
- Profile Timer - used to time function
- Random - simple random numbers generator
- Timer - repeats it's given function every period of time
- Animator - handles sprite sheet animations