Mercurial > public > lazybear
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 } |