Skip to content

Instantly share code, notes, and snippets.

View Matt54's full-sized avatar

Matt Pfeiffer Matt54

View GitHub Profile
@Matt54
Matt54 / GameKitManager.swift
Created September 14, 2024 22:33
Trying to figure out the boilerplate for a simple GameKit implementation
import GameKit
import SwiftUI
struct GameTestView: View {
@StateObject private var gameKitManager = GameKitManager()
@State private var timer: Timer?
var body: some View {
VStack {
Text("Score: \(gameKitManager.score)")
@Matt54
Matt54 / TargetPracticeView.swift
Created September 14, 2024 14:28
RealityView where users practice target shooting by detecting finger gun gestures and using ray casting to hit virtual targets
import SwiftUI
import RealityKit
import ARKit
import HandVector
struct TargetPracticeView: View {
@State var jointPositions: [HandSkeleton.JointName: SIMD3<Float>] = [:]
@State var targets: [Target] = []
@State var laserBeamEntity: ModelEntity?
@Matt54
Matt54 / HandTrackingRaycastView.swift
Created September 14, 2024 05:11
RealityView that detects finger gun gestures and uses ray casting for hit detection
import SwiftUI
import RealityKit
import ARKit
import HandVector
struct HandTrackingRaycastView: View {
@State var jointPositions: [HandSkeleton.JointName: SIMD3<Float>] = [:]
@State var sphereEntity: ModelEntity?
@State var laserBeamEntity: ModelEntity?
@State var gunEntity: ModelEntity?
@Matt54
Matt54 / HandTrackingRaycastView.swift
Created September 14, 2024 03:19
RealityView that detects finger gun gestures and uses ray casting to interact with virtual objects.
import SwiftUI
import RealityKit
import ARKit
import HandVector
struct HandTrackingRaycastView: View {
@State var jointPositions: [HandSkeleton.JointName: SIMD3<Float>] = [:]
@State var sphereEntity: ModelEntity?
@State var laserBeamEntity: ModelEntity?
@State var gunEntity: ModelEntity?
@Matt54
Matt54 / HandTrackingRaycastView.swift
Created September 14, 2024 00:41
RealityView with raycasting from the index finger to a sphere, showing a color change on hit
import SwiftUI
import RealityKit
import ARKit
struct HandTrackingRaycastView: View {
@State var jointPositions: [HandSkeleton.JointName: SIMD3<Float>] = [:]
@State var sphereEntity: ModelEntity?
@State var debugCylinderEntity: ModelEntity?
let sphereRadius: Float = 0.1
@Matt54
Matt54 / TileFloorSinglePlaneRealityView.swift
Created September 5, 2024 00:59
RealityView creating floor tile pattern using scale of textureCoordinateTransform
import SwiftUI
import RealityKit
#Preview("TileFloorSinglePlaneRealityView") {
TileFloorSinglePlaneRealityView()
}
struct TileFloorSinglePlaneRealityView: View {
var body: some View {
let gridSize = 1
@Matt54
Matt54 / TileFloorRealityView.swift
Created September 4, 2024 02:45
Texture grid RealityView
import SwiftUI
import RealityKit
// Volume example
struct TileFloorRealityView: View {
let gridSize = 8
var body: some View {
GeometryReader3D { proxy in
RealityView { content in
@Matt54
Matt54 / PhysicallyBasedMaterialPickerView2.swift
Created September 1, 2024 04:45
RealityView for testing the various properties of PhysicallyBasedMaterial
import RealityKit
import SwiftUI
struct PhysicallyBasedMaterialPickerView2: View {
@State var entity: ModelEntity?
@State var baseColorTextureResource: TextureResource?
@State var materialParameters: PhysicallyBasedMaterialParameters = PhysicallyBasedMaterialParameters()
var body: some View {
RealityView { content in
@Matt54
Matt54 / PhysicallyBasedMaterialPickerView.swift
Created August 30, 2024 03:07
RealityView for visualizing the different properties of PhysicallyBasedMaterial
import RealityKit
import SwiftUI
struct PhysicallyBasedMaterialPickerView: View {
@State var entity: ModelEntity?
@State var materialParameters: PhysicallyBasedMaterialParameters = PhysicallyBasedMaterialParameters()
func generateEntity() -> ModelEntity {
let meshResource = MeshResource.generateSphere(radius: 0.2)
return ModelEntity(mesh: meshResource, materials: [getMaterial()])
@Matt54
Matt54 / LowLevelMeshRevealView.swift
Created August 26, 2024 00:10
RealityView loading a USDZ model, extracting a LowLevelMesh from it, and then animating a warp reveal of it's vertices
import SwiftUI
import RealityKit
import Metal
struct LowLevelMeshRevealView: View {
@State var entity: ModelEntity?
@State var lowLevelMesh: LowLevelMesh?
@State var originalVertices: [VertexData] = []
@State var timer: Timer?
@State var isForward: Bool = true