This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# If you're using SwiftLint, add this to your swiftlint.yml to make Xcode | |
# generate warnings when you create new Swift files and Xcode inserts the | |
# filename where the package name should be. | |
custom_rules: | |
# This calls out an Xcode 13 bug where the header comments of newly created | |
# files include the file name where the package name should be. | |
xcode_13_header_comment_bug: | |
regex: ' *\/\/ *([A-Za-z0-9_]*?).swift *\n *\/\/ *\1 *\n' | |
message: "Incorrect header comment package name" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
extension UIColor { | |
/// Creates a dynamic color from the receiver blended with another color. | |
/// | |
/// If `weight` is 0, the color of `self` is returned. If `weight` is 1, the color | |
/// of `otherColor` is returned. | |
/// | |
/// This method works correctly with light and dark mode. A dynamic color is |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
extension UIColor { | |
/// Creates a dynamic color from the receiver with attenuated brightness. | |
/// | |
/// This method works correctly with light and dark mode. A dynamic color is | |
/// returned, so if the user switches to dark mode, the attenuated dark mode version of `self` | |
/// will be displayed. | |
func attenuated(by attenuation: CGFloat) -> UIColor { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// Entity+EnumerateHierarchy.swift | |
// | |
// Created by Drew Olbrich on 7/18/23. | |
// | |
import RealityKit | |
extension Entity { | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension ModelEntity { | |
func reverseTriangleIndices() async { | |
guard let model else { | |
assertionFailure("model is undefined") | |
return | |
} | |
var updatedContents = MeshResource.Contents() | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import RealityKit | |
import Combine | |
private var playbackCompletedSubscriptions: Set<AnyCancellable> = .init() | |
extension Entity { | |
/// Animated `Entity/move` with a completion handler. | |
/// |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import RealityKit | |
import Combine | |
private var playbackCompletedSubscriptions: Set<AnyCancellable> = .init() | |
extension Entity { | |
/// Animated `Entity/move` with a completion handler. | |
/// |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Entity { | |
/// Animated `Entity/move` with a completion handler. | |
/// | |
/// This implementation works but for some reason `timingFunction` appears to be | |
/// ignored and the timing function of the resulting animation is always linear. | |
func move(to target: Transform, relativeTo referenceEntity: Entity?, duration: TimeInterval, delay: TimeInterval = 0, timingFunction: AnimationTimingFunction = .default, completion: @escaping () -> Void) { | |
guard let scene else { | |
completion() | |
return |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// UPDATE: You may want to use this view modifier instead: | |
/// https://gist.github.com/drewolbrich/90f11b7170267674cbdcb4a0d71ce873 | |
import SwiftUI | |
/// A view that, when included as a leaf node in a view hierarchy, sets | |
/// `UIWindowScene.ResizingRestrictions` for the view's `UIWindowScene`. | |
/// | |
/// Example: | |
/// |
OlderNewer