Skip to content

Commit

Permalink
change implementation approach
Browse files Browse the repository at this point in the history
  • Loading branch information
farandal committed Oct 26, 2017
1 parent 0084c44 commit c7dd03b
Showing 1 changed file with 29 additions and 13 deletions.
42 changes: 29 additions & 13 deletions MapboxARKit/AnnotationManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,15 @@ import CoreLocation
@objc optional func node(for annotation: Annotation) -> SCNNode?
@objc optional func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera)

@objc optional func MBRenderer(_ renderer: SCNSceneRenderer, time: TimeInterval)
@objc optional func MBRenderer(_ renderer: SCNSceneRenderer, addedNode: SCNNode, anchor: ARAnchor)
@objc optional func MBRenderer(_ renderer: SCNSceneRenderer, updatedNode: SCNNode, anchor: ARAnchor)
@objc optional func MBRenderer(_ renderer: SCNSceneRenderer, removedNode: SCNNode, anchor: ARAnchor)
@objc optional func renderer(_ renderer: SCNSceneRenderer, time: TimeInterval)

@objc optional func renderer(_ renderer: SCNSceneRenderer, addedNode: SCNNode, mbAnchor anchor: MBARAnchor)
@objc optional func renderer(_ renderer: SCNSceneRenderer, updatedNode: SCNNode, mbAnchor anchor: MBARAnchor)
@objc optional func renderer(_ renderer: SCNSceneRenderer, removedNode: SCNNode, mbAnchor anchor: MBARAnchor)

@objc optional func renderer(_ renderer: SCNSceneRenderer, addedNode: SCNNode, arAnchor anchor: ARAnchor)
@objc optional func renderer(_ renderer: SCNSceneRenderer, updatedNode: SCNNode, arAnchor anchor: ARAnchor)
@objc optional func renderer(_ renderer: SCNSceneRenderer, removedNode: SCNNode, arAnchor anchor: ARAnchor)

}

Expand Down Expand Up @@ -92,21 +97,30 @@ extension AnnotationManager: ARSCNViewDelegate {


public func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
delegate?.MBRenderer!(renderer, time: time)
delegate?.renderer?(renderer, time: time)
}

public func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
delegate?.MBRenderer!(renderer, updatedNode: node,anchor: anchor )
if let anchor = anchor as? MBARAnchor {
delegate?.renderer?(renderer, updatedNode: node, mbAnchor: anchor )
} else {
delegate?.renderer?(renderer, updatedNode: node,arAnchor: anchor )
}
}

public func renderer(_ renderer: SCNSceneRenderer, didRemove node: SCNNode, for anchor: ARAnchor) {
delegate?.MBRenderer!(renderer, removedNode: node,anchor: anchor )
if let anchor = anchor as? MBARAnchor {
delegate?.renderer?(renderer, removedNode: node,mbAnchor: anchor )
} else {
delegate?.renderer?(renderer, removedNode: node,arAnchor: anchor )
}
}

public func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

// Handle MBARAnchor
if let anchor = anchor as? MBARAnchor {

let annotation = annotationsByAnchor[anchor]!

var newNode: SCNNode!
Expand All @@ -117,26 +131,28 @@ extension AnnotationManager: ARSCNViewDelegate {
} else {
newNode = createDefaultNode()
}

if let calloutImage = annotation.calloutImage {
let calloutNode = createCalloutNode(with: calloutImage, node: newNode)
newNode.addChildNode(calloutNode)
}

node.addChildNode(newNode)

annotationsByNode[newNode] = annotation
delegate?.renderer?(renderer, addedNode: node,mbAnchor: anchor )
} else {
delegate?.renderer?(renderer, addedNode: node, arAnchor: anchor )

This comment has been minimized.

Copy link
@ChrisOllie

ChrisOllie Nov 26, 2017

Help

}

delegate?.MBRenderer!(renderer, addedNode: node,anchor: anchor )
}

// MARK: - Utility methods for ARSCNViewDelegate

func createDefaultNode() -> SCNNode {

let geometry = SCNSphere(radius: 0.2)
geometry.firstMaterial?.diffuse.contents = UIColor.red
return SCNNode(geometry: geometry)

}

func createCalloutNode(with image: UIImage, node: SCNNode) -> SCNNode {
Expand Down

0 comments on commit c7dd03b

Please sign in to comment.