]> git.lizzy.rs Git - dragonblocks3d-lua.git/blob - modules/RenderEngine/src/inputhandler.lua
Yaw & Pitch bound to mouse input
[dragonblocks3d-lua.git] / modules / RenderEngine / src / inputhandler.lua
1 RenderEngine.listen_keys = {}
2 Dragonblocks.create_event_interface(RenderEngine)
3
4 function RenderEngine:process_input(dtime)
5         self:process_key_input(dtime)
6         self:process_mouse_input(dtime)
7 end
8
9 function RenderEngine:process_key_input(dtime)
10         local keys_pressed = {}
11         local was_key_pressed = false
12         for key in pairs(self.listen_keys) do
13                 if glfw.get_key(self.window, key) == "press" then
14                         keys_pressed[key] = true
15                         was_key_pressed = true
16                 end
17         end
18         if was_key_pressed then
19                 self:fire_event({
20                         type = "keypress",
21                         keys = keys_pressed,
22                         dtime = dtime
23                 })
24         end
25 end
26
27 function RenderEngine:process_mouse_input(dtime)
28         local dx, dy = self.cursor_delta_x or 0, self.cursor_delta_y or 0
29         if math.abs(dx) > 0 or math.abs(dy) > 0 then
30                 self:fire_event({
31                         type = "mousemove",
32                         dtime = dtime,
33                         x = dx * self.mouse_sensitivity,
34                         y = dy * self.mouse_sensitivity,
35                 })              
36         end
37         self.cursor_delta_x, self.cursor_delta_y = 0, 0
38 end
39
40 function RenderEngine:add_listen_key(key)
41         self.listen_keys[key] = true
42 end
43
44 function RenderEngine:remove_listen_key(key)
45         self.listen_keys[key] = nil
46 end