diff --git a/.jazzy.yaml b/.jazzy.yaml new file mode 100644 index 00000000..b6a9000d --- /dev/null +++ b/.jazzy.yaml @@ -0,0 +1,13 @@ +clean: true +output: docs +min_acl: internal + +author: ProjectDent contributors +author_url: https://github.com/ProjectDent/ARKit-CoreLocation/graphs/contributors + +module: ARCL +github_url: https://github.com/ProjectDent/ARKit-CoreLocation + +readme: readme.md + +podspec: ARCL.podspec diff --git a/docs/Classes.html b/docs/Classes.html new file mode 100644 index 00000000..79fb4817 --- /dev/null +++ b/docs/Classes.html @@ -0,0 +1,432 @@ + + + + Classes Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Classes

+

The following classes are available globally.

+ +
+
+
+
    +
  • +
    + + + + LocationManager + +
    +
    +
    +
    +
    +
    +

    Handles retrieving the location and heading from CoreLocation +Does not contain anything related to ARKit or advanced location

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class LocationManager : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SceneLocationEstimate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class SceneLocationEstimate
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SceneLocationManager + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class SceneLocationManager
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
    +
  • +
    + + + + AnnotationNode + +
    +
    +
    +
    +
    +
    +

    This node type enables the client to have access to the view or image that +was used to initialize the LocationAnnotationNode.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open class AnnotationNode : SCNNode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LocationNode + +
    +
    +
    +
    +
    +
    +

    A location node can be added to a scene using a coordinate.

    + +

    Its scale and position should not be adjusted, as these are used for scene +layout purposes. To adjust the scale and position of items within a node, +you can add them to a child node and adjust them there

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open class LocationNode : SCNNode
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + PolylineNode + +
    +
    +
    +
    +
    +
    +

    A Node that is used to show directions in AR-CL.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class PolylineNode : LocationNode
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SceneLocationView + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open class SceneLocationView : ARSCNView
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/AnnotationNode.html b/docs/Classes/AnnotationNode.html new file mode 100644 index 00000000..d3179059 --- /dev/null +++ b/docs/Classes/AnnotationNode.html @@ -0,0 +1,320 @@ + + + + AnnotationNode Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

AnnotationNode

+
+
+
open class AnnotationNode : SCNNode
+ +
+
+

This node type enables the client to have access to the view or image that +was used to initialize the LocationAnnotationNode.

+ +
+
+
+
    +
  • +
    + + + + view + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var view: UIView?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var image: UIImage?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layer + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layer: CALayer?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(view: UIView?, image: UIImage?, layer: CALayer? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/LocationAnnotationNode.html b/docs/Classes/LocationAnnotationNode.html new file mode 100644 index 00000000..b231e48c --- /dev/null +++ b/docs/Classes/LocationAnnotationNode.html @@ -0,0 +1,382 @@ + + + + LocationAnnotationNode Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationAnnotationNode

+
+
+
open class LocationAnnotationNode : LocationNode
+ +
+
+

A LocationNode which has an attached AnnotationNode.

+ +
+
+
+
    +
  • +
    + + + + annotationNode + +
    +
    +
    +
    +
    +
    +

    Subnodes and adjustments should be applied to this subnode +Required to allow scaling at the same time as having a 2D ‘billboard’ appearance

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let annotationNode: AnnotationNode
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Parameter to raise or lower the label’s rendering position relative to the node’s actual project location. +The default value of 1.1 places the label at a pleasing height above the node. +To draw the label exactly on the true location, use a value of 0. To draw it below the true location, +use a negative value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var annotationHeightAdjustmentFactor: Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(location:image:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(location: CLLocation?, image: UIImage)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(location:view:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience init(location: CLLocation?, view: UIView)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(location:layer:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(location: CLLocation?, layer: CALayer)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Note: we repeat code from LocationNode‘s implementation of this function. Is this because of the use of SCNTransaction +to wrap the changes? It’s legal to nest the calls, should consider this if any more changes to +LocationNode’s implementation are needed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    override func updatePositionAndScale(setup: Bool = false, scenePosition: SCNVector3?,
    +                                     locationNodeLocation nodeLocation: CLLocation,
    +                                     locationManager: SceneLocationManager,
    +                                     onCompletion: (() -> Void))
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/LocationManager.html b/docs/Classes/LocationManager.html new file mode 100644 index 00000000..24e07bd2 --- /dev/null +++ b/docs/Classes/LocationManager.html @@ -0,0 +1,466 @@ + + + + LocationManager Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationManager

+
+
+
public class LocationManager : NSObject
+ +
+
+

Handles retrieving the location and heading from CoreLocation +Does not contain anything related to ARKit or advanced location

+ +
+
+
+
    +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    weak var delegate: LocationManagerDelegate?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currentLocation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var currentLocation: CLLocation?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + heading + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    private(set) public var heading: CLLocationDirection?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + headingAccuracy + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    private(set) public var headingAccuracy: CLLocationDirection?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    override init()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestAuthorization()
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationManagerShouldDisplayHeadingCalibration(_ manager: CLLocationManager) -> Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/LocationNode.html b/docs/Classes/LocationNode.html new file mode 100644 index 00000000..8ee3d16a --- /dev/null +++ b/docs/Classes/LocationNode.html @@ -0,0 +1,618 @@ + + + + LocationNode Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationNode

+
+
+
open class LocationNode : SCNNode
+ +
+
+

A location node can be added to a scene using a coordinate.

+ +

Its scale and position should not be adjusted, as these are used for scene +layout purposes. To adjust the scale and position of items within a node, +you can add them to a child node and adjust them there

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    This seems like it should be a bug? Why is it hardcoded? Why would it ever be different from the scene’s setting?

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var locationEstimateMethod: LocationEstimateMethod
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + location + +
    +
    +
    +
    +
    +
    +

    Location can be changed and confirmed later by SceneLocationView.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var location: CLLocation!
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tag + +
    +
    +
    +
    +
    +
    +

    A general purpose tag that can be used to find nodes already added to a SceneLocationView

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tag: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationConfirmed + +
    +
    +
    +
    +
    +
    +

    Whether the location of the node has been confirmed. +This is automatically set to true when you create a node using a location. +Otherwise, this is false, and becomes true once the user moves 100m away from the node, +except when the locationEstimateMethod is set to use Core Location data only, +as then it becomes true immediately.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var locationConfirmed: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether a node’s position should be adjusted on an ongoing basis +based on its given location. +This only occurs when a node’s location is within 100m of the user. +Adjustment doesn’t apply to nodes without a confirmed location. +When this is set to false, the result is a smoother appearance. +When this is set to true, this means a node may appear to jump around +as the user’s location estimates update, +but the position is generally more accurate. +Defaults to true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var continuallyAdjustNodePositionWhenWithinRange: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether a node’s position and scale should be updated automatically on a continual basis. +This should only be set to false if you plan to manually update position and scale +at regular intervals. You can do this with SceneLocationView‘s updatePositionOfLocationNode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var continuallyUpdatePositionAndScale: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether the node should be scaled relative to its distance from the camera +Default value (false) scales it to visually appear at the same size no matter the distance +Setting to true causes annotation nodes to scale like a regular node +Scaling relative to distance may be useful with local navigation-based uses +For landmarks in the distance, the default is correct

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var scaleRelativeToDistance: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ignoreAltitude + +
    +
    +
    +
    +
    +
    +

    Whether the node should appear at the same altitude of the user +May be useful when you don’t know the real altitude of the node +When set to true, the node will stay at the same altitude of the user

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var ignoreAltitude: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scalingScheme + +
    +
    +
    +
    +
    +
    +

    The scheme to use for scaling

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var scalingScheme: ScalingScheme
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(location:tag:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(location: CLLocation?, tag: String? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + location(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    internal func location(_ bestLocationEstimate: SceneLocationEstimate?) -> CLLocation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    internal func adjustedDistance(setup: Bool, position: SCNVector3, locationNodeLocation: CLLocation,
    +                               locationManager: SceneLocationManager) -> CLLocationDistance
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    See LocationAnnotationNode‘s override of this function. Because it doesn’t invoke super’s version, any changes +made in this file must be repeated in LocationAnnotationNode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func updatePositionAndScale(setup: Bool = false, scenePosition: SCNVector3?, locationNodeLocation nodeLocation: CLLocation,
    +                            locationManager: SceneLocationManager, onCompletion: (() -> Void))
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Converts distance from meters to SCNKit rendering order +Constant multiplier eliminates flicker caused by slight distance variations +Nodes with greater rendering orders are rendered last

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func renderingOrder(fromDistance distance: CLLocationDistance) -> Int
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/PolylineNode.html b/docs/Classes/PolylineNode.html new file mode 100644 index 00000000..f0451c7c --- /dev/null +++ b/docs/Classes/PolylineNode.html @@ -0,0 +1,405 @@ + + + + PolylineNode Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

PolylineNode

+
+
+
public class PolylineNode : LocationNode
+ +
+
+

A Node that is used to show directions in AR-CL.

+ +
+
+
+
    +
  • +
    + + + + locationNodes + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var locationNodes: [LocationNode]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + polyline + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let polyline: MKPolyline
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + altitude + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let altitude: CLLocationDistance
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + boxBuilder + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let boxBuilder: BoxBuilder
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a PolylineNode from the provided polyline, altitude (which is assumed to be uniform +for all of the points) and an optional SCNBox to use as a prototype for the location boxes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(polyline: MKPolyline,
    +            altitude: CLLocationDistance,
    +            tag: String? = nil,
    +            boxBuilder: BoxBuilder? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + polyline + + +
    +

    The polyline that we’ll be creating location nodes for.

    +
    +
    + + altitude + + +
    +

    The uniform altitude to use to show the location nodes.

    +
    +
    + + tag + + +
    +

    a String attribute to identify the node in the scene (e.g when it’s touched)

    +
    +
    + + boxBuilder + + +
    +

    A block that will customize how a box is built.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/SceneLocationEstimate.html b/docs/Classes/SceneLocationEstimate.html new file mode 100644 index 00000000..eff739c4 --- /dev/null +++ b/docs/Classes/SceneLocationEstimate.html @@ -0,0 +1,323 @@ + + + + SceneLocationEstimate Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationEstimate

+
+
+
public class SceneLocationEstimate
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + location + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let location: CLLocation
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + position + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let position: SCNVector3
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init(location: CLLocation, position: SCNVector3)
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Compares the location’s position to another position, to determine the translation between them

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationTranslation(to position: SCNVector3) -> LocationTranslation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Translates the location by comparing with a given position

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func translatedLocation(to position: SCNVector3) -> CLLocation
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes/SceneLocationManager.html b/docs/Classes/SceneLocationManager.html new file mode 100644 index 00000000..e16184e7 --- /dev/null +++ b/docs/Classes/SceneLocationManager.html @@ -0,0 +1,629 @@ + + + + SceneLocationManager Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationManager

+
+
+
public final class SceneLocationManager
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + sceneLocationDelegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    weak var sceneLocationDelegate: SceneLocationManagerDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var locationEstimateMethod: LocationEstimateMethod
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationManager + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let locationManager: LocationManager
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var sceneLocationEstimates: [SceneLocationEstimate]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateEstimatesTimer + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var updateEstimatesTimer: Timer?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bestLocationEstimate + +
    +
    +
    +
    +
    +
    +

    The best estimation of location that has been taken +This takes into account horizontal accuracy, and the time at which the estimation was taken +favouring the most accurate, and then the most recent result. +This doesn’t indicate where the user currently is.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var bestLocationEstimate: SceneLocationEstimate? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currentLocation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currentLocation: CLLocation? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + deinit + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    deinit
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateLocationData() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +func updateLocationData()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Adds a scene location estimate based on current time, camera position and location from location manager

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addSceneLocationEstimate(location: CLLocation)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeOldLocationEstimates()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeOldLocationEstimates(currentScenePosition: SCNVector3)
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + run() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func run()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pause() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func pause()
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/Classes/SceneLocationView.html b/docs/Classes/SceneLocationView.html new file mode 100644 index 00000000..d31b0527 --- /dev/null +++ b/docs/Classes/SceneLocationView.html @@ -0,0 +1,2336 @@ + + + + SceneLocationView Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationView

+
+
+
open class SceneLocationView : ARSCNView
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + sceneLimit + +
    +
    +
    +
    +
    +
    +

    The limit to the scene, in terms of what data is considered reasonably accurate. +Measured in meters.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static let sceneLimit: Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ARTrackingType + +
    +
    +
    +
    +
    +
    +

    The type of tracking to use.

    + +
      +
    • orientationTracking: Informs the SceneLocationView to use Device Orientation tracking only. +Useful when your nodes are all CLLocation based, and are not synced to real world planes +See Apple’s documentation
    • +
    • worldTracking: Informs the SceneLocationView to use a World Tracking Configuration. +Useful when you have nodes that attach themselves to real world planes +See Apple’s documentation
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ARTrackingType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationViewDelegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var locationViewDelegate: SceneLocationViewDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var locationEstimateDelegate: SceneLocationViewEstimateDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var locationNodeTouchDelegate: LNTouchDelegate?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sceneTrackingDelegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var sceneTrackingDelegate: SceneTrackingDelegate?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sceneLocationManager + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let sceneLocationManager: SceneLocationManager
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    Addresses Issue #196 - +Delegate issue when assigned to self (no location nodes render). If the user +tries to set the delegate, perform an assertionFailure and tell them to set the arViewDelegate instead.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open override var delegate: ARSCNViewDelegate? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + arViewDelegate + +
    +
    +
    +
    +
    +
    +

    If you wish to receive delegate ARSCNViewDelegate events, use this instead of the delegate property. +The delegate property is reserved for this class itself and trying to set it will result in an assertionFailure +and in production, things just won’t work as you expect.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var arViewDelegate: ARSCNViewDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The method to use for determining locations. +Not advisable to change this as the scene is ongoing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var locationEstimateMethod: LocationEstimateMethod { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + showAxesNode + +
    +
    +
    +
    +
    +
    +

    When set to true, displays an axes node at the start of the scene

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var showAxesNode: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sceneNode + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var sceneNode: SCNNode? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + orientToTrueNorth + +
    +
    +
    +
    +
    +
    +

    Only to be overrided if you plan on manually setting True North. +When true, sets up the scene to face what the device considers to be True North. +This can be inaccurate, hence the option to override it. +The functions for altering True North can be used irrespective of this value, +but if the scene is oriented to true north, it will update without warning, +thus affecting your alterations. +The initial value of this property is respected.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var orientToTrueNorth: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + showFeaturePoints + +
    +
    +
    +
    +
    +
    +

    Whether debugging feature points should be displayed. +Defaults to false

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var showFeaturePoints: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + currentScenePosition + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currentScenePosition: SCNVector3? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currentEulerAngles + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currentEulerAngles: SCNVector3? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationNodes + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var locationNodes: [LocationNode]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + polylineNodes + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var polylineNodes: [PolylineNode]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + arTrackingType + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var arTrackingType: SceneLocationView.ARTrackingType
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    internal var didFetchInitialLocation: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + + +

Setup

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    This initializer allows you to specify the type of tracking configuration (defaults to world tracking) as well as +some other optional values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience init(trackingType: ARTrackingType = .worldTracking, frame: CGRect = .zero, options: [String : Any]? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + trackingType + + +
    +

    The type of AR Tracking configuration (defaults to world tracking).

    +
    +
    + + frame + + +
    +

    The CGRect for the frame (defaults to .zero).

    +
    +
    + + options + + +
    +

    The rendering options for the SCNView.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(frame:options:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override init(frame: CGRect, options: [String : Any]? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + resetSceneHeading() + +
    +
    +
    +
    +
    +
    +

    Resets the scene heading to 0

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func resetSceneHeading()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func confirmLocationOfLocationNode(_ locationNode: LocationNode)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Gives the best estimate of the location of a node

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationOfLocationNode(_ locationNode: LocationNode) -> CLLocation
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + renderer(_:nodeFor:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

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

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, willUpdate node: SCNNode, for anchor: ARAnchor)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didRemove node: SCNNode, for anchor: ARAnchor)
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func session(_ session: ARSession, didFailWithError error: Error)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sessionWasInterrupted(_ session: ARSession)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sessionInterruptionEnded(_ session: ARSession)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sessionShouldAttemptRelocalization(_ session: ARSession) -> Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func session(_ session: ARSession, didOutputAudioSampleBuffer audioSampleBuffer: CMSampleBuffer)
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didApplyAnimationsAtTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didSimulatePhysicsAtTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didApplyConstraintsAtTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + run() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func run()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pause() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func pause()
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    iOS can be inaccurate when setting true north +The scene is oriented to true north, and will update its heading when it gets a more accurate reading +You can disable this through setting the +These functions provide manual overriding of the scene heading, +if you have a more precise idea of where True North is +The goal is for the True North orientation problems to be resolved +At which point these functions would no longer be useful +Moves the scene heading clockwise by 1 degree +Intended for correctional purposes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func moveSceneHeadingClockwise()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Moves the scene heading anti-clockwise by 1 degree +Intended for correctional purposes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func moveSceneHeadingAntiClockwise()
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Upon being added, a node’s location, locationConfirmed and position may be modified and should not be changed externally. +Silently fails and returns without adding the node to the scene if any of currentScenePosition, +sceneLocationManager.currentLocation, or sceneNode is nil.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addLocationNodeForCurrentPosition(locationNode: LocationNode)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Each node’s addition to the scene can silently fail; See addLocationNodeForCurrentPosition(locationNode:).

    + +

    Why would we want to add multiple nodes at the current position?

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addLocationNodesForCurrentPosition(locationNodes: [LocationNode])
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Silently fails and returns without adding the node unlesslocation is not nil and locationConfirmed is true. +Upon being added, a node’s position will be modified internally and should not be changed externally. +location will not be modified, but taken as accurate.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addLocationNodeWithConfirmedLocation(locationNode: LocationNode)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +func sceneLocationViewTouched(sender: UITapGestureRecognizer)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Each node’s addition to the scene can silently fail; See addLocationNodeWithConfirmedLocation(locationNode:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addLocationNodesWithConfirmedLocation(locationNodes: [LocationNode])
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + removeAllNodes() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeAllNodes()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determine if scene contains a node with the specified tag

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sceneContainsNodeWithTag(_ tag: String) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + tag + + +
    +

    tag text

    +
    +
    +
    +
    +

    Return Value

    +

    true if a LocationNode with the tag exists; false otherwise

    +
    +
    +
    +
  • +
  • +
    + + + + findNodes(tagged:) + +
    +
    +
    +
    +
    +
    +

    Find all location nodes in the scene tagged with tag

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func findNodes(tagged tag: String) -> [LocationNode]
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + tag + + +
    +

    The tag text for which to search nodes.

    +
    +
    +
    +
    +

    Return Value

    +

    A list of all matching tags

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeLocationNode(locationNode: LocationNode)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeLocationNodes(locationNodes: [LocationNode])
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Adds routes to the scene and lets you specify the geometry prototype for the box. +Note: You can provide your own SCNBox prototype to base the direction nodes from.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addRoutes(routes: [MKRoute], boxBuilder: BoxBuilder? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + routes + + +
    +

    The MKRoute of directions

    +
    +
    + + boxBuilder + + +
    +

    A block that will customize how a box is built.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Adds polylines to the scene and lets you specify the geometry prototype for the box. +Note: You can provide your own SCNBox prototype to base the direction nodes from.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addRoutes(polylines: [AttributedType<MKPolyline>],
    +               Δaltitude: CLLocationDistance = -2.0,
    +               boxBuilder: BoxBuilder? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + polylines + + +
    +

    The list of attributed MKPolyline to rendered

    +
    +
    + + Δaltitude + + +
    +

    difference between box and current user altitude

    +
    +
    + + boxBuilder + + +
    +

    A block that will customize how a box is built.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + removeRoutes(routes:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeRoutes(routes: [MKRoute])
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Adds polylines to the scene and lets you specify the geometry prototype for the box. +Note: You can provide your own SCNBox prototype to base the direction nodes from.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addPolylines(polylines: [MKPolyline], boxBuilder: BoxBuilder? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + polylines + + +
    +

    A set of MKPolyline.

    +
    +
    + + boxBuilder + + +
    +

    A block that will customize how a box is built.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removePolylines(polylines: [MKPolyline])
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/Classes/SceneLocationView/ARTrackingType.html b/docs/Classes/SceneLocationView/ARTrackingType.html new file mode 100644 index 00000000..34273110 --- /dev/null +++ b/docs/Classes/SceneLocationView/ARTrackingType.html @@ -0,0 +1,247 @@ + + + + ARTrackingType Enumeration Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

ARTrackingType

+
+
+
public enum ARTrackingType
+ +
+
+

The type of tracking to use.

+ +
    +
  • orientationTracking: Informs the SceneLocationView to use Device Orientation tracking only. +Useful when your nodes are all CLLocation based, and are not synced to real world planes +See Apple’s documentation
  • +
  • worldTracking: Informs the SceneLocationView to use a World Tracking Configuration. +Useful when you have nodes that attach themselves to real world planes +See Apple’s documentation
  • +
+ +
+
+
+
    +
  • +
    + + + + orientationTracking + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case orientationTracking
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + worldTracking + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case worldTracking
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Enums.html b/docs/Enums.html new file mode 100644 index 00000000..268e7e60 --- /dev/null +++ b/docs/Enums.html @@ -0,0 +1,250 @@ + + + + Enumerations Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Different methods which can be used when determining locations (such as the user’s location).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LocationEstimateMethod
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ScalingScheme + +
    +
    +
    +
    +
    +
    +

    A set of schemes that can be used to scale a LocationNode.

    + +

    Values:

    + +
      +
    • normal: The default way of scaling, Hardcoded value out to 3000 meters, and then 0.75 that factor beyond 3000 m.
    • +
    • tiered (threshold, scale): Return 1.0 at distance up to threshold meters, or scale beyond.
    • +
    • doubleTiered (firstThreshold, firstCale, secondThreshold, secondScale): A way of scaling everything +beyond 2 specific distances at two specific scales.
    • +
    • linear (threshold): linearly scales an object based on its distance.
    • +
    • linearBuffer (threshold, buffer): linearly scales an object based on its distance as long as it is +further than the buffer distance, otherwise it just returns 100% scale.
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ScalingScheme
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Enums/LocationEstimateMethod.html b/docs/Enums/LocationEstimateMethod.html new file mode 100644 index 00000000..5e7bc8e7 --- /dev/null +++ b/docs/Enums/LocationEstimateMethod.html @@ -0,0 +1,240 @@ + + + + LocationEstimateMethod Enumeration Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationEstimateMethod

+
+
+
public enum LocationEstimateMethod
+ +
+
+

Different methods which can be used when determining locations (such as the user’s location).

+ +
+
+
+
    +
  • +
    + + + + coreLocationDataOnly + +
    +
    +
    +
    +
    +
    +

    Only uses Core Location data. +Not suitable for adding nodes using current position, which requires more precision.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case coreLocationDataOnly
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + mostRelevantEstimate + +
    +
    +
    +
    +
    +
    +

    Combines knowledge about movement through the AR world with +the most relevant Core Location estimate (based on accuracy and time).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case mostRelevantEstimate
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Enums/ScalingScheme.html b/docs/Enums/ScalingScheme.html new file mode 100644 index 00000000..473d0ebd --- /dev/null +++ b/docs/Enums/ScalingScheme.html @@ -0,0 +1,359 @@ + + + + ScalingScheme Enumeration Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

ScalingScheme

+
+
+
public enum ScalingScheme
+ +
+
+

A set of schemes that can be used to scale a LocationNode.

+ +

Values:

+ +
    +
  • normal: The default way of scaling, Hardcoded value out to 3000 meters, and then 0.75 that factor beyond 3000 m.
  • +
  • tiered (threshold, scale): Return 1.0 at distance up to threshold meters, or scale beyond.
  • +
  • doubleTiered (firstThreshold, firstCale, secondThreshold, secondScale): A way of scaling everything +beyond 2 specific distances at two specific scales.
  • +
  • linear (threshold): linearly scales an object based on its distance.
  • +
  • linearBuffer (threshold, buffer): linearly scales an object based on its distance as long as it is +further than the buffer distance, otherwise it just returns 100% scale.
  • +
+ +
+
+
+
    +
  • +
    + + + + normal + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case normal
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case tiered(threshold: Double, scale: Float)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case doubleTiered(firstThreshold: Double, firstScale: Float, secondThreshold: Double, secondScale: Float)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + linear(threshold:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case linear(threshold: Double)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case linearBuffer(threshold: Double, buffer: Double)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + getScheme() + +
    +
    +
    +
    +
    +
    +

    Returns a closure to compute appropriate scale factor based on the current value of self (a ScalingSchee). +The closure accepts two parameters and returns the scale factor to apply to an AnnotationNode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func getScheme() -> ((_ distance: Double, _ adjustedDistance: Double) -> Float)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions.html b/docs/Extensions.html new file mode 100644 index 00000000..7e86ccfc --- /dev/null +++ b/docs/Extensions.html @@ -0,0 +1,479 @@ + + + + Extensions Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Extensions

+

The following extensions are available globally.

+ +
+
+
+
    +
  • +
    + + + + Double + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Float + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension Float
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Int + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension Int
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + CGPoint + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension CGPoint
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + CLLocation + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension CLLocation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension CLLocationCoordinate2D
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + FloatingPoint + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension FloatingPoint
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SCNNode + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension SCNNode
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SCNVector3 + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension SCNVector3
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + UIView + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension UIView
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/CGPoint.html b/docs/Extensions/CGPoint.html new file mode 100644 index 00000000..4fefc025 --- /dev/null +++ b/docs/Extensions/CGPoint.html @@ -0,0 +1,237 @@ + + + + CGPoint Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

CGPoint

+
+
+
extension CGPoint
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func pointWithVector(vector: SCNVector3) -> CGPoint
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func radiusContainsPoint(radius: CGFloat, point: CGPoint) -> Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/CLLocation.html b/docs/Extensions/CLLocation.html new file mode 100644 index 00000000..28d0ef60 --- /dev/null +++ b/docs/Extensions/CLLocation.html @@ -0,0 +1,375 @@ + + + + CLLocation Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

CLLocation

+
+
+
public extension CLLocation
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    convenience init(coordinate: CLLocationCoordinate2D, altitude: CLLocationDistance)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Translates distance in meters between two locations. +Returns the result as the distance in latitude and distance in longitude. +The approximation used here gives reasonable accuracy out to a radius of 50 km except at high latitudes. +TODO: rewrite .translation(toLocation:) to improve the accuracy. See unit test notes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func translation(toLocation location: CLLocation) -> LocationTranslation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    TODO: rewrite .translatedLocation(with:) to improve the accuracy. See unit test notes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func translatedLocation(with translation: LocationTranslation) -> CLLocation
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bearing(between:) + +
    +
    +
    +
    +
    +
    +

    Bearing from self to another point. Returns bearing in +/- degrees from north +This function uses the haversine formula to compute a geodesic (great circle), assuming a spherical earth. +Note that, especially at high latitudes and with relatively distant points, a.bearing(between: b) +is not necessarily 180 degrees opposite to b.bearing(between: a).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func bearing(between point: CLLocation) -> Double
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + point + + +
    +

    second point to compute bearing to.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + approxMidpoint(to:) + +
    +
    +
    +
    +
    +
    +

    Returns the midpoint between two locations +Note: Only usable for short distances like MKPolyline segments

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func approxMidpoint(to: CLLocation) -> CLLocation
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + debugLog + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var debugLog: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/CLLocationCoordinate2D.html b/docs/Extensions/CLLocationCoordinate2D.html new file mode 100644 index 00000000..8717800c --- /dev/null +++ b/docs/Extensions/CLLocationCoordinate2D.html @@ -0,0 +1,269 @@ + + + + CLLocationCoordinate2D Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

CLLocationCoordinate2D

+
+
+
public extension CLLocationCoordinate2D
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Returns a new CLLocationCoordinate2D at the given bearing and distance from the original point. +This function uses a great circle on ellipse formula.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func coordinateWithBearing(bearing: Double, distanceMeters: Double) -> CLLocationCoordinate2D
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + bearing + + +
    +

    bearing in degrees clockwise from north.

    +
    +
    + + distanceMeters + + +
    +

    distance in meters.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + earthRadiusMeters() + +
    +
    +
    +
    +
    +
    +

    Return the WGS-84 radius of the earth, in meters, at the given point.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func earthRadiusMeters() -> Double
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/Double.html b/docs/Extensions/Double.html new file mode 100644 index 00000000..853816c1 --- /dev/null +++ b/docs/Extensions/Double.html @@ -0,0 +1,210 @@ + + + + Double Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Double

+
+
+
public extension Double
+ +
+
+ +
+
+
+
    +
  • +
    + + + + short + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var short: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/Float.html b/docs/Extensions/Float.html new file mode 100644 index 00000000..a9c21f79 --- /dev/null +++ b/docs/Extensions/Float.html @@ -0,0 +1,210 @@ + + + + Float Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Float

+
+
+
public extension Float
+ +
+
+ +
+
+
+
    +
  • +
    + + + + short + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var short: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/FloatingPoint.html b/docs/Extensions/FloatingPoint.html new file mode 100644 index 00000000..27f70b1f --- /dev/null +++ b/docs/Extensions/FloatingPoint.html @@ -0,0 +1,237 @@ + + + + FloatingPoint Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

FloatingPoint

+
+
+
public extension FloatingPoint
+ +
+
+ +
+
+
+
    +
  • +
    + + + + degreesToRadians + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var degreesToRadians: Self { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + radiansToDegrees + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var radiansToDegrees: Self { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/Int.html b/docs/Extensions/Int.html new file mode 100644 index 00000000..fb46b1bf --- /dev/null +++ b/docs/Extensions/Int.html @@ -0,0 +1,237 @@ + + + + Int Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Int

+
+
+
public extension Int
+ +
+
+ +
+
+
+
    +
  • +
    + + + + short + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var short: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + short3 + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var short3: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/SCNNode.html b/docs/Extensions/SCNNode.html new file mode 100644 index 00000000..898d6f7d --- /dev/null +++ b/docs/Extensions/SCNNode.html @@ -0,0 +1,240 @@ + + + + SCNNode Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SCNNode

+
+
+
extension SCNNode
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Overlapping nodes require unique renderingOrder values to avoid flicker +This method will select random values if you don’t care which node is in front of the other, +or you can specify a particular z-order value +Note: rendering order will be changed later based on distance from camera

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeFlicker(withRenderingOrder renderingOrder: Int = Int.random(in: 1..<Int.max))
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a node similar to the one displayed when an ARSCNView‘s .debugOptions includes .showWorldOrigin

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    class func axesNode(quiverLength: CGFloat, quiverThickness: CGFloat) -> SCNNode
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/SCNVector3.html b/docs/Extensions/SCNVector3.html new file mode 100644 index 00000000..1d526db7 --- /dev/null +++ b/docs/Extensions/SCNVector3.html @@ -0,0 +1,211 @@ + + + + SCNVector3 Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SCNVector3

+
+
+
public extension SCNVector3
+ +
+
+ +
+
+
+
    +
  • +
    + + + + distance(to:) + +
    +
    +
    +
    +
    +
    +

    Calculates distance between vectors +Doesn’t include the y axis, matches functionality of CLLocation ‘distance’ function.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func distance(to anotherVector: SCNVector3) -> Float
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Extensions/UIView.html b/docs/Extensions/UIView.html new file mode 100644 index 00000000..062e3f73 --- /dev/null +++ b/docs/Extensions/UIView.html @@ -0,0 +1,210 @@ + + + + UIView Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

UIView

+
+
+
public extension UIView
+ +
+
+ +
+
+
+
    +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var image: UIImage { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols.html b/docs/Protocols.html new file mode 100644 index 00000000..b5589804 --- /dev/null +++ b/docs/Protocols.html @@ -0,0 +1,355 @@ + + + + Protocols Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    protocol LocationManagerDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
    +
  • +
    + + + + LNTouchDelegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol LNTouchDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol SceneLocationViewEstimateDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol SceneLocationViewDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SceneTrackingDelegate + +
    +
    +
    +
    +
    +
    +

    Subset of delegate methods from ARSCNViewDelegate to be notified on tracking status changes

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(iOS 11.0, *)
    +public protocol SceneTrackingDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/LNTouchDelegate.html b/docs/Protocols/LNTouchDelegate.html new file mode 100644 index 00000000..37d2dc4d --- /dev/null +++ b/docs/Protocols/LNTouchDelegate.html @@ -0,0 +1,238 @@ + + + + LNTouchDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LNTouchDelegate

+
+
+
public protocol LNTouchDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/Protocols/LocationManagerDelegate.html b/docs/Protocols/LocationManagerDelegate.html new file mode 100644 index 00000000..269b02e7 --- /dev/null +++ b/docs/Protocols/LocationManagerDelegate.html @@ -0,0 +1,254 @@ + + + + LocationManagerDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationManagerDelegate

+
+
+
protocol LocationManagerDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + locationManagerDidUpdateLocation(_:location:) + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +

    Default Implementation

    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func locationManagerDidUpdateLocation(_ locationManager: LocationManager, location: CLLocation)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationManagerDidUpdateHeading(_:heading:accuracy:) + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +

    Default Implementation

    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func locationManagerDidUpdateHeading(_ locationManager: LocationManager, heading: CLLocationDirection, accuracy: CLLocationDirection)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Protocols/SceneLocationManagerDelegate.html b/docs/Protocols/SceneLocationManagerDelegate.html new file mode 100644 index 00000000..56e30fff --- /dev/null +++ b/docs/Protocols/SceneLocationManagerDelegate.html @@ -0,0 +1,319 @@ + + + + SceneLocationManagerDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationManagerDelegate

+
+
+
protocol SceneLocationManagerDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/Protocols/SceneLocationViewDelegate.html b/docs/Protocols/SceneLocationViewDelegate.html new file mode 100644 index 00000000..a6f9f6a3 --- /dev/null +++ b/docs/Protocols/SceneLocationViewDelegate.html @@ -0,0 +1,354 @@ + + + + SceneLocationViewDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationViewDelegate

+
+
+
public protocol SceneLocationViewDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/Protocols/SceneLocationViewEstimateDelegate.html b/docs/Protocols/SceneLocationViewEstimateDelegate.html new file mode 100644 index 00000000..e878feac --- /dev/null +++ b/docs/Protocols/SceneLocationViewEstimateDelegate.html @@ -0,0 +1,254 @@ + + + + SceneLocationViewEstimateDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationViewEstimateDelegate

+
+
+
public protocol SceneLocationViewEstimateDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/Protocols/SceneTrackingDelegate.html b/docs/Protocols/SceneTrackingDelegate.html new file mode 100644 index 00000000..ce2afe98 --- /dev/null +++ b/docs/Protocols/SceneTrackingDelegate.html @@ -0,0 +1,293 @@ + + + + SceneTrackingDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneTrackingDelegate

+
+
+
@available(iOS 11.0, *)
+public protocol SceneTrackingDelegate : AnyObject
+ +
+
+

Subset of delegate methods from ARSCNViewDelegate to be notified on tracking status changes

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sessionWasInterrupted(_ session: ARSession)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sessionInterruptionEnded(_ session: ARSession)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func session(_ session: ARSession, didFailWithError error: Error)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Structs.html b/docs/Structs.html new file mode 100644 index 00000000..461106ad --- /dev/null +++ b/docs/Structs.html @@ -0,0 +1,270 @@ + + + + Structures Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Structures

+

The following structures are available globally.

+ +
+
+
+
    +
  • +
    + + + + ARKit_CoreLocation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    struct ARKit_CoreLocation
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + LocationTranslation + +
    +
    +
    +
    +
    +
    +

    Translation in meters between 2 locations

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LocationTranslation
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + AttributedType + +
    +
    +
    +
    +
    +
    +

    Wrapper to decorate a type with an attribute

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AttributedType<T>
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Structs/ARKit_CoreLocation.html b/docs/Structs/ARKit_CoreLocation.html new file mode 100644 index 00000000..5d6f83a4 --- /dev/null +++ b/docs/Structs/ARKit_CoreLocation.html @@ -0,0 +1,211 @@ + + + + ARKit_CoreLocation Structure Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

ARKit_CoreLocation

+
+
+
struct ARKit_CoreLocation
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + text + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var text: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Structs/AttributedType.html b/docs/Structs/AttributedType.html new file mode 100644 index 00000000..9a80213b --- /dev/null +++ b/docs/Structs/AttributedType.html @@ -0,0 +1,265 @@ + + + + AttributedType Structure Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

AttributedType

+
+
+
public struct AttributedType<T>
+ +
+
+

Wrapper to decorate a type with an attribute

+ +
+
+
+
    +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let type: T
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attribute + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let attribute: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(type:attribute:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(type: T, attribute: String)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Structs/LocationTranslation.html b/docs/Structs/LocationTranslation.html new file mode 100644 index 00000000..878d7827 --- /dev/null +++ b/docs/Structs/LocationTranslation.html @@ -0,0 +1,293 @@ + + + + LocationTranslation Structure Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationTranslation

+
+
+
public struct LocationTranslation
+ +
+
+

Translation in meters between 2 locations

+ +
+
+
+
    +
  • +
    + + + + latitudeTranslation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var latitudeTranslation: Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + longitudeTranslation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var longitudeTranslation: Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + altitudeTranslation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var altitudeTranslation: Double
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This explicit definition is needed because the free init function is marked fileprivate by default, +so LocationTranslation isn’t available to client apps.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(latitudeTranslation: Double, longitudeTranslation: Double, altitudeTranslation: Double)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Typealiases.html b/docs/Typealiases.html new file mode 100644 index 00000000..4604baf5 --- /dev/null +++ b/docs/Typealiases.html @@ -0,0 +1,206 @@ + + + + Type Aliases Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Type Aliases

+

The following type aliases are available globally.

+ +
+
+
+
    +
  • +
    + + + + BoxBuilder + +
    +
    +
    +
    +
    +
    +

    A block that will build an SCNBox with the provided distance. +Note: the distance should be assigned to the length

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias BoxBuilder = (_ distance: CGFloat) -> SCNBox
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/badge.svg b/docs/badge.svg new file mode 100644 index 00000000..cd8704ef --- /dev/null +++ b/docs/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 31% + + + 31% + + + diff --git a/docs/css/highlight.css b/docs/css/highlight.css new file mode 100644 index 00000000..d0db0e13 --- /dev/null +++ b/docs/css/highlight.css @@ -0,0 +1,200 @@ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight { + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + color: #000000; + font-weight: bold; } + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + color: #000000; + font-weight: bold; } + .highlight .kd { + color: #000000; + font-weight: bold; } + .highlight .kp { + color: #000000; + font-weight: bold; } + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } diff --git a/docs/css/jazzy.css b/docs/css/jazzy.css new file mode 100644 index 00000000..103ee29b --- /dev/null +++ b/docs/css/jazzy.css @@ -0,0 +1,348 @@ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +a { + color: #0088cc; + text-decoration: none; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 26px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 1; } + header img { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 27px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 1; + margin-top: 26px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + padding-left: 3px; + margin-left: 15px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 0px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } + +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } diff --git a/docs/docsets/ARCL.docset/Contents/Info.plist b/docs/docsets/ARCL.docset/Contents/Info.plist new file mode 100644 index 00000000..f595558f --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleIdentifier + com.jazzy.arcl + CFBundleName + ARCL + DocSetPlatformFamily + arcl + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes.html new file mode 100644 index 00000000..79fb4817 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes.html @@ -0,0 +1,432 @@ + + + + Classes Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Classes

+

The following classes are available globally.

+ +
+
+
+
    +
  • +
    + + + + LocationManager + +
    +
    +
    +
    +
    +
    +

    Handles retrieving the location and heading from CoreLocation +Does not contain anything related to ARKit or advanced location

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class LocationManager : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SceneLocationEstimate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class SceneLocationEstimate
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SceneLocationManager + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public final class SceneLocationManager
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
    +
  • +
    + + + + AnnotationNode + +
    +
    +
    +
    +
    +
    +

    This node type enables the client to have access to the view or image that +was used to initialize the LocationAnnotationNode.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open class AnnotationNode : SCNNode
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + LocationNode + +
    +
    +
    +
    +
    +
    +

    A location node can be added to a scene using a coordinate.

    + +

    Its scale and position should not be adjusted, as these are used for scene +layout purposes. To adjust the scale and position of items within a node, +you can add them to a child node and adjust them there

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open class LocationNode : SCNNode
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + PolylineNode + +
    +
    +
    +
    +
    +
    +

    A Node that is used to show directions in AR-CL.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class PolylineNode : LocationNode
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SceneLocationView + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open class SceneLocationView : ARSCNView
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/AnnotationNode.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/AnnotationNode.html new file mode 100644 index 00000000..d3179059 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/AnnotationNode.html @@ -0,0 +1,320 @@ + + + + AnnotationNode Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

AnnotationNode

+
+
+
open class AnnotationNode : SCNNode
+ +
+
+

This node type enables the client to have access to the view or image that +was used to initialize the LocationAnnotationNode.

+ +
+
+
+
    +
  • +
    + + + + view + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var view: UIView?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var image: UIImage?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + layer + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var layer: CALayer?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(view: UIView?, image: UIImage?, layer: CALayer? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationAnnotationNode.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationAnnotationNode.html new file mode 100644 index 00000000..b231e48c --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationAnnotationNode.html @@ -0,0 +1,382 @@ + + + + LocationAnnotationNode Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationAnnotationNode

+
+
+
open class LocationAnnotationNode : LocationNode
+ +
+
+

A LocationNode which has an attached AnnotationNode.

+ +
+
+
+
    +
  • +
    + + + + annotationNode + +
    +
    +
    +
    +
    +
    +

    Subnodes and adjustments should be applied to this subnode +Required to allow scaling at the same time as having a 2D ‘billboard’ appearance

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let annotationNode: AnnotationNode
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Parameter to raise or lower the label’s rendering position relative to the node’s actual project location. +The default value of 1.1 places the label at a pleasing height above the node. +To draw the label exactly on the true location, use a value of 0. To draw it below the true location, +use a negative value.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var annotationHeightAdjustmentFactor: Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(location:image:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(location: CLLocation?, image: UIImage)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(location:view:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience init(location: CLLocation?, view: UIView)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(location:layer:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(location: CLLocation?, layer: CALayer)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Note: we repeat code from LocationNode‘s implementation of this function. Is this because of the use of SCNTransaction +to wrap the changes? It’s legal to nest the calls, should consider this if any more changes to +LocationNode’s implementation are needed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    override func updatePositionAndScale(setup: Bool = false, scenePosition: SCNVector3?,
    +                                     locationNodeLocation nodeLocation: CLLocation,
    +                                     locationManager: SceneLocationManager,
    +                                     onCompletion: (() -> Void))
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationManager.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationManager.html new file mode 100644 index 00000000..24e07bd2 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationManager.html @@ -0,0 +1,466 @@ + + + + LocationManager Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationManager

+
+
+
public class LocationManager : NSObject
+ +
+
+

Handles retrieving the location and heading from CoreLocation +Does not contain anything related to ARKit or advanced location

+ +
+
+
+
    +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    weak var delegate: LocationManagerDelegate?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currentLocation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var currentLocation: CLLocation?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + heading + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    private(set) public var heading: CLLocationDirection?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + headingAccuracy + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    private(set) public var headingAccuracy: CLLocationDirection?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    override init()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestAuthorization()
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationManagerShouldDisplayHeadingCalibration(_ manager: CLLocationManager) -> Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationNode.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationNode.html new file mode 100644 index 00000000..8ee3d16a --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/LocationNode.html @@ -0,0 +1,618 @@ + + + + LocationNode Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationNode

+
+
+
open class LocationNode : SCNNode
+ +
+
+

A location node can be added to a scene using a coordinate.

+ +

Its scale and position should not be adjusted, as these are used for scene +layout purposes. To adjust the scale and position of items within a node, +you can add them to a child node and adjust them there

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    This seems like it should be a bug? Why is it hardcoded? Why would it ever be different from the scene’s setting?

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var locationEstimateMethod: LocationEstimateMethod
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + location + +
    +
    +
    +
    +
    +
    +

    Location can be changed and confirmed later by SceneLocationView.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var location: CLLocation!
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + tag + +
    +
    +
    +
    +
    +
    +

    A general purpose tag that can be used to find nodes already added to a SceneLocationView

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var tag: String?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationConfirmed + +
    +
    +
    +
    +
    +
    +

    Whether the location of the node has been confirmed. +This is automatically set to true when you create a node using a location. +Otherwise, this is false, and becomes true once the user moves 100m away from the node, +except when the locationEstimateMethod is set to use Core Location data only, +as then it becomes true immediately.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var locationConfirmed: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether a node’s position should be adjusted on an ongoing basis +based on its given location. +This only occurs when a node’s location is within 100m of the user. +Adjustment doesn’t apply to nodes without a confirmed location. +When this is set to false, the result is a smoother appearance. +When this is set to true, this means a node may appear to jump around +as the user’s location estimates update, +but the position is generally more accurate. +Defaults to true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var continuallyAdjustNodePositionWhenWithinRange: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether a node’s position and scale should be updated automatically on a continual basis. +This should only be set to false if you plan to manually update position and scale +at regular intervals. You can do this with SceneLocationView‘s updatePositionOfLocationNode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var continuallyUpdatePositionAndScale: Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Whether the node should be scaled relative to its distance from the camera +Default value (false) scales it to visually appear at the same size no matter the distance +Setting to true causes annotation nodes to scale like a regular node +Scaling relative to distance may be useful with local navigation-based uses +For landmarks in the distance, the default is correct

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var scaleRelativeToDistance: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ignoreAltitude + +
    +
    +
    +
    +
    +
    +

    Whether the node should appear at the same altitude of the user +May be useful when you don’t know the real altitude of the node +When set to true, the node will stay at the same altitude of the user

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var ignoreAltitude: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + scalingScheme + +
    +
    +
    +
    +
    +
    +

    The scheme to use for scaling

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var scalingScheme: ScalingScheme
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(location:tag:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(location: CLLocation?, tag: String? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + location(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    internal func location(_ bestLocationEstimate: SceneLocationEstimate?) -> CLLocation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    internal func adjustedDistance(setup: Bool, position: SCNVector3, locationNodeLocation: CLLocation,
    +                               locationManager: SceneLocationManager) -> CLLocationDistance
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    See LocationAnnotationNode‘s override of this function. Because it doesn’t invoke super’s version, any changes +made in this file must be repeated in LocationAnnotationNode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func updatePositionAndScale(setup: Bool = false, scenePosition: SCNVector3?, locationNodeLocation nodeLocation: CLLocation,
    +                            locationManager: SceneLocationManager, onCompletion: (() -> Void))
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Converts distance from meters to SCNKit rendering order +Constant multiplier eliminates flicker caused by slight distance variations +Nodes with greater rendering orders are rendered last

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func renderingOrder(fromDistance distance: CLLocationDistance) -> Int
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/PolylineNode.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/PolylineNode.html new file mode 100644 index 00000000..f0451c7c --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/PolylineNode.html @@ -0,0 +1,405 @@ + + + + PolylineNode Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

PolylineNode

+
+
+
public class PolylineNode : LocationNode
+ +
+
+

A Node that is used to show directions in AR-CL.

+ +
+
+
+
    +
  • +
    + + + + locationNodes + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var locationNodes: [LocationNode]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + polyline + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let polyline: MKPolyline
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + altitude + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let altitude: CLLocationDistance
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + boxBuilder + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let boxBuilder: BoxBuilder
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Creates a PolylineNode from the provided polyline, altitude (which is assumed to be uniform +for all of the points) and an optional SCNBox to use as a prototype for the location boxes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(polyline: MKPolyline,
    +            altitude: CLLocationDistance,
    +            tag: String? = nil,
    +            boxBuilder: BoxBuilder? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + polyline + + +
    +

    The polyline that we’ll be creating location nodes for.

    +
    +
    + + altitude + + +
    +

    The uniform altitude to use to show the location nodes.

    +
    +
    + + tag + + +
    +

    a String attribute to identify the node in the scene (e.g when it’s touched)

    +
    +
    + + boxBuilder + + +
    +

    A block that will customize how a box is built.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationEstimate.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationEstimate.html new file mode 100644 index 00000000..eff739c4 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationEstimate.html @@ -0,0 +1,323 @@ + + + + SceneLocationEstimate Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationEstimate

+
+
+
public class SceneLocationEstimate
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + location + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let location: CLLocation
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + position + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let position: SCNVector3
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init(location: CLLocation, position: SCNVector3)
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Compares the location’s position to another position, to determine the translation between them

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationTranslation(to position: SCNVector3) -> LocationTranslation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Translates the location by comparing with a given position

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func translatedLocation(to position: SCNVector3) -> CLLocation
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationManager.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationManager.html new file mode 100644 index 00000000..e16184e7 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationManager.html @@ -0,0 +1,629 @@ + + + + SceneLocationManager Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationManager

+
+
+
public final class SceneLocationManager
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + sceneLocationDelegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    weak var sceneLocationDelegate: SceneLocationManagerDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var locationEstimateMethod: LocationEstimateMethod
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationManager + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let locationManager: LocationManager
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var sceneLocationEstimates: [SceneLocationEstimate]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateEstimatesTimer + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var updateEstimatesTimer: Timer?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bestLocationEstimate + +
    +
    +
    +
    +
    +
    +

    The best estimation of location that has been taken +This takes into account horizontal accuracy, and the time at which the estimation was taken +favouring the most accurate, and then the most recent result. +This doesn’t indicate where the user currently is.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var bestLocationEstimate: SceneLocationEstimate? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currentLocation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currentLocation: CLLocation? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + deinit + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    deinit
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateLocationData() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +func updateLocationData()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Adds a scene location estimate based on current time, camera position and location from location manager

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addSceneLocationEstimate(location: CLLocation)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeOldLocationEstimates()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeOldLocationEstimates(currentScenePosition: SCNVector3)
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + run() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func run()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pause() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func pause()
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationView.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationView.html new file mode 100644 index 00000000..d31b0527 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationView.html @@ -0,0 +1,2336 @@ + + + + SceneLocationView Class Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationView

+
+
+
open class SceneLocationView : ARSCNView
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + sceneLimit + +
    +
    +
    +
    +
    +
    +

    The limit to the scene, in terms of what data is considered reasonably accurate. +Measured in meters.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static let sceneLimit: Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ARTrackingType + +
    +
    +
    +
    +
    +
    +

    The type of tracking to use.

    + +
      +
    • orientationTracking: Informs the SceneLocationView to use Device Orientation tracking only. +Useful when your nodes are all CLLocation based, and are not synced to real world planes +See Apple’s documentation
    • +
    • worldTracking: Informs the SceneLocationView to use a World Tracking Configuration. +Useful when you have nodes that attach themselves to real world planes +See Apple’s documentation
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ARTrackingType
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationViewDelegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var locationViewDelegate: SceneLocationViewDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var locationEstimateDelegate: SceneLocationViewEstimateDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var locationNodeTouchDelegate: LNTouchDelegate?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sceneTrackingDelegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var sceneTrackingDelegate: SceneTrackingDelegate?
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sceneLocationManager + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let sceneLocationManager: SceneLocationManager
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    Addresses Issue #196 - +Delegate issue when assigned to self (no location nodes render). If the user +tries to set the delegate, perform an assertionFailure and tell them to set the arViewDelegate instead.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open override var delegate: ARSCNViewDelegate? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + arViewDelegate + +
    +
    +
    +
    +
    +
    +

    If you wish to receive delegate ARSCNViewDelegate events, use this instead of the delegate property. +The delegate property is reserved for this class itself and trying to set it will result in an assertionFailure +and in production, things just won’t work as you expect.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var arViewDelegate: ARSCNViewDelegate?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The method to use for determining locations. +Not advisable to change this as the scene is ongoing.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var locationEstimateMethod: LocationEstimateMethod { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + showAxesNode + +
    +
    +
    +
    +
    +
    +

    When set to true, displays an axes node at the start of the scene

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var showAxesNode: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sceneNode + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var sceneNode: SCNNode? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + orientToTrueNorth + +
    +
    +
    +
    +
    +
    +

    Only to be overrided if you plan on manually setting True North. +When true, sets up the scene to face what the device considers to be True North. +This can be inaccurate, hence the option to override it. +The functions for altering True North can be used irrespective of this value, +but if the scene is oriented to true north, it will update without warning, +thus affecting your alterations. +The initial value of this property is respected.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var orientToTrueNorth: Bool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + showFeaturePoints + +
    +
    +
    +
    +
    +
    +

    Whether debugging feature points should be displayed. +Defaults to false

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var showFeaturePoints: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + currentScenePosition + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currentScenePosition: SCNVector3? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + currentEulerAngles + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currentEulerAngles: SCNVector3? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationNodes + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var locationNodes: [LocationNode]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + polylineNodes + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var polylineNodes: [PolylineNode]
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + arTrackingType + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var arTrackingType: SceneLocationView.ARTrackingType
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    internal var didFetchInitialLocation: Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ + + +

Setup

+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    This initializer allows you to specify the type of tracking configuration (defaults to world tracking) as well as +some other optional values.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public convenience init(trackingType: ARTrackingType = .worldTracking, frame: CGRect = .zero, options: [String : Any]? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + trackingType + + +
    +

    The type of AR Tracking configuration (defaults to world tracking).

    +
    +
    + + frame + + +
    +

    The CGRect for the frame (defaults to .zero).

    +
    +
    + + options + + +
    +

    The rendering options for the SCNView.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + init(frame:options:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override init(frame: CGRect, options: [String : Any]? = nil)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(coder:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    required public init?(coder aDecoder: NSCoder)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + resetSceneHeading() + +
    +
    +
    +
    +
    +
    +

    Resets the scene heading to 0

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func resetSceneHeading()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func confirmLocationOfLocationNode(_ locationNode: LocationNode)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Gives the best estimate of the location of a node

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func locationOfLocationNode(_ locationNode: LocationNode) -> CLLocation
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + renderer(_:nodeFor:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode?
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

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

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, willUpdate node: SCNNode, for anchor: ARAnchor)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didRemove node: SCNNode, for anchor: ARAnchor)
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func session(_ session: ARSession, didFailWithError error: Error)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sessionWasInterrupted(_ session: ARSession)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sessionInterruptionEnded(_ session: ARSession)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sessionShouldAttemptRelocalization(_ session: ARSession) -> Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func session(_ session: ARSession, didOutputAudioSampleBuffer audioSampleBuffer: CMSampleBuffer)
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didApplyAnimationsAtTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didSimulatePhysicsAtTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, didApplyConstraintsAtTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func renderer(_ renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: TimeInterval)
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + run() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func run()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + pause() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func pause()
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    iOS can be inaccurate when setting true north +The scene is oriented to true north, and will update its heading when it gets a more accurate reading +You can disable this through setting the +These functions provide manual overriding of the scene heading, +if you have a more precise idea of where True North is +The goal is for the True North orientation problems to be resolved +At which point these functions would no longer be useful +Moves the scene heading clockwise by 1 degree +Intended for correctional purposes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func moveSceneHeadingClockwise()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Moves the scene heading anti-clockwise by 1 degree +Intended for correctional purposes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func moveSceneHeadingAntiClockwise()
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • + +
    +
    +
    +
    +
    +

    Upon being added, a node’s location, locationConfirmed and position may be modified and should not be changed externally. +Silently fails and returns without adding the node to the scene if any of currentScenePosition, +sceneLocationManager.currentLocation, or sceneNode is nil.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addLocationNodeForCurrentPosition(locationNode: LocationNode)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Each node’s addition to the scene can silently fail; See addLocationNodeForCurrentPosition(locationNode:).

    + +

    Why would we want to add multiple nodes at the current position?

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addLocationNodesForCurrentPosition(locationNodes: [LocationNode])
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Silently fails and returns without adding the node unlesslocation is not nil and locationConfirmed is true. +Upon being added, a node’s position will be modified internally and should not be changed externally. +location will not be modified, but taken as accurate.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addLocationNodeWithConfirmedLocation(locationNode: LocationNode)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @objc
    +func sceneLocationViewTouched(sender: UITapGestureRecognizer)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Each node’s addition to the scene can silently fail; See addLocationNodeWithConfirmedLocation(locationNode:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addLocationNodesWithConfirmedLocation(locationNodes: [LocationNode])
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + removeAllNodes() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeAllNodes()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determine if scene contains a node with the specified tag

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sceneContainsNodeWithTag(_ tag: String) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + tag + + +
    +

    tag text

    +
    +
    +
    +
    +

    Return Value

    +

    true if a LocationNode with the tag exists; false otherwise

    +
    +
    +
    +
  • +
  • +
    + + + + findNodes(tagged:) + +
    +
    +
    +
    +
    +
    +

    Find all location nodes in the scene tagged with tag

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func findNodes(tagged tag: String) -> [LocationNode]
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + tag + + +
    +

    The tag text for which to search nodes.

    +
    +
    +
    +
    +

    Return Value

    +

    A list of all matching tags

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeLocationNode(locationNode: LocationNode)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeLocationNodes(locationNodes: [LocationNode])
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Adds routes to the scene and lets you specify the geometry prototype for the box. +Note: You can provide your own SCNBox prototype to base the direction nodes from.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addRoutes(routes: [MKRoute], boxBuilder: BoxBuilder? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + routes + + +
    +

    The MKRoute of directions

    +
    +
    + + boxBuilder + + +
    +

    A block that will customize how a box is built.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Adds polylines to the scene and lets you specify the geometry prototype for the box. +Note: You can provide your own SCNBox prototype to base the direction nodes from.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addRoutes(polylines: [AttributedType<MKPolyline>],
    +               Δaltitude: CLLocationDistance = -2.0,
    +               boxBuilder: BoxBuilder? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + polylines + + +
    +

    The list of attributed MKPolyline to rendered

    +
    +
    + + Δaltitude + + +
    +

    difference between box and current user altitude

    +
    +
    + + boxBuilder + + +
    +

    A block that will customize how a box is built.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + removeRoutes(routes:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeRoutes(routes: [MKRoute])
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Adds polylines to the scene and lets you specify the geometry prototype for the box. +Note: You can provide your own SCNBox prototype to base the direction nodes from.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func addPolylines(polylines: [MKPolyline], boxBuilder: BoxBuilder? = nil)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + polylines + + +
    +

    A set of MKPolyline.

    +
    +
    + + boxBuilder + + +
    +

    A block that will customize how a box is built.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removePolylines(polylines: [MKPolyline])
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationView/ARTrackingType.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationView/ARTrackingType.html new file mode 100644 index 00000000..34273110 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Classes/SceneLocationView/ARTrackingType.html @@ -0,0 +1,247 @@ + + + + ARTrackingType Enumeration Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

ARTrackingType

+
+
+
public enum ARTrackingType
+ +
+
+

The type of tracking to use.

+ +
    +
  • orientationTracking: Informs the SceneLocationView to use Device Orientation tracking only. +Useful when your nodes are all CLLocation based, and are not synced to real world planes +See Apple’s documentation
  • +
  • worldTracking: Informs the SceneLocationView to use a World Tracking Configuration. +Useful when you have nodes that attach themselves to real world planes +See Apple’s documentation
  • +
+ +
+
+
+
    +
  • +
    + + + + orientationTracking + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case orientationTracking
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + worldTracking + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case worldTracking
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums.html new file mode 100644 index 00000000..268e7e60 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums.html @@ -0,0 +1,250 @@ + + + + Enumerations Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Different methods which can be used when determining locations (such as the user’s location).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum LocationEstimateMethod
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ScalingScheme + +
    +
    +
    +
    +
    +
    +

    A set of schemes that can be used to scale a LocationNode.

    + +

    Values:

    + +
      +
    • normal: The default way of scaling, Hardcoded value out to 3000 meters, and then 0.75 that factor beyond 3000 m.
    • +
    • tiered (threshold, scale): Return 1.0 at distance up to threshold meters, or scale beyond.
    • +
    • doubleTiered (firstThreshold, firstCale, secondThreshold, secondScale): A way of scaling everything +beyond 2 specific distances at two specific scales.
    • +
    • linear (threshold): linearly scales an object based on its distance.
    • +
    • linearBuffer (threshold, buffer): linearly scales an object based on its distance as long as it is +further than the buffer distance, otherwise it just returns 100% scale.
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ScalingScheme
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums/LocationEstimateMethod.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums/LocationEstimateMethod.html new file mode 100644 index 00000000..5e7bc8e7 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums/LocationEstimateMethod.html @@ -0,0 +1,240 @@ + + + + LocationEstimateMethod Enumeration Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationEstimateMethod

+
+
+
public enum LocationEstimateMethod
+ +
+
+

Different methods which can be used when determining locations (such as the user’s location).

+ +
+
+
+
    +
  • +
    + + + + coreLocationDataOnly + +
    +
    +
    +
    +
    +
    +

    Only uses Core Location data. +Not suitable for adding nodes using current position, which requires more precision.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case coreLocationDataOnly
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + mostRelevantEstimate + +
    +
    +
    +
    +
    +
    +

    Combines knowledge about movement through the AR world with +the most relevant Core Location estimate (based on accuracy and time).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case mostRelevantEstimate
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums/ScalingScheme.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums/ScalingScheme.html new file mode 100644 index 00000000..473d0ebd --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Enums/ScalingScheme.html @@ -0,0 +1,359 @@ + + + + ScalingScheme Enumeration Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

ScalingScheme

+
+
+
public enum ScalingScheme
+ +
+
+

A set of schemes that can be used to scale a LocationNode.

+ +

Values:

+ +
    +
  • normal: The default way of scaling, Hardcoded value out to 3000 meters, and then 0.75 that factor beyond 3000 m.
  • +
  • tiered (threshold, scale): Return 1.0 at distance up to threshold meters, or scale beyond.
  • +
  • doubleTiered (firstThreshold, firstCale, secondThreshold, secondScale): A way of scaling everything +beyond 2 specific distances at two specific scales.
  • +
  • linear (threshold): linearly scales an object based on its distance.
  • +
  • linearBuffer (threshold, buffer): linearly scales an object based on its distance as long as it is +further than the buffer distance, otherwise it just returns 100% scale.
  • +
+ +
+
+
+
    +
  • +
    + + + + normal + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case normal
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case tiered(threshold: Double, scale: Float)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case doubleTiered(firstThreshold: Double, firstScale: Float, secondThreshold: Double, secondScale: Float)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + linear(threshold:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case linear(threshold: Double)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case linearBuffer(threshold: Double, buffer: Double)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + getScheme() + +
    +
    +
    +
    +
    +
    +

    Returns a closure to compute appropriate scale factor based on the current value of self (a ScalingSchee). +The closure accepts two parameters and returns the scale factor to apply to an AnnotationNode.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func getScheme() -> ((_ distance: Double, _ adjustedDistance: Double) -> Float)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions.html new file mode 100644 index 00000000..7e86ccfc --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions.html @@ -0,0 +1,479 @@ + + + + Extensions Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Extensions

+

The following extensions are available globally.

+ +
+
+
+
    +
  • +
    + + + + Double + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Float + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension Float
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + Int + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension Int
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + CGPoint + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension CGPoint
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + CLLocation + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension CLLocation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension CLLocationCoordinate2D
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + FloatingPoint + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension FloatingPoint
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SCNNode + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension SCNNode
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + SCNVector3 + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension SCNVector3
    + +
    +
    +
    +
    +
  • +
+
+
+ +
    +
  • +
    + + + + UIView + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension UIView
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CGPoint.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CGPoint.html new file mode 100644 index 00000000..4fefc025 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CGPoint.html @@ -0,0 +1,237 @@ + + + + CGPoint Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

CGPoint

+
+
+
extension CGPoint
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func pointWithVector(vector: SCNVector3) -> CGPoint
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func radiusContainsPoint(radius: CGFloat, point: CGPoint) -> Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CLLocation.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CLLocation.html new file mode 100644 index 00000000..28d0ef60 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CLLocation.html @@ -0,0 +1,375 @@ + + + + CLLocation Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

CLLocation

+
+
+
public extension CLLocation
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    convenience init(coordinate: CLLocationCoordinate2D, altitude: CLLocationDistance)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Translates distance in meters between two locations. +Returns the result as the distance in latitude and distance in longitude. +The approximation used here gives reasonable accuracy out to a radius of 50 km except at high latitudes. +TODO: rewrite .translation(toLocation:) to improve the accuracy. See unit test notes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func translation(toLocation location: CLLocation) -> LocationTranslation
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    TODO: rewrite .translatedLocation(with:) to improve the accuracy. See unit test notes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func translatedLocation(with translation: LocationTranslation) -> CLLocation
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + bearing(between:) + +
    +
    +
    +
    +
    +
    +

    Bearing from self to another point. Returns bearing in +/- degrees from north +This function uses the haversine formula to compute a geodesic (great circle), assuming a spherical earth. +Note that, especially at high latitudes and with relatively distant points, a.bearing(between: b) +is not necessarily 180 degrees opposite to b.bearing(between: a).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func bearing(between point: CLLocation) -> Double
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + point + + +
    +

    second point to compute bearing to.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + approxMidpoint(to:) + +
    +
    +
    +
    +
    +
    +

    Returns the midpoint between two locations +Note: Only usable for short distances like MKPolyline segments

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func approxMidpoint(to: CLLocation) -> CLLocation
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + debugLog + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var debugLog: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CLLocationCoordinate2D.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CLLocationCoordinate2D.html new file mode 100644 index 00000000..8717800c --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/CLLocationCoordinate2D.html @@ -0,0 +1,269 @@ + + + + CLLocationCoordinate2D Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

CLLocationCoordinate2D

+
+
+
public extension CLLocationCoordinate2D
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Returns a new CLLocationCoordinate2D at the given bearing and distance from the original point. +This function uses a great circle on ellipse formula.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func coordinateWithBearing(bearing: Double, distanceMeters: Double) -> CLLocationCoordinate2D
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + bearing + + +
    +

    bearing in degrees clockwise from north.

    +
    +
    + + distanceMeters + + +
    +

    distance in meters.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + earthRadiusMeters() + +
    +
    +
    +
    +
    +
    +

    Return the WGS-84 radius of the earth, in meters, at the given point.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func earthRadiusMeters() -> Double
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Double.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Double.html new file mode 100644 index 00000000..853816c1 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Double.html @@ -0,0 +1,210 @@ + + + + Double Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Double

+
+
+
public extension Double
+ +
+
+ +
+
+
+
    +
  • +
    + + + + short + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var short: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Float.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Float.html new file mode 100644 index 00000000..a9c21f79 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Float.html @@ -0,0 +1,210 @@ + + + + Float Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Float

+
+
+
public extension Float
+ +
+
+ +
+
+
+
    +
  • +
    + + + + short + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var short: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/FloatingPoint.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/FloatingPoint.html new file mode 100644 index 00000000..27f70b1f --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/FloatingPoint.html @@ -0,0 +1,237 @@ + + + + FloatingPoint Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

FloatingPoint

+
+
+
public extension FloatingPoint
+ +
+
+ +
+
+
+
    +
  • +
    + + + + degreesToRadians + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var degreesToRadians: Self { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + radiansToDegrees + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var radiansToDegrees: Self { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Int.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Int.html new file mode 100644 index 00000000..fb46b1bf --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/Int.html @@ -0,0 +1,237 @@ + + + + Int Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Int

+
+
+
public extension Int
+ +
+
+ +
+
+
+
    +
  • +
    + + + + short + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var short: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + short3 + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var short3: String { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/SCNNode.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/SCNNode.html new file mode 100644 index 00000000..898d6f7d --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/SCNNode.html @@ -0,0 +1,240 @@ + + + + SCNNode Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SCNNode

+
+
+
extension SCNNode
+ +
+
+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Overlapping nodes require unique renderingOrder values to avoid flicker +This method will select random values if you don’t care which node is in front of the other, +or you can specify a particular z-order value +Note: rendering order will be changed later based on distance from camera

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeFlicker(withRenderingOrder renderingOrder: Int = Int.random(in: 1..<Int.max))
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a node similar to the one displayed when an ARSCNView‘s .debugOptions includes .showWorldOrigin

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    class func axesNode(quiverLength: CGFloat, quiverThickness: CGFloat) -> SCNNode
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/SCNVector3.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/SCNVector3.html new file mode 100644 index 00000000..1d526db7 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/SCNVector3.html @@ -0,0 +1,211 @@ + + + + SCNVector3 Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SCNVector3

+
+
+
public extension SCNVector3
+ +
+
+ +
+
+
+
    +
  • +
    + + + + distance(to:) + +
    +
    +
    +
    +
    +
    +

    Calculates distance between vectors +Doesn’t include the y axis, matches functionality of CLLocation ‘distance’ function.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func distance(to anotherVector: SCNVector3) -> Float
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/UIView.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/UIView.html new file mode 100644 index 00000000..062e3f73 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Extensions/UIView.html @@ -0,0 +1,210 @@ + + + + UIView Extension Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

UIView

+
+
+
public extension UIView
+ +
+
+ +
+
+
+
    +
  • +
    + + + + image + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var image: UIImage { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols.html new file mode 100644 index 00000000..b5589804 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols.html @@ -0,0 +1,355 @@ + + + + Protocols Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    protocol LocationManagerDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
    +
  • +
    + + + + LNTouchDelegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol LNTouchDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol SceneLocationViewEstimateDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol SceneLocationViewDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SceneTrackingDelegate + +
    +
    +
    +
    +
    +
    +

    Subset of delegate methods from ARSCNViewDelegate to be notified on tracking status changes

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(iOS 11.0, *)
    +public protocol SceneTrackingDelegate : AnyObject
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/LNTouchDelegate.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/LNTouchDelegate.html new file mode 100644 index 00000000..37d2dc4d --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/LNTouchDelegate.html @@ -0,0 +1,238 @@ + + + + LNTouchDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LNTouchDelegate

+
+
+
public protocol LNTouchDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/LocationManagerDelegate.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/LocationManagerDelegate.html new file mode 100644 index 00000000..269b02e7 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/LocationManagerDelegate.html @@ -0,0 +1,254 @@ + + + + LocationManagerDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationManagerDelegate

+
+
+
protocol LocationManagerDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + locationManagerDidUpdateLocation(_:location:) + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +

    Default Implementation

    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func locationManagerDidUpdateLocation(_ locationManager: LocationManager, location: CLLocation)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + locationManagerDidUpdateHeading(_:heading:accuracy:) + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +

    Default Implementation

    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func locationManagerDidUpdateHeading(_ locationManager: LocationManager, heading: CLLocationDirection, accuracy: CLLocationDirection)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationManagerDelegate.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationManagerDelegate.html new file mode 100644 index 00000000..56e30fff --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationManagerDelegate.html @@ -0,0 +1,319 @@ + + + + SceneLocationManagerDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationManagerDelegate

+
+
+
protocol SceneLocationManagerDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationViewDelegate.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationViewDelegate.html new file mode 100644 index 00000000..a6f9f6a3 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationViewDelegate.html @@ -0,0 +1,354 @@ + + + + SceneLocationViewDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationViewDelegate

+
+
+
public protocol SceneLocationViewDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationViewEstimateDelegate.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationViewEstimateDelegate.html new file mode 100644 index 00000000..e878feac --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneLocationViewEstimateDelegate.html @@ -0,0 +1,254 @@ + + + + SceneLocationViewEstimateDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneLocationViewEstimateDelegate

+
+
+
public protocol SceneLocationViewEstimateDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneTrackingDelegate.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneTrackingDelegate.html new file mode 100644 index 00000000..ce2afe98 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Protocols/SceneTrackingDelegate.html @@ -0,0 +1,293 @@ + + + + SceneTrackingDelegate Protocol Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

SceneTrackingDelegate

+
+
+
@available(iOS 11.0, *)
+public protocol SceneTrackingDelegate : AnyObject
+ +
+
+

Subset of delegate methods from ARSCNViewDelegate to be notified on tracking status changes

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sessionWasInterrupted(_ session: ARSession)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func sessionInterruptionEnded(_ session: ARSession)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func session(_ session: ARSession, didFailWithError error: Error)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs.html new file mode 100644 index 00000000..461106ad --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs.html @@ -0,0 +1,270 @@ + + + + Structures Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Structures

+

The following structures are available globally.

+ +
+
+
+
    +
  • +
    + + + + ARKit_CoreLocation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    struct ARKit_CoreLocation
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + LocationTranslation + +
    +
    +
    +
    +
    +
    +

    Translation in meters between 2 locations

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct LocationTranslation
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + AttributedType + +
    +
    +
    +
    +
    +
    +

    Wrapper to decorate a type with an attribute

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct AttributedType<T>
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/ARKit_CoreLocation.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/ARKit_CoreLocation.html new file mode 100644 index 00000000..5d6f83a4 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/ARKit_CoreLocation.html @@ -0,0 +1,211 @@ + + + + ARKit_CoreLocation Structure Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

ARKit_CoreLocation

+
+
+
struct ARKit_CoreLocation
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + text + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var text: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/AttributedType.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/AttributedType.html new file mode 100644 index 00000000..9a80213b --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/AttributedType.html @@ -0,0 +1,265 @@ + + + + AttributedType Structure Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

AttributedType

+
+
+
public struct AttributedType<T>
+ +
+
+

Wrapper to decorate a type with an attribute

+ +
+
+
+
    +
  • +
    + + + + type + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let type: T
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + attribute + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let attribute: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + init(type:attribute:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(type: T, attribute: String)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/LocationTranslation.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/LocationTranslation.html new file mode 100644 index 00000000..878d7827 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Structs/LocationTranslation.html @@ -0,0 +1,293 @@ + + + + LocationTranslation Structure Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

LocationTranslation

+
+
+
public struct LocationTranslation
+ +
+
+

Translation in meters between 2 locations

+ +
+
+
+
    +
  • +
    + + + + latitudeTranslation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var latitudeTranslation: Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + longitudeTranslation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var longitudeTranslation: Double
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + altitudeTranslation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var altitudeTranslation: Double
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This explicit definition is needed because the free init function is marked fileprivate by default, +so LocationTranslation isn’t available to client apps.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(latitudeTranslation: Double, longitudeTranslation: Double, altitudeTranslation: Double)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/Typealiases.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Typealiases.html new file mode 100644 index 00000000..4604baf5 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/Typealiases.html @@ -0,0 +1,206 @@ + + + + Type Aliases Reference + + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+

Type Aliases

+

The following type aliases are available globally.

+ +
+
+
+
    +
  • +
    + + + + BoxBuilder + +
    +
    +
    +
    +
    +
    +

    A block that will build an SCNBox with the provided distance. +Note: the distance should be assigned to the length

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias BoxBuilder = (_ distance: CGFloat) -> SCNBox
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/css/highlight.css b/docs/docsets/ARCL.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 00000000..d0db0e13 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,200 @@ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight { + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + color: #000000; + font-weight: bold; } + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + color: #000000; + font-weight: bold; } + .highlight .kd { + color: #000000; + font-weight: bold; } + .highlight .kp { + color: #000000; + font-weight: bold; } + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/css/jazzy.css b/docs/docsets/ARCL.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 00000000..103ee29b --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,348 @@ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +a { + color: #0088cc; + text-decoration: none; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 26px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 1; } + header img { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 27px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 1; + margin-top: 26px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + padding-left: 3px; + margin-left: 15px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 0px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } + +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/carat.png b/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/carat.png new file mode 100755 index 00000000..29d2f7fd Binary files /dev/null and b/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/carat.png differ diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/dash.png b/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 00000000..6f694c7a Binary files /dev/null and b/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/dash.png differ diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/gh.png b/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/gh.png new file mode 100755 index 00000000..628da97c Binary files /dev/null and b/docs/docsets/ARCL.docset/Contents/Resources/Documents/img/gh.png differ diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/index.html b/docs/docsets/ARCL.docset/Contents/Resources/Documents/index.html new file mode 100644 index 00000000..8cb2b25a --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/index.html @@ -0,0 +1,408 @@ + + + + ARCL Reference + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

ARKit + CoreLocation

+ +

+ + CI Status + + + MIT License + + + Pods Version + + + Carthage Compatible + +

+ +

ARKit: Uses camera and motion data to map out the local world as you move around.

+ +

CoreLocation: Uses wifi and GPS data to determine your global location, with a low degree of accuracy.

+ +

ARKit + CoreLocation: Combines the high accuracy of AR with the scale of GPS data.

+ +

Points of interest demo Navigation demo

+ +

The potential for combining these technologies is huge, with so many potential applications across many different areas. This library comes with two major features:

+ +
    +
  • Allow items to be placed within the AR world using real-world coordinates.
  • +
  • Dramatically improved location accuracy, using recent location data points combined with knowledge about movement through the AR world.
  • +
+ +

The improved location accuracy is currently in an “experimental” phase, but could be the most important component.

+ +

Because there’s still work to be done there, and in other areas, this project will best be served by an open community, more than what GitHub Issues would allow us. So I’m opening up a Slack group that anyone can join, to discuss the library, improvements to it, and their own work.

+ +

Join the Slack community

+

Requirements

+ +

ARKit requires iOS 11, and supports the following devices:

+ +
    +
  • iPhone 6S and upwards
  • +
  • iPhone SE
  • +
  • iPad (2017)
  • +
  • All iPad Pro models
  • +
+ +

iOS 11 can be downloaded from Apple’s Developer website.

+

Usage

+ +

This library contains the ARKit + CoreLocation framework, as well as a demo application similar to Demo 1.

+ +

Be sure to read the section on True North calibration.

+

Building with Swift:

+
swift build \
+        -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" \
+        -Xswiftc "-target" -Xswiftc "x86_64-apple-ios12.1-simulator"
+
+

Setting up using Swift Package Manager

+

Setting up using CocoaPods

+ +
    +
  1. Add to your podfile:
  2. +
+ +

pod 'ARCL'

+ +
    +
  1. In Terminal, navigate to your project folder, then:
  2. +
+ +

pod update

+ +

pod install

+ +
    +
  1. Add NSCameraUsageDescription and NSLocationWhenInUseUsageDescription to plist with a brief explanation (see demo project for an example)
  2. +
+

Setting up manually

+ +
    +
  1. Add all files from the ARKit+CoreLocation/Source directory to your project.
  2. +
  3. Import ARKit, SceneKit, CoreLocation and MapKit.
  4. +
  5. Add NSCameraUsageDescription and NSLocationWhenInUseUsageDescription to plist with a brief explanation (see demo project for an example)
  6. +
+

Quick start guide

+ +

To place a pin over a building, for example Canary Wharf in London, we’ll use the main class that ARCL is built around - SceneLocationView.

+ +

First, import ARCL and CoreLocation, then declare SceneLocationView as a property:

+
import ARCL
+import CoreLocation
+
+class ViewController: UIViewController {
+  var sceneLocationView = SceneLocationView()
+}
+
+ +

You should call sceneLocationView.run() whenever it’s in focus, and sceneLocationView.pause() if it’s interrupted, such as by moving to a different view or by leaving the app.

+
override func viewDidLoad() {
+  super.viewDidLoad()
+
+  sceneLocationView.run()
+  view.addSubview(sceneLocationView)
+}
+
+override func viewDidLayoutSubviews() {
+  super.viewDidLayoutSubviews()
+
+  sceneLocationView.frame = view.bounds
+}
+
+ +

After we’ve called run(), we can add our coordinate. ARCL comes with a class called LocationNode - an object within the 3D scene which has a real-world location along with a few other properties which allow it to be displayed appropriately within the world. LocationNode is a subclass of SceneKit’s SCNNode, and can also be subclassed further. For this example we’re going to use a subclass called LocationAnnotationNode, which we use to display a 2D image within the world, which always faces us:

+
let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)
+let location = CLLocation(coordinate: coordinate, altitude: 300)
+let image = UIImage(named: "pin")!
+
+let annotationNode = LocationAnnotationNode(location: location, image: image)
+
+ +

LocationAnnotationNode can also be initialized using a UIView. Internally, the UIView is converted into UIImage, so you cannot update the content dynamically. +However, this methods allows you to easily show complex layout as POI.

+
let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)
+let location = CLLocation(coordinate: coordinate, altitude: 300)
+let view = UIView() // or a custom UIView subclass
+
+let annotationNode = LocationAnnotationNode(location: location, view: view)
+
+ +

It can also be initialized with CALayer. You can use this when you want to update the contents live.

+
let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)
+let location = CLLocation(coordinate: coordinate, altitude: 300)
+let layer = CALayer() // or a custom CALayer subclass
+
+let annotationNode = LocationAnnotationNode(location: location, layer: layer)
+
+ +

By default, the image you set should always appear at the size it was given, for example if you give a 100x100 image, it would appear at 100x100 on the screen. This means distant annotation nodes can always be seen at the same size as nearby ones. If you’d rather they scale relative to their distance, you can set LocationAnnotationNode’s scaleRelativeToDistance to true.

+
sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: annotationNode)
+
+ +

There are two ways to add a location node to a scene - using addLocationNodeWithConfirmedLocation, or addLocationNodeForCurrentPosition, which positions it to be in the same position as the device, within the world, and then gives it a coordinate.

+ +

So that’s it. If you set the frame of your sceneLocationView, you should now see the pin hovering above Canary Wharf.

+ +

In order to get a notification when a node is touched in the sceneLocationView, you need to conform to LNTouchDelegate in the ViewController class.

+ +

The annotationNodeTouched(node: AnnotationNode) gives you access to node that was touched on the screen. AnnotationNode is a subclass of SCNNode with two extra properties: image: UIImage? and view: UIView?. Either of these properties will be filled in based on how the LocationAnnotationNode was initialized (using the constructor that takes UIImage or UIView).

+ +

The locationNodeTouched(node: LocationNode) gives you instead access to the nodes created from a PolyNode (e.g. the rendered directions of a MKRoute).

+
class ViewController: UIViewController, LNTouchDelegate {
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        //...
+        self.sceneLocationView.locationNodeTouchDelegate = self
+        //...
+    }
+
+    func annotationNodeTouched(node: AnnotationNode) {
+        // Do stuffs with the node instance
+
+        // node could have either node.view or node.image
+        if let nodeView = node.view{
+            // Do stuffs with the nodeView
+            // ...
+        }
+        if let nodeImage = node.image{
+            // Do stuffs with the nodeImage
+            // ...
+        }
+    }
+
+    func locationNodeTouched(node: LocationNode) {
+        guard let name = node.tag else { return }
+        guard let selectedNode = node.childNodes.first(where: { $0.geometry is SCNBox }) else { return }
+
+        // Interact with the selected node
+    }
+
+}
+
+

Additional features

+ +

The library and demo come with a bunch of additional features for configuration. It’s all fully documented to be sure to have a look around.

+ +

SceneLocationView is a subclass of ARSCNView. Note that while this gives you full access to ARSCNView to use it in other ways, you should not set the delegate to another class. If you need to use delegate features then you should subclass SceneLocationView.

+

True North calibration

+ +

One issue which I haven’t personally been able to overcome is that the iPhone’s True North calibration currently has an accuracy of 15º at best. This is fine for maps navigation, but when placing things on top of the AR world, it starts to become a problem.

+ +

I’m confident that this issue can be overcome by using various AR techniques - it’s one area I think can really benefit from a shared effort.

+ +

To improve this currently, I’ve added some functions to the library that allow adjusting the north point:

+ +
    +
  • sceneLocationView.moveSceneHeadingClockwise
  • +
  • sceneLocationView.moveSceneHeadingAntiClockwise
  • +
  • sceneLocationView.resetSceneHeading
  • +
+ +

You should use these by setting sceneLocationView.useTrueNorth to false, and then pointing the device in the general direction of north before beginning, so it’s reasonably close. With useTrueNorth set to true (default), it would continually adjust as it gets a better sense of north.

+ +

Within the demo app, there’s a disabled property called adjustNorthByTappingSidesOfScreen, which accesses these functions, and, once enabled, allows tapping on the left and right of the screen to adjust the scene heading.

+ +

My recommendation would be to fine a nearby landmark which is directly True North from your location, place an object there using a coordinate, and then use the moveSceneHeading functions to adjust the scene until it lines up.

+

Improved Location Accuracy

+ +

CoreLocation can deliver location updates anywhere from every 1-15 seconds, with accuracies which vary from 150m down to 4m. Occasionally, you’ll receive a far more accurate reading, like 4m or 8m, before returning to more inaccurate readings. At the same time, AR uses motion and camera data to create a map of the local world.

+ +

A user may receive a location reading accurate to 4m, then they walk 10m north and receive another location reading accurate to 65m. This 65m-accurate reading is the best that CoreLocation can offer, but knowing the user’s position within the AR scene when they got that 4m reading, and the fact that they’ve walked 10m north through the scene since then, we can translate that data to give them a new coordinate with about 4m of accuracy. This is accurate up to about 100m.

+ +

There is more detail on this on the wiki.

+

Issues

+ +

I mentioned this was experimental - currently, ARKit occasionally gets confused as the user is walking through a scene, and may change their position inaccurately. This issue also seems to affect the “euler angles”, or directional information about the device, so after a short distance it may think you’re walking in a different direction.

+ +

While Apple can improve ARKit over time, I think there are improvements we can make to avoid those issues, such as recognising when it happens and working to correct it, and by comparing location data with our supposed location to determine if we’ve moved outside a possible bounds.

+

Location Algorithm Improvements

+ +

There are further optimisations to determining a user’s location which can be made.

+ +

For example, one technique could be to look at recent location data, translate each data point using the user’s travel since then, and use the overlap between the data points to more narrowly determine the user’s possible location.

+ +

There is more detail on this on the wiki.

+

Going Forward

+ +

We have some Milestones and Issues related to them - anyone is welcome to discuss and contribute to them. Pull requests are welcomed. You can discuss new features/enhancements/bugs either by adding a new Issue or via the Slack community.

+

Thanks

+ +

Library created by @AndrewProjDent, but a community effort from here on.

+ +

Available as open source under the terms of the MIT License.

+ +
+
+ +
+
+ + + diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/js/jazzy.js b/docs/docsets/ARCL.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 00000000..c31dc05e --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,59 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`.token[href="${location.hash}"]`); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); diff --git a/docs/docsets/ARCL.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/docsets/ARCL.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/docs/docsets/ARCL.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0A block that will build an SCNBox with the provided distance."},"Structs/AttributedType.html#/s:4ARCL14AttributedTypeV4typexvp":{"name":"type","abstract":"

Undocumented

","parent_name":"AttributedType"},"Structs/AttributedType.html#/s:4ARCL14AttributedTypeV9attributeSSvp":{"name":"attribute","abstract":"

Undocumented

","parent_name":"AttributedType"},"Structs/AttributedType.html#/s:4ARCL14AttributedTypeV4type9attributeACyxGx_SStcfc":{"name":"init(type:attribute:)","abstract":"

Undocumented

","parent_name":"AttributedType"},"Structs/LocationTranslation.html#/s:4ARCL19LocationTranslationV08latitudeC0Sdvp":{"name":"latitudeTranslation","abstract":"

Undocumented

","parent_name":"LocationTranslation"},"Structs/LocationTranslation.html#/s:4ARCL19LocationTranslationV09longitudeC0Sdvp":{"name":"longitudeTranslation","abstract":"

Undocumented

","parent_name":"LocationTranslation"},"Structs/LocationTranslation.html#/s:4ARCL19LocationTranslationV08altitudeC0Sdvp":{"name":"altitudeTranslation","abstract":"

Undocumented

","parent_name":"LocationTranslation"},"Structs/LocationTranslation.html#/s:4ARCL19LocationTranslationV08latitudeC009longitudeC008altitudeC0ACSd_S2dtcfc":{"name":"init(latitudeTranslation:longitudeTranslation:altitudeTranslation:)","abstract":"

This explicit definition is needed because the free init function is marked fileprivate by default,","parent_name":"LocationTranslation"},"Structs/ARKit_CoreLocation.html#/s:4ARCL18ARKit_CoreLocationV4textSSvp":{"name":"text","abstract":"

Undocumented

","parent_name":"ARKit_CoreLocation"},"Structs/ARKit_CoreLocation.html":{"name":"ARKit_CoreLocation","abstract":"

Undocumented

"},"Structs/LocationTranslation.html":{"name":"LocationTranslation","abstract":"

Translation in meters between 2 locations

"},"Structs/AttributedType.html":{"name":"AttributedType","abstract":"

Wrapper to decorate a type with an attribute

"},"Protocols/SceneTrackingDelegate.html#/s:4ARCL21SceneTrackingDelegateP21sessionWasInterruptedyySo9ARSessionCF":{"name":"sessionWasInterrupted(_:)","abstract":"

Undocumented

","parent_name":"SceneTrackingDelegate"},"Protocols/SceneTrackingDelegate.html#/s:4ARCL21SceneTrackingDelegateP24sessionInterruptionEndedyySo9ARSessionCF":{"name":"sessionInterruptionEnded(_:)","abstract":"

Undocumented

","parent_name":"SceneTrackingDelegate"},"Protocols/SceneTrackingDelegate.html#/s:4ARCL21SceneTrackingDelegateP7session_16didFailWithErrorySo9ARSessionC_s0I0_ptF":{"name":"session(_:didFailWithError:)","abstract":"

Undocumented

","parent_name":"SceneTrackingDelegate"},"Protocols/SceneTrackingDelegate.html#/s:4ARCL21SceneTrackingDelegateP7session_015cameraDidChangeC5StateySo9ARSessionC_So8ARCameraCtF":{"name":"session(_:cameraDidChangeTrackingState:)","abstract":"

Undocumented

","parent_name":"SceneTrackingDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegateP010didConfirmC6OfNode05scenecD04nodeyAA0bcD0C_AA0cI0CtF":{"name":"didConfirmLocationOfNode(sceneLocationView:node:)","abstract":"

After a node’s location is initially set based on current location,","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegateP08didSetupB4Node05scenecD00iH0yAA0bcD0C_So7SCNNodeCtF":{"name":"didSetupSceneNode(sceneLocationView:sceneNode:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegateP09didUpdatec10AndScaleOfC4Node05scenecD008locationK0yAA0bcD0C_AA0cK0CtF":{"name":"didUpdateLocationAndScaleOfLocationNode(sceneLocationView:locationNode:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegatePAAE06didAddbC8Estimate05scenecD08position8locationyAA0bcD0C_So10SCNVector3VSo10CLLocationCtF":{"name":"didAddSceneLocationEstimate(sceneLocationView:position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegatePAAE09didRemovebC8Estimate05scenecD08position8locationyAA0bcD0C_So10SCNVector3VSo10CLLocationCtF":{"name":"didRemoveSceneLocationEstimate(sceneLocationView:position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewEstimateDelegate.html#/s:4ARCL33SceneLocationViewEstimateDelegateP06didAddbcE005scenecD08position8locationyAA0bcD0C_So10SCNVector3VSo10CLLocationCtF":{"name":"didAddSceneLocationEstimate(sceneLocationView:position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewEstimateDelegate"},"Protocols/SceneLocationViewEstimateDelegate.html#/s:4ARCL33SceneLocationViewEstimateDelegateP09didRemovebcE005scenecD08position8locationyAA0bcD0C_So10SCNVector3VSo10CLLocationCtF":{"name":"didRemoveSceneLocationEstimate(sceneLocationView:position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewEstimateDelegate"},"Protocols/LNTouchDelegate.html#/s:4ARCL15LNTouchDelegateP21annotationNodeTouched4nodeyAA010AnnotationE0C_tF":{"name":"annotationNodeTouched(node:)","abstract":"

Undocumented

","parent_name":"LNTouchDelegate"},"Protocols/LNTouchDelegate.html#/s:4ARCL15LNTouchDelegateP19locationNodeTouched4nodeyAA08LocationE0C_tF":{"name":"locationNodeTouched(node:)","abstract":"

Undocumented

","parent_name":"LNTouchDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP13scenePositionSo10SCNVector3VSgvp":{"name":"scenePosition","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP07confirmc9OfDistantC5NodesyyF":{"name":"confirmLocationOfDistantLocationNodes()","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP024updatePositionAndScaleOfC5NodesyyF":{"name":"updatePositionAndScaleOfLocationNodes()","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP06didAddbC8Estimate8position8locationySo10SCNVector3V_So10CLLocationCtF":{"name":"didAddSceneLocationEstimate(position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP09didRemovebC8Estimate8position8locationySo10SCNVector3V_So10CLLocationCtF":{"name":"didRemoveSceneLocationEstimate(position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/LocationManagerDelegate.html#/s:4ARCL23LocationManagerDelegateP08locationc9DidUpdateB0_0E0yAA0bC0C_So10CLLocationCtF":{"name":"locationManagerDidUpdateLocation(_:location:)","abstract":"

Undocumented

","parent_name":"LocationManagerDelegate"},"Protocols/LocationManagerDelegate.html#/s:4ARCL23LocationManagerDelegateP08locationC16DidUpdateHeading_7heading8accuracyyAA0bC0C_S2dtF":{"name":"locationManagerDidUpdateHeading(_:heading:accuracy:)","abstract":"

Undocumented

","parent_name":"LocationManagerDelegate"},"Protocols/LocationManagerDelegate.html":{"name":"LocationManagerDelegate","abstract":"

Undocumented

"},"Protocols/SceneLocationManagerDelegate.html":{"name":"SceneLocationManagerDelegate","abstract":"

Undocumented

"},"Protocols/LNTouchDelegate.html":{"name":"LNTouchDelegate","abstract":"

Undocumented

"},"Protocols/SceneLocationViewEstimateDelegate.html":{"name":"SceneLocationViewEstimateDelegate","abstract":"

Undocumented

"},"Protocols/SceneLocationViewDelegate.html":{"name":"SceneLocationViewDelegate","abstract":"

Undocumented

"},"Protocols/SceneTrackingDelegate.html":{"name":"SceneTrackingDelegate","abstract":"

Subset of delegate methods from ARSCNViewDelegate to be notified on tracking status changes

"},"Extensions/UIView.html#/s:So6UIViewC4ARCLE5imageSo7UIImageCvp":{"name":"image","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/SCNVector3.html#/s:So10SCNVector3V4ARCLE8distance2toSfAB_tF":{"name":"distance(to:)","abstract":"

Calculates distance between vectors","parent_name":"SCNVector3"},"Extensions/SCNNode.html#/s:So7SCNNodeC4ARCLE13removeFlicker18withRenderingOrderySi_tF":{"name":"removeFlicker(withRenderingOrder:)","abstract":"

Overlapping nodes require unique renderingOrder values to avoid flicker","parent_name":"SCNNode"},"Extensions/SCNNode.html#/s:So7SCNNodeC4ARCLE8axesNode12quiverLength0E9ThicknessAB12CoreGraphics7CGFloatV_AItFZ":{"name":"axesNode(quiverLength:quiverThickness:)","abstract":"

Returns a node similar to the one displayed when an ARSCNView‘s .debugOptions includes .showWorldOrigin

","parent_name":"SCNNode"},"Extensions/FloatingPoint.html#/s:SF4ARCLE16degreesToRadiansxvp":{"name":"degreesToRadians","abstract":"

Undocumented

","parent_name":"FloatingPoint"},"Extensions/FloatingPoint.html#/s:SF4ARCLE16radiansToDegreesxvp":{"name":"radiansToDegrees","abstract":"

Undocumented

","parent_name":"FloatingPoint"},"Extensions/CLLocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4ARCLE21coordinateWithBearing7bearing14distanceMetersABSd_SdtF":{"name":"coordinateWithBearing(bearing:distanceMeters:)","abstract":"

Returns a new CLLocationCoordinate2D at the given bearing and distance from the original point.","parent_name":"CLLocationCoordinate2D"},"Extensions/CLLocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4ARCLE17earthRadiusMetersSdyF":{"name":"earthRadiusMeters()","abstract":"

Return the WGS-84 radius of the earth, in meters, at the given point.

","parent_name":"CLLocationCoordinate2D"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE10coordinate8altitudeABSo0A12Coordinate2DV_Sdtcfc":{"name":"init(coordinate:altitude:)","abstract":"

Undocumented

","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE11translation10toLocationAC0E11TranslationVAB_tF":{"name":"translation(toLocation:)","abstract":"

Translates distance in meters between two locations.","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE18translatedLocation4withAbC0D11TranslationV_tF":{"name":"translatedLocation(with:)","abstract":"

TODO: rewrite .translatedLocation(with:) to improve the accuracy. See unit test notes.

","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE7bearing7betweenSdAB_tF":{"name":"bearing(between:)","abstract":"

Bearing from self to another point. Returns bearing in +/- degrees from north","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE14approxMidpoint2toA2B_tF":{"name":"approxMidpoint(to:)","abstract":"

Returns the midpoint between two locations","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE8debugLogSSvp":{"name":"debugLog","abstract":"

Undocumented

","parent_name":"CLLocation"},"Extensions/CGPoint.html#/s:So7CGPointV4ARCLE15pointWithVector6vectorABSo10SCNVector3V_tFZ":{"name":"pointWithVector(vector:)","abstract":"

Undocumented

","parent_name":"CGPoint"},"Extensions/CGPoint.html#/s:So7CGPointV4ARCLE19radiusContainsPoint0C05pointSb12CoreGraphics7CGFloatV_ABtF":{"name":"radiusContainsPoint(radius:point:)","abstract":"

Undocumented

","parent_name":"CGPoint"},"Extensions/Int.html#/s:Si4ARCLE5shortSSvp":{"name":"short","abstract":"

Undocumented

","parent_name":"Int"},"Extensions/Int.html#/s:Si4ARCLE6short3SSvp":{"name":"short3","abstract":"

Undocumented

","parent_name":"Int"},"Extensions/Float.html#/s:Sf4ARCLE5shortSSvp":{"name":"short","abstract":"

Undocumented

","parent_name":"Float"},"Extensions/Double.html#/s:Sd4ARCLE5shortSSvp":{"name":"short","abstract":"

Undocumented

","parent_name":"Double"},"Extensions/Double.html":{"name":"Double"},"Extensions/Float.html":{"name":"Float"},"Extensions/Int.html":{"name":"Int"},"Extensions/CGPoint.html":{"name":"CGPoint"},"Extensions/CLLocation.html":{"name":"CLLocation"},"Extensions/CLLocationCoordinate2D.html":{"name":"CLLocationCoordinate2D"},"Extensions/FloatingPoint.html":{"name":"FloatingPoint"},"Extensions/SCNNode.html":{"name":"SCNNode"},"Extensions/SCNVector3.html":{"name":"SCNVector3"},"Extensions/UIView.html":{"name":"UIView"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO6normalyA2CmF":{"name":"normal","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO6tieredyACSd_SftcACmF":{"name":"tiered(threshold:scale:)","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO12doubleTieredyACSd_SfSdSftcACmF":{"name":"doubleTiered(firstThreshold:firstScale:secondThreshold:secondScale:)","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO6linearyACSd_tcACmF":{"name":"linear(threshold:)","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO12linearBufferyACSd_SdtcACmF":{"name":"linearBuffer(threshold:buffer:)","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO03getC0SfSd_SdtcyF":{"name":"getScheme()","abstract":"

Returns a closure to compute appropriate scale factor based on the current value of self (a ScalingSchee).","parent_name":"ScalingScheme"},"Enums/LocationEstimateMethod.html#/s:4ARCL22LocationEstimateMethodO04coreB8DataOnlyyA2CmF":{"name":"coreLocationDataOnly","abstract":"

Only uses Core Location data.","parent_name":"LocationEstimateMethod"},"Enums/LocationEstimateMethod.html#/s:4ARCL22LocationEstimateMethodO012mostRelevantC0yA2CmF":{"name":"mostRelevantEstimate","abstract":"

Combines knowledge about movement through the AR world with","parent_name":"LocationEstimateMethod"},"Enums/LocationEstimateMethod.html":{"name":"LocationEstimateMethod","abstract":"

Different methods which can be used when determining locations (such as the user’s location).

"},"Enums/ScalingScheme.html":{"name":"ScalingScheme","abstract":"

A set of schemes that can be used to scale a LocationNode.

"},"Classes/SceneLocationView/ARTrackingType.html#/s:4ARCL17SceneLocationViewC14ARTrackingTypeO19orientationTrackingyA2EmF":{"name":"orientationTracking","abstract":"

Undocumented

","parent_name":"ARTrackingType"},"Classes/SceneLocationView/ARTrackingType.html#/s:4ARCL17SceneLocationViewC14ARTrackingTypeO13worldTrackingyA2EmF":{"name":"worldTracking","abstract":"

Undocumented

","parent_name":"ARTrackingType"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC10sceneLimitSdvpZ":{"name":"sceneLimit","abstract":"

The limit to the scene, in terms of what data is considered reasonably accurate.","parent_name":"SceneLocationView"},"Classes/SceneLocationView/ARTrackingType.html":{"name":"ARTrackingType","abstract":"

The type of tracking to use.

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC08locationD8DelegateAA0bcdF0_pSgvp":{"name":"locationViewDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC24locationEstimateDelegateAA0bcdfG0_pSgvp":{"name":"locationEstimateDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC25locationNodeTouchDelegateAA07LNTouchH0_pSgvp":{"name":"locationNodeTouchDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC21sceneTrackingDelegateAA0bfG0_pSgvp":{"name":"sceneTrackingDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC05sceneC7ManagerAA0bcF0Cvp":{"name":"sceneLocationManager","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@M@ARCL@objc(cs)SceneLocationView(py)delegate":{"name":"delegate","abstract":"

Addresses Issue #196 -","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC02arD8DelegateSo09ARSCNViewF0_pSgvp":{"name":"arViewDelegate","abstract":"

If you wish to receive delegate ARSCNViewDelegate events, use this instead of the delegate property.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC22locationEstimateMethodAA0cfG0Ovp":{"name":"locationEstimateMethod","abstract":"

The method to use for determining locations.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC12showAxesNodeSbvp":{"name":"showAxesNode","abstract":"

When set to true, displays an axes node at the start of the scene

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC9sceneNodeSo7SCNNodeCSgvp":{"name":"sceneNode","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC17orientToTrueNorthSbvp":{"name":"orientToTrueNorth","abstract":"

Only to be overrided if you plan on manually setting True North.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC17showFeaturePointsSbvp":{"name":"showFeaturePoints","abstract":"

Whether debugging feature points should be displayed.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC07currentB8PositionSo10SCNVector3VSgvp":{"name":"currentScenePosition","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC18currentEulerAnglesSo10SCNVector3VSgvp":{"name":"currentEulerAngles","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC13locationNodesSayAA0C4NodeCGvp":{"name":"locationNodes","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC13polylineNodesSayAA12PolylineNodeCGvp":{"name":"polylineNodes","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC14arTrackingTypeAC010ARTrackingG0Ovp":{"name":"arTrackingType","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC015didFetchInitialC0Sbvp":{"name":"didFetchInitialLocation","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC12trackingType5frame7optionsA2C010ARTrackingF0O_So6CGRectVSDySSypGSgtcfc":{"name":"init(trackingType:frame:options:)","abstract":"

This initializer allows you to specify the type of tracking configuration (defaults to world tracking) as well as","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@M@ARCL@objc(cs)SceneLocationView(im)initWithFrame:options:":{"name":"init(frame:options:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@M@ARCL@objc(cs)SceneLocationView(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC05resetB7HeadingyyF":{"name":"resetSceneHeading()","abstract":"

Resets the scene heading to 0

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC07confirmc2OfC4NodeyyAA0cG0CF":{"name":"confirmLocationOfLocationNode(_:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC010locationOfC4NodeySo10CLLocationCAA0cG0CF":{"name":"locationOfLocationNode(_:)","abstract":"

Gives the best estimate of the location of a node

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:nodeForAnchor:":{"name":"renderer(_:nodeFor:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didAddNode:forAnchor:":{"name":"renderer(_:didAdd:for:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:willUpdateNode:forAnchor:":{"name":"renderer(_:willUpdate:for:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didUpdateNode:forAnchor:":{"name":"renderer(_:didUpdate:for:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didRemoveNode:forAnchor:":{"name":"renderer(_:didRemove:for:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)session:didFailWithError:":{"name":"session(_:didFailWithError:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)session:cameraDidChangeTrackingState:":{"name":"session(_:cameraDidChangeTrackingState:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)sessionWasInterrupted:":{"name":"sessionWasInterrupted(_:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)sessionInterruptionEnded:":{"name":"sessionInterruptionEnded(_:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)sessionShouldAttemptRelocalization:":{"name":"sessionShouldAttemptRelocalization(_:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)session:didOutputAudioSampleBuffer:":{"name":"session(_:didOutputAudioSampleBuffer:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didRenderScene:atTime:":{"name":"renderer(_:didRenderScene:atTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:updateAtTime:":{"name":"renderer(_:updateAtTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didApplyAnimationsAtTime:":{"name":"renderer(_:didApplyAnimationsAtTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didSimulatePhysicsAtTime:":{"name":"renderer(_:didSimulatePhysicsAtTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didApplyConstraintsAtTime:":{"name":"renderer(_:didApplyConstraintsAtTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:willRenderScene:atTime:":{"name":"renderer(_:willRenderScene:atTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC3runyyF":{"name":"run()","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC5pauseyyF":{"name":"pause()","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC04moveB16HeadingClockwiseyyF":{"name":"moveSceneHeadingClockwise()","abstract":"

iOS can be inaccurate when setting true north","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC04moveB20HeadingAntiClockwiseyyF":{"name":"moveSceneHeadingAntiClockwise()","abstract":"

Moves the scene heading anti-clockwise by 1 degree","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC03addC22NodeForCurrentPosition08locationF0yAA0cF0C_tF":{"name":"addLocationNodeForCurrentPosition(locationNode:)","abstract":"

Upon being added, a node’s location, locationConfirmed and position may be modified and should not be changed externally.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC03addC23NodesForCurrentPosition08locationF0ySayAA0C4NodeCG_tF":{"name":"addLocationNodesForCurrentPosition(locationNodes:)","abstract":"

Each node’s addition to the scene can silently fail; See addLocationNodeForCurrentPosition(locationNode:).

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC03addc17NodeWithConfirmedC008locationF0yAA0cF0C_tF":{"name":"addLocationNodeWithConfirmedLocation(locationNode:)","abstract":"

Silently fails and returns without adding the node unlesslocation is not nil and locationConfirmed is true.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)sceneLocationViewTouchedWithSender:":{"name":"sceneLocationViewTouched(sender:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC03addc18NodesWithConfirmedC008locationF0ySayAA0C4NodeCG_tF":{"name":"addLocationNodesWithConfirmedLocation(locationNodes:)","abstract":"

Each node’s addition to the scene can silently fail; See addLocationNodeWithConfirmedLocation(locationNode:).

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC14removeAllNodesyyF":{"name":"removeAllNodes()","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC24sceneContainsNodeWithTagySbSSF":{"name":"sceneContainsNodeWithTag(_:)","abstract":"

Determine if scene contains a node with the specified tag

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC9findNodes6taggedSayAA0C4NodeCGSS_tF":{"name":"findNodes(tagged:)","abstract":"

Find all location nodes in the scene tagged with tag

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC06removeC4Node08locationF0yAA0cF0C_tF":{"name":"removeLocationNode(locationNode:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC06removeC5Nodes08locationF0ySayAA0C4NodeCG_tF":{"name":"removeLocationNodes(locationNodes:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC9addRoutes6routes10boxBuilderySaySo7MKRouteCG_So6SCNBoxC12CoreGraphics7CGFloatVcSgtF":{"name":"addRoutes(routes:boxBuilder:)","abstract":"

Adds routes to the scene and lets you specify the geometry prototype for the box.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC9addRoutes9polylines0012altitude_wBf10boxBuilderySayAA14AttributedTypeVySo10MKPolylineCGG_SdSo6SCNBoxC12CoreGraphics7CGFloatVcSgtF":{"name":"addRoutes(polylines:Δaltitude:boxBuilder:)","abstract":"

Adds polylines to the scene and lets you specify the geometry prototype for the box.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC12removeRoutes6routesySaySo7MKRouteCG_tF":{"name":"removeRoutes(routes:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC12addPolylines9polylines10boxBuilderySaySo10MKPolylineCG_So6SCNBoxC12CoreGraphics7CGFloatVcSgtF":{"name":"addPolylines(polylines:boxBuilder:)","abstract":"

Adds polylines to the scene and lets you specify the geometry prototype for the box.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC15removePolylines9polylinesySaySo10MKPolylineCG_tF":{"name":"removePolylines(polylines:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC13scenePositionSo10SCNVector3VSgvp":{"name":"scenePosition","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC07confirmc9OfDistantC5NodesyyF":{"name":"confirmLocationOfDistantLocationNodes()","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC024updatePositionAndScaleOfC5NodesyyF":{"name":"updatePositionAndScaleOfLocationNodes()","abstract":"

Updates the position and scale of the polylineNodes and the locationNodes.

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC06didAddbC8Estimate8position8locationySo10SCNVector3V_So10CLLocationCtF":{"name":"didAddSceneLocationEstimate(position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC09didRemovebC8Estimate8position8locationySo10SCNVector3V_So10CLLocationCtF":{"name":"didRemoveSceneLocationEstimate(position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC13locationNodesSayAA08LocationC0CGvp":{"name":"locationNodes","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC8polylineSo10MKPolylineCvp":{"name":"polyline","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC8altitudeSdvp":{"name":"altitude","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC10boxBuilderySo6SCNBoxC12CoreGraphics7CGFloatVcvp":{"name":"boxBuilder","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC8polyline8altitude3tag10boxBuilderACSo10MKPolylineC_SdSSSgSo6SCNBoxC12CoreGraphics7CGFloatVcSgtcfc":{"name":"init(polyline:altitude:tag:boxBuilder:)","abstract":"

Creates a PolylineNode from the provided polyline, altitude (which is assumed to be uniform","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/c:@M@ARCL@objc(cs)PolylineNode(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC22locationEstimateMethodAA0beF0Ovp":{"name":"locationEstimateMethod","abstract":"

This seems like it should be a bug? Why is it hardcoded? Why would it ever be different from the scene’s setting?

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC8locationSo10CLLocationCSgvp":{"name":"location","abstract":"

Location can be changed and confirmed later by SceneLocationView.

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC3tagSSSgvp":{"name":"tag","abstract":"

A general purpose tag that can be used to find nodes already added to a SceneLocationView

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC17locationConfirmedSbvp":{"name":"locationConfirmed","abstract":"

Whether the location of the node has been confirmed.","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC017continuallyAdjustC23PositionWhenWithinRangeSbvp":{"name":"continuallyAdjustNodePositionWhenWithinRange","abstract":"

Whether a node’s position should be adjusted on an ongoing basis","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC33continuallyUpdatePositionAndScaleSbvp":{"name":"continuallyUpdatePositionAndScale","abstract":"

Whether a node’s position and scale should be updated automatically on a continual basis.","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC23scaleRelativeToDistanceSbvp":{"name":"scaleRelativeToDistance","abstract":"

Whether the node should be scaled relative to its distance from the camera","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC14ignoreAltitudeSbvp":{"name":"ignoreAltitude","abstract":"

Whether the node should appear at the same altitude of the user","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC13scalingSchemeAA07ScalingE0Ovp":{"name":"scalingScheme","abstract":"

The scheme to use for scaling

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC8location3tagACSo10CLLocationCSg_SSSgtcfc":{"name":"init(location:tag:)","abstract":"

Undocumented

","parent_name":"LocationNode"},"Classes/LocationNode.html#/c:@M@ARCL@objc(cs)LocationNode(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC8locationySo10CLLocationCAA05SceneB8EstimateCSgF":{"name":"location(_:)","abstract":"

Undocumented

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC16adjustedDistance5setup8position08locationcB00H7ManagerSdSb_So10SCNVector3VSo10CLLocationCAA05ScenebI0CtF":{"name":"adjustedDistance(setup:position:locationNodeLocation:locationManager:)","abstract":"

Undocumented

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC22updatePositionAndScale5setup05sceneE008locationcB00J7Manager12onCompletionySb_So10SCNVector3VSgSo10CLLocationCAA05ScenebK0CyyXEtF":{"name":"updatePositionAndScale(setup:scenePosition:locationNodeLocation:locationManager:onCompletion:)","abstract":"

See LocationAnnotationNode‘s override of this function. Because it doesn’t invoke super’s version, any changes","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC14renderingOrder12fromDistanceSiSd_tF":{"name":"renderingOrder(fromDistance:)","abstract":"

Converts distance from meters to SCNKit rendering order","parent_name":"LocationNode"},"Classes/AnnotationNode.html#/s:4ARCL14AnnotationNodeC4viewSo6UIViewCSgvp":{"name":"view","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/AnnotationNode.html#/s:4ARCL14AnnotationNodeC5imageSo7UIImageCSgvp":{"name":"image","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/AnnotationNode.html#/s:4ARCL14AnnotationNodeC5layerSo7CALayerCSgvp":{"name":"layer","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/AnnotationNode.html#/s:4ARCL14AnnotationNodeC4view5image5layerACSo6UIViewCSg_So7UIImageCSgSo7CALayerCSgtcfc":{"name":"init(view:image:layer:)","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/AnnotationNode.html#/c:@M@ARCL@objc(cs)AnnotationNode(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC010annotationD0AA0cD0Cvp":{"name":"annotationNode","abstract":"

Subnodes and adjustments should be applied to this subnode","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC32annotationHeightAdjustmentFactorSdvp":{"name":"annotationHeightAdjustmentFactor","abstract":"

Parameter to raise or lower the label’s rendering position relative to the node’s actual project location.","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC8location5imageACSo10CLLocationCSg_So7UIImageCtcfc":{"name":"init(location:image:)","abstract":"

Undocumented

","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC8location4viewACSo10CLLocationCSg_So6UIViewCtcfc":{"name":"init(location:view:)","abstract":"

Undocumented

","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC8location5layerACSo10CLLocationCSg_So7CALayerCtcfc":{"name":"init(location:layer:)","abstract":"

Undocumented

","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/c:@M@ARCL@objc(cs)LocationAnnotationNode(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC22updatePositionAndScale5setup05sceneF008locationdB00K7Manager12onCompletionySb_So10SCNVector3VSgSo10CLLocationCAA05ScenebL0CyyXEtF":{"name":"updatePositionAndScale(setup:scenePosition:locationNodeLocation:locationManager:onCompletion:)","abstract":"

Note: we repeat code from LocationNode‘s implementation of this function. Is this because of the use of SCNTransaction","parent_name":"LocationAnnotationNode"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC05sceneC8DelegateAA0bcdF0_pSgvp":{"name":"sceneLocationDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC22locationEstimateMethodAA0cfG0Ovp":{"name":"locationEstimateMethod","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC08locationD0AA0cD0Cvp":{"name":"locationManager","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC05sceneC9EstimatesSayAA0bC8EstimateCGvp":{"name":"sceneLocationEstimates","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC20updateEstimatesTimerSo7NSTimerCSgvp":{"name":"updateEstimatesTimer","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC04bestC8EstimateAA0bcF0CSgvp":{"name":"bestLocationEstimate","abstract":"

The best estimation of location that has been taken","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC07currentC0So10CLLocationCSgvp":{"name":"currentLocation","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerCACycfc":{"name":"init()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerCfd":{"name":"deinit","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC06updateC4DatayyF":{"name":"updateLocationData()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC03addbC8Estimate8locationySo10CLLocationC_tF":{"name":"addSceneLocationEstimate(location:)","abstract":"

Adds a scene location estimate based on current time, camera position and location from location manager

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC09removeOldC9EstimatesyyF":{"name":"removeOldLocationEstimates()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC09removeOldC9Estimates07currentB8PositionySo10SCNVector3V_tF":{"name":"removeOldLocationEstimates(currentScenePosition:)","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC3runyyF":{"name":"run()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC5pauseyyF":{"name":"pause()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC08locationd9DidUpdateC0_0E0yAA0cD0C_So10CLLocationCtF":{"name":"locationManagerDidUpdateLocation(_:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC8locationSo10CLLocationCvp":{"name":"location","abstract":"

Undocumented

","parent_name":"SceneLocationEstimate"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC8positionSo10SCNVector3Vvp":{"name":"position","abstract":"

Undocumented

","parent_name":"SceneLocationEstimate"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC8location8positionACSo10CLLocationC_So10SCNVector3Vtcfc":{"name":"init(location:position:)","abstract":"

Undocumented

","parent_name":"SceneLocationEstimate"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC19locationTranslation2toAA0cF0VSo10SCNVector3V_tF":{"name":"locationTranslation(to:)","abstract":"

Compares the location’s position to another position, to determine the translation between them

","parent_name":"SceneLocationEstimate"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC010translatedC02toSo10CLLocationCSo10SCNVector3V_tF":{"name":"translatedLocation(to:)","abstract":"

Translates the location by comparing with a given position

","parent_name":"SceneLocationEstimate"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC8delegateAA0bC8Delegate_pSgvp":{"name":"delegate","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC07currentB0So10CLLocationCSgvp":{"name":"currentLocation","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC7headingSdSgvp":{"name":"heading","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC15headingAccuracySdSgvp":{"name":"headingAccuracy","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@M@ARCL@objc(cs)LocationManager(im)init":{"name":"init()","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC20requestAuthorizationyyF":{"name":"requestAuthorization()","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@CM@ARCL@objc(cs)LocationManager(im)locationManager:didChangeAuthorizationStatus:":{"name":"locationManager(_:didChangeAuthorization:)","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@CM@ARCL@objc(cs)LocationManager(im)locationManager:didUpdateLocations:":{"name":"locationManager(_:didUpdateLocations:)","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@CM@ARCL@objc(cs)LocationManager(im)locationManager:didUpdateHeading:":{"name":"locationManager(_:didUpdateHeading:)","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@CM@ARCL@objc(cs)LocationManager(im)locationManagerShouldDisplayHeadingCalibration:":{"name":"locationManagerShouldDisplayHeadingCalibration(_:)","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html":{"name":"LocationManager","abstract":"

Handles retrieving the location and heading from CoreLocation"},"Classes/SceneLocationEstimate.html":{"name":"SceneLocationEstimate","abstract":"

Undocumented

"},"Classes/SceneLocationManager.html":{"name":"SceneLocationManager","abstract":"

Undocumented

"},"Classes/LocationAnnotationNode.html":{"name":"LocationAnnotationNode","abstract":"

A LocationNode which has an attached AnnotationNode.

"},"Classes/AnnotationNode.html":{"name":"AnnotationNode","abstract":"

This node type enables the client to have access to the view or image that"},"Classes/LocationNode.html":{"name":"LocationNode","abstract":"

A location node can be added to a scene using a coordinate.

"},"Classes/PolylineNode.html":{"name":"PolylineNode","abstract":"

A Node that is used to show directions in AR-CL.

"},"Classes/SceneLocationView.html":{"name":"SceneLocationView","abstract":"

Undocumented

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Extensions.html":{"name":"Extensions","abstract":"

The following extensions are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"},"Typealiases.html":{"name":"Type Aliases","abstract":"

The following type aliases are available globally.

"}} \ No newline at end of file diff --git a/docs/docsets/ARCL.docset/Contents/Resources/docSet.dsidx b/docs/docsets/ARCL.docset/Contents/Resources/docSet.dsidx new file mode 100644 index 00000000..d698f90c Binary files /dev/null and b/docs/docsets/ARCL.docset/Contents/Resources/docSet.dsidx differ diff --git a/docs/docsets/ARCL.tgz b/docs/docsets/ARCL.tgz new file mode 100644 index 00000000..e256fdce Binary files /dev/null and b/docs/docsets/ARCL.tgz differ diff --git a/docs/img/carat.png b/docs/img/carat.png new file mode 100755 index 00000000..29d2f7fd Binary files /dev/null and b/docs/img/carat.png differ diff --git a/docs/img/dash.png b/docs/img/dash.png new file mode 100755 index 00000000..6f694c7a Binary files /dev/null and b/docs/img/dash.png differ diff --git a/docs/img/gh.png b/docs/img/gh.png new file mode 100755 index 00000000..628da97c Binary files /dev/null and b/docs/img/gh.png differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..8cb2b25a --- /dev/null +++ b/docs/index.html @@ -0,0 +1,408 @@ + + + + ARCL Reference + + + + + + + + + +
+
+

ARCL Docs (31% documented)

+

View on GitHub

+
+
+
+ +
+
+ +
+
+
+ +

ARKit + CoreLocation

+ +

+ + CI Status + + + MIT License + + + Pods Version + + + Carthage Compatible + +

+ +

ARKit: Uses camera and motion data to map out the local world as you move around.

+ +

CoreLocation: Uses wifi and GPS data to determine your global location, with a low degree of accuracy.

+ +

ARKit + CoreLocation: Combines the high accuracy of AR with the scale of GPS data.

+ +

Points of interest demo Navigation demo

+ +

The potential for combining these technologies is huge, with so many potential applications across many different areas. This library comes with two major features:

+ +
    +
  • Allow items to be placed within the AR world using real-world coordinates.
  • +
  • Dramatically improved location accuracy, using recent location data points combined with knowledge about movement through the AR world.
  • +
+ +

The improved location accuracy is currently in an “experimental” phase, but could be the most important component.

+ +

Because there’s still work to be done there, and in other areas, this project will best be served by an open community, more than what GitHub Issues would allow us. So I’m opening up a Slack group that anyone can join, to discuss the library, improvements to it, and their own work.

+ +

Join the Slack community

+

Requirements

+ +

ARKit requires iOS 11, and supports the following devices:

+ +
    +
  • iPhone 6S and upwards
  • +
  • iPhone SE
  • +
  • iPad (2017)
  • +
  • All iPad Pro models
  • +
+ +

iOS 11 can be downloaded from Apple’s Developer website.

+

Usage

+ +

This library contains the ARKit + CoreLocation framework, as well as a demo application similar to Demo 1.

+ +

Be sure to read the section on True North calibration.

+

Building with Swift:

+
swift build \
+        -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" \
+        -Xswiftc "-target" -Xswiftc "x86_64-apple-ios12.1-simulator"
+
+

Setting up using Swift Package Manager

+

Setting up using CocoaPods

+ +
    +
  1. Add to your podfile:
  2. +
+ +

pod 'ARCL'

+ +
    +
  1. In Terminal, navigate to your project folder, then:
  2. +
+ +

pod update

+ +

pod install

+ +
    +
  1. Add NSCameraUsageDescription and NSLocationWhenInUseUsageDescription to plist with a brief explanation (see demo project for an example)
  2. +
+

Setting up manually

+ +
    +
  1. Add all files from the ARKit+CoreLocation/Source directory to your project.
  2. +
  3. Import ARKit, SceneKit, CoreLocation and MapKit.
  4. +
  5. Add NSCameraUsageDescription and NSLocationWhenInUseUsageDescription to plist with a brief explanation (see demo project for an example)
  6. +
+

Quick start guide

+ +

To place a pin over a building, for example Canary Wharf in London, we’ll use the main class that ARCL is built around - SceneLocationView.

+ +

First, import ARCL and CoreLocation, then declare SceneLocationView as a property:

+
import ARCL
+import CoreLocation
+
+class ViewController: UIViewController {
+  var sceneLocationView = SceneLocationView()
+}
+
+ +

You should call sceneLocationView.run() whenever it’s in focus, and sceneLocationView.pause() if it’s interrupted, such as by moving to a different view or by leaving the app.

+
override func viewDidLoad() {
+  super.viewDidLoad()
+
+  sceneLocationView.run()
+  view.addSubview(sceneLocationView)
+}
+
+override func viewDidLayoutSubviews() {
+  super.viewDidLayoutSubviews()
+
+  sceneLocationView.frame = view.bounds
+}
+
+ +

After we’ve called run(), we can add our coordinate. ARCL comes with a class called LocationNode - an object within the 3D scene which has a real-world location along with a few other properties which allow it to be displayed appropriately within the world. LocationNode is a subclass of SceneKit’s SCNNode, and can also be subclassed further. For this example we’re going to use a subclass called LocationAnnotationNode, which we use to display a 2D image within the world, which always faces us:

+
let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)
+let location = CLLocation(coordinate: coordinate, altitude: 300)
+let image = UIImage(named: "pin")!
+
+let annotationNode = LocationAnnotationNode(location: location, image: image)
+
+ +

LocationAnnotationNode can also be initialized using a UIView. Internally, the UIView is converted into UIImage, so you cannot update the content dynamically. +However, this methods allows you to easily show complex layout as POI.

+
let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)
+let location = CLLocation(coordinate: coordinate, altitude: 300)
+let view = UIView() // or a custom UIView subclass
+
+let annotationNode = LocationAnnotationNode(location: location, view: view)
+
+ +

It can also be initialized with CALayer. You can use this when you want to update the contents live.

+
let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)
+let location = CLLocation(coordinate: coordinate, altitude: 300)
+let layer = CALayer() // or a custom CALayer subclass
+
+let annotationNode = LocationAnnotationNode(location: location, layer: layer)
+
+ +

By default, the image you set should always appear at the size it was given, for example if you give a 100x100 image, it would appear at 100x100 on the screen. This means distant annotation nodes can always be seen at the same size as nearby ones. If you’d rather they scale relative to their distance, you can set LocationAnnotationNode’s scaleRelativeToDistance to true.

+
sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: annotationNode)
+
+ +

There are two ways to add a location node to a scene - using addLocationNodeWithConfirmedLocation, or addLocationNodeForCurrentPosition, which positions it to be in the same position as the device, within the world, and then gives it a coordinate.

+ +

So that’s it. If you set the frame of your sceneLocationView, you should now see the pin hovering above Canary Wharf.

+ +

In order to get a notification when a node is touched in the sceneLocationView, you need to conform to LNTouchDelegate in the ViewController class.

+ +

The annotationNodeTouched(node: AnnotationNode) gives you access to node that was touched on the screen. AnnotationNode is a subclass of SCNNode with two extra properties: image: UIImage? and view: UIView?. Either of these properties will be filled in based on how the LocationAnnotationNode was initialized (using the constructor that takes UIImage or UIView).

+ +

The locationNodeTouched(node: LocationNode) gives you instead access to the nodes created from a PolyNode (e.g. the rendered directions of a MKRoute).

+
class ViewController: UIViewController, LNTouchDelegate {
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        //...
+        self.sceneLocationView.locationNodeTouchDelegate = self
+        //...
+    }
+
+    func annotationNodeTouched(node: AnnotationNode) {
+        // Do stuffs with the node instance
+
+        // node could have either node.view or node.image
+        if let nodeView = node.view{
+            // Do stuffs with the nodeView
+            // ...
+        }
+        if let nodeImage = node.image{
+            // Do stuffs with the nodeImage
+            // ...
+        }
+    }
+
+    func locationNodeTouched(node: LocationNode) {
+        guard let name = node.tag else { return }
+        guard let selectedNode = node.childNodes.first(where: { $0.geometry is SCNBox }) else { return }
+
+        // Interact with the selected node
+    }
+
+}
+
+

Additional features

+ +

The library and demo come with a bunch of additional features for configuration. It’s all fully documented to be sure to have a look around.

+ +

SceneLocationView is a subclass of ARSCNView. Note that while this gives you full access to ARSCNView to use it in other ways, you should not set the delegate to another class. If you need to use delegate features then you should subclass SceneLocationView.

+

True North calibration

+ +

One issue which I haven’t personally been able to overcome is that the iPhone’s True North calibration currently has an accuracy of 15º at best. This is fine for maps navigation, but when placing things on top of the AR world, it starts to become a problem.

+ +

I’m confident that this issue can be overcome by using various AR techniques - it’s one area I think can really benefit from a shared effort.

+ +

To improve this currently, I’ve added some functions to the library that allow adjusting the north point:

+ +
    +
  • sceneLocationView.moveSceneHeadingClockwise
  • +
  • sceneLocationView.moveSceneHeadingAntiClockwise
  • +
  • sceneLocationView.resetSceneHeading
  • +
+ +

You should use these by setting sceneLocationView.useTrueNorth to false, and then pointing the device in the general direction of north before beginning, so it’s reasonably close. With useTrueNorth set to true (default), it would continually adjust as it gets a better sense of north.

+ +

Within the demo app, there’s a disabled property called adjustNorthByTappingSidesOfScreen, which accesses these functions, and, once enabled, allows tapping on the left and right of the screen to adjust the scene heading.

+ +

My recommendation would be to fine a nearby landmark which is directly True North from your location, place an object there using a coordinate, and then use the moveSceneHeading functions to adjust the scene until it lines up.

+

Improved Location Accuracy

+ +

CoreLocation can deliver location updates anywhere from every 1-15 seconds, with accuracies which vary from 150m down to 4m. Occasionally, you’ll receive a far more accurate reading, like 4m or 8m, before returning to more inaccurate readings. At the same time, AR uses motion and camera data to create a map of the local world.

+ +

A user may receive a location reading accurate to 4m, then they walk 10m north and receive another location reading accurate to 65m. This 65m-accurate reading is the best that CoreLocation can offer, but knowing the user’s position within the AR scene when they got that 4m reading, and the fact that they’ve walked 10m north through the scene since then, we can translate that data to give them a new coordinate with about 4m of accuracy. This is accurate up to about 100m.

+ +

There is more detail on this on the wiki.

+

Issues

+ +

I mentioned this was experimental - currently, ARKit occasionally gets confused as the user is walking through a scene, and may change their position inaccurately. This issue also seems to affect the “euler angles”, or directional information about the device, so after a short distance it may think you’re walking in a different direction.

+ +

While Apple can improve ARKit over time, I think there are improvements we can make to avoid those issues, such as recognising when it happens and working to correct it, and by comparing location data with our supposed location to determine if we’ve moved outside a possible bounds.

+

Location Algorithm Improvements

+ +

There are further optimisations to determining a user’s location which can be made.

+ +

For example, one technique could be to look at recent location data, translate each data point using the user’s travel since then, and use the overlap between the data points to more narrowly determine the user’s possible location.

+ +

There is more detail on this on the wiki.

+

Going Forward

+ +

We have some Milestones and Issues related to them - anyone is welcome to discuss and contribute to them. Pull requests are welcomed. You can discuss new features/enhancements/bugs either by adding a new Issue or via the Slack community.

+

Thanks

+ +

Library created by @AndrewProjDent, but a community effort from here on.

+ +

Available as open source under the terms of the MIT License.

+ +
+
+ +
+
+ + + diff --git a/docs/js/jazzy.js b/docs/js/jazzy.js new file mode 100755 index 00000000..c31dc05e --- /dev/null +++ b/docs/js/jazzy.js @@ -0,0 +1,59 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`.token[href="${location.hash}"]`); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); diff --git a/docs/js/jquery.min.js b/docs/js/jquery.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/docs/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0A block that will build an SCNBox with the provided distance."},"Structs/AttributedType.html#/s:4ARCL14AttributedTypeV4typexvp":{"name":"type","abstract":"

Undocumented

","parent_name":"AttributedType"},"Structs/AttributedType.html#/s:4ARCL14AttributedTypeV9attributeSSvp":{"name":"attribute","abstract":"

Undocumented

","parent_name":"AttributedType"},"Structs/AttributedType.html#/s:4ARCL14AttributedTypeV4type9attributeACyxGx_SStcfc":{"name":"init(type:attribute:)","abstract":"

Undocumented

","parent_name":"AttributedType"},"Structs/LocationTranslation.html#/s:4ARCL19LocationTranslationV08latitudeC0Sdvp":{"name":"latitudeTranslation","abstract":"

Undocumented

","parent_name":"LocationTranslation"},"Structs/LocationTranslation.html#/s:4ARCL19LocationTranslationV09longitudeC0Sdvp":{"name":"longitudeTranslation","abstract":"

Undocumented

","parent_name":"LocationTranslation"},"Structs/LocationTranslation.html#/s:4ARCL19LocationTranslationV08altitudeC0Sdvp":{"name":"altitudeTranslation","abstract":"

Undocumented

","parent_name":"LocationTranslation"},"Structs/LocationTranslation.html#/s:4ARCL19LocationTranslationV08latitudeC009longitudeC008altitudeC0ACSd_S2dtcfc":{"name":"init(latitudeTranslation:longitudeTranslation:altitudeTranslation:)","abstract":"

This explicit definition is needed because the free init function is marked fileprivate by default,","parent_name":"LocationTranslation"},"Structs/ARKit_CoreLocation.html#/s:4ARCL18ARKit_CoreLocationV4textSSvp":{"name":"text","abstract":"

Undocumented

","parent_name":"ARKit_CoreLocation"},"Structs/ARKit_CoreLocation.html":{"name":"ARKit_CoreLocation","abstract":"

Undocumented

"},"Structs/LocationTranslation.html":{"name":"LocationTranslation","abstract":"

Translation in meters between 2 locations

"},"Structs/AttributedType.html":{"name":"AttributedType","abstract":"

Wrapper to decorate a type with an attribute

"},"Protocols/SceneTrackingDelegate.html#/s:4ARCL21SceneTrackingDelegateP21sessionWasInterruptedyySo9ARSessionCF":{"name":"sessionWasInterrupted(_:)","abstract":"

Undocumented

","parent_name":"SceneTrackingDelegate"},"Protocols/SceneTrackingDelegate.html#/s:4ARCL21SceneTrackingDelegateP24sessionInterruptionEndedyySo9ARSessionCF":{"name":"sessionInterruptionEnded(_:)","abstract":"

Undocumented

","parent_name":"SceneTrackingDelegate"},"Protocols/SceneTrackingDelegate.html#/s:4ARCL21SceneTrackingDelegateP7session_16didFailWithErrorySo9ARSessionC_s0I0_ptF":{"name":"session(_:didFailWithError:)","abstract":"

Undocumented

","parent_name":"SceneTrackingDelegate"},"Protocols/SceneTrackingDelegate.html#/s:4ARCL21SceneTrackingDelegateP7session_015cameraDidChangeC5StateySo9ARSessionC_So8ARCameraCtF":{"name":"session(_:cameraDidChangeTrackingState:)","abstract":"

Undocumented

","parent_name":"SceneTrackingDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegateP010didConfirmC6OfNode05scenecD04nodeyAA0bcD0C_AA0cI0CtF":{"name":"didConfirmLocationOfNode(sceneLocationView:node:)","abstract":"

After a node’s location is initially set based on current location,","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegateP08didSetupB4Node05scenecD00iH0yAA0bcD0C_So7SCNNodeCtF":{"name":"didSetupSceneNode(sceneLocationView:sceneNode:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegateP09didUpdatec10AndScaleOfC4Node05scenecD008locationK0yAA0bcD0C_AA0cK0CtF":{"name":"didUpdateLocationAndScaleOfLocationNode(sceneLocationView:locationNode:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegatePAAE06didAddbC8Estimate05scenecD08position8locationyAA0bcD0C_So10SCNVector3VSo10CLLocationCtF":{"name":"didAddSceneLocationEstimate(sceneLocationView:position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewDelegate.html#/s:4ARCL25SceneLocationViewDelegatePAAE09didRemovebC8Estimate05scenecD08position8locationyAA0bcD0C_So10SCNVector3VSo10CLLocationCtF":{"name":"didRemoveSceneLocationEstimate(sceneLocationView:position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewDelegate"},"Protocols/SceneLocationViewEstimateDelegate.html#/s:4ARCL33SceneLocationViewEstimateDelegateP06didAddbcE005scenecD08position8locationyAA0bcD0C_So10SCNVector3VSo10CLLocationCtF":{"name":"didAddSceneLocationEstimate(sceneLocationView:position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewEstimateDelegate"},"Protocols/SceneLocationViewEstimateDelegate.html#/s:4ARCL33SceneLocationViewEstimateDelegateP09didRemovebcE005scenecD08position8locationyAA0bcD0C_So10SCNVector3VSo10CLLocationCtF":{"name":"didRemoveSceneLocationEstimate(sceneLocationView:position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationViewEstimateDelegate"},"Protocols/LNTouchDelegate.html#/s:4ARCL15LNTouchDelegateP21annotationNodeTouched4nodeyAA010AnnotationE0C_tF":{"name":"annotationNodeTouched(node:)","abstract":"

Undocumented

","parent_name":"LNTouchDelegate"},"Protocols/LNTouchDelegate.html#/s:4ARCL15LNTouchDelegateP19locationNodeTouched4nodeyAA08LocationE0C_tF":{"name":"locationNodeTouched(node:)","abstract":"

Undocumented

","parent_name":"LNTouchDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP13scenePositionSo10SCNVector3VSgvp":{"name":"scenePosition","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP07confirmc9OfDistantC5NodesyyF":{"name":"confirmLocationOfDistantLocationNodes()","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP024updatePositionAndScaleOfC5NodesyyF":{"name":"updatePositionAndScaleOfLocationNodes()","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP06didAddbC8Estimate8position8locationySo10SCNVector3V_So10CLLocationCtF":{"name":"didAddSceneLocationEstimate(position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/SceneLocationManagerDelegate.html#/s:4ARCL28SceneLocationManagerDelegateP09didRemovebC8Estimate8position8locationySo10SCNVector3V_So10CLLocationCtF":{"name":"didRemoveSceneLocationEstimate(position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationManagerDelegate"},"Protocols/LocationManagerDelegate.html#/s:4ARCL23LocationManagerDelegateP08locationc9DidUpdateB0_0E0yAA0bC0C_So10CLLocationCtF":{"name":"locationManagerDidUpdateLocation(_:location:)","abstract":"

Undocumented

","parent_name":"LocationManagerDelegate"},"Protocols/LocationManagerDelegate.html#/s:4ARCL23LocationManagerDelegateP08locationC16DidUpdateHeading_7heading8accuracyyAA0bC0C_S2dtF":{"name":"locationManagerDidUpdateHeading(_:heading:accuracy:)","abstract":"

Undocumented

","parent_name":"LocationManagerDelegate"},"Protocols/LocationManagerDelegate.html":{"name":"LocationManagerDelegate","abstract":"

Undocumented

"},"Protocols/SceneLocationManagerDelegate.html":{"name":"SceneLocationManagerDelegate","abstract":"

Undocumented

"},"Protocols/LNTouchDelegate.html":{"name":"LNTouchDelegate","abstract":"

Undocumented

"},"Protocols/SceneLocationViewEstimateDelegate.html":{"name":"SceneLocationViewEstimateDelegate","abstract":"

Undocumented

"},"Protocols/SceneLocationViewDelegate.html":{"name":"SceneLocationViewDelegate","abstract":"

Undocumented

"},"Protocols/SceneTrackingDelegate.html":{"name":"SceneTrackingDelegate","abstract":"

Subset of delegate methods from ARSCNViewDelegate to be notified on tracking status changes

"},"Extensions/UIView.html#/s:So6UIViewC4ARCLE5imageSo7UIImageCvp":{"name":"image","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/SCNVector3.html#/s:So10SCNVector3V4ARCLE8distance2toSfAB_tF":{"name":"distance(to:)","abstract":"

Calculates distance between vectors","parent_name":"SCNVector3"},"Extensions/SCNNode.html#/s:So7SCNNodeC4ARCLE13removeFlicker18withRenderingOrderySi_tF":{"name":"removeFlicker(withRenderingOrder:)","abstract":"

Overlapping nodes require unique renderingOrder values to avoid flicker","parent_name":"SCNNode"},"Extensions/SCNNode.html#/s:So7SCNNodeC4ARCLE8axesNode12quiverLength0E9ThicknessAB12CoreGraphics7CGFloatV_AItFZ":{"name":"axesNode(quiverLength:quiverThickness:)","abstract":"

Returns a node similar to the one displayed when an ARSCNView‘s .debugOptions includes .showWorldOrigin

","parent_name":"SCNNode"},"Extensions/FloatingPoint.html#/s:SF4ARCLE16degreesToRadiansxvp":{"name":"degreesToRadians","abstract":"

Undocumented

","parent_name":"FloatingPoint"},"Extensions/FloatingPoint.html#/s:SF4ARCLE16radiansToDegreesxvp":{"name":"radiansToDegrees","abstract":"

Undocumented

","parent_name":"FloatingPoint"},"Extensions/CLLocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4ARCLE21coordinateWithBearing7bearing14distanceMetersABSd_SdtF":{"name":"coordinateWithBearing(bearing:distanceMeters:)","abstract":"

Returns a new CLLocationCoordinate2D at the given bearing and distance from the original point.","parent_name":"CLLocationCoordinate2D"},"Extensions/CLLocationCoordinate2D.html#/s:So22CLLocationCoordinate2DV4ARCLE17earthRadiusMetersSdyF":{"name":"earthRadiusMeters()","abstract":"

Return the WGS-84 radius of the earth, in meters, at the given point.

","parent_name":"CLLocationCoordinate2D"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE10coordinate8altitudeABSo0A12Coordinate2DV_Sdtcfc":{"name":"init(coordinate:altitude:)","abstract":"

Undocumented

","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE11translation10toLocationAC0E11TranslationVAB_tF":{"name":"translation(toLocation:)","abstract":"

Translates distance in meters between two locations.","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE18translatedLocation4withAbC0D11TranslationV_tF":{"name":"translatedLocation(with:)","abstract":"

TODO: rewrite .translatedLocation(with:) to improve the accuracy. See unit test notes.

","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE7bearing7betweenSdAB_tF":{"name":"bearing(between:)","abstract":"

Bearing from self to another point. Returns bearing in +/- degrees from north","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE14approxMidpoint2toA2B_tF":{"name":"approxMidpoint(to:)","abstract":"

Returns the midpoint between two locations","parent_name":"CLLocation"},"Extensions/CLLocation.html#/s:So10CLLocationC4ARCLE8debugLogSSvp":{"name":"debugLog","abstract":"

Undocumented

","parent_name":"CLLocation"},"Extensions/CGPoint.html#/s:So7CGPointV4ARCLE15pointWithVector6vectorABSo10SCNVector3V_tFZ":{"name":"pointWithVector(vector:)","abstract":"

Undocumented

","parent_name":"CGPoint"},"Extensions/CGPoint.html#/s:So7CGPointV4ARCLE19radiusContainsPoint0C05pointSb12CoreGraphics7CGFloatV_ABtF":{"name":"radiusContainsPoint(radius:point:)","abstract":"

Undocumented

","parent_name":"CGPoint"},"Extensions/Int.html#/s:Si4ARCLE5shortSSvp":{"name":"short","abstract":"

Undocumented

","parent_name":"Int"},"Extensions/Int.html#/s:Si4ARCLE6short3SSvp":{"name":"short3","abstract":"

Undocumented

","parent_name":"Int"},"Extensions/Float.html#/s:Sf4ARCLE5shortSSvp":{"name":"short","abstract":"

Undocumented

","parent_name":"Float"},"Extensions/Double.html#/s:Sd4ARCLE5shortSSvp":{"name":"short","abstract":"

Undocumented

","parent_name":"Double"},"Extensions/Double.html":{"name":"Double"},"Extensions/Float.html":{"name":"Float"},"Extensions/Int.html":{"name":"Int"},"Extensions/CGPoint.html":{"name":"CGPoint"},"Extensions/CLLocation.html":{"name":"CLLocation"},"Extensions/CLLocationCoordinate2D.html":{"name":"CLLocationCoordinate2D"},"Extensions/FloatingPoint.html":{"name":"FloatingPoint"},"Extensions/SCNNode.html":{"name":"SCNNode"},"Extensions/SCNVector3.html":{"name":"SCNVector3"},"Extensions/UIView.html":{"name":"UIView"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO6normalyA2CmF":{"name":"normal","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO6tieredyACSd_SftcACmF":{"name":"tiered(threshold:scale:)","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO12doubleTieredyACSd_SfSdSftcACmF":{"name":"doubleTiered(firstThreshold:firstScale:secondThreshold:secondScale:)","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO6linearyACSd_tcACmF":{"name":"linear(threshold:)","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO12linearBufferyACSd_SdtcACmF":{"name":"linearBuffer(threshold:buffer:)","abstract":"

Undocumented

","parent_name":"ScalingScheme"},"Enums/ScalingScheme.html#/s:4ARCL13ScalingSchemeO03getC0SfSd_SdtcyF":{"name":"getScheme()","abstract":"

Returns a closure to compute appropriate scale factor based on the current value of self (a ScalingSchee).","parent_name":"ScalingScheme"},"Enums/LocationEstimateMethod.html#/s:4ARCL22LocationEstimateMethodO04coreB8DataOnlyyA2CmF":{"name":"coreLocationDataOnly","abstract":"

Only uses Core Location data.","parent_name":"LocationEstimateMethod"},"Enums/LocationEstimateMethod.html#/s:4ARCL22LocationEstimateMethodO012mostRelevantC0yA2CmF":{"name":"mostRelevantEstimate","abstract":"

Combines knowledge about movement through the AR world with","parent_name":"LocationEstimateMethod"},"Enums/LocationEstimateMethod.html":{"name":"LocationEstimateMethod","abstract":"

Different methods which can be used when determining locations (such as the user’s location).

"},"Enums/ScalingScheme.html":{"name":"ScalingScheme","abstract":"

A set of schemes that can be used to scale a LocationNode.

"},"Classes/SceneLocationView/ARTrackingType.html#/s:4ARCL17SceneLocationViewC14ARTrackingTypeO19orientationTrackingyA2EmF":{"name":"orientationTracking","abstract":"

Undocumented

","parent_name":"ARTrackingType"},"Classes/SceneLocationView/ARTrackingType.html#/s:4ARCL17SceneLocationViewC14ARTrackingTypeO13worldTrackingyA2EmF":{"name":"worldTracking","abstract":"

Undocumented

","parent_name":"ARTrackingType"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC10sceneLimitSdvpZ":{"name":"sceneLimit","abstract":"

The limit to the scene, in terms of what data is considered reasonably accurate.","parent_name":"SceneLocationView"},"Classes/SceneLocationView/ARTrackingType.html":{"name":"ARTrackingType","abstract":"

The type of tracking to use.

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC08locationD8DelegateAA0bcdF0_pSgvp":{"name":"locationViewDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC24locationEstimateDelegateAA0bcdfG0_pSgvp":{"name":"locationEstimateDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC25locationNodeTouchDelegateAA07LNTouchH0_pSgvp":{"name":"locationNodeTouchDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC21sceneTrackingDelegateAA0bfG0_pSgvp":{"name":"sceneTrackingDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC05sceneC7ManagerAA0bcF0Cvp":{"name":"sceneLocationManager","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@M@ARCL@objc(cs)SceneLocationView(py)delegate":{"name":"delegate","abstract":"

Addresses Issue #196 -","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC02arD8DelegateSo09ARSCNViewF0_pSgvp":{"name":"arViewDelegate","abstract":"

If you wish to receive delegate ARSCNViewDelegate events, use this instead of the delegate property.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC22locationEstimateMethodAA0cfG0Ovp":{"name":"locationEstimateMethod","abstract":"

The method to use for determining locations.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC12showAxesNodeSbvp":{"name":"showAxesNode","abstract":"

When set to true, displays an axes node at the start of the scene

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC9sceneNodeSo7SCNNodeCSgvp":{"name":"sceneNode","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC17orientToTrueNorthSbvp":{"name":"orientToTrueNorth","abstract":"

Only to be overrided if you plan on manually setting True North.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC17showFeaturePointsSbvp":{"name":"showFeaturePoints","abstract":"

Whether debugging feature points should be displayed.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC07currentB8PositionSo10SCNVector3VSgvp":{"name":"currentScenePosition","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC18currentEulerAnglesSo10SCNVector3VSgvp":{"name":"currentEulerAngles","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC13locationNodesSayAA0C4NodeCGvp":{"name":"locationNodes","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC13polylineNodesSayAA12PolylineNodeCGvp":{"name":"polylineNodes","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC14arTrackingTypeAC010ARTrackingG0Ovp":{"name":"arTrackingType","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC015didFetchInitialC0Sbvp":{"name":"didFetchInitialLocation","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC12trackingType5frame7optionsA2C010ARTrackingF0O_So6CGRectVSDySSypGSgtcfc":{"name":"init(trackingType:frame:options:)","abstract":"

This initializer allows you to specify the type of tracking configuration (defaults to world tracking) as well as","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@M@ARCL@objc(cs)SceneLocationView(im)initWithFrame:options:":{"name":"init(frame:options:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@M@ARCL@objc(cs)SceneLocationView(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC05resetB7HeadingyyF":{"name":"resetSceneHeading()","abstract":"

Resets the scene heading to 0

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC07confirmc2OfC4NodeyyAA0cG0CF":{"name":"confirmLocationOfLocationNode(_:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC010locationOfC4NodeySo10CLLocationCAA0cG0CF":{"name":"locationOfLocationNode(_:)","abstract":"

Gives the best estimate of the location of a node

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:nodeForAnchor:":{"name":"renderer(_:nodeFor:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didAddNode:forAnchor:":{"name":"renderer(_:didAdd:for:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:willUpdateNode:forAnchor:":{"name":"renderer(_:willUpdate:for:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didUpdateNode:forAnchor:":{"name":"renderer(_:didUpdate:for:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didRemoveNode:forAnchor:":{"name":"renderer(_:didRemove:for:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)session:didFailWithError:":{"name":"session(_:didFailWithError:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)session:cameraDidChangeTrackingState:":{"name":"session(_:cameraDidChangeTrackingState:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)sessionWasInterrupted:":{"name":"sessionWasInterrupted(_:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)sessionInterruptionEnded:":{"name":"sessionInterruptionEnded(_:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)sessionShouldAttemptRelocalization:":{"name":"sessionShouldAttemptRelocalization(_:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)session:didOutputAudioSampleBuffer:":{"name":"session(_:didOutputAudioSampleBuffer:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didRenderScene:atTime:":{"name":"renderer(_:didRenderScene:atTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:updateAtTime:":{"name":"renderer(_:updateAtTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didApplyAnimationsAtTime:":{"name":"renderer(_:didApplyAnimationsAtTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didSimulatePhysicsAtTime:":{"name":"renderer(_:didSimulatePhysicsAtTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:didApplyConstraintsAtTime:":{"name":"renderer(_:didApplyConstraintsAtTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)renderer:willRenderScene:atTime:":{"name":"renderer(_:willRenderScene:atTime:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC3runyyF":{"name":"run()","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC5pauseyyF":{"name":"pause()","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC04moveB16HeadingClockwiseyyF":{"name":"moveSceneHeadingClockwise()","abstract":"

iOS can be inaccurate when setting true north","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC04moveB20HeadingAntiClockwiseyyF":{"name":"moveSceneHeadingAntiClockwise()","abstract":"

Moves the scene heading anti-clockwise by 1 degree","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC03addC22NodeForCurrentPosition08locationF0yAA0cF0C_tF":{"name":"addLocationNodeForCurrentPosition(locationNode:)","abstract":"

Upon being added, a node’s location, locationConfirmed and position may be modified and should not be changed externally.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC03addC23NodesForCurrentPosition08locationF0ySayAA0C4NodeCG_tF":{"name":"addLocationNodesForCurrentPosition(locationNodes:)","abstract":"

Each node’s addition to the scene can silently fail; See addLocationNodeForCurrentPosition(locationNode:).

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC03addc17NodeWithConfirmedC008locationF0yAA0cF0C_tF":{"name":"addLocationNodeWithConfirmedLocation(locationNode:)","abstract":"

Silently fails and returns without adding the node unlesslocation is not nil and locationConfirmed is true.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/c:@CM@ARCL@objc(cs)SceneLocationView(im)sceneLocationViewTouchedWithSender:":{"name":"sceneLocationViewTouched(sender:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC03addc18NodesWithConfirmedC008locationF0ySayAA0C4NodeCG_tF":{"name":"addLocationNodesWithConfirmedLocation(locationNodes:)","abstract":"

Each node’s addition to the scene can silently fail; See addLocationNodeWithConfirmedLocation(locationNode:).

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC14removeAllNodesyyF":{"name":"removeAllNodes()","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC24sceneContainsNodeWithTagySbSSF":{"name":"sceneContainsNodeWithTag(_:)","abstract":"

Determine if scene contains a node with the specified tag

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC9findNodes6taggedSayAA0C4NodeCGSS_tF":{"name":"findNodes(tagged:)","abstract":"

Find all location nodes in the scene tagged with tag

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC06removeC4Node08locationF0yAA0cF0C_tF":{"name":"removeLocationNode(locationNode:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC06removeC5Nodes08locationF0ySayAA0C4NodeCG_tF":{"name":"removeLocationNodes(locationNodes:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC9addRoutes6routes10boxBuilderySaySo7MKRouteCG_So6SCNBoxC12CoreGraphics7CGFloatVcSgtF":{"name":"addRoutes(routes:boxBuilder:)","abstract":"

Adds routes to the scene and lets you specify the geometry prototype for the box.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC9addRoutes9polylines0012altitude_wBf10boxBuilderySayAA14AttributedTypeVySo10MKPolylineCGG_SdSo6SCNBoxC12CoreGraphics7CGFloatVcSgtF":{"name":"addRoutes(polylines:Δaltitude:boxBuilder:)","abstract":"

Adds polylines to the scene and lets you specify the geometry prototype for the box.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC12removeRoutes6routesySaySo7MKRouteCG_tF":{"name":"removeRoutes(routes:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC12addPolylines9polylines10boxBuilderySaySo10MKPolylineCG_So6SCNBoxC12CoreGraphics7CGFloatVcSgtF":{"name":"addPolylines(polylines:boxBuilder:)","abstract":"

Adds polylines to the scene and lets you specify the geometry prototype for the box.","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC15removePolylines9polylinesySaySo10MKPolylineCG_tF":{"name":"removePolylines(polylines:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC13scenePositionSo10SCNVector3VSgvp":{"name":"scenePosition","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC07confirmc9OfDistantC5NodesyyF":{"name":"confirmLocationOfDistantLocationNodes()","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC024updatePositionAndScaleOfC5NodesyyF":{"name":"updatePositionAndScaleOfLocationNodes()","abstract":"

Updates the position and scale of the polylineNodes and the locationNodes.

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC06didAddbC8Estimate8position8locationySo10SCNVector3V_So10CLLocationCtF":{"name":"didAddSceneLocationEstimate(position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/SceneLocationView.html#/s:4ARCL17SceneLocationViewC09didRemovebC8Estimate8position8locationySo10SCNVector3V_So10CLLocationCtF":{"name":"didRemoveSceneLocationEstimate(position:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationView"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC13locationNodesSayAA08LocationC0CGvp":{"name":"locationNodes","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC8polylineSo10MKPolylineCvp":{"name":"polyline","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC8altitudeSdvp":{"name":"altitude","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC10boxBuilderySo6SCNBoxC12CoreGraphics7CGFloatVcvp":{"name":"boxBuilder","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/s:4ARCL12PolylineNodeC8polyline8altitude3tag10boxBuilderACSo10MKPolylineC_SdSSSgSo6SCNBoxC12CoreGraphics7CGFloatVcSgtcfc":{"name":"init(polyline:altitude:tag:boxBuilder:)","abstract":"

Creates a PolylineNode from the provided polyline, altitude (which is assumed to be uniform","parent_name":"PolylineNode"},"Classes/PolylineNode.html#/c:@M@ARCL@objc(cs)PolylineNode(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"PolylineNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC22locationEstimateMethodAA0beF0Ovp":{"name":"locationEstimateMethod","abstract":"

This seems like it should be a bug? Why is it hardcoded? Why would it ever be different from the scene’s setting?

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC8locationSo10CLLocationCSgvp":{"name":"location","abstract":"

Location can be changed and confirmed later by SceneLocationView.

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC3tagSSSgvp":{"name":"tag","abstract":"

A general purpose tag that can be used to find nodes already added to a SceneLocationView

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC17locationConfirmedSbvp":{"name":"locationConfirmed","abstract":"

Whether the location of the node has been confirmed.","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC017continuallyAdjustC23PositionWhenWithinRangeSbvp":{"name":"continuallyAdjustNodePositionWhenWithinRange","abstract":"

Whether a node’s position should be adjusted on an ongoing basis","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC33continuallyUpdatePositionAndScaleSbvp":{"name":"continuallyUpdatePositionAndScale","abstract":"

Whether a node’s position and scale should be updated automatically on a continual basis.","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC23scaleRelativeToDistanceSbvp":{"name":"scaleRelativeToDistance","abstract":"

Whether the node should be scaled relative to its distance from the camera","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC14ignoreAltitudeSbvp":{"name":"ignoreAltitude","abstract":"

Whether the node should appear at the same altitude of the user","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC13scalingSchemeAA07ScalingE0Ovp":{"name":"scalingScheme","abstract":"

The scheme to use for scaling

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC8location3tagACSo10CLLocationCSg_SSSgtcfc":{"name":"init(location:tag:)","abstract":"

Undocumented

","parent_name":"LocationNode"},"Classes/LocationNode.html#/c:@M@ARCL@objc(cs)LocationNode(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC8locationySo10CLLocationCAA05SceneB8EstimateCSgF":{"name":"location(_:)","abstract":"

Undocumented

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC16adjustedDistance5setup8position08locationcB00H7ManagerSdSb_So10SCNVector3VSo10CLLocationCAA05ScenebI0CtF":{"name":"adjustedDistance(setup:position:locationNodeLocation:locationManager:)","abstract":"

Undocumented

","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC22updatePositionAndScale5setup05sceneE008locationcB00J7Manager12onCompletionySb_So10SCNVector3VSgSo10CLLocationCAA05ScenebK0CyyXEtF":{"name":"updatePositionAndScale(setup:scenePosition:locationNodeLocation:locationManager:onCompletion:)","abstract":"

See LocationAnnotationNode‘s override of this function. Because it doesn’t invoke super’s version, any changes","parent_name":"LocationNode"},"Classes/LocationNode.html#/s:4ARCL12LocationNodeC14renderingOrder12fromDistanceSiSd_tF":{"name":"renderingOrder(fromDistance:)","abstract":"

Converts distance from meters to SCNKit rendering order","parent_name":"LocationNode"},"Classes/AnnotationNode.html#/s:4ARCL14AnnotationNodeC4viewSo6UIViewCSgvp":{"name":"view","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/AnnotationNode.html#/s:4ARCL14AnnotationNodeC5imageSo7UIImageCSgvp":{"name":"image","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/AnnotationNode.html#/s:4ARCL14AnnotationNodeC5layerSo7CALayerCSgvp":{"name":"layer","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/AnnotationNode.html#/s:4ARCL14AnnotationNodeC4view5image5layerACSo6UIViewCSg_So7UIImageCSgSo7CALayerCSgtcfc":{"name":"init(view:image:layer:)","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/AnnotationNode.html#/c:@M@ARCL@objc(cs)AnnotationNode(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"AnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC010annotationD0AA0cD0Cvp":{"name":"annotationNode","abstract":"

Subnodes and adjustments should be applied to this subnode","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC32annotationHeightAdjustmentFactorSdvp":{"name":"annotationHeightAdjustmentFactor","abstract":"

Parameter to raise or lower the label’s rendering position relative to the node’s actual project location.","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC8location5imageACSo10CLLocationCSg_So7UIImageCtcfc":{"name":"init(location:image:)","abstract":"

Undocumented

","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC8location4viewACSo10CLLocationCSg_So6UIViewCtcfc":{"name":"init(location:view:)","abstract":"

Undocumented

","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC8location5layerACSo10CLLocationCSg_So7CALayerCtcfc":{"name":"init(location:layer:)","abstract":"

Undocumented

","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/c:@M@ARCL@objc(cs)LocationAnnotationNode(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"LocationAnnotationNode"},"Classes/LocationAnnotationNode.html#/s:4ARCL22LocationAnnotationNodeC22updatePositionAndScale5setup05sceneF008locationdB00K7Manager12onCompletionySb_So10SCNVector3VSgSo10CLLocationCAA05ScenebL0CyyXEtF":{"name":"updatePositionAndScale(setup:scenePosition:locationNodeLocation:locationManager:onCompletion:)","abstract":"

Note: we repeat code from LocationNode‘s implementation of this function. Is this because of the use of SCNTransaction","parent_name":"LocationAnnotationNode"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC05sceneC8DelegateAA0bcdF0_pSgvp":{"name":"sceneLocationDelegate","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC22locationEstimateMethodAA0cfG0Ovp":{"name":"locationEstimateMethod","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC08locationD0AA0cD0Cvp":{"name":"locationManager","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC05sceneC9EstimatesSayAA0bC8EstimateCGvp":{"name":"sceneLocationEstimates","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC20updateEstimatesTimerSo7NSTimerCSgvp":{"name":"updateEstimatesTimer","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC04bestC8EstimateAA0bcF0CSgvp":{"name":"bestLocationEstimate","abstract":"

The best estimation of location that has been taken","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC07currentC0So10CLLocationCSgvp":{"name":"currentLocation","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerCACycfc":{"name":"init()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerCfd":{"name":"deinit","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC06updateC4DatayyF":{"name":"updateLocationData()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC03addbC8Estimate8locationySo10CLLocationC_tF":{"name":"addSceneLocationEstimate(location:)","abstract":"

Adds a scene location estimate based on current time, camera position and location from location manager

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC09removeOldC9EstimatesyyF":{"name":"removeOldLocationEstimates()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC09removeOldC9Estimates07currentB8PositionySo10SCNVector3V_tF":{"name":"removeOldLocationEstimates(currentScenePosition:)","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC3runyyF":{"name":"run()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC5pauseyyF":{"name":"pause()","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationManager.html#/s:4ARCL20SceneLocationManagerC08locationd9DidUpdateC0_0E0yAA0cD0C_So10CLLocationCtF":{"name":"locationManagerDidUpdateLocation(_:location:)","abstract":"

Undocumented

","parent_name":"SceneLocationManager"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC8locationSo10CLLocationCvp":{"name":"location","abstract":"

Undocumented

","parent_name":"SceneLocationEstimate"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC8positionSo10SCNVector3Vvp":{"name":"position","abstract":"

Undocumented

","parent_name":"SceneLocationEstimate"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC8location8positionACSo10CLLocationC_So10SCNVector3Vtcfc":{"name":"init(location:position:)","abstract":"

Undocumented

","parent_name":"SceneLocationEstimate"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC19locationTranslation2toAA0cF0VSo10SCNVector3V_tF":{"name":"locationTranslation(to:)","abstract":"

Compares the location’s position to another position, to determine the translation between them

","parent_name":"SceneLocationEstimate"},"Classes/SceneLocationEstimate.html#/s:4ARCL21SceneLocationEstimateC010translatedC02toSo10CLLocationCSo10SCNVector3V_tF":{"name":"translatedLocation(to:)","abstract":"

Translates the location by comparing with a given position

","parent_name":"SceneLocationEstimate"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC8delegateAA0bC8Delegate_pSgvp":{"name":"delegate","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC07currentB0So10CLLocationCSgvp":{"name":"currentLocation","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC7headingSdSgvp":{"name":"heading","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC15headingAccuracySdSgvp":{"name":"headingAccuracy","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@M@ARCL@objc(cs)LocationManager(im)init":{"name":"init()","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/s:4ARCL15LocationManagerC20requestAuthorizationyyF":{"name":"requestAuthorization()","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@CM@ARCL@objc(cs)LocationManager(im)locationManager:didChangeAuthorizationStatus:":{"name":"locationManager(_:didChangeAuthorization:)","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@CM@ARCL@objc(cs)LocationManager(im)locationManager:didUpdateLocations:":{"name":"locationManager(_:didUpdateLocations:)","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@CM@ARCL@objc(cs)LocationManager(im)locationManager:didUpdateHeading:":{"name":"locationManager(_:didUpdateHeading:)","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html#/c:@CM@ARCL@objc(cs)LocationManager(im)locationManagerShouldDisplayHeadingCalibration:":{"name":"locationManagerShouldDisplayHeadingCalibration(_:)","abstract":"

Undocumented

","parent_name":"LocationManager"},"Classes/LocationManager.html":{"name":"LocationManager","abstract":"

Handles retrieving the location and heading from CoreLocation"},"Classes/SceneLocationEstimate.html":{"name":"SceneLocationEstimate","abstract":"

Undocumented

"},"Classes/SceneLocationManager.html":{"name":"SceneLocationManager","abstract":"

Undocumented

"},"Classes/LocationAnnotationNode.html":{"name":"LocationAnnotationNode","abstract":"

A LocationNode which has an attached AnnotationNode.

"},"Classes/AnnotationNode.html":{"name":"AnnotationNode","abstract":"

This node type enables the client to have access to the view or image that"},"Classes/LocationNode.html":{"name":"LocationNode","abstract":"

A location node can be added to a scene using a coordinate.

"},"Classes/PolylineNode.html":{"name":"PolylineNode","abstract":"

A Node that is used to show directions in AR-CL.

"},"Classes/SceneLocationView.html":{"name":"SceneLocationView","abstract":"

Undocumented

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Extensions.html":{"name":"Extensions","abstract":"

The following extensions are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"},"Typealiases.html":{"name":"Type Aliases","abstract":"

The following type aliases are available globally.

"}} \ No newline at end of file diff --git a/docs/undocumented.json b/docs/undocumented.json new file mode 100644 index 00000000..fab731df --- /dev/null +++ b/docs/undocumented.json @@ -0,0 +1,1132 @@ +{ + "warnings": [ + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/ARKit_CoreLocation.swift", + "line": 1, + "symbol": "ARKit_CoreLocation", + "symbol_kind": "source.lang.swift.decl.struct", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/ARKit_CoreLocation.swift", + "line": 3, + "symbol": "ARKit_CoreLocation.text", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/BaseTypes+Extensions.swift", + "line": 12, + "symbol": "Double.short", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/BaseTypes+Extensions.swift", + "line": 16, + "symbol": "Float.short", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/BaseTypes+Extensions.swift", + "line": 20, + "symbol": "Int.short", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/BaseTypes+Extensions.swift", + "line": 21, + "symbol": "Int.short3", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/CGPoint+Extensions.swift", + "line": 13, + "symbol": "CGPoint.pointWithVector(vector:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/CGPoint+Extensions.swift", + "line": 17, + "symbol": "CGPoint.radiusContainsPoint(radius:point:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/CLLocation+Extensions.swift", + "line": 14, + "symbol": "LocationTranslation.latitudeTranslation", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/CLLocation+Extensions.swift", + "line": 15, + "symbol": "LocationTranslation.longitudeTranslation", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/CLLocation+Extensions.swift", + "line": 16, + "symbol": "LocationTranslation.altitudeTranslation", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/CLLocation+Extensions.swift", + "line": 28, + "symbol": "CLLocation.init(coordinate:altitude:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/CLLocation+Extensions.swift", + "line": 110, + "symbol": "CLLocation.debugLog", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/FloatingPoint+Radians.swift", + "line": 12, + "symbol": "FloatingPoint.degreesToRadians", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Extensions/FloatingPoint+Radians.swift", + "line": 13, + "symbol": "FloatingPoint.radiansToDegrees", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 12, + "symbol": "LocationManagerDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 13, + "symbol": "LocationManagerDelegate.locationManagerDidUpdateLocation(_:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 15, + "symbol": "LocationManagerDelegate.locationManagerDidUpdateHeading(_:heading:accuracy:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 20, + "symbol": "LocationManagerDelegate", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 21, + "symbol": "LocationManagerDelegate.locationManagerDidUpdateLocation(_:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 24, + "symbol": "LocationManagerDelegate.locationManagerDidUpdateHeading(_:heading:accuracy:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 32, + "symbol": "LocationManager.delegate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 36, + "symbol": "LocationManager.currentLocation", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 38, + "symbol": "LocationManager.heading", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 39, + "symbol": "LocationManager.headingAccuracy", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 41, + "symbol": "LocationManager.init()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 58, + "symbol": "LocationManager.requestAuthorization()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 77, + "symbol": "LocationManager.locationManager(_:didChangeAuthorization:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 81, + "symbol": "LocationManager.locationManager(_:didUpdateLocations:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 89, + "symbol": "LocationManager.locationManager(_:didUpdateHeading:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/LocationManager.swift", + "line": 96, + "symbol": "LocationManager.locationManagerShouldDisplayHeadingCalibration(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationEstimate.swift", + "line": 12, + "symbol": "SceneLocationEstimate", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationEstimate.swift", + "line": 13, + "symbol": "SceneLocationEstimate", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationEstimate.swift", + "line": 14, + "symbol": "SceneLocationEstimate.location", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationEstimate.swift", + "line": 15, + "symbol": "SceneLocationEstimate.position", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationEstimate.swift", + "line": 17, + "symbol": "SceneLocationEstimate.init(location:position:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 25, + "symbol": "SceneLocationManagerDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 26, + "symbol": "SceneLocationManagerDelegate.scenePosition", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 28, + "symbol": "SceneLocationManagerDelegate.confirmLocationOfDistantLocationNodes()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 29, + "symbol": "SceneLocationManagerDelegate.updatePositionAndScaleOfLocationNodes()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 31, + "symbol": "SceneLocationManagerDelegate.didAddSceneLocationEstimate(position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 32, + "symbol": "SceneLocationManagerDelegate.didRemoveSceneLocationEstimate(position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 35, + "symbol": "SceneLocationManager", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 36, + "symbol": "SceneLocationManager.sceneLocationDelegate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 38, + "symbol": "SceneLocationManager.locationEstimateMethod", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 39, + "symbol": "SceneLocationManager.locationManager", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 41, + "symbol": "SceneLocationManager.sceneLocationEstimates", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 43, + "symbol": "SceneLocationManager.updateEstimatesTimer", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 61, + "symbol": "SceneLocationManager.currentLocation", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 70, + "symbol": "SceneLocationManager.init()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 74, + "symbol": "SceneLocationManager.deinit", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 79, + "symbol": "SceneLocationManager.updateLocationData()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 95, + "symbol": "SceneLocationManager.removeOldLocationEstimates()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 100, + "symbol": "SceneLocationManager.removeOldLocationEstimates(currentScenePosition:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 122, + "symbol": "SceneLocationManager", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 123, + "symbol": "SceneLocationManager.run()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 134, + "symbol": "SceneLocationManager.pause()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 140, + "symbol": "SceneLocationManager", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Location Manager/SceneLocationManager.swift", + "line": 142, + "symbol": "SceneLocationManager.locationManagerDidUpdateLocation(_:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationAnnotationNode.swift", + "line": 23, + "symbol": "LocationAnnotationNode.init(location:image:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationAnnotationNode.swift", + "line": 49, + "symbol": "LocationAnnotationNode.init(location:view:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationAnnotationNode.swift", + "line": 53, + "symbol": "LocationAnnotationNode.init(location:layer:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationAnnotationNode.swift", + "line": 71, + "symbol": "LocationAnnotationNode.init(coder:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationAnnotationNode.swift", + "line": 132, + "symbol": "UIView.image", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 16, + "symbol": "AnnotationNode.view", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 17, + "symbol": "AnnotationNode.image", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 18, + "symbol": "AnnotationNode.layer", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 20, + "symbol": "AnnotationNode.init(view:image:layer:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 27, + "symbol": "AnnotationNode.init(coder:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 88, + "symbol": "LocationNode.init(location:tag:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 94, + "symbol": "LocationNode.init(coder:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 98, + "symbol": "LocationNode.location(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/LocationNode.swift", + "line": 111, + "symbol": "LocationNode.adjustedDistance(setup:position:locationNodeLocation:locationManager:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/PolylineNode.swift", + "line": 19, + "symbol": "PolylineNode.locationNodes", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/PolylineNode.swift", + "line": 21, + "symbol": "PolylineNode.polyline", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/PolylineNode.swift", + "line": 22, + "symbol": "PolylineNode.altitude", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/PolylineNode.swift", + "line": 23, + "symbol": "PolylineNode.boxBuilder", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/PolylineNode.swift", + "line": 48, + "symbol": "PolylineNode.init(coder:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/ScalingScheme.swift", + "line": 22, + "symbol": "ScalingScheme.normal", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/ScalingScheme.swift", + "line": 23, + "symbol": "ScalingScheme.tiered(threshold:scale:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/ScalingScheme.swift", + "line": 24, + "symbol": "ScalingScheme.doubleTiered(firstThreshold:firstScale:secondThreshold:secondScale:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/ScalingScheme.swift", + "line": 25, + "symbol": "ScalingScheme.linear(threshold:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Nodes/ScalingScheme.swift", + "line": 26, + "symbol": "ScalingScheme.linearBuffer(threshold:buffer:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 19, + "symbol": "SceneLocationView.renderer(_:nodeFor:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 23, + "symbol": "SceneLocationView.renderer(_:didAdd:for:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 27, + "symbol": "SceneLocationView.renderer(_:willUpdate:for:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 31, + "symbol": "SceneLocationView.renderer(_:didUpdate:for:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 35, + "symbol": "SceneLocationView.renderer(_:didRemove:for:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 46, + "symbol": "SceneLocationView.session(_:didFailWithError:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 54, + "symbol": "SceneLocationView.session(_:cameraDidChangeTrackingState:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 77, + "symbol": "SceneLocationView.sessionWasInterrupted(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 85, + "symbol": "SceneLocationView.sessionInterruptionEnded(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 94, + "symbol": "SceneLocationView.sessionShouldAttemptRelocalization(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 98, + "symbol": "SceneLocationView.session(_:didOutputAudioSampleBuffer:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 109, + "symbol": "SceneLocationView.renderer(_:didRenderScene:atTime:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 133, + "symbol": "SceneLocationView.renderer(_:updateAtTime:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 137, + "symbol": "SceneLocationView.renderer(_:didApplyAnimationsAtTime:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 141, + "symbol": "SceneLocationView.renderer(_:didSimulatePhysicsAtTime:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 145, + "symbol": "SceneLocationView.renderer(_:didApplyConstraintsAtTime:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView+ARSCNViewDelegate.swift", + "line": 149, + "symbol": "SceneLocationView.renderer(_:willRenderScene:atTime:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 17, + "symbol": "SceneLocationView", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 23, + "symbol": "SceneLocationView", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 37, + "symbol": "SceneLocationView.ARTrackingType.orientationTracking", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 38, + "symbol": "SceneLocationView.ARTrackingType.worldTracking", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 41, + "symbol": "SceneLocationView.locationViewDelegate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 42, + "symbol": "SceneLocationView.locationEstimateDelegate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 43, + "symbol": "SceneLocationView.locationNodeTouchDelegate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 44, + "symbol": "SceneLocationView", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 44, + "symbol": "SceneLocationView.sceneTrackingDelegate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 46, + "symbol": "SceneLocationView.sceneLocationManager", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 86, + "symbol": "SceneLocationView.sceneNode", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 107, + "symbol": "SceneLocationView", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 110, + "symbol": "SceneLocationView.currentScenePosition", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 115, + "symbol": "SceneLocationView.currentEulerAngles", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 117, + "symbol": "SceneLocationView.locationNodes", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 118, + "symbol": "SceneLocationView.polylineNodes", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 119, + "symbol": "SceneLocationView.arTrackingType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 122, + "symbol": "SceneLocationView.didFetchInitialLocation", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 138, + "symbol": "SceneLocationView.init(frame:options:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 143, + "symbol": "SceneLocationView.init(coder:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 167, + "symbol": "SceneLocationView.confirmLocationOfLocationNode(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 189, + "symbol": "SceneLocationView", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 191, + "symbol": "SceneLocationView.run()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 207, + "symbol": "SceneLocationView.pause()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 279, + "symbol": "SceneLocationView.sceneLocationViewTouched(sender:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 303, + "symbol": "SceneLocationView.removeAllNodes()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 331, + "symbol": "SceneLocationView.removeLocationNode(locationNode:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 339, + "symbol": "SceneLocationView.removeLocationNodes(locationNodes:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 345, + "symbol": "SceneLocationView", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 393, + "symbol": "SceneLocationView.removeRoutes(routes:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 403, + "symbol": "SceneLocationView", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 434, + "symbol": "SceneLocationView.removePolylines(polylines:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 444, + "symbol": "SceneLocationView", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 445, + "symbol": "SceneLocationView.scenePosition", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 447, + "symbol": "SceneLocationView.confirmLocationOfDistantLocationNodes()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 488, + "symbol": "SceneLocationView.didAddSceneLocationEstimate(position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationView.swift", + "line": 492, + "symbol": "SceneLocationView.didRemoveSceneLocationEstimate(position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 15, + "symbol": "LNTouchDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 16, + "symbol": "LNTouchDelegate.annotationNodeTouched(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 17, + "symbol": "LNTouchDelegate.locationNodeTouched(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 21, + "symbol": "SceneLocationViewEstimateDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 22, + "symbol": "SceneLocationViewEstimateDelegate.didAddSceneLocationEstimate(sceneLocationView:position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 23, + "symbol": "SceneLocationViewEstimateDelegate.didRemoveSceneLocationEstimate(sceneLocationView:position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 27, + "symbol": "SceneLocationViewEstimateDelegate", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 28, + "symbol": "SceneLocationViewEstimateDelegate.didAddSceneLocationEstimate(sceneLocationView:position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 31, + "symbol": "SceneLocationViewEstimateDelegate.didRemoveSceneLocationEstimate(sceneLocationView:position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 37, + "symbol": "SceneLocationViewDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 43, + "symbol": "SceneLocationViewDelegate.didSetupSceneNode(sceneLocationView:sceneNode:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 45, + "symbol": "SceneLocationViewDelegate.didUpdateLocationAndScaleOfLocationNode(sceneLocationView:locationNode:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 52, + "symbol": "SceneTrackingDelegate.sessionWasInterrupted(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 54, + "symbol": "SceneTrackingDelegate.sessionInterruptionEnded(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 56, + "symbol": "SceneTrackingDelegate.session(_:didFailWithError:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 58, + "symbol": "SceneTrackingDelegate.session(_:cameraDidChangeTrackingState:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 63, + "symbol": "SceneLocationViewDelegate", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 64, + "symbol": "SceneLocationViewDelegate.didAddSceneLocationEstimate(sceneLocationView:position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 67, + "symbol": "SceneLocationViewDelegate.didRemoveSceneLocationEstimate(sceneLocationView:position:location:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 74, + "symbol": "SceneLocationViewDelegate.didSetupSceneNode(sceneLocationView:sceneNode:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/SceneLocationViewEstimateDelegate.swift", + "line": 78, + "symbol": "SceneLocationViewDelegate.didUpdateLocationAndScaleOfLocationNode(sceneLocationView:locationNode:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Util/AttributedType.swift", + "line": 12, + "symbol": "AttributedType.type", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Util/AttributedType.swift", + "line": 13, + "symbol": "AttributedType.attribute", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation/Sources/ARKit-CoreLocation/Util/AttributedType.swift", + "line": 15, + "symbol": "AttributedType.init(type:attribute:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + } + ], + "source_directory": "/Users/hal/DevelopmentSandbox/ProjectDent-ARKit-CoreLocation" +} \ No newline at end of file