@@ -7,10 +7,15 @@ import CoreLocation
77 @objc optional func node( for annotation: Annotation ) -> SCNNode ?
88 @objc optional func session( _ session: ARSession , cameraDidChangeTrackingState camera: ARCamera )
99
10- @objc optional func MBRenderer( _ renderer: SCNSceneRenderer , time: TimeInterval )
11- @objc optional func MBRenderer( _ renderer: SCNSceneRenderer , addedNode: SCNNode , anchor: ARAnchor )
12- @objc optional func MBRenderer( _ renderer: SCNSceneRenderer , updatedNode: SCNNode , anchor: ARAnchor )
13- @objc optional func MBRenderer( _ renderer: SCNSceneRenderer , removedNode: SCNNode , anchor: ARAnchor )
10+ @objc optional func renderer( _ renderer: SCNSceneRenderer , time: TimeInterval )
11+
12+ @objc optional func renderer( _ renderer: SCNSceneRenderer , addedNode: SCNNode , mbAnchor anchor: MBARAnchor )
13+ @objc optional func renderer( _ renderer: SCNSceneRenderer , updatedNode: SCNNode , mbAnchor anchor: MBARAnchor )
14+ @objc optional func renderer( _ renderer: SCNSceneRenderer , removedNode: SCNNode , mbAnchor anchor: MBARAnchor )
15+
16+ @objc optional func renderer( _ renderer: SCNSceneRenderer , addedNode: SCNNode , arAnchor anchor: ARAnchor )
17+ @objc optional func renderer( _ renderer: SCNSceneRenderer , updatedNode: SCNNode , arAnchor anchor: ARAnchor )
18+ @objc optional func renderer( _ renderer: SCNSceneRenderer , removedNode: SCNNode , arAnchor anchor: ARAnchor )
1419
1520}
1621
@@ -92,21 +97,30 @@ extension AnnotationManager: ARSCNViewDelegate {
9297
9398
9499 public func renderer( _ renderer: SCNSceneRenderer , updateAtTime time: TimeInterval ) {
95- delegate? . MBRenderer! ( renderer, time: time)
100+ delegate? . renderer ? ( renderer, time: time)
96101 }
97-
102+
98103 public func renderer( _ renderer: SCNSceneRenderer , didUpdate node: SCNNode , for anchor: ARAnchor ) {
99- delegate? . MBRenderer!( renderer, updatedNode: node, anchor: anchor )
104+ if let anchor = anchor as? MBARAnchor {
105+ delegate? . renderer ? ( renderer, updatedNode: node, mbAnchor: anchor )
106+ } else {
107+ delegate? . renderer ? ( renderer, updatedNode: node, arAnchor: anchor )
108+ }
100109 }
101110
102111 public func renderer( _ renderer: SCNSceneRenderer , didRemove node: SCNNode , for anchor: ARAnchor ) {
103- delegate? . MBRenderer!( renderer, removedNode: node, anchor: anchor )
112+ if let anchor = anchor as? MBARAnchor {
113+ delegate? . renderer ? ( renderer, removedNode: node, mbAnchor: anchor )
114+ } else {
115+ delegate? . renderer ? ( renderer, removedNode: node, arAnchor: anchor )
116+ }
104117 }
105118
106119 public func renderer( _ renderer: SCNSceneRenderer , didAdd node: SCNNode , for anchor: ARAnchor ) {
107-
120+
108121 // Handle MBARAnchor
109122 if let anchor = anchor as? MBARAnchor {
123+
110124 let annotation = annotationsByAnchor [ anchor] !
111125
112126 var newNode : SCNNode !
@@ -117,26 +131,28 @@ extension AnnotationManager: ARSCNViewDelegate {
117131 } else {
118132 newNode = createDefaultNode ( )
119133 }
120-
134+
121135 if let calloutImage = annotation. calloutImage {
122136 let calloutNode = createCalloutNode ( with: calloutImage, node: newNode)
123137 newNode. addChildNode ( calloutNode)
124138 }
125139
126140 node. addChildNode ( newNode)
127-
128141 annotationsByNode [ newNode] = annotation
142+ delegate? . renderer ? ( renderer, addedNode: node, mbAnchor: anchor )
143+ } else {
144+ delegate? . renderer ? ( renderer, addedNode: node, arAnchor: anchor )
129145 }
130-
131- delegate? . MBRenderer!( renderer, addedNode: node, anchor: anchor )
132146 }
133147
134148 // MARK: - Utility methods for ARSCNViewDelegate
135149
136150 func createDefaultNode( ) -> SCNNode {
151+
137152 let geometry = SCNSphere ( radius: 0.2 )
138153 geometry. firstMaterial? . diffuse. contents = UIColor . red
139154 return SCNNode ( geometry: geometry)
155+
140156 }
141157
142158 func createCalloutNode( with image: UIImage , node: SCNNode ) -> SCNNode {
0 commit comments