Post marked as solved
Post marked as solved with 3 replies, 411 views
Hi,
I'm my game I'm using GCController to check for inputs, I have the following handlers set for when the current mouse changes
override func mouseDidBecomeCurrent(_ mouse: GCMouse) {
guard let mouseInput = mouse.mouseInput else { return }
mouseInput.mouseMovedHandler = { (input, deltaX, deltaY) in
print("x: \(deltaX), y: \(deltaY), mouse: \(input.leftButton.isPressed)")
if (input.leftButton.isPressed) {
let delta: SIMD2<Float> = [deltaX, deltaY]
self.cameraManager.current.rotate(delta: delta)
}
}
mouseInput.scroll.valueChangedHandler = { (dpad, deltaX, deltaY) in
print(dpad)
self.cameraManager.current.zoom(delta: deltaY)
}
}
override func mouseStopBeingCurrent(_ mouse: GCMouse {
guard let mouseInput = mouse.mouseInput else { return }
mouseInput.mouseMovedHandler = nil
mouseInput.scroll.valueChangedHandler = nil
}
I receive move mouse events as expected but .leftButton.isPressed on my input is always false until I scroll my trackpad.
I'm also tracking mouse movements in view controller so I get the mouse position on screen and not just the deltas.
let trackingArea = NSTrackingArea(rect: metalView.bounds, options: [.activeWhenFirstResponder, .mouseMoved, .enabledDuringMouseDrag], owner: self, userInfo: nil)
metalView.addTrackingArea(trackingArea)
Can the tracker cause this type of conflict?