comparison semiconginev2/input.nim @ 1254:b0f4c8ccd49a

did: stuff to test gltf importer
author sam <sam@basx.dev>
date Sat, 27 Jul 2024 20:47:54 +0700
parents 56781cc0fc7c
children bfb75c934f4e
comparison
equal deleted inserted replaced
1253:c4f98eb4bb05 1254:b0f4c8ccd49a
9 mousePosition: Vec2f 9 mousePosition: Vec2f
10 mouseMove: Vec2f 10 mouseMove: Vec2f
11 mouseWheel: float32 11 mouseWheel: float32
12 windowWasResized: bool = true 12 windowWasResized: bool = true
13 windowIsMinimized: bool = false 13 windowIsMinimized: bool = false
14 lockMouse: bool = false
14 15
15 # warning, shit is not thread safe 16 # warning, shit is not thread safe
16 var input: Input 17 var input: Input
17 18
18 proc UpdateInputs*(): bool = 19 proc UpdateInputs*(): bool =
22 input.mouseWasPressed = {} 23 input.mouseWasPressed = {}
23 input.mouseWasReleased = {} 24 input.mouseWasReleased = {}
24 input.mouseWheel = 0 25 input.mouseWheel = 0
25 input.mouseMove = NewVec2f() 26 input.mouseMove = NewVec2f()
26 input.windowWasResized = false 27 input.windowWasResized = false
28
29 if input.lockMouse:
30 SetMousePosition(vulkan.window, x=int(vulkan.swapchain.width div 2), y=int(vulkan.swapchain.height div 2))
27 31
28 var killed = false 32 var killed = false
29 for event in vulkan.window.PendingEvents(): 33 for event in vulkan.window.PendingEvents():
30 case event.eventType: 34 case event.eventType:
31 of Quit: 35 of Quit:
70 proc MouseReleasedButtons*(): set[MouseButton] = input.mouseWasReleased 74 proc MouseReleasedButtons*(): set[MouseButton] = input.mouseWasReleased
71 proc MousePosition*(): Vec2f = input.mousePosition 75 proc MousePosition*(): Vec2f = input.mousePosition
72 proc MousePositionNormalized*(size: (int, int)): Vec2f = 76 proc MousePositionNormalized*(size: (int, int)): Vec2f =
73 result.x = (input.mousePosition.x / float32(size[0])) * 2.0 - 1.0 77 result.x = (input.mousePosition.x / float32(size[0])) * 2.0 - 1.0
74 result.y = (input.mousePosition.y / float32(size[1])) * 2.0 - 1.0 78 result.y = (input.mousePosition.y / float32(size[1])) * 2.0 - 1.0
75 proc MouseMove*(): auto = input.mouseMove 79 proc MouseMove*(): Vec2f = input.mouseMove
76 proc MouseWheel*(): auto = input.mouseWheel 80 proc MouseWheel*(): float32 = input.mouseWheel
77 proc WindowWasResized*(): auto = input.windowWasResized 81 proc WindowWasResized*(): auto = input.windowWasResized
78 proc WindowIsMinimized*(): auto = input.windowIsMinimized 82 proc WindowIsMinimized*(): auto = input.windowIsMinimized
83 proc LockMouse*(value: bool) = input.lockMouse = value
84
79 85
80 # actions as a slight abstraction over raw input 86 # actions as a slight abstraction over raw input
81 87
82 type 88 type
83 ActionMap = object 89 ActionMap = object