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(_: CGFloat, _: CGFloat, _: CGFloat)
Added SCNVector3.init(_: Int, _: Int, _: Int)
Added SCNVector3.init(_: Float, _: Float, _: Float)
Added SCNVector3.init(_: Double, _: Double, _: Double)
Added SCNVector4.init(_: double4)
Added SCNVector4.init(_: float4)
Added SCNVector4.init(_: Int, _: Int, _: Int, _: Int)
Added SCNVector4.init(_: Double, _: Double, _: Double, _: Double)
Added SCNVector4.init(_: Float, _: Float, _: Float, _: Float)
Added SCNVector4.init(_: CGFloat, _: CGFloat, _: CGFloat, _: CGFloat)
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

Raw Value Type
From--
ToInt

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 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
}
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
}

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?

Declaration
From
struct SCNMatrix4 {
    var m11: Float
    var m12: Float
    var m13: Float
    var m14: Float
    var m21: Float
    var m22: Float
    var m23: Float
    var m24: Float
    var m31: Float
    var m32: Float
    var m33: Float
    var m34: Float
    var m41: Float
    var m42: Float
    var m43: Float
    var m44: Float
    init()
    init(m11 m11: Float, m12 m12: Float, m13 m13: Float, m14 m14: Float, m21 m21: Float, m22 m22: Float, m23 m23: Float, m24 m24: Float, m31 m31: Float, m32 m32: Float, m33 m33: Float, m34 m34: Float, m41 m41: Float, m42 m42: Float, m43 m43: Float, m44 m44: Float)
}
To
struct SCNMatrix4 {
    var m11: Float
    var m12: Float
    var m13: Float
    var m14: Float
    var m21: Float
    var m22: Float
    var m23: Float
    var m24: Float
    var m31: Float
    var m32: Float
    var m33: Float
    var m34: Float
    var m41: Float
    var m42: Float
    var m43: Float
    var m44: Float
    init()
    init(m11 m11: Float, m12 m12: Float, m13 m13: Float, m14 m14: Float, m21 m21: Float, m22 m22: Float, m23 m23: Float, m24 m24: Float, m31 m31: Float, m32 m32: Float, m33 m33: Float, m34 m34: Float, m41 m41: Float, m42 m42: Float, m43 m43: Float, m44 m44: Float)
}
extension SCNMatrix4 {
    init(_ m: float4x4)
    init(_ m: double4x4)
}
extension SCNMatrix4 {
    init(_ m: float4x4)
    init(_ m: double4x4)
}

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])
}

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

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

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?

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

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: UIColor!
    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: UIColor
    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: UIColor!
To
var particleColor: UIColor

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 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 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
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 vertexShader: String!
To
var vertexShader: String?

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: EAGLContext, options options: [NSObject : AnyObject]?)
    class func rendererWithContext(_ context: EAGLContext, 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: EAGLContext, options options: [NSObject : AnyObject]?)

Deprecation
From--
ToiOS 9.0

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?
    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
    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
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 }
}
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 }
}

Declaration
From
func hitTest(_ thePoint: CGPoint, options options: [NSObject : AnyObject]?) -> [AnyObject]?
To
func hitTest(_ point: CGPoint, options options: [String : AnyObject]?) -> [SCNHitTestResult]

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 }

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?)

Declaration
From
optional var program: SCNProgram! { get set }
To
optional var program: SCNProgram? { get set }

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

IntroductionRaw Value Type
FromiOS 8.1--
ToiOS 8.0Int

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

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

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

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

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: UIFont!
    var wrapped: Bool
    var containerFrame: CGRect
    var truncationMode: String!
    var alignmentMode: String!
    var chamferRadius: CGFloat
    @NSCopying var chamferProfile: UIBezierPath!
    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: UIFont!
    var wrapped: Bool
    var containerFrame: CGRect
    var truncationMode: String
    var alignmentMode: String
    var chamferRadius: CGFloat
    @NSCopying var chamferProfile: UIBezierPath?
    var flatness: CGFloat
}

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

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

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: Float
    var y: Float
    var z: Float
    init()
    init(x x: Float, y y: Float, z z: Float)
}
To
struct SCNVector3 {
    var x: Float
    var y: Float
    var z: Float
    init()
    init(x x: Float, y y: Float, z z: Float)
}
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: Float
    var y: Float
    var z: Float
    var w: Float
    init()
    init(x x: Float, y y: Float, z z: Float, w w: Float)
}
To
struct SCNVector4 {
    var x: Float
    var y: Float
    var z: Float
    var w: Float
    init()
    init(x x: Float, y y: Float, z z: Float, w w: Float)
}
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 : UIView, SCNSceneRenderer, NSObjectProtocol, SCNTechniqueSupport {
    init(frame frame: CGRect, options options: [NSObject : AnyObject]?)
    var scene: SCNScene?
    var allowsCameraControl: Bool
    func snapshot() -> UIImage?
    @IBAction func play(_ sender: AnyObject?)
    @IBAction func pause(_ sender: AnyObject?)
    @IBAction func stop(_ sender: AnyObject?)
    var eaglContext: EAGLContext
    var preferredFramesPerSecond: Int
    var antialiasingMode: SCNAntialiasingMode
}
To
class SCNView : UIView, SCNSceneRenderer, SCNTechniqueSupport {
    init(frame frame: CGRect, options options: [String : AnyObject]?)
    var scene: SCNScene?
    var allowsCameraControl: Bool
    func snapshot() -> UIImage
    @IBAction func play(_ sender: AnyObject?)
    @IBAction func pause(_ sender: AnyObject?)
    @IBAction func stop(_ sender: AnyObject?)
    var preferredFramesPerSecond: Int
    var eaglContext: EAGLContext?
    var antialiasingMode: SCNAntialiasingMode
}

Declaration
From
var eaglContext: EAGLContext
To
var eaglContext: EAGLContext?

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

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

Raw Value Type
From--
ToInt

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