The EventTranslator will live in GameState and be responsible for taking input events and dealing with them in The Right Way (tm). A likely flow will be:
Hand mouse movement either to the UI directly or translate the events (based on input mappings) into actions to be performed on the active camera. The flag that decides where input goes can be stored in the EventTranslator.
Hand Keyboard input and Mouse clicks directly to the UI. If the event is NOT handled, translate it based on user defined input mappings (if required) into actions (defined as Procs in the GameState scope) to be performed on either the World, active Camera, the EventTranslator, or anything else that makes sense.
The mapping from input to proc should be user definable, changeable from a programatic interface, and able to save/load to/from disk.
The EventTranslator will live in GameState and be responsible for taking input events and dealing with them in The Right Way (tm). A likely flow will be:
The mapping from input to proc should be user definable, changeable from a programatic interface, and able to save/load to/from disk.