-
Notifications
You must be signed in to change notification settings - Fork 6
/
controllerManager.go
59 lines (50 loc) · 1.77 KB
/
controllerManager.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package glfwController
import (
"github.com/go-gl/glfw/v3.1/glfw"
)
type ControllerManager struct {
controllerList []Controller
}
//Key Callback
func (c *ControllerManager) KeyCallback(window *glfw.Window, key glfw.Key, scancode int, action glfw.Action, mods glfw.ModifierKey) {
for _, cont := range c.controllerList {
cont.KeyCallback(window, key, scancode, action, mods)
}
}
//Mouse click callback
func (c *ControllerManager) MouseButtonCallback(window *glfw.Window, button glfw.MouseButton, action glfw.Action, mods glfw.ModifierKey) {
for _, cont := range c.controllerList {
cont.MouseButtonCallback(window, button, action, mods)
}
}
//Mouse movement callback
func (c *ControllerManager) CursorPosCallback(window *glfw.Window, xpos, ypos float64) {
for _, cont := range c.controllerList {
cont.CursorPosCallback(window, float32(xpos), float32(ypos))
}
}
//Mouse scrollwheel callback
func (c *ControllerManager) ScrollCallback(window *glfw.Window, xoffset, yoffset float64) {
for _, cont := range c.controllerList {
cont.ScrollCallback(window, float32(xoffset), float32(yoffset))
}
}
func (c *ControllerManager) AddController(newCont Controller) {
c.controllerList = append(c.controllerList, newCont)
}
func (c *ControllerManager) RemoveController(controller Controller) {
for index, cont := range c.controllerList {
if cont == controller {
c.controllerList = append(c.controllerList[:index], c.controllerList[index+1:]...)
}
}
}
func NewControllerManager(window *glfw.Window) *ControllerManager {
var controllerList []Controller
c := &ControllerManager{controllerList}
window.SetKeyCallback(c.KeyCallback)
window.SetMouseButtonCallback(c.MouseButtonCallback)
window.SetCursorPosCallback(c.CursorPosCallback)
window.SetScrollCallback(c.ScrollCallback)
return c
}