Documentation Archive Developer
Search

SceneKit Changes for Swift

SceneKit

Modified SCNAction
DeclarationProtocols
From
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
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNAction : NSObject, NSCopying, NSSecureCoding {
    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
}
NSCopying, NSSecureCoding

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromAnyObject
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromAnyObject
To--

DeclarationProtocols
From
class SCNAudioSource : NSObject, NSCopying, NSSecureCoding, NSCoding {
    convenience init?(fileNamed name: String)
    init?(URL url: NSURL)
    convenience init?(named fileName: String)
    class func audioSourceNamed(_ fileName: String) -> Self?
    var positional: Bool
    var volume: Float
    var rate: Float
    var reverbBlend: Float
    var loops: Bool
    var shouldStream: Bool
    func load()
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNAudioSource : NSObject, NSCopying, NSSecureCoding {
    convenience init?(fileNamed name: String)
    init?(URL url: NSURL)
    convenience init?(named fileName: String)
    class func audioSourceNamed(_ fileName: String) -> Self?
    var positional: Bool
    var volume: Float
    var rate: Float
    var reverbBlend: Float
    var loops: Bool
    var shouldStream: Bool
    func load()
}
NSCopying, NSSecureCoding

Protocols
FromAnyObject
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNBox
Protocols
FromAnyObject
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNCamera
DeclarationProtocols
From
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
}
AnyObject, NSCoding, NSCopying, NSObjectProtocol, NSSecureCoding, SCNAnimatable, SCNTechniqueSupport
To
class SCNCamera : NSObject, SCNAnimatable, SCNTechniqueSupport, NSCopying, NSSecureCoding {
    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
}
NSCopying, NSSecureCoding, SCNAnimatable, SCNTechniqueSupport

Modified SCNCapsule
Protocols
FromAnyObject
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNCone
Protocols
FromAnyObject
To--

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

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNCylinder
Protocols
FromAnyObject
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNFloor
Protocols
FromAnyObject
To--

Modified SCNGeometry
DeclarationProtocols
From
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?
}
AnyObject, NSCoding, NSCopying, NSObjectProtocol, NSSecureCoding, SCNAnimatable, SCNBoundingVolume, SCNShadable
To
class SCNGeometry : NSObject, SCNAnimatable, SCNBoundingVolume, SCNShadable, NSCopying, NSSecureCoding {
    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?
}
NSCopying, NSSecureCoding, SCNAnimatable, SCNBoundingVolume, SCNShadable

DeclarationProtocols
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 }
}
extension SCNGeometryElement {
    convenience init<IndexType : IntegerType>(indices indices: [IndexType], primitiveType primitiveType: SCNGeometryPrimitiveType)
}
extension SCNGeometryElement {
    convenience init<IndexType : IntegerType>(indices indices: [IndexType], primitiveType primitiveType: SCNGeometryPrimitiveType)
}
AnyObject, NSCoding, NSSecureCoding
To
class SCNGeometryElement : NSObject, NSSecureCoding {
    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)
}
NSSecureCoding

Protocols
FromEquatable, Hashable, RawRepresentable
To--

DeclarationProtocols
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
    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 }
}
AnyObject, NSCoding, NSSecureCoding
To
class SCNGeometrySource : NSObject, NSSecureCoding {
    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 }
}
NSSecureCoding

Protocols
FromAnyObject
To--

Protocols
FromAnyObject
To--

DeclarationProtocols
From
class SCNLevelOfDetail : NSObject, NSCopying, NSSecureCoding, NSCoding {
    convenience init(geometry geometry: SCNGeometry?, screenSpaceRadius radius: CGFloat)
    class func levelOfDetailWithGeometry(_ geometry: SCNGeometry?, screenSpaceRadius radius: CGFloat) -> Self
    convenience init(geometry geometry: SCNGeometry?, worldSpaceDistance distance: CGFloat)
    class func levelOfDetailWithGeometry(_ geometry: SCNGeometry?, worldSpaceDistance distance: CGFloat) -> Self
    var geometry: SCNGeometry? { get }
    var screenSpaceRadius: CGFloat { get }
    var worldSpaceDistance: CGFloat { get }
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNLevelOfDetail : NSObject, NSCopying, NSSecureCoding {
    convenience init(geometry geometry: SCNGeometry?, screenSpaceRadius radius: CGFloat)
    class func levelOfDetailWithGeometry(_ geometry: SCNGeometry?, screenSpaceRadius radius: CGFloat) -> Self
    convenience init(geometry geometry: SCNGeometry?, worldSpaceDistance distance: CGFloat)
    class func levelOfDetailWithGeometry(_ geometry: SCNGeometry?, worldSpaceDistance distance: CGFloat) -> Self
    var geometry: SCNGeometry? { get }
    var screenSpaceRadius: CGFloat { get }
    var worldSpaceDistance: CGFloat { get }
}
NSCopying, NSSecureCoding

Modified SCNLight
DeclarationProtocols
From
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
}
AnyObject, NSCoding, NSCopying, NSObjectProtocol, NSSecureCoding, SCNAnimatable, SCNTechniqueSupport
To
class SCNLight : NSObject, SCNAnimatable, SCNTechniqueSupport, NSCopying, NSSecureCoding {
    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
}
NSCopying, NSSecureCoding, SCNAnimatable, SCNTechniqueSupport

Protocols
FromAnyObject
To--

Modified SCNMaterial
DeclarationProtocols
From
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
}
AnyObject, NSCoding, NSCopying, NSObjectProtocol, NSSecureCoding, SCNAnimatable, SCNShadable
To
class SCNMaterial : NSObject, SCNAnimatable, SCNShadable, NSCopying, NSSecureCoding {
    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
}
NSCopying, NSSecureCoding, SCNAnimatable, SCNShadable

DeclarationProtocols
From
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
}
AnyObject, NSCoding, NSObjectProtocol, NSSecureCoding, SCNAnimatable
To
class SCNMaterialProperty : NSObject, SCNAnimatable, NSSecureCoding {
    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
}
NSSecureCoding, SCNAnimatable

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

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNNode
DeclarationProtocols
From
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 }
}
AnyObject, NSCoding, NSCopying, NSObjectProtocol, NSSecureCoding, SCNActionable, SCNAnimatable, SCNBoundingVolume
To
class SCNNode : NSObject, NSCopying, NSSecureCoding, 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 }
}
NSCopying, NSSecureCoding, SCNActionable, SCNAnimatable, SCNBoundingVolume

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

DeclarationProtocols
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?
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNParticlePropertyController : NSObject, NSSecureCoding, 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?
}
NSCopying, NSSecureCoding

Protocols
FromEquatable, Hashable, RawRepresentable
To--

DeclarationProtocols
From
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()
}
AnyObject, NSCoding, NSCopying, NSObjectProtocol, NSSecureCoding, SCNAnimatable
To
class SCNParticleSystem : NSObject, NSCopying, NSSecureCoding, 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()
}
NSCopying, NSSecureCoding, SCNAnimatable

Protocols
FromAnyObject
To--

DeclarationProtocols
From
class SCNPhysicsBehavior : NSObject, NSSecureCoding, NSCoding {
}
AnyObject, NSCoding, NSSecureCoding
To
class SCNPhysicsBehavior : NSObject, NSSecureCoding {
}
NSSecureCoding

DeclarationProtocols
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 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()
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNPhysicsBody : NSObject, NSCopying, NSSecureCoding {
    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()
}
NSCopying, NSSecureCoding

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromAnyObject
To--

DeclarationProtocols
From
class SCNPhysicsField : NSObject, NSCopying, NSSecureCoding, NSCoding {
    var strength: CGFloat
    var falloffExponent: CGFloat
    var minimumDistance: CGFloat
    var active: Bool
    var exclusive: Bool
    var halfExtent: SCNVector3
    var usesEllipsoidalExtent: Bool
    var scope: SCNPhysicsFieldScope
    var offset: SCNVector3
    var direction: SCNVector3
    var categoryBitMask: Int
    class func dragField() -> SCNPhysicsField
    class func vortexField() -> SCNPhysicsField
    class func radialGravityField() -> SCNPhysicsField
    class func linearGravityField() -> SCNPhysicsField
    class func noiseFieldWithSmoothness(_ smoothness: CGFloat, animationSpeed speed: CGFloat) -> SCNPhysicsField
    class func turbulenceFieldWithSmoothness(_ smoothness: CGFloat, animationSpeed speed: CGFloat) -> SCNPhysicsField
    class func springField() -> SCNPhysicsField
    class func electricField() -> SCNPhysicsField
    class func magneticField() -> SCNPhysicsField
    class func customFieldWithEvaluationBlock(_ block: SCNFieldForceEvaluator) -> SCNPhysicsField
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNPhysicsField : NSObject, NSCopying, NSSecureCoding {
    var strength: CGFloat
    var falloffExponent: CGFloat
    var minimumDistance: CGFloat
    var active: Bool
    var exclusive: Bool
    var halfExtent: SCNVector3
    var usesEllipsoidalExtent: Bool
    var scope: SCNPhysicsFieldScope
    var offset: SCNVector3
    var direction: SCNVector3
    var categoryBitMask: Int
    class func dragField() -> SCNPhysicsField
    class func vortexField() -> SCNPhysicsField
    class func radialGravityField() -> SCNPhysicsField
    class func linearGravityField() -> SCNPhysicsField
    class func noiseFieldWithSmoothness(_ smoothness: CGFloat, animationSpeed speed: CGFloat) -> SCNPhysicsField
    class func turbulenceFieldWithSmoothness(_ smoothness: CGFloat, animationSpeed speed: CGFloat) -> SCNPhysicsField
    class func springField() -> SCNPhysicsField
    class func electricField() -> SCNPhysicsField
    class func magneticField() -> SCNPhysicsField
    class func customFieldWithEvaluationBlock(_ block: SCNFieldForceEvaluator) -> SCNPhysicsField
}
NSCopying, NSSecureCoding

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromAnyObject
To--

DeclarationProtocols
From
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 }
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNPhysicsShape : NSObject, NSCopying, NSSecureCoding {
    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 }
}
NSCopying, NSSecureCoding

Protocols
FromAnyObject
To--

Protocols
FromAnyObject
To--

DeclarationProtocols
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
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNPhysicsVehicleWheel : NSObject, NSCopying, NSSecureCoding {
    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
}
NSCopying, NSSecureCoding

DeclarationProtocols
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()
    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()
}
AnyObject, NSCoding, NSSecureCoding
To
class SCNPhysicsWorld : NSObject, NSSecureCoding {
    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()
}
NSSecureCoding

Modified SCNPlane
Protocols
FromAnyObject
To--

Modified SCNProgram
DeclarationProtocols
From
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?
}
AnyObject, NSCoding, NSCopying, NSSecureCoding
To
class SCNProgram : NSObject, NSCopying, NSSecureCoding {
    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?
}
NSCopying, NSSecureCoding

Modified SCNPyramid
Protocols
FromAnyObject
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromAnyObject
To--

Modified SCNRenderer
Protocols
FromAnyObject, NSObjectProtocol, SCNSceneRenderer, SCNTechniqueSupport
ToSCNSceneRenderer, SCNTechniqueSupport

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNScene
DeclarationProtocols
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: [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 }
}
AnyObject, NSCoding, NSSecureCoding
To
class SCNScene : NSObject, NSSecureCoding {
    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 }
}
NSSecureCoding

Protocols
FromAnyObject
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNShape
Protocols
FromAnyObject
To--

Modified SCNSkinner
DeclarationProtocols
From
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 }
}
AnyObject, NSCoding, NSSecureCoding
To
class SCNSkinner : NSObject, NSSecureCoding {
    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 }
}
NSSecureCoding

Modified SCNSphere
Protocols
FromAnyObject
To--

Modified SCNTechnique
DeclarationProtocols
From
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)
}
AnyObject, NSCoding, NSCopying, NSObjectProtocol, NSSecureCoding, SCNAnimatable
To
class SCNTechnique : NSObject, SCNAnimatable, NSCopying, NSSecureCoding {
     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)
}
NSCopying, NSSecureCoding, SCNAnimatable

Modified SCNText
Protocols
FromAnyObject
To--

Modified SCNTorus
Protocols
FromAnyObject
To--

Protocols
FromAnyObject
To--

Protocols
FromAnyObject
To--

Protocols
FromEquatable, Hashable, RawRepresentable
To--

Modified SCNTube
Protocols
FromAnyObject
To--

Modified SCNView
Protocols
FromAnyObject, NSObjectProtocol, SCNSceneRenderer, SCNTechniqueSupport
ToSCNSceneRenderer, SCNTechniqueSupport

Protocols
FromEquatable, Hashable, RawRepresentable
To--