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
// | |
// TextureResource+LoadFileAsync.swift | |
// | |
// Created by Drew Olbrich on 12/24/23. | |
// Copyright © 2023 Lunar Skydiving LLC. All rights reserved. | |
// | |
// MIT License | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a copy | |
// of this software and associated documentation files (the "Software"), to deal |
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
// | |
// SceneUpdateContext+EntitiesWhenRendering.swift | |
// | |
// Created by Drew Olbrich on 7/27/23. | |
// Copyright © 2023 Lunar Skydiving LLC. All rights reserved. | |
// | |
// MIT License | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a copy | |
// of this software and associated documentation files (the "Software"), to deal |
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
// | |
// WindowBarGestureModifier.swift | |
// | |
// Created by Drew Olbrich on 10/25/23. | |
// Copyright © 2023 Lunar Skydiving LLC. All rights reserved. | |
// | |
// MIT License | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a copy | |
// of this software and associated documentation files (the "Software"), to deal |
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
// IMPORTANT: The following code doesn't support specifying a window's | |
// minimum and maximum size when used to constrain a window's aspect ratio. | |
// Please use this newer view modifier extension instead: | |
// https://gist.github.com/drewolbrich/03460fc1bb71b9a821fff722f17ec977 | |
// | |
// View+WindowResizingRestrictions.swift | |
// | |
// Created by Drew Olbrich on 11/19/23. | |
// |
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: | |
/// |
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 simd | |
/// Creates a 4x4 matrix that orients the +Z axis in the direction of `at`, and the | |
/// +Y axis toward `up`. | |
func simd_look(at: SIMD3<Float>, up: SIMD3<Float> = SIMD3<Float>(0, 1, 0)) -> simd_float4x4 { | |
let zAxis = normalize(at) | |
let xAxis = normalize(cross(up, zAxis)) | |
let yAxis = normalize(cross(zAxis, xAxis)) | |
return simd_float4x4( |
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+Opacity.swift | |
// | |
// Created by Drew Olbrich on 10/25/23. | |
// Copyright © 2023 Lunar Skydiving LLC. All rights reserved. | |
// | |
// MIT License | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a copy | |
// of this software and associated documentation files (the "Software"), to deal |
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
// Important: You may want to use this newer `Entity` extension instead: https://gist.github.com/drewolbrich/1e9d3da074c8a1d5ca93721124b97596 | |
import Foundation | |
import RealityKit | |
extension Entity { | |
/// The opacity value applied to the entity and its descendants. | |
/// | |
/// `OpacityComponent` is assigned to the entity if it doesn't already exist. |
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+GenerateGroundingShadowComponents.swift | |
// | |
// Created by Drew Olbrich on 10/18/23. | |
// Copyright © 2023 Lunar Skydiving LLC. All rights reserved. | |
// | |
// MIT License | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a copy | |
// of this software and associated documentation files (the "Software"), to deal |