Skip to content

Commit 15d030b

Browse files
author
Vasilii Muravev
committed
ATM Arrow
1 parent 240a52a commit 15d030b

File tree

3 files changed

+31
-13
lines changed

3 files changed

+31
-13
lines changed

RealDeal/Controllers/ViewController.swift

+28-13
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class ViewController: UIViewController, ARSCNViewDelegate {
2222
fileprivate var timer = Timer()
2323
fileprivate var offers = [Offer]()
2424
fileprivate var showedMerchants: [OffersMerchants] = []
25+
fileprivate var atmArrow: VirtualObject!
2526

2627
override func viewDidLoad() {
2728
super.viewDidLoad()
@@ -36,14 +37,11 @@ class ViewController: UIViewController, ARSCNViewDelegate {
3637
override func viewDidAppear(_ animated: Bool) {
3738
super.viewDidAppear(animated)
3839
setupSession()
39-
// @TODO: Temporary test deals icons
40-
// DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
41-
// self.add(.dealfree, position: SCNVector3(-1, 0, -3.8))
42-
// self.add(.deal10, position: SCNVector3(0, 0, -4))
43-
// self.add(.deal20, position: SCNVector3(1, 0, -3.8))
44-
// self.add(.deal30, position: SCNVector3(3, 0, -3))
45-
// self.add(.deal40, position: SCNVector3(5, 0, 0))
46-
// }
40+
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
41+
//guard let cameraTransform = self.session.currentFrame?.camera.transform else { return }
42+
//let cameraPosition = SCNVector3.positionFromTransform(cameraTransform)
43+
self.atmArrow = self.add(.atmarrow, position: SCNVector3(0, -0.3, -1), toCamera: true)
44+
}
4745
guard let logoView = logoView else { return }
4846
view.bringSubview(toFront: logoView)
4947
logoView.open(completion: { [weak logoView] (success) in
@@ -86,6 +84,8 @@ class ViewController: UIViewController, ARSCNViewDelegate {
8684
// MARK: - ARSessionDelegate
8785
extension ViewController: ARSessionDelegate {
8886
func session(_ session: ARSession, didUpdate frame: ARFrame) {
87+
self.atmArrow?.removeFromParentNode()
88+
self.atmArrow = self.add(.atmarrow, position: SCNVector3(0, -0.3, -1), toCamera: true)
8989
if requestLock { return }
9090
requestLock = true
9191
session.delegate = nil
@@ -125,7 +125,7 @@ extension ViewController: ARSessionDelegate {
125125
let offset: Float = 0.5
126126
let z1 = position.z - sin(angles.y + Float.pi/2) * defaultDistance - sin(angles.y + Float.pi) * offset
127127
let x1 = position.x + cos(angles.y + Float.pi/2) * defaultDistance + cos(angles.y + Float.pi) * offset
128-
let dealoffset: Float = 0.0
128+
let dealoffset: Float = -offset
129129
DispatchQueue.main.async {
130130
switch offerMerchant {
131131
case .walmart:
@@ -153,14 +153,15 @@ extension ViewController: ARSessionDelegate {
153153
fileprivate extension ViewController {
154154

155155
/// Adds SCNNode to the current scene.
156-
func add(_ deal: Deals, position: SCNVector3) {
156+
func add(_ deal: Deals, position: SCNVector3, toCamera: Bool = false) -> VirtualObject {
157+
let wrapperNode = VirtualObject(deal)
157158
DispatchQueue.global().async {
158-
let wrapperNode = VirtualObject(deal)
159159
DispatchQueue.main.async {
160-
self.setNewVirtualObjectPosition(position, wrapperNode)
160+
self.setNewVirtualObjectPosition(position, wrapperNode, toCanera: toCamera)
161161
self.mainNode.addChildNode(wrapperNode)
162162
}
163163
}
164+
return wrapperNode
164165
}
165166

166167
func setupSceneView() {
@@ -203,7 +204,21 @@ fileprivate extension ViewController {
203204
mainNode.removeFromParentNode()
204205
}
205206

206-
func setNewVirtualObjectPosition(_ pos: SCNVector3, _ object: SCNNode) {
207+
func setNewVirtualObjectPosition(_ pos: SCNVector3, _ object: SCNNode, toCanera: Bool = false) {
208+
if toCanera {
209+
object.position = pos
210+
// if pos == 0 {
211+
// return
212+
// }
213+
// let tgA: Double = Double(cameraToPosition.z) / Double(cameraToPosition.x)
214+
// let cornerB = Double.pi / 2 - atan(tgA)
215+
// if cameraToPosition.x < 0 {
216+
// object.eulerAngles = SCNVector3(0, cornerB, 0)
217+
// } else {
218+
// object.eulerAngles = SCNVector3(0, Double.pi + cornerB, 0)
219+
// }
220+
return
221+
}
207222
guard let cameraTransform = session.currentFrame?.camera.transform else {
208223
object.position = pos
209224
return

RealDeal/Models/EntityModels/VirtualObject.swift

+3
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ enum Deals: String {
5050
case deal20L = "deal20L.scn"
5151
case deal30L = "deal30L.scn"
5252
case deal40L = "deal40L.scn"
53+
case atmarrow = "atmarrow.scn"
5354

5455
func nextOne() -> Deals {
5556
switch self {
@@ -73,6 +74,8 @@ enum Deals: String {
7374
return .deal40
7475
case .dealfreeL:
7576
return .dealfree
77+
case .atmarrow:
78+
return self
7679
}
7780
}
7881
}

RealDeal/art.scnassets/atmarrow.scn

6 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)