Currently the client maintains most state in the various UI controllers. This results in the view elements needing to be cached so as to not lose state. This is suboptimal because it has lead to memory leaks where some ui elements cannot be garbage collected even when they are removed from the scene.
Additionally there is no cleanup of elements and their listeners when they are removed from the UI which also contributes to memory leaks.
This PR aims to overhaul the state maintenance of the client such that views are just displays and can be created and discarded at will.
Tasks
[x] Remove Google Event Bus (Deprecated Global Event Bus)
[x] Don't force chat controller to be initialized
[x] Remove controller caching
[x] Remove controller memory leaks
[x] Introduce simple controller initialization and cleanup
Currently the client maintains most state in the various UI controllers. This results in the view elements needing to be cached so as to not lose state. This is suboptimal because it has lead to memory leaks where some ui elements cannot be garbage collected even when they are removed from the scene.
Additionally there is no cleanup of elements and their listeners when they are removed from the UI which also contributes to memory leaks.
This PR aims to overhaul the state maintenance of the client such that views are just displays and can be created and discarded at will.
Tasks
Closes #2994 Closes #3016 Closes #3018