gh-EmergeTools-Pow/Sources/Pow/Infrastructure/Simulative.swift
Joe Fabisevich 5b95fe95b0
Moving Pow to @emergetools (#36)
Co-authored-by: Robert Böhnke <robb@robb.is>
Co-authored-by: Kasper Lahti <kasper@lahti.email>
2023-11-29 12:08:53 -03:00

27 lines
663 B
Swift

import SwiftUI
protocol Simulative {
var impulseCount: Int { get set }
var initialVelocity: CGFloat { get set }
}
internal struct AnySimulativeViewModifier: ViewModifier {
private var _body: (AnyView) -> AnyView
init<Modifier: ViewModifier & Simulative>(_ modifier: Modifier) {
self._body = { content in
AnyView(content.modifier(modifier))
}
}
func body(content: Content) -> AnyView {
_body(AnyView(content))
}
}
internal extension ViewModifier where Self: Simulative {
func eraseToAnySimulativeViewModifier() -> AnySimulativeViewModifier {
AnySimulativeViewModifier(self)
}
}