From 8956bc28383790e0bff8afa6db1e8ae7acad4488 Mon Sep 17 00:00:00 2001 From: enzo Date: Fri, 21 Jun 2024 11:18:49 +0200 Subject: [PATCH] mouv arkit --- .../ArkitDoushiQi/ArKit/ArKitView.swift | 35 ++++++++----- .../ArKit/ArKitViewRepresentable.swift | 1 + .../ArkitDoushiQi/ArKit/ContentArkit.swift | 9 ---- .../ArkitDoushiQi/ArKit/VMArkit.swift | 49 +++++++++---------- 4 files changed, 47 insertions(+), 47 deletions(-) diff --git a/ArkitDoushiQi/ArkitDoushiQi/ArKit/ArKitView.swift b/ArkitDoushiQi/ArkitDoushiQi/ArKit/ArKitView.swift index fd1cc8e..56d0d25 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/ArKit/ArKitView.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/ArKit/ArKitView.swift @@ -37,21 +37,30 @@ class ArKitView : ARView { return anchor } - // -- Pour les mouvement -- // + func addGesture(_ pieces:[Owner : [ Animal : Entity?]]){ + for piece in pieces.flatMap({ animal,values in return values }) + { + if piece.self.value != nil { + self.installGestures([.all], for: piece.self.value as! Entity & HasCollision).forEach { gestureRecognizer in + gestureRecognizer.addTarget(self, action: #selector(handleGesture(_:))) + } + } + } + + } + var initialTransform: Transform = Transform() - + @objc private func handleGesture(_ recognizer: UIGestureRecognizer) { guard let translationGesture = recognizer as? EntityTranslationGestureRecognizer, let entity = translationGesture.entity else { return } - - switch translationGesture.state { - case .began: - self.initialTransform = entity.transform - case .ended: - entity.move(to: initialTransform, relativeTo: entity.parent, duration: 1) - default: - break - } + + switch translationGesture.state { + case .began: + self.initialTransform = entity.transform + case .ended: + entity.move(to: initialTransform, relativeTo: entity.parent, duration: 1) + default: + break + } } - //-------------------------// - } diff --git a/ArkitDoushiQi/ArkitDoushiQi/ArKit/ArKitViewRepresentable.swift b/ArkitDoushiQi/ArkitDoushiQi/ArKit/ArKitViewRepresentable.swift index 7498562..b11817f 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/ArKit/ArKitViewRepresentable.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/ArKit/ArKitViewRepresentable.swift @@ -21,6 +21,7 @@ struct ArKitViewRepresentable : UIViewRepresentable { let arView = ArKitView() let anchor = arView.defineAnchors() vm.setup(anchor) + arView.addGesture(vm.pieces) return arView } diff --git a/ArkitDoushiQi/ArkitDoushiQi/ArKit/ContentArkit.swift b/ArkitDoushiQi/ArkitDoushiQi/ArKit/ContentArkit.swift index 67e7ccf..d0e9f97 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/ArKit/ContentArkit.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/ArKit/ContentArkit.swift @@ -15,18 +15,9 @@ struct ContentArkit: View { var body: some View { VStack { Text("toto") - /* - vm.view - .ignoresSafeArea() - .navigationBarBackButtonHidden(true) - .task { - vm - try! await vm.game.start() - }*/ ArKitViewRepresentable(try! Game(withRules: ClassicRules(), andPlayer1: RandomPlayer(withName: "Bot1", andId: .player1)!, andPlayer2: RandomPlayer(withName: "Bot2", andId: .player2)!)) } } - } diff --git a/ArkitDoushiQi/ArkitDoushiQi/ArKit/VMArkit.swift b/ArkitDoushiQi/ArkitDoushiQi/ArKit/VMArkit.swift index 14a207b..c5cc548 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/ArKit/VMArkit.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/ArKit/VMArkit.swift @@ -13,10 +13,8 @@ import UIKit struct VMArkit { - static let offset = CGPoint(x: -0.458 , y: -0.3435 ) - static let direction = CGVector(dx: 0.1145, dy: 0.1145) - - //var msg:String = "" + static let offset = CGPoint(x: -0.458 * 0.3 , y: -0.3435 * 0.3 ) + static let direction = CGVector(dx: 0.1145 * 0.3, dy: 0.1145 * 0.3) var game:Game @@ -58,45 +56,46 @@ struct VMArkit { // -- Crée les pieces func generatePieces(_ anchor:AnchorEntity) { + // Position - X,Y,Z - for c in pieces.flatMap({ animal,values in return values }) + for var piece in pieces.flatMap({ animal,values in return values }) { var entity:Entity? - switch c.self.key { + switch piece.self.key { case .cat : - entity = try? Entity.load(named: "cat") + entity = try? Entity.loadModel(named: "cat") case .elephant : - entity = try? Entity.load(named: "elephant") + entity = try? Entity.loadModel(named: "elephant") case .dog : - entity = try? Entity.load(named: "dog") + entity = try? Entity.loadModel(named: "dog") case .leopard : - entity = try? Entity.load(named: "leopard") + entity = try? Entity.loadModel(named: "leopard") case .lion : - entity = try? Entity.load(named: "lion") + entity = try? Entity.loadModel(named: "lion") case .rat : - entity = try? Entity.load(named: "rat") + entity = try? Entity.loadModel(named: "rat") case .tiger : - entity = try? Entity.load(named: "tiger") + entity = try? Entity.loadModel(named: "tiger") case .wolf : - entity = try? Entity.load(named: "wolf") + entity = try? Entity.loadModel(named: "wolf") default: fatalError("Animal non compris") } + if let entityNotNull = entity { entityNotNull.scale = [0.3,0.3,0.3] anchor.addChild(entityNotNull) entityNotNull.position = SIMD3(0,0.02,0) - entityNotNull.generateCollisionShapes(recursive:true) - /* - self.installGestures([.all], for: entityNotNull as! Entity & HasCollision).forEach { gestureRecognizer in - gestureRecognizer.addTarget(self, action: #selector(handleGesture(_:)))}*/ - print("Piece \(c.self.key) a été crée !") + entityNotNull.generateCollisionShapes(recursive:true) + + piece.self.value = entityNotNull + print("Piece \(piece.self.key) a été crée !") } else { - print("La pièce \(c.self.key) n'a pas été crée !") + print("La pièce \(piece.self.key) n'a pas été crée !") } } @@ -132,7 +131,7 @@ struct VMArkit { return CGPoint(x: posX, y: posY) } - /* + // ------ Listener -------- // func defineListeners(){ self.game.addGameStartedListener { board in startGame()} @@ -158,9 +157,9 @@ struct VMArkit { //msg = "Game over !!" } func gameChange() { print("Game change !") } - func boardChange() { + func boardChange() { print("Board change !") - self.displayBoard(board: self.game.board) + self.displayBoard(self.game.board) } func moveChose(board:Board,move:Move,player:Player) { @@ -174,7 +173,7 @@ struct VMArkit { else { // Invalid print("Move invalid de \(player.id)") print("Move : \(move.description)") - self.displayBoard(board: self.game.board) + self.displayBoard(self.game.board) } print("------------") } @@ -189,5 +188,5 @@ struct VMArkit { } // ------------------------- // - */ + }