comparison LazyBear/HapticsManager.swift @ 319:62d278295bb7

Sign Up View implemented
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sat, 27 Mar 2021 20:26:15 +0100
parents
children 37c13ebda381
comparison
equal deleted inserted replaced
318:e7c3d68d8e22 319:62d278295bb7
1 //
2 // HapticsManager.swift
3 // LazyBear
4 //
5 // Created by Dennis Concepción Martín on 27/3/21.
6 //
7
8 import SwiftUI
9 import CoreHaptics
10
11 class HapticsManager: ObservableObject {
12 @Published var engine: CHHapticEngine?
13
14 func prepareHaptics() {
15 guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return }
16
17 do {
18 self.engine = try CHHapticEngine()
19 try engine?.start()
20 } catch {
21 print("There was an error creating the engine: \(error.localizedDescription)")
22 }
23 }
24
25 func simpleSuccess() {
26 let generator = UINotificationFeedbackGenerator()
27 generator.notificationOccurred(.success)
28 }
29
30 func complexSuccess() {
31 // make sure that the device supports haptics
32 guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return }
33 var events = [CHHapticEvent]()
34
35 // create one intense, sharp tap
36 let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 2)
37 let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 1)
38 let event = CHHapticEvent(eventType: .hapticTransient, parameters: [intensity, sharpness], relativeTime: 0)
39 events.append(event)
40
41 // convert those events into a pattern and play it immediately
42 do {
43 let pattern = try CHHapticPattern(events: events, parameters: [])
44 let player = try engine?.makePlayer(with: pattern)
45 try player?.start(atTime: 0)
46 } catch {
47 print("Failed to play pattern: \(error.localizedDescription).")
48 }
49 }
50
51 func simpleError() {
52 let generator = UINotificationFeedbackGenerator()
53 generator.notificationOccurred(.error)
54 }
55 }