pull/26/head
enzo 10 months ago
parent 5144dfa24d
commit 8956bc2838

@ -37,21 +37,30 @@ class ArKitView : ARView {
return anchor 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() var initialTransform: Transform = Transform()
@objc private func handleGesture(_ recognizer: UIGestureRecognizer) { @objc private func handleGesture(_ recognizer: UIGestureRecognizer) {
guard let translationGesture = recognizer as? EntityTranslationGestureRecognizer, let entity = translationGesture.entity else { return } guard let translationGesture = recognizer as? EntityTranslationGestureRecognizer, let entity = translationGesture.entity else { return }
switch translationGesture.state { switch translationGesture.state {
case .began: case .began:
self.initialTransform = entity.transform self.initialTransform = entity.transform
case .ended: case .ended:
entity.move(to: initialTransform, relativeTo: entity.parent, duration: 1) entity.move(to: initialTransform, relativeTo: entity.parent, duration: 1)
default: default:
break break
} }
} }
//-------------------------//
} }

@ -21,6 +21,7 @@ struct ArKitViewRepresentable : UIViewRepresentable {
let arView = ArKitView() let arView = ArKitView()
let anchor = arView.defineAnchors() let anchor = arView.defineAnchors()
vm.setup(anchor) vm.setup(anchor)
arView.addGesture(vm.pieces)
return arView return arView
} }

@ -15,18 +15,9 @@ struct ContentArkit: View {
var body: some View { var body: some View {
VStack { VStack {
Text("toto") 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)!)) ArKitViewRepresentable(try! Game(withRules: ClassicRules(), andPlayer1: RandomPlayer(withName: "Bot1", andId: .player1)!, andPlayer2: RandomPlayer(withName: "Bot2", andId: .player2)!))
} }
} }
} }

@ -13,10 +13,8 @@ import UIKit
struct VMArkit { struct VMArkit {
static let offset = CGPoint(x: -0.458 , y: -0.3435 ) static let offset = CGPoint(x: -0.458 * 0.3 , y: -0.3435 * 0.3 )
static let direction = CGVector(dx: 0.1145, dy: 0.1145) static let direction = CGVector(dx: 0.1145 * 0.3, dy: 0.1145 * 0.3)
//var msg:String = ""
var game:Game var game:Game
@ -58,45 +56,46 @@ struct VMArkit {
// -- Crée les pieces // -- Crée les pieces
func generatePieces(_ anchor:AnchorEntity) { func generatePieces(_ anchor:AnchorEntity) {
// Position - X,Y,Z // 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? var entity:Entity?
switch c.self.key { switch piece.self.key {
case .cat : case .cat :
entity = try? Entity.load(named: "cat") entity = try? Entity.loadModel(named: "cat")
case .elephant : case .elephant :
entity = try? Entity.load(named: "elephant") entity = try? Entity.loadModel(named: "elephant")
case .dog : case .dog :
entity = try? Entity.load(named: "dog") entity = try? Entity.loadModel(named: "dog")
case .leopard : case .leopard :
entity = try? Entity.load(named: "leopard") entity = try? Entity.loadModel(named: "leopard")
case .lion : case .lion :
entity = try? Entity.load(named: "lion") entity = try? Entity.loadModel(named: "lion")
case .rat : case .rat :
entity = try? Entity.load(named: "rat") entity = try? Entity.loadModel(named: "rat")
case .tiger : case .tiger :
entity = try? Entity.load(named: "tiger") entity = try? Entity.loadModel(named: "tiger")
case .wolf : case .wolf :
entity = try? Entity.load(named: "wolf") entity = try? Entity.loadModel(named: "wolf")
default: default:
fatalError("Animal non compris") fatalError("Animal non compris")
} }
if let entityNotNull = entity { if let entityNotNull = entity {
entityNotNull.scale = [0.3,0.3,0.3] entityNotNull.scale = [0.3,0.3,0.3]
anchor.addChild(entityNotNull) anchor.addChild(entityNotNull)
entityNotNull.position = SIMD3<Float>(0,0.02,0) entityNotNull.position = SIMD3<Float>(0,0.02,0)
entityNotNull.generateCollisionShapes(recursive:true) entityNotNull.generateCollisionShapes(recursive:true)
/* piece.self.value = entityNotNull
self.installGestures([.all], for: entityNotNull as! Entity & HasCollision).forEach { gestureRecognizer in print("Piece \(piece.self.key) a été crée !")
gestureRecognizer.addTarget(self, action: #selector(handleGesture(_:)))}*/
print("Piece \(c.self.key) a été crée !")
} }
else { 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) return CGPoint(x: posX, y: posY)
} }
/*
// ------ Listener -------- // // ------ Listener -------- //
func defineListeners(){ func defineListeners(){
self.game.addGameStartedListener { board in startGame()} self.game.addGameStartedListener { board in startGame()}
@ -158,9 +157,9 @@ struct VMArkit {
//msg = "Game over !!" //msg = "Game over !!"
} }
func gameChange() { print("Game change !") } func gameChange() { print("Game change !") }
func boardChange() { func boardChange() {
print("Board change !") print("Board change !")
self.displayBoard(board: self.game.board) self.displayBoard(self.game.board)
} }
func moveChose(board:Board,move:Move,player:Player) { func moveChose(board:Board,move:Move,player:Player) {
@ -174,7 +173,7 @@ struct VMArkit {
else { // Invalid else { // Invalid
print("Move invalid de \(player.id)") print("Move invalid de \(player.id)")
print("Move : \(move.description)") print("Move : \(move.description)")
self.displayBoard(board: self.game.board) self.displayBoard(self.game.board)
} }
print("------------") print("------------")
} }
@ -189,5 +188,5 @@ struct VMArkit {
} }
// ------------------------- // // ------------------------- //
*/
} }

Loading…
Cancel
Save