This pull request adds support to the core engine for runtime code reloading. This is done by building the the game and engine into a dylib and using a loader to monitor the dylib and reload it when rebuilt. The following changes are necessary to make this work:
Publicly exported hooks are added so that the loader can call into the dylib.
Makes the entire engine/game runtime cloneable. This is to avoid issues with allocating/freeing memory across dylib boundaries which can lead to crashes. Mostly this consisted of deriving Clone for all of the data types that are used in the engine, as well as a few manual implementations where necessary.
Minor changes are also made to various other parts of the engine and libraries, but these were part of normal development and were not specific to implementing hotloading.
There's a bunch more work that can be done for hotloading but it's reached a point where it's stable enough for regular use and there are other features I want to start working on.
This pull request adds support to the core engine for runtime code reloading. This is done by building the the game and engine into a dylib and using a loader to monitor the dylib and reload it when rebuilt. The following changes are necessary to make this work:
Clone
for all of the data types that are used in the engine, as well as a few manual implementations where necessary.Minor changes are also made to various other parts of the engine and libraries, but these were part of normal development and were not specific to implementing hotloading.
There's a bunch more work that can be done for hotloading but it's reached a point where it's stable enough for regular use and there are other features I want to start working on.