Lumenarium/src/foldhaus_command_dispatch.h

43 lines
1007 B
C
Raw Normal View History

2019-07-19 20:56:21 +00:00
#if USAGE_CODE
RegisterInputCommand(KeyCode_UpArrow, SACNView_DrawNextUniverse, Context);
RegisterInputCommand(KeyCode_MouseLeftButton, PanCamera, Context);
ExecuteRegisteredCommands(Context, Input);
#endif // USAGE_CODE
2019-10-30 14:28:02 +00:00
#define FOLDHAUS_INPUT_COMMAND_PROC(name) void name(app_state* State, input_entry Event, mouse_state Mouse)
2019-07-19 20:56:21 +00:00
typedef FOLDHAUS_INPUT_COMMAND_PROC(input_command_proc);
// TODO(Peter): At the moment these are all key press commands. Need a way to differentiate between
// press and hold. Probably add a second array to input_command_Registry
struct input_command
{
key_code Key;
2019-10-30 14:28:02 +00:00
b32 PersistsUntilReleased;
2019-07-19 20:56:21 +00:00
key_code Mdfr;
input_command_proc* Proc;
};
struct input_command_registry
{
input_command* Commands;
s32 Size;
s32 Used;
input_command_proc* MouseWheelCommand;
};
2019-10-30 14:28:02 +00:00
struct command_queue_entry
{
input_command Command;
input_entry Event;
};
struct input_command_queue
{
s32 Size;
s32 Used;
command_queue_entry* Commands;
};