|
For example, when loading a new world part in the background, the world part may use a texture which is already in usage by the renderer in the foreground thread. The resource manager handles this situation smartly without allocating the texture a second time.
Effectively you can swap in and out level parts of an unlimited large world. When swapping out a level part, the whole state of each level part can be written to disk and can be loaded again.
For example, when loading or storing a level in the background. this level part is frozen automatically and disconnected from other scripts which are not thread-safe. This avoids that a script accidentially accesses objects which are currently loaded or saved in another thread.