Documentation Archive Developer
Search

SceneKit Changes for Swift

SceneKit

Removed SCNActionable.hasActions() -> Bool
Removed SCNAnimatable.animationKeys() -> [AnyObject]?
Removed SCNNode.presentationNode() -> SCNNode
Removed SCNPhysicsCollisionCategory.init(_: UInt)
Removed SCNPhysicsWorld.allBehaviors() -> [AnyObject]!
Removed SCNSceneSource.entryWithIdentifier(_: String, withClass: AnyClass) -> AnyObject?
Added double3.init(_: SCNVector3)
Added double4.init(_: SCNVector4)
Added double4x4.init(_: SCNMatrix4)
Added float3.init(_: SCNVector3)
Added float4.init(_: SCNVector4)
Added float4x4.init(_: SCNMatrix4)
Added SCNBillboardAxis.init(rawValue: UInt)
Added SCNDebugOptions.init(rawValue: UInt)
Added SCNGeometryElement.init<IndexType : IntegerType>(indices: [IndexType], primitiveType: SCNGeometryPrimitiveType)
Added SCNMatrix4.init(_: double4x4)
Added SCNMatrix4.init(_: float4x4)
Added SCNSceneSource.entryWithIdentifier<T>(_: String, withClass: T.Type) -> T?
Added SCNVector3.init(_: float3)
Added SCNVector3.init(_: double3)
Added SCNVector3.init(_: Float, _: Float, _: Float)
Added SCNVector3.init(_: Double, _: Double, _: Double)
Added SCNVector3.init(_: Int, _: Int, _: Int)
Added SCNVector3.init(_: CGFloat, _: CGFloat, _: CGFloat)
Added SCNVector4.init(_: double4)
Added SCNVector4.init(_: float4)
Added SCNVector4.init(_: CGFloat, _: CGFloat, _: CGFloat, _: CGFloat)
Added SCNVector4.init(_: Float, _: Float, _: Float, _: Float)
Added SCNVector4.init(_: Double, _: Double, _: Double, _: Double)
Added SCNVector4.init(_: Int, _: Int, _: Int, _: Int)
Added SCNFloat
Declaration
From
var animationEvents: [AnyObject]!
To
var animationEvents: [SCNAnimationEvent]?

Declaration
From
init!(SCNMatrix4 v: SCNMatrix4) -> NSValue
To
init(SCNMatrix4 v: SCNMatrix4)

Declaration
From
init!(SCNVector3 v: SCNVector3) -> NSValue
To
init(SCNVector3 v: SCNVector3)

Declaration
From
init!(SCNVector4 v: SCNVector4) -> NSValue
To
init(SCNVector4 v: SCNVector4)

Modified SCNAction
Declaration
From
class SCNAction : NSObject, NSCopying, NSSecureCoding, NSCoding {
    var duration: NSTimeInterval
    var timingMode: SCNActionTimingMode
    var timingFunction: SCNActionTimingFunction?
    var speed: CGFloat
    func reversedAction() -> SCNAction
}
extension SCNAction {
    class func moveByX(_ deltaX: CGFloat, y deltaY: CGFloat, z deltaZ: CGFloat, duration duration: NSTimeInterval) -> SCNAction
    class func moveBy(_ delta: SCNVector3, duration duration: NSTimeInterval) -> SCNAction
    class func moveTo(_ location: SCNVector3, duration duration: NSTimeInterval) -> SCNAction
    class func rotateByX(_ xAngle: CGFloat, y yAngle: CGFloat, z zAngle: CGFloat, duration duration: NSTimeInterval) -> SCNAction
    class func rotateToX(_ xAngle: CGFloat, y yAngle: CGFloat, z zAngle: CGFloat, duration duration: NSTimeInterval) -> SCNAction
    class func rotateToX(_ xAngle: CGFloat, y yAngle: CGFloat, z zAngle: CGFloat, duration duration: NSTimeInterval, shortestUnitArc shortestUnitArc: Bool) -> SCNAction
    class func rotateByAngle(_ angle: CGFloat, aroundAxis axis: SCNVector3, duration duration: NSTimeInterval) -> SCNAction
    class func rotateToAxisAngle(_ axisAngle: SCNVector4, duration duration: NSTimeInterval) -> SCNAction
    class func scaleBy(_ scale: CGFloat, duration sec: NSTimeInterval) -> SCNAction
    class func scaleTo(_ scale: CGFloat, duration sec: NSTimeInterval) -> SCNAction
    class func sequence(_ actions: [AnyObject]) -> SCNAction
    class func group(_ actions: [AnyObject]) -> SCNAction
    class func repeatAction(_ action: SCNAction, count count: Int) -> SCNAction
    class func repeatActionForever(_ action: SCNAction) -> SCNAction
    class func fadeInWithDuration(_ sec: NSTimeInterval) -> SCNAction
    class func fadeOutWithDuration(_ sec: NSTimeInterval) -> SCNAction
    class func fadeOpacityBy(_ factor: CGFloat, duration sec: NSTimeInterval) -> SCNAction
    class func fadeOpacityTo(_ opacity: CGFloat, duration sec: NSTimeInterval) -> SCNAction
    class func waitForDuration(_ sec: NSTimeInterval) -> SCNAction
    class func waitForDuration(_ sec: NSTimeInterval, withRange durationRange: NSTimeInterval) -> SCNAction
    class func removeFromParentNode() -> SCNAction
    class func runBlock(_ block: (SCNNode!) -> Void) -> SCNAction
    class func runBlock(_ block: (SCNNode!) -> Void, queue queue: dispatch_queue_t?) -> SCNAction
    class func javaScriptActionWithScript(_ script: String, duration seconds: NSTimeInterval) -> SCNAction
    class func customActionWithDuration(_ seconds: NSTimeInterval, actionBlock block: (SCNNode!, CGFloat) -> Void) -> SCNAction
}
To
class SCNAction : NSObject, NSCopying, NSSecureCoding, NSCoding {
    var duration: NSTimeInterval
    var timingMode: SCNActionTimingMode
    var timingFunction: SCNActionTimingFunction?
    var speed: CGFloat
    func reversedAction() -> SCNAction
    class func moveByX(_ deltaX: CGFloat, y deltaY: CGFloat, z deltaZ: CGFloat, duration duration: NSTimeInterval) -> SCNAction
    class func moveBy(_ delta: SCNVector3, duration duration: NSTimeInterval) -> SCNAction
    class func moveTo(_ location: SCNVector3, duration duration: NSTimeInterval) -> SCNAction
    class func rotateByX(_ xAngle: CGFloat, y yAngle: CGFloat, z zAngle: CGFloat, duration duration: NSTimeInterval) -> SCNAction
    class func rotateToX(_ xAngle: CGFloat, y yAngle: CGFloat, z zAngle: CGFloat, duration duration: NSTimeInterval) -> SCNAction
    class func rotateToX(_ xAngle: CGFloat, y yAngle: CGFloat, z zAngle: CGFloat, duration duration: NSTimeInterval, shortestUnitArc shortestUnitArc: Bool) -> SCNAction
    class func rotateByAngle(_ angle: CGFloat, aroundAxis axis: SCNVector3, duration duration: NSTimeInterval) -> SCNAction
    class func rotateToAxisAngle(_ axisAngle: SCNVector4, duration duration: NSTimeInterval) -> SCNAction
    class func scaleBy(_ scale: CGFloat, duration sec: NSTimeInterval) -> SCNAction
    class func scaleTo(_ scale: CGFloat, duration sec: NSTimeInterval) -> SCNAction
    class func sequence(_ actions: [SCNAction]) -> SCNAction
    class func group(_ actions: [SCNAction]) -> SCNAction
    class func repeatAction(_ action: SCNAction, count count: Int) -> SCNAction
    class func repeatActionForever(_ action: SCNAction) -> SCNAction
    class func fadeInWithDuration(_ sec: NSTimeInterval) -> SCNAction
    class func fadeOutWithDuration(_ sec: NSTimeInterval) -> SCNAction
    class func fadeOpacityBy(_ factor: CGFloat, duration sec: NSTimeInterval) -> SCNAction
    class func fadeOpacityTo(_ opacity: CGFloat, duration sec: NSTimeInterval) -> SCNAction
    class func hide() -> SCNAction
    class func unhide() -> SCNAction
    class func waitForDuration(_ sec: NSTimeInterval) -> SCNAction
    class func waitForDuration(_ sec: NSTimeInterval, withRange durationRange: NSTimeInterval) -> SCNAction
    class func removeFromParentNode() -> SCNAction
    class func runBlock(_ block: (SCNNode) -> Void) -> SCNAction
    class func runBlock(_ block: (SCNNode) -> Void, queue queue: dispatch_queue_t) -> SCNAction
    class func javaScriptActionWithScript(_ script: String, duration seconds: NSTimeInterval) -> SCNAction
    class func customActionWithDuration(_ seconds: NSTimeInterval, actionBlock block: (SCNNode, CGFloat) -> Void) -> SCNAction
    class func playAudioSource(_ source: SCNAudioSource, waitForCompletion wait: Bool) -> SCNAction
}

Declaration
From
class func customActionWithDuration(_ seconds: NSTimeInterval, actionBlock block: (SCNNode!, CGFloat) -> Void) -> SCNAction
To
class func customActionWithDuration(_ seconds: NSTimeInterval, actionBlock block: (SCNNode, CGFloat) -> Void) -> SCNAction

Declaration
From
class func group(_ actions: [AnyObject]) -> SCNAction
To
class func group(_ actions: [SCNAction]) -> SCNAction

Declaration
From
class func runBlock(_ block: (SCNNode!) -> Void) -> SCNAction
To
class func runBlock(_ block: (SCNNode) -> Void) -> SCNAction

Declaration
From
class func runBlock(_ block: (SCNNode!) -> Void, queue queue: dispatch_queue_t?) -> SCNAction
To
class func runBlock(_ block: (SCNNode) -> Void, queue queue: dispatch_queue_t) -> SCNAction

Declaration
From
class func sequence(_ actions: [AnyObject]) -> SCNAction
To
class func sequence(_ actions: [SCNAction]) -> SCNAction

Modified SCNActionable
Declaration
From
protocol SCNActionable : NSObjectProtocol {
    func runAction(_ action: SCNAction)
    func runAction(_ action: SCNAction, completionHandler block: (() -> Void)?)
    func runAction(_ action: SCNAction, forKey key: String?)
    func runAction(_ action: SCNAction, forKey key: String?, completionHandler block: (() -> Void)?)
    func hasActions() -> Bool
    func actionForKey(_ key: String) -> SCNAction?
    func removeActionForKey(_ key: String)
    func removeAllActions()
}
To
protocol SCNActionable : NSObjectProtocol {
    func runAction(_ action: SCNAction)
    func runAction(_ action: SCNAction, completionHandler block: (() -> Void)?)
    func runAction(_ action: SCNAction, forKey key: String?)
    func runAction(_ action: SCNAction, forKey key: String?, completionHandler block: (() -> Void)?)
    var hasActions: Bool { get }
    func actionForKey(_ key: String) -> SCNAction?
    func removeActionForKey(_ key: String)
    func removeAllActions()
    var actionKeys: [String] { get }
}

Raw Value Type
From--
ToInt

Modified SCNAnimatable
Declaration
From
protocol SCNAnimatable : NSObjectProtocol {
    func addAnimation(_ animation: CAAnimation, forKey key: String?)
    func removeAllAnimations()
    func removeAnimationForKey(_ key: String)
    func animationKeys() -> [AnyObject]?
    func animationForKey(_ key: String) -> CAAnimation?
    func pauseAnimationForKey(_ key: String)
    func resumeAnimationForKey(_ key: String)
    func isAnimationForKeyPaused(_ key: String) -> Bool
    func removeAnimationForKey(_ key: String, fadeOutDuration duration: CGFloat)
}
To
protocol SCNAnimatable : NSObjectProtocol {
    func addAnimation(_ animation: CAAnimation, forKey key: String?)
    func removeAllAnimations()
    func removeAnimationForKey(_ key: String)
    var animationKeys: [String] { get }
    func animationForKey(_ key: String) -> CAAnimation?
    func pauseAnimationForKey(_ key: String)
    func resumeAnimationForKey(_ key: String)
    func isAnimationForKeyPaused(_ key: String) -> Bool
    func removeAnimationForKey(_ key: String, fadeOutDuration duration: CGFloat)
}

Declaration
From
class SCNAnimationEvent : NSObject {
    convenience init(keyTime time: CGFloat, block eventBlock: SCNAnimationEventBlock!)
    class func animationEventWithKeyTime(_ time: CGFloat, block eventBlock: SCNAnimationEventBlock!) -> Self
}
To
class SCNAnimationEvent : NSObject {
    convenience init(keyTime time: CGFloat, block eventBlock: SCNAnimationEventBlock)
    class func animationEventWithKeyTime(_ time: CGFloat, block eventBlock: SCNAnimationEventBlock) -> Self
}

Declaration
From
convenience init(keyTime time: CGFloat, block eventBlock: SCNAnimationEventBlock!)
To
convenience init(keyTime time: CGFloat, block eventBlock: SCNAnimationEventBlock)

Raw Value Type
From--
ToUInt

Modified SCNCamera
Declaration
From
class SCNCamera : NSObject, SCNAnimatable, NSObjectProtocol, SCNTechniqueSupport, NSCopying, NSSecureCoding, NSCoding {
    convenience init!()
    class func camera() -> Self!
    var name: String?
    var xFov: Double
    var yFov: Double
    var zNear: Double
    var zFar: Double
    var automaticallyAdjustsZRange: Bool
    var usesOrthographicProjection: Bool
    var orthographicScale: Double
    func projectionTransform() -> SCNMatrix4
    func setProjectionTransform(_ projectionTransform: SCNMatrix4)
    var focalDistance: CGFloat
    var focalSize: CGFloat
    var focalBlurRadius: CGFloat
    var aperture: CGFloat
    var categoryBitMask: Int
}
To
class SCNCamera : NSObject, SCNAnimatable, SCNTechniqueSupport, NSCopying, NSSecureCoding, NSCoding {
    convenience init()
    class func camera() -> Self
    var name: String?
    var xFov: Double
    var yFov: Double
    var zNear: Double
    var zFar: Double
    var automaticallyAdjustsZRange: Bool
    var usesOrthographicProjection: Bool
    var orthographicScale: Double
    func projectionTransform() -> SCNMatrix4
    func setProjectionTransform(_ projectionTransform: SCNMatrix4)
    var focalDistance: CGFloat
    var focalSize: CGFloat
    var focalBlurRadius: CGFloat
    var aperture: CGFloat
    var categoryBitMask: Int
}

Raw Value Type
From--
ToInt

Modified SCNConstraint
Declaration
From
class SCNConstraint : NSObject, NSCopying, NSSecureCoding, NSCoding, SCNAnimatable, NSObjectProtocol {
    var influenceFactor: CGFloat
}
To
class SCNConstraint : NSObject, NSCopying, NSSecureCoding, NSCoding, SCNAnimatable {
    var influenceFactor: CGFloat
}

Raw Value Type
From--
ToInt

DeclarationRaw Value Type
From
enum SCNFilterMode : Int {
    case FilterModeNone
    case FilterModeNearest
    case FilterModeLinear
}
--
To
enum SCNFilterMode : Int {
    case None
    case Nearest
    case Linear
}
Int

Declaration
From
case FilterModeLinear
To
case Linear

Declaration
From
case FilterModeNearest
To
case Nearest

Declaration
From
case FilterModeNone
To
case None

Modified SCNFloor
Declaration
From
class SCNFloor : SCNGeometry {
    convenience init!()
    class func floor() -> Self!
    var reflectivity: CGFloat
    var reflectionFalloffStart: CGFloat
    var reflectionFalloffEnd: CGFloat
    var reflectionResolutionScaleFactor: CGFloat
}
To
class SCNFloor : SCNGeometry {
    convenience init()
    class func floor() -> Self
    var reflectivity: CGFloat
    var reflectionFalloffStart: CGFloat
    var reflectionFalloffEnd: CGFloat
    var reflectionResolutionScaleFactor: CGFloat
}

Modified SCNGeometry
Declaration
From
class SCNGeometry : NSObject, SCNAnimatable, NSObjectProtocol, SCNBoundingVolume, SCNShadable, NSCopying, NSSecureCoding, NSCoding {
    convenience init!()
    class func geometry() -> Self!
    var name: String?
    var materials: [AnyObject]?
    var firstMaterial: SCNMaterial?
    func insertMaterial(_ material: SCNMaterial, atIndex index: Int)
    func removeMaterialAtIndex(_ index: Int)
    func replaceMaterialAtIndex(_ index: Int, withMaterial material: SCNMaterial)
    func materialWithName(_ name: String) -> SCNMaterial?
    convenience init(sources sources: [AnyObject], elements elements: [AnyObject]?)
    class func geometryWithSources(_ sources: [AnyObject], elements elements: [AnyObject]?) -> Self
    func geometrySourcesForSemantic(_ semantic: String) -> [AnyObject]?
    var geometryElementCount: Int { get }
    func geometryElementAtIndex(_ elementIndex: Int) -> SCNGeometryElement?
    var levelsOfDetail: [AnyObject]?
    var subdivisionLevel: Int
    var edgeCreasesElement: SCNGeometryElement?
    var edgeCreasesSource: SCNGeometrySource?
}
To
class SCNGeometry : NSObject, SCNAnimatable, SCNBoundingVolume, SCNShadable, NSCopying, NSSecureCoding, NSCoding {
    convenience init()
    class func geometry() -> Self
    var name: String?
    var materials: [SCNMaterial]
    var firstMaterial: SCNMaterial?
    func insertMaterial(_ material: SCNMaterial, atIndex index: Int)
    func removeMaterialAtIndex(_ index: Int)
    func replaceMaterialAtIndex(_ index: Int, withMaterial material: SCNMaterial)
    func materialWithName(_ name: String) -> SCNMaterial?
    convenience init(sources sources: [SCNGeometrySource], elements elements: [SCNGeometryElement])
    class func geometryWithSources(_ sources: [SCNGeometrySource], elements elements: [SCNGeometryElement]) -> Self
    var geometrySources: [SCNGeometrySource] { get }
    func geometrySourcesForSemantic(_ semantic: String) -> [SCNGeometrySource]
    var geometryElements: [SCNGeometryElement] { get }
    var geometryElementCount: Int { get }
    func geometryElementAtIndex(_ elementIndex: Int) -> SCNGeometryElement
    var levelsOfDetail: [SCNLevelOfDetail]?
    var subdivisionLevel: Int
    var edgeCreasesElement: SCNGeometryElement?
    var edgeCreasesSource: SCNGeometrySource?
}

Declaration
From
func geometryElementAtIndex(_ elementIndex: Int) -> SCNGeometryElement?
To
func geometryElementAtIndex(_ elementIndex: Int) -> SCNGeometryElement

Declaration
From
func geometrySourcesForSemantic(_ semantic: String) -> [AnyObject]?
To
func geometrySourcesForSemantic(_ semantic: String) -> [SCNGeometrySource]

Declaration
From
convenience init(sources sources: [AnyObject], elements elements: [AnyObject]?)
To
convenience init(sources sources: [SCNGeometrySource], elements elements: [SCNGeometryElement])

Declaration
From
var levelsOfDetail: [AnyObject]?
To
var levelsOfDetail: [SCNLevelOfDetail]?

Declaration
From
var materials: [AnyObject]?
To
var materials: [SCNMaterial]

Declaration
From
class SCNGeometryElement : NSObject, NSSecureCoding, NSCoding {
    convenience init(data data: NSData, primitiveType primitiveType: SCNGeometryPrimitiveType, primitiveCount primitiveCount: Int, bytesPerIndex bytesPerIndex: Int)
    class func geometryElementWithData(_ data: NSData, primitiveType primitiveType: SCNGeometryPrimitiveType, primitiveCount primitiveCount: Int, bytesPerIndex bytesPerIndex: Int) -> Self
    var data: NSData? { get }
    var primitiveType: SCNGeometryPrimitiveType { get }
    var primitiveCount: Int { get }
    var bytesPerIndex: Int { get }
}
To
class SCNGeometryElement : NSObject, NSSecureCoding, NSCoding {
    convenience init(data data: NSData?, primitiveType primitiveType: SCNGeometryPrimitiveType, primitiveCount primitiveCount: Int, bytesPerIndex bytesPerIndex: Int)
    class func geometryElementWithData(_ data: NSData?, primitiveType primitiveType: SCNGeometryPrimitiveType, primitiveCount primitiveCount: Int, bytesPerIndex bytesPerIndex: Int) -> Self
    var data: NSData { get }
    var primitiveType: SCNGeometryPrimitiveType { get }
    var primitiveCount: Int { get }
    var bytesPerIndex: Int { get }
}
extension SCNGeometryElement {
    convenience init<IndexType : IntegerType>(indices indices: [IndexType], primitiveType primitiveType: SCNGeometryPrimitiveType)
}
extension SCNGeometryElement {
    convenience init<IndexType : IntegerType>(indices indices: [IndexType], primitiveType primitiveType: SCNGeometryPrimitiveType)
}

Declaration
From
var data: NSData? { get }
To
var data: NSData { get }

Declaration
From
convenience init(data data: NSData, primitiveType primitiveType: SCNGeometryPrimitiveType, primitiveCount primitiveCount: Int, bytesPerIndex bytesPerIndex: Int)
To
convenience init(data data: NSData?, primitiveType primitiveType: SCNGeometryPrimitiveType, primitiveCount primitiveCount: Int, bytesPerIndex bytesPerIndex: Int)

Raw Value Type
From--
ToInt

Declaration
From
class SCNGeometrySource : NSObject, NSSecureCoding, NSCoding {
    convenience init(data data: NSData, semantic semantic: String, vectorCount vectorCount: Int, floatComponents floatComponents: Bool, componentsPerVector componentsPerVector: Int, bytesPerComponent bytesPerComponent: Int, dataOffset offset: Int, dataStride stride: Int)
    class func geometrySourceWithData(_ data: NSData, semantic semantic: String, vectorCount vectorCount: Int, floatComponents floatComponents: Bool, componentsPerVector componentsPerVector: Int, bytesPerComponent bytesPerComponent: Int, dataOffset offset: Int, dataStride stride: Int) -> Self
    convenience init(vertices vertices: UnsafePointer<SCNVector3>, count count: Int)
    class func geometrySourceWithVertices(_ vertices: UnsafePointer<SCNVector3>, count count: Int) -> Self
    convenience init(normals normals: UnsafePointer<SCNVector3>, count count: Int)
    class func geometrySourceWithNormals(_ normals: UnsafePointer<SCNVector3>, count count: Int) -> Self
    convenience init(textureCoordinates texcoord: UnsafePointer<CGPoint>, count count: Int)
    class func geometrySourceWithTextureCoordinates(_ texcoord: UnsafePointer<CGPoint>, count count: Int) -> Self
    var data: NSData? { get }
    var semantic: String { get }
    var vectorCount: Int { get }
    var floatComponents: Bool { get }
    var componentsPerVector: Int { get }
    var bytesPerComponent: Int { get }
    var dataOffset: Int { get }
    var dataStride: Int { get }
}
To
class SCNGeometrySource : NSObject, NSSecureCoding, NSCoding {
    convenience init(data data: NSData, semantic semantic: String, vectorCount vectorCount: Int, floatComponents floatComponents: Bool, componentsPerVector componentsPerVector: Int, bytesPerComponent bytesPerComponent: Int, dataOffset offset: Int, dataStride stride: Int)
    class func geometrySourceWithData(_ data: NSData, semantic semantic: String, vectorCount vectorCount: Int, floatComponents floatComponents: Bool, componentsPerVector componentsPerVector: Int, bytesPerComponent bytesPerComponent: Int, dataOffset offset: Int, dataStride stride: Int) -> Self
    convenience init(vertices vertices: UnsafePointer<SCNVector3>, count count: Int)
    class func geometrySourceWithVertices(_ vertices: UnsafePointer<SCNVector3>, count count: Int) -> Self
    convenience init(normals normals: UnsafePointer<SCNVector3>, count count: Int)
    class func geometrySourceWithNormals(_ normals: UnsafePointer<SCNVector3>, count count: Int) -> Self
    convenience init(textureCoordinates texcoord: UnsafePointer<CGPoint>, count count: Int)
    class func geometrySourceWithTextureCoordinates(_ texcoord: UnsafePointer<CGPoint>, count count: Int) -> Self
    convenience init(buffer mtlBuffer: MTLBuffer, vertexFormat vertexFormat: MTLVertexFormat, semantic semantic: String, vertexCount vertexCount: Int, dataOffset offset: Int, dataStride stride: Int)
    class func geometrySourceWithBuffer(_ mtlBuffer: MTLBuffer, vertexFormat vertexFormat: MTLVertexFormat, semantic semantic: String, vertexCount vertexCount: Int, dataOffset offset: Int, dataStride stride: Int) -> Self
    var data: NSData { get }
    var semantic: String { get }
    var vectorCount: Int { get }
    var floatComponents: Bool { get }
    var componentsPerVector: Int { get }
    var bytesPerComponent: Int { get }
    var dataOffset: Int { get }
    var dataStride: Int { get }
}

Declaration
From
var data: NSData? { get }
To
var data: NSData { get }

Declaration
From
class SCNIKConstraint : SCNConstraint {
    class func inverseKinematicsConstraintWithChainRootNode(_ chainRootNode: SCNNode) -> Self
    var chainRootNode: SCNNode { get }
    var targetPosition: SCNVector3
    func setMaxAllowedRotationAngle(_ angle: CGFloat, forJoint node: SCNNode)
    func maxAllowedRotationAngleForJoint(_ node: SCNNode) -> CGFloat
}
To
class SCNIKConstraint : SCNConstraint {
    init(chainRootNode chainRootNode: SCNNode)
    class func inverseKinematicsConstraintWithChainRootNode(_ chainRootNode: SCNNode) -> Self
    var chainRootNode: SCNNode { get }
    var targetPosition: SCNVector3
    func setMaxAllowedRotationAngle(_ angle: CGFloat, forJoint node: SCNNode)
    func maxAllowedRotationAngleForJoint(_ node: SCNNode) -> CGFloat
}

Modified SCNLayer
Declaration
From
class SCNLayer : CAOpenGLLayer, SCNSceneRenderer, NSObjectProtocol, SCNTechniqueSupport {
    var scene: SCNScene?
}
To
class SCNLayer : CAOpenGLLayer, SCNSceneRenderer, SCNTechniqueSupport {
    var scene: SCNScene?
}

Modified SCNLight
Declaration
From
class SCNLight : NSObject, SCNAnimatable, NSObjectProtocol, SCNTechniqueSupport, NSCopying, NSSecureCoding, NSCoding {
    convenience init!()
    class func light() -> Self!
    var type: String
    var color: AnyObject
    var name: String?
    var castsShadow: Bool
    var shadowColor: AnyObject
    var shadowRadius: CGFloat
    var shadowMapSize: CGSize
    var shadowSampleCount: Int
    var shadowMode: SCNShadowMode
    var shadowBias: CGFloat
    var orthographicScale: CGFloat
    var zNear: CGFloat
    var zFar: CGFloat
    var attenuationStartDistance: CGFloat
    var attenuationEndDistance: CGFloat
    var attenuationFalloffExponent: CGFloat
    var spotInnerAngle: CGFloat
    var spotOuterAngle: CGFloat
    var gobo: SCNMaterialProperty { get }
    var categoryBitMask: Int
    func attributeForKey(_ key: String) -> AnyObject?
    func setAttribute(_ attribute: AnyObject?, forKey key: String)
}
To
class SCNLight : NSObject, SCNAnimatable, SCNTechniqueSupport, NSCopying, NSSecureCoding, NSCoding {
    convenience init()
    class func light() -> Self
    var type: String
    var color: AnyObject
    var name: String?
    var castsShadow: Bool
    var shadowColor: AnyObject
    var shadowRadius: CGFloat
    var shadowMapSize: CGSize
    var shadowSampleCount: Int
    var shadowMode: SCNShadowMode
    var shadowBias: CGFloat
    var orthographicScale: CGFloat
    var zNear: CGFloat
    var zFar: CGFloat
    var attenuationStartDistance: CGFloat
    var attenuationEndDistance: CGFloat
    var attenuationFalloffExponent: CGFloat
    var spotInnerAngle: CGFloat
    var spotOuterAngle: CGFloat
    var gobo: SCNMaterialProperty? { get }
    var categoryBitMask: Int
    func attributeForKey(_ key: String) -> AnyObject?
    func setAttribute(_ attribute: AnyObject?, forKey key: String)
}

Modified SCNLight.gobo
Declaration
From
var gobo: SCNMaterialProperty { get }
To
var gobo: SCNMaterialProperty? { get }

Declaration
From
class SCNLookAtConstraint : SCNConstraint {
    convenience init(target target: SCNNode)
    class func lookAtConstraintWithTarget(_ target: SCNNode) -> Self
    var target: SCNNode? { get }
    var gimbalLockEnabled: Bool
}
To
class SCNLookAtConstraint : SCNConstraint {
    convenience init(target target: SCNNode)
    class func lookAtConstraintWithTarget(_ target: SCNNode) -> Self
    var target: SCNNode { get }
    var gimbalLockEnabled: Bool
}

Declaration
From
var target: SCNNode? { get }
To
var target: SCNNode { get }

Modified SCNMaterial
Declaration
From
class SCNMaterial : NSObject, SCNAnimatable, NSObjectProtocol, SCNShadable, NSCopying, NSSecureCoding, NSCoding {
    convenience init!()
    class func material() -> Self!
    var name: String?
    var diffuse: SCNMaterialProperty { get }
    var ambient: SCNMaterialProperty { get }
    var specular: SCNMaterialProperty { get }
    var emission: SCNMaterialProperty { get }
    var transparent: SCNMaterialProperty { get }
    var reflective: SCNMaterialProperty { get }
    var multiply: SCNMaterialProperty { get }
    var normal: SCNMaterialProperty { get }
    var shininess: CGFloat
    var transparency: CGFloat
    var lightingModelName: String
    var litPerPixel: Bool
    var doubleSided: Bool
    var cullMode: SCNCullMode
    var transparencyMode: SCNTransparencyMode
    var locksAmbientWithDiffuse: Bool
    var writesToDepthBuffer: Bool
    var readsFromDepthBuffer: Bool
    var fresnelExponent: CGFloat
}
To
class SCNMaterial : NSObject, SCNAnimatable, SCNShadable, NSCopying, NSSecureCoding, NSCoding {
    convenience init()
    class func material() -> Self
    var name: String?
    var diffuse: SCNMaterialProperty { get }
    var ambient: SCNMaterialProperty { get }
    var specular: SCNMaterialProperty { get }
    var emission: SCNMaterialProperty { get }
    var transparent: SCNMaterialProperty { get }
    var reflective: SCNMaterialProperty { get }
    var multiply: SCNMaterialProperty { get }
    var normal: SCNMaterialProperty { get }
    var ambientOcclusion: SCNMaterialProperty { get }
    var selfIllumination: SCNMaterialProperty { get }
    var shininess: CGFloat
    var transparency: CGFloat
    var lightingModelName: String
    var litPerPixel: Bool
    var doubleSided: Bool
    var cullMode: SCNCullMode
    var transparencyMode: SCNTransparencyMode
    var locksAmbientWithDiffuse: Bool
    var writesToDepthBuffer: Bool
    var readsFromDepthBuffer: Bool
    var fresnelExponent: CGFloat
    var blendMode: SCNBlendMode
}

Declaration
From
class SCNMaterialProperty : NSObject, SCNAnimatable, NSObjectProtocol, NSSecureCoding, NSCoding {
    convenience init(contents contents: AnyObject)
    class func materialPropertyWithContents(_ contents: AnyObject) -> Self
    var contents: AnyObject!
    var intensity: CGFloat
    var minificationFilter: SCNFilterMode
    var magnificationFilter: SCNFilterMode
    var mipFilter: SCNFilterMode
    var contentsTransform: SCNMatrix4
    var wrapS: SCNWrapMode
    var wrapT: SCNWrapMode
    var borderColor: AnyObject
    var mappingChannel: Int
    var maxAnisotropy: CGFloat
}
To
class SCNMaterialProperty : NSObject, SCNAnimatable, NSSecureCoding, NSCoding {
    convenience init(contents contents: AnyObject)
    class func materialPropertyWithContents(_ contents: AnyObject) -> Self
    var contents: AnyObject?
    var intensity: CGFloat
    var minificationFilter: SCNFilterMode
    var magnificationFilter: SCNFilterMode
    var mipFilter: SCNFilterMode
    var contentsTransform: SCNMatrix4
    var wrapS: SCNWrapMode
    var wrapT: SCNWrapMode
    var borderColor: AnyObject?
    var mappingChannel: Int
    var maxAnisotropy: CGFloat
}

Declaration
From
var borderColor: AnyObject
To
var borderColor: AnyObject?

Declaration
From
var contents: AnyObject!
To
var contents: AnyObject?

Modified SCNMorpher
Declaration
From
class SCNMorpher : NSObject, SCNAnimatable, NSObjectProtocol, NSSecureCoding, NSCoding {
    var targets: [AnyObject]?
    func setWeight(_ weight: CGFloat, forTargetAtIndex targetIndex: Int)
    func weightForTargetAtIndex(_ targetIndex: Int) -> CGFloat
    var calculationMode: SCNMorpherCalculationMode
}
To
class SCNMorpher : NSObject, SCNAnimatable, NSSecureCoding, NSCoding {
    var targets: [SCNGeometry]
    func setWeight(_ weight: CGFloat, forTargetAtIndex targetIndex: Int)
    func weightForTargetAtIndex(_ targetIndex: Int) -> CGFloat
    var calculationMode: SCNMorpherCalculationMode
}

Declaration
From
var targets: [AnyObject]?
To
var targets: [SCNGeometry]

Raw Value Type
From--
ToInt

Modified SCNNode
Declaration
From
class SCNNode : NSObject, NSCopying, NSSecureCoding, NSCoding, SCNAnimatable, NSObjectProtocol, SCNActionable, SCNBoundingVolume {
    convenience init!()
    class func node() -> Self!
    init(geometry geometry: SCNGeometry) -> SCNNode
    class func nodeWithGeometry(_ geometry: SCNGeometry) -> SCNNode
    func clone() -> AnyObject
    func flattenedClone() -> SCNNode
    var name: String?
    var light: SCNLight?
    var camera: SCNCamera?
    var geometry: SCNGeometry?
    var skinner: SCNSkinner?
    var morpher: SCNMorpher?
    var transform: SCNMatrix4
    var position: SCNVector3
    var rotation: SCNVector4
    var orientation: SCNQuaternion
    var eulerAngles: SCNVector3
    var scale: SCNVector3
    var pivot: SCNMatrix4
    var worldTransform: SCNMatrix4 { get }
    var hidden: Bool
    var opacity: CGFloat
    var renderingOrder: Int
    var castsShadow: Bool
    var parentNode: SCNNode? { get }
    var childNodes: [AnyObject] { get }
    func addChildNode(_ child: SCNNode)
    func insertChildNode(_ child: SCNNode, atIndex index: Int)
    func removeFromParentNode()
    func replaceChildNode(_ oldChild: SCNNode, with newChild: SCNNode)
    func childNodeWithName(_ name: String, recursively recursively: Bool) -> SCNNode?
    func childNodesPassingTest(_ predicate: (SCNNode!, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]
    func enumerateChildNodesUsingBlock(_ block: (SCNNode!, UnsafeMutablePointer<ObjCBool>) -> Void)
    func convertPosition(_ position: SCNVector3, toNode node: SCNNode?) -> SCNVector3
    func convertPosition(_ position: SCNVector3, fromNode node: SCNNode?) -> SCNVector3
    func convertTransform(_ transform: SCNMatrix4, toNode node: SCNNode?) -> SCNMatrix4
    func convertTransform(_ transform: SCNMatrix4, fromNode node: SCNNode?) -> SCNMatrix4
    var physicsBody: SCNPhysicsBody?
    var physicsField: SCNPhysicsField?
    var constraints: [AnyObject]?
    var filters: [AnyObject]?
    func presentationNode() -> SCNNode
    var paused: Bool
    unowned(unsafe) var rendererDelegate: SCNNodeRendererDelegate?
    func hitTestWithSegmentFromPoint(_ pointA: SCNVector3, toPoint pointB: SCNVector3, options options: [NSObject : AnyObject]?) -> [AnyObject]?
    var categoryBitMask: Int
}
extension SCNNode {
    func addParticleSystem(_ system: SCNParticleSystem)
    func removeAllParticleSystems()
    func removeParticleSystem(_ system: SCNParticleSystem)
    var particleSystems: [AnyObject]? { get }
}
To
class SCNNode : NSObject, NSCopying, NSSecureCoding, NSCoding, SCNAnimatable, SCNActionable, SCNBoundingVolume {
    convenience init()
    class func node() -> Self
     init(geometry geometry: SCNGeometry?)
    class func nodeWithGeometry(_ geometry: SCNGeometry?) -> SCNNode
    func clone() -> Self
    func flattenedClone() -> Self
    var name: String?
    var light: SCNLight?
    var camera: SCNCamera?
    var geometry: SCNGeometry?
    var skinner: SCNSkinner?
    var morpher: SCNMorpher?
    var transform: SCNMatrix4
    var position: SCNVector3
    var rotation: SCNVector4
    var orientation: SCNQuaternion
    var eulerAngles: SCNVector3
    var scale: SCNVector3
    var pivot: SCNMatrix4
    var worldTransform: SCNMatrix4 { get }
    var hidden: Bool
    var opacity: CGFloat
    var renderingOrder: Int
    var castsShadow: Bool
    var parentNode: SCNNode? { get }
    var childNodes: [SCNNode] { get }
    func addChildNode(_ child: SCNNode)
    func insertChildNode(_ child: SCNNode, atIndex index: Int)
    func removeFromParentNode()
    func replaceChildNode(_ oldChild: SCNNode, with newChild: SCNNode)
    func childNodeWithName(_ name: String, recursively recursively: Bool) -> SCNNode?
    func childNodesPassingTest(_ predicate: (SCNNode, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [SCNNode]
    func enumerateChildNodesUsingBlock(_ block: (SCNNode, UnsafeMutablePointer<ObjCBool>) -> Void)
    func convertPosition(_ position: SCNVector3, toNode node: SCNNode?) -> SCNVector3
    func convertPosition(_ position: SCNVector3, fromNode node: SCNNode?) -> SCNVector3
    func convertTransform(_ transform: SCNMatrix4, toNode node: SCNNode?) -> SCNMatrix4
    func convertTransform(_ transform: SCNMatrix4, fromNode node: SCNNode?) -> SCNMatrix4
    var physicsBody: SCNPhysicsBody?
    var physicsField: SCNPhysicsField?
    var constraints: [SCNConstraint]?
    var filters: [CIFilter]?
    var presentationNode: SCNNode { get }
    var paused: Bool
    unowned(unsafe) var rendererDelegate: SCNNodeRendererDelegate?
    func hitTestWithSegmentFromPoint(_ pointA: SCNVector3, toPoint pointB: SCNVector3, options options: [String : AnyObject]?) -> [SCNHitTestResult]
    var categoryBitMask: Int
}
extension SCNNode {
    func addAudioPlayer(_ player: SCNAudioPlayer)
    func removeAllAudioPlayers()
    func removeAudioPlayer(_ player: SCNAudioPlayer)
    var audioPlayers: [SCNAudioPlayer] { get }
}
extension SCNNode {
    func addParticleSystem(_ system: SCNParticleSystem)
    func removeAllParticleSystems()
    func removeParticleSystem(_ system: SCNParticleSystem)
    var particleSystems: [SCNParticleSystem]? { get }
}

Declaration
From
var childNodes: [AnyObject] { get }
To
var childNodes: [SCNNode] { get }

Declaration
From
func childNodesPassingTest(_ predicate: (SCNNode!, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]
To
func childNodesPassingTest(_ predicate: (SCNNode, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [SCNNode]

Declaration
From
func clone() -> AnyObject
To
func clone() -> Self

Declaration
From
var constraints: [AnyObject]?
To
var constraints: [SCNConstraint]?

Declaration
From
func enumerateChildNodesUsingBlock(_ block: (SCNNode!, UnsafeMutablePointer<ObjCBool>) -> Void)
To
func enumerateChildNodesUsingBlock(_ block: (SCNNode, UnsafeMutablePointer<ObjCBool>) -> Void)

Declaration
From
var filters: [AnyObject]?
To
var filters: [CIFilter]?

Declaration
From
func flattenedClone() -> SCNNode
To
func flattenedClone() -> Self

Declaration
From
func hitTestWithSegmentFromPoint(_ pointA: SCNVector3, toPoint pointB: SCNVector3, options options: [NSObject : AnyObject]?) -> [AnyObject]?
To
func hitTestWithSegmentFromPoint(_ pointA: SCNVector3, toPoint pointB: SCNVector3, options options: [String : AnyObject]?) -> [SCNHitTestResult]

Declaration
From
init(geometry geometry: SCNGeometry) -> SCNNode
To
init(geometry geometry: SCNGeometry?)

Declaration
From
var particleSystems: [AnyObject]? { get }
To
var particleSystems: [SCNParticleSystem]? { get }

Declaration
From
protocol SCNNodeRendererDelegate : NSObjectProtocol {
    optional func renderNode(_ node: SCNNode, renderer renderer: SCNRenderer, arguments arguments: [NSObject : AnyObject])
}
To
protocol SCNNodeRendererDelegate : NSObjectProtocol {
    optional func renderNode(_ node: SCNNode, renderer renderer: SCNRenderer, arguments arguments: [String : NSValue])
}

DeclarationIntroduction
From
optional func renderNode(_ node: SCNNode, renderer renderer: SCNRenderer, arguments arguments: [NSObject : AnyObject])
OS X 10.10
To
optional func renderNode(_ node: SCNNode, renderer renderer: SCNRenderer, arguments arguments: [String : NSValue])
OS X 10.8

Raw Value Type
From--
ToInt

Raw Value Type
From--
ToInt

Raw Value Type
From--
ToInt

Raw Value Type
From--
ToInt

Raw Value Type
From--
ToInt

Raw Value Type
From--
ToInt

Raw Value Type
From--
ToInt

Raw Value Type
From--
ToInt

Declaration
From
class SCNParticlePropertyController : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init(animation animation: CAAnimation)
    class func controllerWithAnimation(_ animation: CAAnimation) -> Self
    var animation: CAAnimation!
    var inputMode: SCNParticleInputMode
    var inputScale: CGFloat
    var inputBias: CGFloat
    weak var inputOrigin: SCNNode!
    var inputProperty: String!
}
To
class SCNParticlePropertyController : NSObject, NSSecureCoding, NSCoding, NSCopying {
    convenience init(animation animation: CAAnimation)
    class func controllerWithAnimation(_ animation: CAAnimation) -> Self
    var animation: CAAnimation
    var inputMode: SCNParticleInputMode
    var inputScale: CGFloat
    var inputBias: CGFloat
    weak var inputOrigin: SCNNode?
    var inputProperty: String?
}

Declaration
From
var animation: CAAnimation!
To
var animation: CAAnimation

Declaration
From
weak var inputOrigin: SCNNode!
To
weak var inputOrigin: SCNNode?

Declaration
From
var inputProperty: String!
To
var inputProperty: String?

Raw Value Type
From--
ToInt

Declaration
From
class SCNParticleSystem : NSObject, NSCopying, NSSecureCoding, NSCoding, SCNAnimatable, NSObjectProtocol {
    convenience init!()
    class func particleSystem() -> Self!
    convenience init!(named name: String, inDirectory directory: String!)
    class func particleSystemNamed(_ name: String, inDirectory directory: String!) -> Self!
    var emissionDuration: CGFloat
    var emissionDurationVariation: CGFloat
    var idleDuration: CGFloat
    var idleDurationVariation: CGFloat
    var loops: Bool
    var birthRate: CGFloat
    var birthRateVariation: CGFloat
    var warmupDuration: CGFloat
    var emitterShape: SCNGeometry!
    var birthLocation: SCNParticleBirthLocation
    var birthDirection: SCNParticleBirthDirection
    var spreadingAngle: CGFloat
    var emittingDirection: SCNVector3
    var acceleration: SCNVector3
    var local: Bool
    var particleAngle: CGFloat
    var particleAngleVariation: CGFloat
    var particleVelocity: CGFloat
    var particleVelocityVariation: CGFloat
    var particleAngularVelocity: CGFloat
    var particleAngularVelocityVariation: CGFloat
    var particleLifeSpan: CGFloat
    var particleLifeSpanVariation: CGFloat
    var systemSpawnedOnDying: SCNParticleSystem!
    var systemSpawnedOnCollision: SCNParticleSystem!
    var systemSpawnedOnLiving: SCNParticleSystem!
    var particleImage: AnyObject!
    var imageSequenceColumnCount: Int
    var imageSequenceRowCount: Int
    var imageSequenceInitialFrame: CGFloat
    var imageSequenceInitialFrameVariation: CGFloat
    var imageSequenceFrameRate: CGFloat
    var imageSequenceFrameRateVariation: CGFloat
    var imageSequenceAnimationMode: SCNParticleImageSequenceAnimationMode
    var particleColor: NSColor!
    var particleColorVariation: SCNVector4
    var particleSize: CGFloat
    var particleSizeVariation: CGFloat
    var blendMode: SCNParticleBlendMode
    var blackPassEnabled: Bool
    var orientationMode: SCNParticleOrientationMode
    var sortingMode: SCNParticleSortingMode
    var lightingEnabled: Bool
    var affectedByGravity: Bool
    var affectedByPhysicsFields: Bool
    var particleDiesOnCollision: Bool
    var colliderNodes: [AnyObject]!
    var particleMass: CGFloat
    var particleMassVariation: CGFloat
    var particleBounce: CGFloat
    var particleBounceVariation: CGFloat
    var particleFriction: CGFloat
    var particleFrictionVariation: CGFloat
    var particleCharge: CGFloat
    var particleChargeVariation: CGFloat
    var dampingFactor: CGFloat
    var speedFactor: CGFloat
    var stretchFactor: CGFloat
    var fresnelExponent: CGFloat
    var propertyControllers: [NSObject : AnyObject]!
    func reset()
    func handleEvent(_ event: SCNParticleEvent, forProperties properties: [AnyObject], withBlock block: SCNParticleEventBlock)
    func addModifierForProperties(_ properties: [AnyObject], atStage stage: SCNParticleModifierStage, withBlock block: SCNParticleModifierBlock)
    func removeModifiersOfStage(_ stage: SCNParticleModifierStage)
    func removeAllModifiers()
}
To
class SCNParticleSystem : NSObject, NSCopying, NSSecureCoding, NSCoding, SCNAnimatable {
    convenience init()
    class func particleSystem() -> Self
    convenience init?(named name: String, inDirectory directory: String?)
    class func particleSystemNamed(_ name: String, inDirectory directory: String?) -> Self?
    var emissionDuration: CGFloat
    var emissionDurationVariation: CGFloat
    var idleDuration: CGFloat
    var idleDurationVariation: CGFloat
    var loops: Bool
    var birthRate: CGFloat
    var birthRateVariation: CGFloat
    var warmupDuration: CGFloat
    var emitterShape: SCNGeometry?
    var birthLocation: SCNParticleBirthLocation
    var birthDirection: SCNParticleBirthDirection
    var spreadingAngle: CGFloat
    var emittingDirection: SCNVector3
    var acceleration: SCNVector3
    var local: Bool
    var particleAngle: CGFloat
    var particleAngleVariation: CGFloat
    var particleVelocity: CGFloat
    var particleVelocityVariation: CGFloat
    var particleAngularVelocity: CGFloat
    var particleAngularVelocityVariation: CGFloat
    var particleLifeSpan: CGFloat
    var particleLifeSpanVariation: CGFloat
    var systemSpawnedOnDying: SCNParticleSystem?
    var systemSpawnedOnCollision: SCNParticleSystem?
    var systemSpawnedOnLiving: SCNParticleSystem?
    var particleImage: AnyObject?
    var imageSequenceColumnCount: Int
    var imageSequenceRowCount: Int
    var imageSequenceInitialFrame: CGFloat
    var imageSequenceInitialFrameVariation: CGFloat
    var imageSequenceFrameRate: CGFloat
    var imageSequenceFrameRateVariation: CGFloat
    var imageSequenceAnimationMode: SCNParticleImageSequenceAnimationMode
    var particleColor: NSColor
    var particleColorVariation: SCNVector4
    var particleSize: CGFloat
    var particleSizeVariation: CGFloat
    var blendMode: SCNParticleBlendMode
    var blackPassEnabled: Bool
    var orientationMode: SCNParticleOrientationMode
    var sortingMode: SCNParticleSortingMode
    var lightingEnabled: Bool
    var affectedByGravity: Bool
    var affectedByPhysicsFields: Bool
    var particleDiesOnCollision: Bool
    var colliderNodes: [SCNNode]?
    var particleMass: CGFloat
    var particleMassVariation: CGFloat
    var particleBounce: CGFloat
    var particleBounceVariation: CGFloat
    var particleFriction: CGFloat
    var particleFrictionVariation: CGFloat
    var particleCharge: CGFloat
    var particleChargeVariation: CGFloat
    var dampingFactor: CGFloat
    var speedFactor: CGFloat
    var stretchFactor: CGFloat
    var fresnelExponent: CGFloat
    var propertyControllers: [String : SCNParticlePropertyController]?
    func reset()
    func handleEvent(_ event: SCNParticleEvent, forProperties properties: [String], withBlock block: SCNParticleEventBlock)
    func addModifierForProperties(_ properties: [String], atStage stage: SCNParticleModifierStage, withBlock block: SCNParticleModifierBlock)
    func removeModifiersOfStage(_ stage: SCNParticleModifierStage)
    func removeAllModifiers()
}

Declaration
From
func addModifierForProperties(_ properties: [AnyObject], atStage stage: SCNParticleModifierStage, withBlock block: SCNParticleModifierBlock)
To
func addModifierForProperties(_ properties: [String], atStage stage: SCNParticleModifierStage, withBlock block: SCNParticleModifierBlock)

Declaration
From
var colliderNodes: [AnyObject]!
To
var colliderNodes: [SCNNode]?

Declaration
From
var emitterShape: SCNGeometry!
To
var emitterShape: SCNGeometry?

Declaration
From
func handleEvent(_ event: SCNParticleEvent, forProperties properties: [AnyObject], withBlock block: SCNParticleEventBlock)
To
func handleEvent(_ event: SCNParticleEvent, forProperties properties: [String], withBlock block: SCNParticleEventBlock)

Declaration
From
convenience init!(named name: String, inDirectory directory: String!)
To
convenience init?(named name: String, inDirectory directory: String?)

Declaration
From
var particleColor: NSColor!
To
var particleColor: NSColor

Declaration
From
var particleImage: AnyObject!
To
var particleImage: AnyObject?

Declaration
From
var propertyControllers: [NSObject : AnyObject]!
To
var propertyControllers: [String : SCNParticlePropertyController]?

Declaration
From
var systemSpawnedOnCollision: SCNParticleSystem!
To
var systemSpawnedOnCollision: SCNParticleSystem?

Declaration
From
var systemSpawnedOnDying: SCNParticleSystem!
To
var systemSpawnedOnDying: SCNParticleSystem?

Declaration
From
var systemSpawnedOnLiving: SCNParticleSystem!
To
var systemSpawnedOnLiving: SCNParticleSystem?

Declaration
From
class SCNPhysicsBallSocketJoint : SCNPhysicsBehavior {
    convenience init!(bodyA bodyA: SCNPhysicsBody!, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody!, anchorB anchorB: SCNVector3)
    class func jointWithBodyA(_ bodyA: SCNPhysicsBody!, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody!, anchorB anchorB: SCNVector3) -> Self!
    convenience init!(body body: SCNPhysicsBody!, anchor anchor: SCNVector3)
    class func jointWithBody(_ body: SCNPhysicsBody!, anchor anchor: SCNVector3) -> Self!
    var bodyA: SCNPhysicsBody! { get }
    var anchorA: SCNVector3
    var bodyB: SCNPhysicsBody! { get }
    var anchorB: SCNVector3
}
To
class SCNPhysicsBallSocketJoint : SCNPhysicsBehavior {
    convenience init(bodyA bodyA: SCNPhysicsBody, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, anchorB anchorB: SCNVector3)
    class func jointWithBodyA(_ bodyA: SCNPhysicsBody, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, anchorB anchorB: SCNVector3) -> Self
    convenience init(body body: SCNPhysicsBody, anchor anchor: SCNVector3)
    class func jointWithBody(_ body: SCNPhysicsBody, anchor anchor: SCNVector3) -> Self
    var bodyA: SCNPhysicsBody { get }
    var anchorA: SCNVector3
    var bodyB: SCNPhysicsBody? { get }
    var anchorB: SCNVector3
}

Declaration
From
var bodyA: SCNPhysicsBody! { get }
To
var bodyA: SCNPhysicsBody { get }

Declaration
From
var bodyB: SCNPhysicsBody! { get }
To
var bodyB: SCNPhysicsBody? { get }

Declaration
From
convenience init!(body body: SCNPhysicsBody!, anchor anchor: SCNVector3)
To
convenience init(body body: SCNPhysicsBody, anchor anchor: SCNVector3)

Declaration
From
convenience init!(bodyA bodyA: SCNPhysicsBody!, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody!, anchorB anchorB: SCNVector3)
To
convenience init(bodyA bodyA: SCNPhysicsBody, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, anchorB anchorB: SCNVector3)

Declaration
From
class SCNPhysicsBody : NSObject, NSCopying, NSSecureCoding, NSCoding {
    class func staticBody() -> Self
    class func dynamicBody() -> Self
    class func kinematicBody() -> Self
    convenience init(type type: SCNPhysicsBodyType, shape shape: SCNPhysicsShape?)
    class func bodyWithType(_ type: SCNPhysicsBodyType, shape shape: SCNPhysicsShape?) -> Self
    var type: SCNPhysicsBodyType
    var mass: CGFloat
    var charge: CGFloat
    var friction: CGFloat
    var restitution: CGFloat
    var rollingFriction: CGFloat
    var physicsShape: SCNPhysicsShape?
    var isResting: Bool { get }
    var allowsResting: Bool
    var velocity: SCNVector3
    var angularVelocity: SCNVector4
    var damping: CGFloat
    var angularDamping: CGFloat
    var velocityFactor: SCNVector3
    var angularVelocityFactor: SCNVector3
    var categoryBitMask: Int
    var collisionBitMask: Int
    func applyForce(_ direction: SCNVector3, impulse impulse: Bool)
    func applyForce(_ direction: SCNVector3, atPosition position: SCNVector3, impulse impulse: Bool)
    func applyTorque(_ torque: SCNVector4, impulse impulse: Bool)
    func clearAllForces()
    func resetTransform()
}
To
class SCNPhysicsBody : NSObject, NSCopying, NSSecureCoding, NSCoding {
    class func staticBody() -> Self
    class func dynamicBody() -> Self
    class func kinematicBody() -> Self
    convenience init(type type: SCNPhysicsBodyType, shape shape: SCNPhysicsShape?)
    class func bodyWithType(_ type: SCNPhysicsBodyType, shape shape: SCNPhysicsShape?) -> Self
    var type: SCNPhysicsBodyType
    var mass: CGFloat
    var momentOfInertia: SCNVector3
    var usesDefaultMomentOfInertia: Bool
    var charge: CGFloat
    var friction: CGFloat
    var restitution: CGFloat
    var rollingFriction: CGFloat
    var physicsShape: SCNPhysicsShape?
    var isResting: Bool { get }
    var allowsResting: Bool
    var velocity: SCNVector3
    var angularVelocity: SCNVector4
    var damping: CGFloat
    var angularDamping: CGFloat
    var velocityFactor: SCNVector3
    var angularVelocityFactor: SCNVector3
    var categoryBitMask: Int
    var collisionBitMask: Int
    var contactTestBitMask: Int
    var affectedByGravity: Bool
    func applyForce(_ direction: SCNVector3, impulse impulse: Bool)
    func applyForce(_ direction: SCNVector3, atPosition position: SCNVector3, impulse impulse: Bool)
    func applyTorque(_ torque: SCNVector4, impulse impulse: Bool)
    func clearAllForces()
    func resetTransform()
}

Raw Value Type
From--
ToInt

DeclarationProtocols
From
struct SCNPhysicsCollisionCategory : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue rawValue: UInt)
    static var Default: SCNPhysicsCollisionCategory { get }
    static var Static: SCNPhysicsCollisionCategory { get }
    static var All: SCNPhysicsCollisionCategory { get }
}
RawOptionSetType
To
struct SCNPhysicsCollisionCategory : OptionSetType {
    init(rawValue rawValue: UInt)
    static var Default: SCNPhysicsCollisionCategory { get }
    static var Static: SCNPhysicsCollisionCategory { get }
    static var All: SCNPhysicsCollisionCategory { get }
}
OptionSetType

Raw Value Type
From--
ToInt

Declaration
From
class SCNPhysicsHingeJoint : SCNPhysicsBehavior {
    convenience init(bodyA bodyA: SCNPhysicsBody, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3)
    class func jointWithBodyA(_ bodyA: SCNPhysicsBody, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3) -> Self
    convenience init(body body: SCNPhysicsBody, axis axis: SCNVector3, anchor anchor: SCNVector3)
    class func jointWithBody(_ body: SCNPhysicsBody, axis axis: SCNVector3, anchor anchor: SCNVector3) -> Self
    var bodyA: SCNPhysicsBody! { get }
    var axisA: SCNVector3
    var anchorA: SCNVector3
    var bodyB: SCNPhysicsBody! { get }
    var axisB: SCNVector3
    var anchorB: SCNVector3
}
To
class SCNPhysicsHingeJoint : SCNPhysicsBehavior {
    convenience init(bodyA bodyA: SCNPhysicsBody, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3)
    class func jointWithBodyA(_ bodyA: SCNPhysicsBody, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3) -> Self
    convenience init(body body: SCNPhysicsBody, axis axis: SCNVector3, anchor anchor: SCNVector3)
    class func jointWithBody(_ body: SCNPhysicsBody, axis axis: SCNVector3, anchor anchor: SCNVector3) -> Self
    var bodyA: SCNPhysicsBody { get }
    var axisA: SCNVector3
    var anchorA: SCNVector3
    var bodyB: SCNPhysicsBody? { get }
    var axisB: SCNVector3
    var anchorB: SCNVector3
}

Declaration
From
var bodyA: SCNPhysicsBody! { get }
To
var bodyA: SCNPhysicsBody { get }

Declaration
From
var bodyB: SCNPhysicsBody! { get }
To
var bodyB: SCNPhysicsBody? { get }

Declaration
From
class SCNPhysicsShape : NSObject, NSCopying, NSSecureCoding, NSCoding {
    convenience init(geometry geometry: SCNGeometry, options options: [NSObject : AnyObject]?)
    class func shapeWithGeometry(_ geometry: SCNGeometry, options options: [NSObject : AnyObject]?) -> Self
    convenience init(node node: SCNNode, options options: [NSObject : AnyObject]?)
    class func shapeWithNode(_ node: SCNNode, options options: [NSObject : AnyObject]?) -> Self
    convenience init(shapes shapes: [AnyObject], transforms transforms: [AnyObject])
    class func shapeWithShapes(_ shapes: [AnyObject], transforms transforms: [AnyObject]) -> Self
}
To
class SCNPhysicsShape : NSObject, NSCopying, NSSecureCoding, NSCoding {
    convenience init(geometry geometry: SCNGeometry, options options: [String : AnyObject]?)
    class func shapeWithGeometry(_ geometry: SCNGeometry, options options: [String : AnyObject]?) -> Self
    convenience init(node node: SCNNode, options options: [String : AnyObject]?)
    class func shapeWithNode(_ node: SCNNode, options options: [String : AnyObject]?) -> Self
    convenience init(shapes shapes: [SCNPhysicsShape], transforms transforms: [NSValue]?)
    class func shapeWithShapes(_ shapes: [SCNPhysicsShape], transforms transforms: [NSValue]?) -> Self
    var options: [String : AnyObject]? { get }
    var sourceObject: AnyObject { get }
    var transforms: [NSValue]? { get }
}

Declaration
From
convenience init(geometry geometry: SCNGeometry, options options: [NSObject : AnyObject]?)
To
convenience init(geometry geometry: SCNGeometry, options options: [String : AnyObject]?)

Declaration
From
convenience init(node node: SCNNode, options options: [NSObject : AnyObject]?)
To
convenience init(node node: SCNNode, options options: [String : AnyObject]?)

Declaration
From
convenience init(shapes shapes: [AnyObject], transforms transforms: [AnyObject])
To
convenience init(shapes shapes: [SCNPhysicsShape], transforms transforms: [NSValue]?)

Declaration
From
class SCNPhysicsSliderJoint : SCNPhysicsBehavior {
    convenience init!(bodyA bodyA: SCNPhysicsBody!, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody!, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3)
    class func jointWithBodyA(_ bodyA: SCNPhysicsBody!, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody!, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3) -> Self!
    convenience init!(body body: SCNPhysicsBody!, axis axis: SCNVector3, anchor anchor: SCNVector3)
    class func jointWithBody(_ body: SCNPhysicsBody!, axis axis: SCNVector3, anchor anchor: SCNVector3) -> Self!
    var bodyA: SCNPhysicsBody! { get }
    var axisA: SCNVector3
    var anchorA: SCNVector3
    var bodyB: SCNPhysicsBody! { get }
    var axisB: SCNVector3
    var anchorB: SCNVector3
    var minimumLinearLimit: CGFloat
    var maximumLinearLimit: CGFloat
    var minimumAngularLimit: CGFloat
    var maximumAngularLimit: CGFloat
    var motorTargetLinearVelocity: CGFloat
    var motorMaximumForce: CGFloat
    var motorTargetAngularVelocity: CGFloat
    var motorMaximumTorque: CGFloat
}
To
class SCNPhysicsSliderJoint : SCNPhysicsBehavior {
    convenience init(bodyA bodyA: SCNPhysicsBody, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3)
    class func jointWithBodyA(_ bodyA: SCNPhysicsBody, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3) -> Self
    convenience init(body body: SCNPhysicsBody, axis axis: SCNVector3, anchor anchor: SCNVector3)
    class func jointWithBody(_ body: SCNPhysicsBody, axis axis: SCNVector3, anchor anchor: SCNVector3) -> Self
    var bodyA: SCNPhysicsBody { get }
    var axisA: SCNVector3
    var anchorA: SCNVector3
    var bodyB: SCNPhysicsBody? { get }
    var axisB: SCNVector3
    var anchorB: SCNVector3
    var minimumLinearLimit: CGFloat
    var maximumLinearLimit: CGFloat
    var minimumAngularLimit: CGFloat
    var maximumAngularLimit: CGFloat
    var motorTargetLinearVelocity: CGFloat
    var motorMaximumForce: CGFloat
    var motorTargetAngularVelocity: CGFloat
    var motorMaximumTorque: CGFloat
}

Declaration
From
var bodyA: SCNPhysicsBody! { get }
To
var bodyA: SCNPhysicsBody { get }

Declaration
From
var bodyB: SCNPhysicsBody! { get }
To
var bodyB: SCNPhysicsBody? { get }

Declaration
From
convenience init!(body body: SCNPhysicsBody!, axis axis: SCNVector3, anchor anchor: SCNVector3)
To
convenience init(body body: SCNPhysicsBody, axis axis: SCNVector3, anchor anchor: SCNVector3)

Declaration
From
convenience init!(bodyA bodyA: SCNPhysicsBody!, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody!, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3)
To
convenience init(bodyA bodyA: SCNPhysicsBody, axisA axisA: SCNVector3, anchorA anchorA: SCNVector3, bodyB bodyB: SCNPhysicsBody, axisB axisB: SCNVector3, anchorB anchorB: SCNVector3)

Declaration
From
class SCNPhysicsVehicle : SCNPhysicsBehavior {
    convenience init(chassisBody chassisBody: SCNPhysicsBody!, wheels wheels: [AnyObject])
    class func vehicleWithChassisBody(_ chassisBody: SCNPhysicsBody!, wheels wheels: [AnyObject]) -> Self
    var speedInKilometersPerHour: CGFloat { get }
    var wheels: [AnyObject]! { get }
    var chassisBody: SCNPhysicsBody! { get }
    func applyEngineForce(_ value: CGFloat, forWheelAtIndex index: Int)
    func setSteeringAngle(_ value: CGFloat, forWheelAtIndex index: Int)
    func applyBrakingForce(_ value: CGFloat, forWheelAtIndex index: Int)
}
To
class SCNPhysicsVehicle : SCNPhysicsBehavior {
    convenience init(chassisBody chassisBody: SCNPhysicsBody, wheels wheels: [SCNPhysicsVehicleWheel])
    class func vehicleWithChassisBody(_ chassisBody: SCNPhysicsBody, wheels wheels: [SCNPhysicsVehicleWheel]) -> Self
    var speedInKilometersPerHour: CGFloat { get }
    var wheels: [SCNPhysicsVehicleWheel] { get }
    var chassisBody: SCNPhysicsBody { get }
    func applyEngineForce(_ value: CGFloat, forWheelAtIndex index: Int)
    func setSteeringAngle(_ value: CGFloat, forWheelAtIndex index: Int)
    func applyBrakingForce(_ value: CGFloat, forWheelAtIndex index: Int)
}

Declaration
From
var chassisBody: SCNPhysicsBody! { get }
To
var chassisBody: SCNPhysicsBody { get }

Declaration
From
convenience init(chassisBody chassisBody: SCNPhysicsBody!, wheels wheels: [AnyObject])
To
convenience init(chassisBody chassisBody: SCNPhysicsBody, wheels wheels: [SCNPhysicsVehicleWheel])

Declaration
From
var wheels: [AnyObject]! { get }
To
var wheels: [SCNPhysicsVehicleWheel] { get }

Declaration
From
class SCNPhysicsVehicleWheel : NSObject, NSCopying, NSSecureCoding, NSCoding {
    convenience init(node node: SCNNode!)
    class func wheelWithNode(_ node: SCNNode!) -> Self
    var node: SCNNode! { get }
    var suspensionStiffness: CGFloat
    var suspensionCompression: CGFloat
    var suspensionDamping: CGFloat
    var maximumSuspensionTravel: CGFloat
    var frictionSlip: CGFloat
    var maximumSuspensionForce: CGFloat
    var connectionPosition: SCNVector3
    var steeringAxis: SCNVector3
    var axle: SCNVector3
    var radius: CGFloat
    var suspensionRestLength: CGFloat
}
To
class SCNPhysicsVehicleWheel : NSObject, NSCopying, NSSecureCoding, NSCoding {
    convenience init(node node: SCNNode)
    class func wheelWithNode(_ node: SCNNode) -> Self
    var node: SCNNode { get }
    var suspensionStiffness: CGFloat
    var suspensionCompression: CGFloat
    var suspensionDamping: CGFloat
    var maximumSuspensionTravel: CGFloat
    var frictionSlip: CGFloat
    var maximumSuspensionForce: CGFloat
    var connectionPosition: SCNVector3
    var steeringAxis: SCNVector3
    var axle: SCNVector3
    var radius: CGFloat
    var suspensionRestLength: CGFloat
}

Declaration
From
convenience init(node node: SCNNode!)
To
convenience init(node node: SCNNode)

Declaration
From
var node: SCNNode! { get }
To
var node: SCNNode { get }

Declaration
From
class SCNPhysicsWorld : NSObject, NSSecureCoding, NSCoding {
    var gravity: SCNVector3
    var speed: CGFloat
    var timeStep: NSTimeInterval
    unowned(unsafe) var contactDelegate: SCNPhysicsContactDelegate!
    func addBehavior(_ behavior: SCNPhysicsBehavior!)
    func removeBehavior(_ behavior: SCNPhysicsBehavior!)
    func removeAllBehaviors()
    func allBehaviors() -> [AnyObject]!
    func rayTestWithSegmentFromPoint(_ origin: SCNVector3, toPoint dest: SCNVector3, options options: [NSObject : AnyObject]!) -> [AnyObject]!
    func contactTestBetweenBody(_ bodyA: SCNPhysicsBody!, andBody bodyB: SCNPhysicsBody!, options options: [NSObject : AnyObject]!) -> [AnyObject]!
    func contactTestWithBody(_ body: SCNPhysicsBody!, options options: [NSObject : AnyObject]!) -> [AnyObject]!
    func convexSweepTestWithShape(_ shape: SCNPhysicsShape!, fromTransform from: SCNMatrix4, toTransform to: SCNMatrix4, options options: [NSObject : AnyObject]!) -> [AnyObject]!
    func updateCollisionPairs()
}
To
class SCNPhysicsWorld : NSObject, NSSecureCoding, NSCoding {
    var gravity: SCNVector3
    var speed: CGFloat
    var timeStep: NSTimeInterval
    unowned(unsafe) var contactDelegate: SCNPhysicsContactDelegate?
    func addBehavior(_ behavior: SCNPhysicsBehavior)
    func removeBehavior(_ behavior: SCNPhysicsBehavior)
    func removeAllBehaviors()
    var allBehaviors: [SCNPhysicsBehavior] { get }
    func rayTestWithSegmentFromPoint(_ origin: SCNVector3, toPoint dest: SCNVector3, options options: [String : AnyObject]?) -> [SCNHitTestResult]
    func contactTestBetweenBody(_ bodyA: SCNPhysicsBody, andBody bodyB: SCNPhysicsBody, options options: [String : AnyObject]?) -> [SCNPhysicsContact]
    func contactTestWithBody(_ body: SCNPhysicsBody, options options: [String : AnyObject]?) -> [SCNPhysicsContact]
    func convexSweepTestWithShape(_ shape: SCNPhysicsShape, fromTransform from: SCNMatrix4, toTransform to: SCNMatrix4, options options: [String : AnyObject]?) -> [SCNPhysicsContact]
    func updateCollisionPairs()
}

Declaration
From
func addBehavior(_ behavior: SCNPhysicsBehavior!)
To
func addBehavior(_ behavior: SCNPhysicsBehavior)

Declaration
From
unowned(unsafe) var contactDelegate: SCNPhysicsContactDelegate!
To
unowned(unsafe) var contactDelegate: SCNPhysicsContactDelegate?

Declaration
From
func contactTestBetweenBody(_ bodyA: SCNPhysicsBody!, andBody bodyB: SCNPhysicsBody!, options options: [NSObject : AnyObject]!) -> [AnyObject]!
To
func contactTestBetweenBody(_ bodyA: SCNPhysicsBody, andBody bodyB: SCNPhysicsBody, options options: [String : AnyObject]?) -> [SCNPhysicsContact]

Declaration
From
func contactTestWithBody(_ body: SCNPhysicsBody!, options options: [NSObject : AnyObject]!) -> [AnyObject]!
To
func contactTestWithBody(_ body: SCNPhysicsBody, options options: [String : AnyObject]?) -> [SCNPhysicsContact]

Declaration
From
func convexSweepTestWithShape(_ shape: SCNPhysicsShape!, fromTransform from: SCNMatrix4, toTransform to: SCNMatrix4, options options: [NSObject : AnyObject]!) -> [AnyObject]!
To
func convexSweepTestWithShape(_ shape: SCNPhysicsShape, fromTransform from: SCNMatrix4, toTransform to: SCNMatrix4, options options: [String : AnyObject]?) -> [SCNPhysicsContact]

Declaration
From
func rayTestWithSegmentFromPoint(_ origin: SCNVector3, toPoint dest: SCNVector3, options options: [NSObject : AnyObject]!) -> [AnyObject]!
To
func rayTestWithSegmentFromPoint(_ origin: SCNVector3, toPoint dest: SCNVector3, options options: [String : AnyObject]?) -> [SCNHitTestResult]

Declaration
From
func removeBehavior(_ behavior: SCNPhysicsBehavior!)
To
func removeBehavior(_ behavior: SCNPhysicsBehavior)

Modified SCNProgram
Declaration
From
class SCNProgram : NSObject, NSCopying, NSSecureCoding, NSCoding {
    convenience init!()
    class func program() -> Self!
    var vertexShader: String!
    var fragmentShader: String!
    var tessellationControlShader: String!
    var tessellationEvaluationShader: String!
    var geometryShader: String!
    var opaque: Bool
    func setSemantic(_ semantic: String!, forSymbol symbol: String, options options: [NSObject : AnyObject]!)
    func semanticForSymbol(_ symbol: String) -> String!
    unowned(unsafe) var delegate: SCNProgramDelegate?
}
To
class SCNProgram : NSObject, NSCopying, NSSecureCoding, NSCoding {
    convenience init()
    class func program() -> Self
    var vertexShader: String?
    var fragmentShader: String?
    var tessellationControlShader: String?
    var tessellationEvaluationShader: String?
    var geometryShader: String?
    var vertexFunctionName: String?
    var fragmentFunctionName: String?
    func handleBindingOfBufferNamed(_ name: String, frequency frequency: SCNBufferFrequency, usingBlock block: SCNBufferBindingBlock)
    var opaque: Bool
    func setSemantic(_ semantic: String?, forSymbol symbol: String, options options: [String : AnyObject]?)
    func semanticForSymbol(_ symbol: String) -> String?
    unowned(unsafe) var delegate: SCNProgramDelegate?
    var library: MTLLibrary?
}

Declaration
From
var fragmentShader: String!
To
var fragmentShader: String?

Declaration
From
var geometryShader: String!
To
var geometryShader: String?

Declaration
From
func semanticForSymbol(_ symbol: String) -> String!
To
func semanticForSymbol(_ symbol: String) -> String?

Declaration
From
func setSemantic(_ semantic: String!, forSymbol symbol: String, options options: [NSObject : AnyObject]!)
To
func setSemantic(_ semantic: String?, forSymbol symbol: String, options options: [String : AnyObject]?)

Declaration
From
var tessellationControlShader: String!
To
var tessellationControlShader: String?

Declaration
From
var tessellationEvaluationShader: String!
To
var tessellationEvaluationShader: String?

Declaration
From
var vertexShader: String!
To
var vertexShader: String?

Introduction
FromOS X 10.10
ToOS X 10.8

Modified SCNRenderer
Declaration
From
class SCNRenderer : NSObject, SCNSceneRenderer, NSObjectProtocol, SCNTechniqueSupport {
    convenience init(context context: UnsafeMutablePointer<Void>, options options: [NSObject : AnyObject]?)
    class func rendererWithContext(_ context: UnsafeMutablePointer<Void>, options options: [NSObject : AnyObject]?) -> Self
    var scene: SCNScene?
    func render()
    func renderAtTime(_ time: CFTimeInterval)
    var nextFrameTime: CFTimeInterval { get }
}
To
class SCNRenderer : NSObject, SCNSceneRenderer, SCNTechniqueSupport {
    convenience init(context context: CGLContextObj, options options: [NSObject : AnyObject]?)
    class func rendererWithContext(_ context: CGLContextObj, options options: [NSObject : AnyObject]?) -> Self
    convenience init(device device: MTLDevice?, options options: [NSObject : AnyObject]?)
    class func rendererWithDevice(_ device: MTLDevice?, options options: [NSObject : AnyObject]?) -> Self
    var scene: SCNScene?
    func renderAtTime(_ time: CFTimeInterval)
    func renderAtTime(_ time: CFTimeInterval, viewport viewport: CGRect, commandBuffer commandBuffer: MTLCommandBuffer, passDescriptor renderPassDescriptor: MTLRenderPassDescriptor)
    var nextFrameTime: CFTimeInterval { get }
    func render()
}

Declaration
From
convenience init(context context: UnsafeMutablePointer<Void>, options options: [NSObject : AnyObject]?)
To
convenience init(context context: CGLContextObj, options options: [NSObject : AnyObject]?)

IntroductionDeprecation
FromOS X 10.10--
ToOS X 10.8OS X 10.11

Modified SCNScene
Declaration
From
class SCNScene : NSObject, NSSecureCoding, NSCoding {
    convenience init!()
    class func scene() -> Self!
    var rootNode: SCNNode { get }
    var physicsWorld: SCNPhysicsWorld { get }
    func attributeForKey(_ key: String) -> AnyObject?
    func setAttribute(_ attribute: AnyObject, forKey key: String)
    var background: SCNMaterialProperty { get }
    convenience init?(named name: String)
    class func sceneNamed(_ name: String) -> Self?
    convenience init?(named name: String, inDirectory directory: String?, options options: [NSObject : AnyObject]?)
    class func sceneNamed(_ name: String, inDirectory directory: String?, options options: [NSObject : AnyObject]?) -> Self?
    convenience init?(URL url: NSURL, options options: [NSObject : AnyObject]?, error error: NSErrorPointer)
    class func sceneWithURL(_ url: NSURL, options options: [NSObject : AnyObject]?, error error: NSErrorPointer) -> Self?
    func writeToURL(_ url: NSURL, options options: [NSObject : AnyObject]?, delegate delegate: SCNSceneExportDelegate?, progressHandler progressHandler: SCNSceneExportProgressHandler?) -> Bool
    var fogStartDistance: CGFloat
    var fogEndDistance: CGFloat
    var fogDensityExponent: CGFloat
    var fogColor: AnyObject
    var paused: Bool
}
extension SCNScene {
    func addParticleSystem(_ system: SCNParticleSystem, withTransform transform: SCNMatrix4)
    func removeAllParticleSystems()
    func removeParticleSystem(_ system: SCNParticleSystem)
    var particleSystems: [AnyObject]? { get }
}
To
class SCNScene : NSObject, NSSecureCoding, NSCoding {
    convenience init()
    class func scene() -> Self
    var rootNode: SCNNode { get }
    var physicsWorld: SCNPhysicsWorld { get }
    func attributeForKey(_ key: String) -> AnyObject?
    func setAttribute(_ attribute: AnyObject?, forKey key: String)
    var background: SCNMaterialProperty { get }
    convenience init?(named name: String)
    class func sceneNamed(_ name: String) -> Self?
    convenience init?(named name: String, inDirectory directory: String?, options options: [String : AnyObject]?)
    class func sceneNamed(_ name: String, inDirectory directory: String?, options options: [String : AnyObject]?) -> Self?
    convenience init(URL url: NSURL, options options: [String : AnyObject]?) throws
    class func sceneWithURL(_ url: NSURL, options options: [String : AnyObject]?) throws -> Self
    func writeToURL(_ url: NSURL, options options: [String : AnyObject]?, delegate delegate: SCNSceneExportDelegate?, progressHandler progressHandler: SCNSceneExportProgressHandler?) -> Bool
    var fogStartDistance: CGFloat
    var fogEndDistance: CGFloat
    var fogDensityExponent: CGFloat
    var fogColor: AnyObject
    var paused: Bool
}
extension SCNScene {
    func addParticleSystem(_ system: SCNParticleSystem, withTransform transform: SCNMatrix4)
    func removeAllParticleSystems()
    func removeParticleSystem(_ system: SCNParticleSystem)
    var particleSystems: [SCNParticleSystem]? { get }
}

Declaration
From
convenience init?(named name: String, inDirectory directory: String?, options options: [NSObject : AnyObject]?)
To
convenience init?(named name: String, inDirectory directory: String?, options options: [String : AnyObject]?)

Declaration
From
convenience init?(URL url: NSURL, options options: [NSObject : AnyObject]?, error error: NSErrorPointer)
To
convenience init(URL url: NSURL, options options: [String : AnyObject]?) throws

Declaration
From
var particleSystems: [AnyObject]? { get }
To
var particleSystems: [SCNParticleSystem]? { get }

Declaration
From
func setAttribute(_ attribute: AnyObject, forKey key: String)
To
func setAttribute(_ attribute: AnyObject?, forKey key: String)

Declaration
From
func writeToURL(_ url: NSURL, options options: [NSObject : AnyObject]?, delegate delegate: SCNSceneExportDelegate?, progressHandler progressHandler: SCNSceneExportProgressHandler?) -> Bool
To
func writeToURL(_ url: NSURL, options options: [String : AnyObject]?, delegate delegate: SCNSceneExportDelegate?, progressHandler progressHandler: SCNSceneExportProgressHandler?) -> Bool

Declaration
From
protocol SCNSceneRenderer : NSObjectProtocol {
    var scene: SCNScene? { get set }
    var sceneTime: NSTimeInterval { get set }
    unowned(unsafe) var delegate: SCNSceneRendererDelegate? { get set }
    func hitTest(_ thePoint: CGPoint, options options: [NSObject : AnyObject]?) -> [AnyObject]?
    func isNodeInsideFrustum(_ node: SCNNode, withPointOfView pointOfView: SCNNode?) -> Bool
    func projectPoint(_ point: SCNVector3) -> SCNVector3
    func unprojectPoint(_ point: SCNVector3) -> SCNVector3
    var playing: Bool { get set }
    var loops: Bool { get set }
    var pointOfView: SCNNode? { get set }
    var autoenablesDefaultLighting: Bool { get set }
    var jitteringEnabled: Bool { get set }
    func prepareObject(_ object: AnyObject, shouldAbortBlock block: (() -> Bool)?) -> Bool
    func prepareObjects(_ objects: [AnyObject], withCompletionHandler completionHandler: ((Bool) -> Void)?)
    var showsStatistics: Bool { get set }
    var overlaySKScene: SKScene! { get set }
    var context: UnsafeMutablePointer<Void> { get }
    var currentTime: NSTimeInterval { get set }
}
To
protocol SCNSceneRenderer : NSObjectProtocol {
    var scene: SCNScene? { get set }
    func presentScene(_ scene: SCNScene, withTransition transition: SKTransition, incomingPointOfView pointOfView: SCNNode?, completionHandler completionHandler: (() -> Void)?)
    var sceneTime: NSTimeInterval { get set }
    unowned(unsafe) var delegate: SCNSceneRendererDelegate? { get set }
    func hitTest(_ point: CGPoint, options options: [String : AnyObject]?) -> [SCNHitTestResult]
    func isNodeInsideFrustum(_ node: SCNNode, withPointOfView pointOfView: SCNNode) -> Bool
    func nodesInsideFrustumWithPointOfView(_ pointOfView: SCNNode) -> [SCNNode]
    func projectPoint(_ point: SCNVector3) -> SCNVector3
    func unprojectPoint(_ point: SCNVector3) -> SCNVector3
    var playing: Bool { get set }
    var loops: Bool { get set }
    var pointOfView: SCNNode? { get set }
    var autoenablesDefaultLighting: Bool { get set }
    var jitteringEnabled: Bool { get set }
    func prepareObject(_ object: AnyObject, shouldAbortBlock block: (() -> Bool)?) -> Bool
    func prepareObjects(_ objects: [AnyObject], withCompletionHandler completionHandler: ((Bool) -> Void)?)
    var showsStatistics: Bool { get set }
    var debugOptions: SCNDebugOptions { get set }
    var overlaySKScene: SKScene? { get set }
    var renderingAPI: SCNRenderingAPI { get }
    var context: UnsafeMutablePointer<Void> { get }
    var currentRenderCommandEncoder: MTLRenderCommandEncoder? { get }
    var device: MTLDevice? { get }
    var colorPixelFormat: MTLPixelFormat { get }
    var depthPixelFormat: MTLPixelFormat { get }
    var stencilPixelFormat: MTLPixelFormat { get }
    var commandQueue: MTLCommandQueue? { get }
    var audioEngine: AVAudioEngine { get }
    var audioEnvironmentNode: AVAudioEnvironmentNode { get }
    var audioListener: SCNNode? { get set }
    var currentTime: NSTimeInterval { get set }
}

DeclarationIntroduction
From
func hitTest(_ thePoint: CGPoint, options options: [NSObject : AnyObject]?) -> [AnyObject]?
OS X 10.10
To
func hitTest(_ point: CGPoint, options options: [String : AnyObject]?) -> [SCNHitTestResult]
OS X 10.8

Declaration
From
func isNodeInsideFrustum(_ node: SCNNode, withPointOfView pointOfView: SCNNode?) -> Bool
To
func isNodeInsideFrustum(_ node: SCNNode, withPointOfView pointOfView: SCNNode) -> Bool

Declaration
From
var overlaySKScene: SKScene! { get set }
To
var overlaySKScene: SKScene? { get set }

Introduction
FromOS X 10.10
ToOS X 10.8

Introduction
FromOS X 10.10
ToOS X 10.8

Introduction
FromOS X 10.10
ToOS X 10.8

Introduction
FromOS X 10.10
ToOS X 10.8

Declaration
From
class SCNSceneSource : NSObject {
    convenience init?(URL url: NSURL, options options: [NSObject : AnyObject]?)
    class func sceneSourceWithURL(_ url: NSURL, options options: [NSObject : AnyObject]?) -> Self?
    convenience init?(data data: NSData, options options: [NSObject : AnyObject]?)
    class func sceneSourceWithData(_ data: NSData, options options: [NSObject : AnyObject]?) -> Self?
    init?(URL url: NSURL, options options: [NSObject : AnyObject]?)
    init?(data data: NSData, options options: [NSObject : AnyObject]?)
    var url: NSURL? { get }
    var data: NSData? { get }
    func sceneWithOptions(_ options: [NSObject : AnyObject]?, statusHandler statusHandler: SCNSceneSourceStatusHandler?) -> SCNScene?
    func sceneWithOptions(_ options: [NSObject : AnyObject]?, error error: NSErrorPointer) -> SCNScene?
    func propertyForKey(_ key: String) -> AnyObject?
    func entryWithIdentifier(_ uid: String, withClass entryClass: AnyClass) -> AnyObject?
    func identifiersOfEntriesWithClass(_ entryClass: AnyClass) -> [AnyObject]?
    func entriesPassingTest(_ predicate: (AnyObject!, String!, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]
}
To
class SCNSceneSource : NSObject {
    convenience init?(URL url: NSURL, options options: [String : AnyObject]?)
    class func sceneSourceWithURL(_ url: NSURL, options options: [String : AnyObject]?) -> Self?
    convenience init?(data data: NSData, options options: [String : AnyObject]?)
    class func sceneSourceWithData(_ data: NSData, options options: [String : AnyObject]?) -> Self?
    init?(URL url: NSURL, options options: [String : AnyObject]?)
    init?(data data: NSData, options options: [String : AnyObject]?)
    var url: NSURL? { get }
    var data: NSData? { get }
    func sceneWithOptions(_ options: [String : AnyObject]?, statusHandler statusHandler: SCNSceneSourceStatusHandler?) -> SCNScene?
    func sceneWithOptions(_ options: [String : AnyObject]?) throws -> SCNScene
    func propertyForKey(_ key: String) -> AnyObject?
    func __entryWithIdentifier(_ uid: String, withClass entryClass: AnyClass) -> AnyObject?
    func identifiersOfEntriesWithClass(_ entryClass: AnyClass) -> [String]
    func entriesPassingTest(_ predicate: (AnyObject, String, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]
}
extension SCNSceneSource {
    @warn_unused_result
    func entryWithIdentifier<T>(_ uid: String, withClass entryClass: T.Type) -> T?
}
extension SCNSceneSource {
    @warn_unused_result
    func entryWithIdentifier<T>(_ uid: String, withClass entryClass: T.Type) -> T?
}

Declaration
From
func entriesPassingTest(_ predicate: (AnyObject!, String!, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]
To
func entriesPassingTest(_ predicate: (AnyObject, String, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]

Declaration
From
func identifiersOfEntriesWithClass(_ entryClass: AnyClass) -> [AnyObject]?
To
func identifiersOfEntriesWithClass(_ entryClass: AnyClass) -> [String]

Declaration
From
init?(data data: NSData, options options: [NSObject : AnyObject]?)
To
init?(data data: NSData, options options: [String : AnyObject]?)

Declaration
From
init?(URL url: NSURL, options options: [NSObject : AnyObject]?)
To
init?(URL url: NSURL, options options: [String : AnyObject]?)

Declaration
From
func sceneWithOptions(_ options: [NSObject : AnyObject]?, error error: NSErrorPointer) -> SCNScene?
To
func sceneWithOptions(_ options: [String : AnyObject]?) throws -> SCNScene

Declaration
From
func sceneWithOptions(_ options: [NSObject : AnyObject]?, statusHandler statusHandler: SCNSceneSourceStatusHandler?) -> SCNScene?
To
func sceneWithOptions(_ options: [String : AnyObject]?, statusHandler statusHandler: SCNSceneSourceStatusHandler?) -> SCNScene?

Raw Value Type
From--
ToInt

Modified SCNShadable
Declaration
From
protocol SCNShadable : NSObjectProtocol {
    optional var shaderModifiers: [NSObject : AnyObject]? { get set }
    optional var program: SCNProgram! { get set }
    optional func handleBindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock)
    optional func handleUnbindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock)
}
To
protocol SCNShadable : NSObjectProtocol {
    optional var program: SCNProgram? { get set }
    optional func handleBindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock?)
    optional func handleUnbindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock?)
    optional var shaderModifiers: [String : String]? { get set }
}

Declaration
From
optional func handleBindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock)
To
optional func handleBindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock?)

Declaration
From
optional func handleUnbindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock)
To
optional func handleUnbindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock?)

DeclarationIntroduction
From
optional var program: SCNProgram! { get set }
OS X 10.10
To
optional var program: SCNProgram? { get set }
OS X 10.8

Declaration
From
optional var shaderModifiers: [NSObject : AnyObject]? { get set }
To
optional var shaderModifiers: [String : String]? { get set }

Raw Value Type
From--
ToInt

Modified SCNShape
Declaration
From
class SCNShape : SCNGeometry {
    convenience init(path path: NSBezierPath, extrusionDepth extrusionDepth: CGFloat)
    class func shapeWithPath(_ path: NSBezierPath, extrusionDepth extrusionDepth: CGFloat) -> Self
    @NSCopying var path: NSBezierPath!
    var extrusionDepth: CGFloat
    var chamferMode: SCNChamferMode
    var chamferRadius: CGFloat
    @NSCopying var chamferProfile: NSBezierPath!
}
To
class SCNShape : SCNGeometry {
    convenience init(path path: NSBezierPath?, extrusionDepth extrusionDepth: CGFloat)
    class func shapeWithPath(_ path: NSBezierPath?, extrusionDepth extrusionDepth: CGFloat) -> Self
    @NSCopying var path: NSBezierPath?
    var extrusionDepth: CGFloat
    var chamferMode: SCNChamferMode
    var chamferRadius: CGFloat
    @NSCopying var chamferProfile: NSBezierPath?
}

Declaration
From
@NSCopying var chamferProfile: NSBezierPath!
To
@NSCopying var chamferProfile: NSBezierPath?

Declaration
From
convenience init(path path: NSBezierPath, extrusionDepth extrusionDepth: CGFloat)
To
convenience init(path path: NSBezierPath?, extrusionDepth extrusionDepth: CGFloat)

Modified SCNShape.path
Declaration
From
@NSCopying var path: NSBezierPath!
To
@NSCopying var path: NSBezierPath?

Modified SCNSkinner
Declaration
From
class SCNSkinner : NSObject, NSSecureCoding, NSCoding {
    var skeleton: SCNNode!
    convenience init!(baseGeometry baseGeometry: SCNGeometry!, bones bones: [AnyObject]!, boneInverseBindTransforms boneInverseBindTransforms: [AnyObject]!, boneWeights boneWeights: SCNGeometrySource!, boneIndices boneIndices: SCNGeometrySource!)
    class func skinnerWithBaseGeometry(_ baseGeometry: SCNGeometry!, bones bones: [AnyObject]!, boneInverseBindTransforms boneInverseBindTransforms: [AnyObject]!, boneWeights boneWeights: SCNGeometrySource!, boneIndices boneIndices: SCNGeometrySource!) -> Self!
    var baseGeometry: SCNGeometry!
    var baseGeometryBindTransform: SCNMatrix4
    var boneInverseBindTransforms: [AnyObject]! { get }
    var bones: [AnyObject]! { get }
    var boneWeights: SCNGeometrySource! { get }
    var boneIndices: SCNGeometrySource! { get }
}
To
class SCNSkinner : NSObject, NSSecureCoding, NSCoding {
    var skeleton: SCNNode?
    convenience init(baseGeometry baseGeometry: SCNGeometry?, bones bones: [SCNNode], boneInverseBindTransforms boneInverseBindTransforms: [NSValue]?, boneWeights boneWeights: SCNGeometrySource, boneIndices boneIndices: SCNGeometrySource)
    class func skinnerWithBaseGeometry(_ baseGeometry: SCNGeometry?, bones bones: [SCNNode], boneInverseBindTransforms boneInverseBindTransforms: [NSValue]?, boneWeights boneWeights: SCNGeometrySource, boneIndices boneIndices: SCNGeometrySource) -> Self
    var baseGeometry: SCNGeometry?
    var baseGeometryBindTransform: SCNMatrix4
    var boneInverseBindTransforms: [NSValue]? { get }
    var bones: [SCNNode] { get }
    var boneWeights: SCNGeometrySource { get }
    var boneIndices: SCNGeometrySource { get }
}

Declaration
From
var baseGeometry: SCNGeometry!
To
var baseGeometry: SCNGeometry?

Declaration
From
var boneIndices: SCNGeometrySource! { get }
To
var boneIndices: SCNGeometrySource { get }

Declaration
From
var boneInverseBindTransforms: [AnyObject]! { get }
To
var boneInverseBindTransforms: [NSValue]? { get }

Declaration
From
var bones: [AnyObject]! { get }
To
var bones: [SCNNode] { get }

Declaration
From
var boneWeights: SCNGeometrySource! { get }
To
var boneWeights: SCNGeometrySource { get }

Declaration
From
convenience init!(baseGeometry baseGeometry: SCNGeometry!, bones bones: [AnyObject]!, boneInverseBindTransforms boneInverseBindTransforms: [AnyObject]!, boneWeights boneWeights: SCNGeometrySource!, boneIndices boneIndices: SCNGeometrySource!)
To
convenience init(baseGeometry baseGeometry: SCNGeometry?, bones bones: [SCNNode], boneInverseBindTransforms boneInverseBindTransforms: [NSValue]?, boneWeights boneWeights: SCNGeometrySource, boneIndices boneIndices: SCNGeometrySource)

Declaration
From
var skeleton: SCNNode!
To
var skeleton: SCNNode?

Modified SCNTechnique
Declaration
From
class SCNTechnique : NSObject, SCNAnimatable, NSObjectProtocol, NSCopying, NSSecureCoding, NSCoding {
    init?(dictionary dictionary: [NSObject : AnyObject]) -> SCNTechnique
    class func techniqueWithDictionary(_ dictionary: [NSObject : AnyObject]) -> SCNTechnique?
    init?(bySequencingTechniques techniques: [AnyObject]) -> SCNTechnique
    class func techniqueBySequencingTechniques(_ techniques: [AnyObject]) -> SCNTechnique?
    func handleBindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock)
    var dictionaryRepresentation: [NSObject : AnyObject] { get }
}
To
class SCNTechnique : NSObject, SCNAnimatable, NSCopying, NSSecureCoding, NSCoding {
     init?(dictionary dictionary: [String : AnyObject])
    class func techniqueWithDictionary(_ dictionary: [String : AnyObject]) -> SCNTechnique?
     init?(bySequencingTechniques techniques: [SCNTechnique])
    class func techniqueBySequencingTechniques(_ techniques: [SCNTechnique]) -> SCNTechnique?
    func handleBindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock?)
    var dictionaryRepresentation: [String : AnyObject] { get }
    subscript (_ key: AnyObject) -> AnyObject? { get }
    func objectForKeyedSubscript(_ key: AnyObject) -> AnyObject?
    func setObject(_ obj: AnyObject?, forKeyedSubscript key: NSCopying)
}

Declaration
From
var dictionaryRepresentation: [NSObject : AnyObject] { get }
To
var dictionaryRepresentation: [String : AnyObject] { get }

Declaration
From
func handleBindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock)
To
func handleBindingOfSymbol(_ symbol: String, usingBlock block: SCNBindingBlock?)

Declaration
From
init?(bySequencingTechniques techniques: [AnyObject]) -> SCNTechnique
To
init?(bySequencingTechniques techniques: [SCNTechnique])

Declaration
From
init?(dictionary dictionary: [NSObject : AnyObject]) -> SCNTechnique
To
init?(dictionary dictionary: [String : AnyObject])

Modified SCNText
Declaration
From
class SCNText : SCNGeometry {
    convenience init(string string: AnyObject, extrusionDepth extrusionDepth: CGFloat)
    class func textWithString(_ string: AnyObject, extrusionDepth extrusionDepth: CGFloat) -> Self
    var extrusionDepth: CGFloat
    @NSCopying var string: AnyObject!
    var font: NSFont!
    var wrapped: Bool
    var containerFrame: CGRect
    var textSize: CGSize { get }
    var truncationMode: String!
    var alignmentMode: String!
    var chamferRadius: CGFloat
    var chamferSegmentCount: Int
    @NSCopying var chamferProfile: NSBezierPath!
    var flatness: CGFloat
}
To
class SCNText : SCNGeometry {
    convenience init(string string: AnyObject?, extrusionDepth extrusionDepth: CGFloat)
    class func textWithString(_ string: AnyObject?, extrusionDepth extrusionDepth: CGFloat) -> Self
    var extrusionDepth: CGFloat
    @NSCopying var string: AnyObject?
    var font: NSFont!
    var wrapped: Bool
    var containerFrame: CGRect
    var textSize: CGSize { get }
    var truncationMode: String
    var alignmentMode: String
    var chamferRadius: CGFloat
    var chamferSegmentCount: Int
    @NSCopying var chamferProfile: NSBezierPath?
    var flatness: CGFloat
}

Declaration
From
var alignmentMode: String!
To
var alignmentMode: String

Declaration
From
@NSCopying var chamferProfile: NSBezierPath!
To
@NSCopying var chamferProfile: NSBezierPath?

Declaration
From
convenience init(string string: AnyObject, extrusionDepth extrusionDepth: CGFloat)
To
convenience init(string string: AnyObject?, extrusionDepth extrusionDepth: CGFloat)

Declaration
From
@NSCopying var string: AnyObject!
To
@NSCopying var string: AnyObject?

Declaration
From
var truncationMode: String!
To
var truncationMode: String

Declaration
From
class SCNTransformConstraint : SCNConstraint {
    convenience init(inWorldSpace world: Bool, withBlock block: (SCNNode!, SCNMatrix4) -> SCNMatrix4)
    class func transformConstraintInWorldSpace(_ world: Bool, withBlock block: (SCNNode!, SCNMatrix4) -> SCNMatrix4) -> Self
}
To
class SCNTransformConstraint : SCNConstraint {
    convenience init(inWorldSpace world: Bool, withBlock block: (SCNNode, SCNMatrix4) -> SCNMatrix4)
    class func transformConstraintInWorldSpace(_ world: Bool, withBlock block: (SCNNode, SCNMatrix4) -> SCNMatrix4) -> Self
}

Declaration
From
convenience init(inWorldSpace world: Bool, withBlock block: (SCNNode!, SCNMatrix4) -> SCNMatrix4)
To
convenience init(inWorldSpace world: Bool, withBlock block: (SCNNode, SCNMatrix4) -> SCNMatrix4)

Raw Value Type
From--
ToInt

Declaration
From
struct SCNVector3 {
    var x: CGFloat
    var y: CGFloat
    var z: CGFloat
    init()
    init(x x: CGFloat, y y: CGFloat, z z: CGFloat)
}
To
struct SCNVector3 {
    var x: CGFloat
    var y: CGFloat
    var z: CGFloat
    init()
    init(x x: CGFloat, y y: CGFloat, z z: CGFloat)
}
extension SCNVector3 {
    init(_ x: Float, _ y: Float, _ z: Float)
    init(_ x: CGFloat, _ y: CGFloat, _ z: CGFloat)
    init(_ x: Double, _ y: Double, _ z: Double)
    init(_ x: Int, _ y: Int, _ z: Int)
    init(_ v: float3)
    init(_ v: double3)
}
extension SCNVector3 {
    init(_ x: Float, _ y: Float, _ z: Float)
    init(_ x: CGFloat, _ y: CGFloat, _ z: CGFloat)
    init(_ x: Double, _ y: Double, _ z: Double)
    init(_ x: Int, _ y: Int, _ z: Int)
    init(_ v: float3)
    init(_ v: double3)
}

Declaration
From
struct SCNVector4 {
    var x: CGFloat
    var y: CGFloat
    var z: CGFloat
    var w: CGFloat
    init()
    init(x x: CGFloat, y y: CGFloat, z z: CGFloat, w w: CGFloat)
}
To
struct SCNVector4 {
    var x: CGFloat
    var y: CGFloat
    var z: CGFloat
    var w: CGFloat
    init()
    init(x x: CGFloat, y y: CGFloat, z z: CGFloat, w w: CGFloat)
}
extension SCNVector4 {
    init(_ x: Float, _ y: Float, _ z: Float, _ w: Float)
    init(_ x: CGFloat, _ y: CGFloat, _ z: CGFloat, _ w: CGFloat)
    init(_ x: Double, _ y: Double, _ z: Double, _ w: Double)
    init(_ x: Int, _ y: Int, _ z: Int, _ w: Int)
    init(_ v: float4)
    init(_ v: double4)
}
extension SCNVector4 {
    init(_ x: Float, _ y: Float, _ z: Float, _ w: Float)
    init(_ x: CGFloat, _ y: CGFloat, _ z: CGFloat, _ w: CGFloat)
    init(_ x: Double, _ y: Double, _ z: Double, _ w: Double)
    init(_ x: Int, _ y: Int, _ z: Int, _ w: Int)
    init(_ v: float4)
    init(_ v: double4)
}

Modified SCNView
Declaration
From
class SCNView : NSView, SCNSceneRenderer, NSObjectProtocol, SCNTechniqueSupport {
    init(frame frame: NSRect, options options: [NSObject : AnyObject]?)
    var scene: SCNScene?
    @NSCopying var backgroundColor: NSColor?
    var allowsCameraControl: Bool
    func snapshot() -> NSImage?
    @IBAction func play(_ sender: AnyObject?)
    @IBAction func pause(_ sender: AnyObject?)
    @IBAction func stop(_ sender: AnyObject?)
    var openGLContext: NSOpenGLContext
    var antialiasingMode: SCNAntialiasingMode
    var pixelFormat: NSOpenGLPixelFormat
}
To
class SCNView : NSView, SCNSceneRenderer, SCNTechniqueSupport {
    init(frame frame: NSRect, options options: [String : AnyObject]?)
    var scene: SCNScene?
    @NSCopying var backgroundColor: NSColor
    var allowsCameraControl: Bool
    func snapshot() -> NSImage
    @IBAction func play(_ sender: AnyObject?)
    @IBAction func pause(_ sender: AnyObject?)
    @IBAction func stop(_ sender: AnyObject?)
    var openGLContext: NSOpenGLContext?
    var antialiasingMode: SCNAntialiasingMode
    var pixelFormat: NSOpenGLPixelFormat?
}

Declaration
From
@NSCopying var backgroundColor: NSColor?
To
@NSCopying var backgroundColor: NSColor

Declaration
From
init(frame frame: NSRect, options options: [NSObject : AnyObject]?)
To
init(frame frame: NSRect, options options: [String : AnyObject]?)

Declaration
From
var openGLContext: NSOpenGLContext
To
var openGLContext: NSOpenGLContext?

Declaration
From
var pixelFormat: NSOpenGLPixelFormat
To
var pixelFormat: NSOpenGLPixelFormat?

Declaration
From
func snapshot() -> NSImage?
To
func snapshot() -> NSImage

DeclarationRaw Value Type
From
enum SCNWrapMode : Int {
    case WrapModeClamp
    case WrapModeRepeat
    case WrapModeClampToBorder
    case WrapModeMirror
}
--
To
enum SCNWrapMode : Int {
    case Clamp
    case Repeat
    case ClampToBorder
    case Mirror
}
Int

Declaration
From
case WrapModeClamp
To
case Clamp

Declaration
From
case WrapModeClampToBorder
To
case ClampToBorder

Declaration
From
case WrapModeMirror
To
case Mirror

Declaration
From
case WrapModeRepeat
To
case Repeat

Declaration
From
typealias SCNAnimationEventBlock = (CAAnimation!, AnyObject!, Bool) -> Void
To
typealias SCNAnimationEventBlock = (CAAnimation, AnyObject, Bool) -> Void

Declaration
From
typealias SCNBindingBlock = (UInt32, UInt32, SCNNode!, SCNRenderer!) -> Void
To
typealias SCNBindingBlock = (UInt32, UInt32, SCNNode, SCNRenderer) -> Void

Declaration
From
func SCNExportJavaScriptModule(_ context: JSContext!)
To
func SCNExportJavaScriptModule(_ context: JSContext)

Declaration
From
typealias SCNSceneExportProgressHandler = (Float, NSError!, UnsafeMutablePointer<ObjCBool>) -> Void
To
typealias SCNSceneExportProgressHandler = (Float, NSError?, UnsafeMutablePointer<ObjCBool>) -> Void

Declaration
From
typealias SCNSceneSourceStatusHandler = (Float, SCNSceneSourceStatus, NSError!, UnsafeMutablePointer<ObjCBool>) -> Void
To
typealias SCNSceneSourceStatusHandler = (Float, SCNSceneSourceStatus, NSError?, UnsafeMutablePointer<ObjCBool>) -> Void