- [`raygui`](https://github.com/raysan5/raygui): Simple IMGUI system with several controls for tools development.
- [`easings`](https://github.com/raysan5/raylib/blob/master/src/extras/easings.h): Easing functions for animations (based on [Robert Penner](http://robertpenner.com/easing/) implementation).
- [`reasings`](https://github.com/raysan5/raylib/blob/master/examples/others/reasings.h): Easing functions for animations (based on [Robert Penner](http://robertpenner.com/easing/) implementation).
Wherever possible, raylib modules were designed to be as decoupled as possible from the other modules. In fact, some modules can be used as standalone libraries, independently of raylib, including the `rlgl` ([example](https://github.com/raysan5/raylib/blob/master/examples/others/rlgl_standalone.c)) and `raudio` ([example](https://github.com/raysan5/raylib/blob/master/examples/others/raudio_standalone.c)) modules.
Most of the secondary modules (`raymath`, `rcamera`, `rgestures`, `raygui`, `easings`) can also be used as standalone libraries. They are distributed as configurable, single-file, header-only libraries, allowing them to be independently added to any project. Being header-only means that the file also contains function implementations. That can be extremely useful when you want to drop a library (a bunch of functions) into your codebase to provide specific functionality. However, creating a header-only module is not trivial, as the module must implement very specific functionality, while minimizing external dependencies and global variables. Simply put, it must be completely portable.
Most of the secondary modules (`raymath`, `rcamera`, `rgestures`, `raygui`, `reasings`) can also be used as standalone libraries. They are distributed as configurable, single-file, header-only libraries, allowing them to be independently added to any project. Being header-only means that the file also contains function implementations. That can be extremely useful when you want to drop a library (a bunch of functions) into your codebase to provide specific functionality. However, creating a header-only module is not trivial, as the module must implement very specific functionality, while minimizing external dependencies and global variables. Simply put, it must be completely portable.
**NOTE**: *The `raymath`, `rcamera` and `rgestures` modules are all compiled with raylib by default.*