Mercurial > public > lazybear
view LazyBear/HapticsManager.swift @ 453:37c13ebda381
Improve hierarchy and minor bugs fixed
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Sun, 27 Jun 2021 14:18:29 +0200 |
parents | 62d278295bb7 |
children |
line wrap: on
line source
// // HapticsManager.swift // LazyBear // // Created by Dennis Concepción Martín on 27/06/2021. // import SwiftUI import CoreHaptics class HapticsManager: ObservableObject { @Published var engine: CHHapticEngine? func prepareHaptics() { guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return } do { self.engine = try CHHapticEngine() try engine?.start() } catch { print("There was an error creating the engine: \(error.localizedDescription)") } } func simpleSuccess() { let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.success) } func complexSuccess() { // make sure that the device supports haptics guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return } var events = [CHHapticEvent]() // create one intense, sharp tap let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 2) let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 1) let event = CHHapticEvent(eventType: .hapticTransient, parameters: [intensity, sharpness], relativeTime: 0) events.append(event) // convert those events into a pattern and play it immediately do { let pattern = try CHHapticPattern(events: events, parameters: []) let player = try engine?.makePlayer(with: pattern) try player?.start(atTime: 0) } catch { print("Failed to play pattern: \(error.localizedDescription).") } } func simpleError() { let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.error) } }