Skip to content

SceneKit tvOS xcode9 beta5

Vincent Dondain edited this page Aug 7, 2017 · 1 revision

#SceneKit.framework

diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/ModelIO.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/ModelIO.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/ModelIO.h	2017-07-14 05:00:35.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/ModelIO.h	2017-07-28 03:01:17.000000000 -0400
@@ -6,6 +6,13 @@
 
 #import <ModelIO/ModelIO.h>
 
+#import <SceneKit/SCNNode.h>
+#import <SceneKit/SCNScene.h>
+#import <SceneKit/SCNLight.h>
+#import <SceneKit/SCNCamera.h>
+#import <SceneKit/SCNGeometry.h>
+#import <SceneKit/SCNMaterial.h>
+
 NS_ASSUME_NONNULL_BEGIN
 
 /*! 
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAction.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAction.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAction.h	2017-07-14 19:26:21.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAction.h	2017-07-28 06:28:14.000000000 -0400
@@ -4,7 +4,7 @@
 //  Copyright (c) 2014-2017 Apple, Inc. All rights reserved.
 //
 
-#import <Foundation/Foundation.h>
+#import <SceneKit/SceneKitTypes.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -136,16 +136,16 @@
 + (SCNAction *)scaleTo:(CGFloat)scale duration:(NSTimeInterval)sec;
 
 //Creates an action that runs a collection of actions sequentially.
-+ (nullable SCNAction *)sequence:(NSArray<SCNAction *> *)actions;
++ (SCNAction *)sequence:(NSArray<SCNAction *> *)actions;
 
 //Creates an action that runs a collection of actions in parallel.
-+ (nullable SCNAction *)group:(NSArray<SCNAction *> *)actions;
++ (SCNAction *)group:(NSArray<SCNAction *> *)actions;
 
 //Creates an action that repeats another action a specified number of times.
-+ (nullable SCNAction *)repeatAction:(SCNAction *)action count:(NSUInteger)count;
++ (SCNAction *)repeatAction:(SCNAction *)action count:(NSUInteger)count;
 
 //Creates an action that repeats another action forever.
-+ (nullable SCNAction *)repeatActionForever:(SCNAction *)action;
++ (SCNAction *)repeatActionForever:(SCNAction *)action;
 
 //Creates an action that changes the opacity value of the node to 1.0
 + (SCNAction *)fadeInWithDuration:(NSTimeInterval)sec;
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAnimation.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAnimation.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAnimation.h	2017-07-14 05:00:35.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAnimation.h	2017-07-28 03:01:17.000000000 -0400
@@ -4,6 +4,8 @@
 //  Copyright (c) 2012-2017 Apple Inc. All rights reserved.
 //
 
+#import <SceneKit/SceneKitTypes.h>
+
 #import <QuartzCore/QuartzCore.h>
 
 @class SCNAnimation, SCNAnimationEvent, SCNAnimationPlayer;
@@ -144,7 +146,7 @@
  SCNAnimation represents an animation that targets a specific key path.
  */
 API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
-@interface SCNAnimation : NSObject  <SCNAnimation, NSCopying, NSSecureCoding>
+@interface SCNAnimation : NSObject <SCNAnimation, NSCopying, NSSecureCoding>
 
 
 /*!
@@ -183,17 +185,17 @@
 /**
  The duration of the animation in seconds. Defaults to 0.
  */
-@property (nonatomic) NSTimeInterval duration;
+@property(nonatomic) NSTimeInterval duration;
 
 /**
  The key-path describing the property to be animated for single-property animations, nil for animations targetting multiple nodes. defaults to nil.
  */
-@property (nonatomic, copy, nullable) NSString *keyPath;
+@property(nonatomic, copy, nullable) NSString *keyPath;
 
 /**
  A timing function defining the pacing of the animation. Defaults to nil indicating linear pacing.
  */
-@property (nonatomic, retain) SCNTimingFunction *timingFunction;
+@property(nonatomic, retain) SCNTimingFunction *timingFunction;
 
 
 
@@ -205,13 +207,13 @@
  Determines the receiver's blend-in duration.
  @discussion When the blendInDuration is greater than zero, the effect of the animation progressively increase from 0% to 100% during the specified duration.
  */
-@property (nonatomic) NSTimeInterval blendInDuration;
+@property(nonatomic) NSTimeInterval blendInDuration;
 
 /**
  Determines the receiver's blend-out duration.
  @discussion When the blendOutDuration is greater than zero, the effect of the animation progressively decrease from 100% to 0% at the end of the animation duration.
  */
-@property (nonatomic) NSTimeInterval blendOutDuration;
+@property(nonatomic) NSTimeInterval blendOutDuration;
 
 
 
@@ -222,12 +224,12 @@
 /**
  When true, the animation is removed from the render tree once its active duration has passed. Defaults to YES. 
  */
-@property (nonatomic, getter=isRemovedOnCompletion) BOOL removedOnCompletion;
+@property(nonatomic, getter=isRemovedOnCompletion) BOOL removedOnCompletion;
 
 /**
  When true, the animation is applied to the model tree once its active duration has passed. Defaults to NO.
  */
-@property (nonatomic, getter=isAppliedOnCompletion) BOOL appliedOnCompletion;
+@property(nonatomic, getter=isAppliedOnCompletion) BOOL appliedOnCompletion;
 
 
 
@@ -238,11 +240,11 @@
 /**
  The repeat count of the object. May be fractional. Defaults to 0.
  */
-@property (nonatomic) CGFloat repeatCount;
+@property(nonatomic) CGFloat repeatCount;
 /**
  When true, the object plays backwards after playing forwards. Defaults to NO.
  */
-@property (nonatomic) BOOL  autoreverses;
+@property(nonatomic) BOOL autoreverses;
 
 
 
@@ -254,14 +256,14 @@
  The relative delay to start the animation, in relation to its parent animation if applicable. Defaults to 0.
  @discussion This property is bridged with CoreAnimations's beginTime. However, for top level animations, startDelay relative to the current time (unlike CAAnimation's beginTime that is absolute). So if a CAAnimation has a non-zero beginTime, startDelay is initialized as caAnimation.beginTime - CACurrentMediaTime().
  */
-@property (nonatomic) NSTimeInterval startDelay;
+@property(nonatomic) NSTimeInterval startDelay;
 
 /**
  Additional offset in active local time. i.e. to convert from parent
  time tp to active local time t: t = (tp - begin) * speed + offset.
  Defaults to 0.
  */
-@property (nonatomic) NSTimeInterval timeOffset;
+@property(nonatomic) NSTimeInterval timeOffset;
 
 
 
@@ -272,12 +274,12 @@
 /**
  When true, the animation remains active after its active duration and evaluates to its end value. Defaults to NO.
  */
-@property (nonatomic) BOOL fillsForward;
+@property(nonatomic) BOOL fillsForward;
 
 /**
  When true, the animation is active before its active duration and evaluates to its start value. Defaults to NO.
  */
-@property (nonatomic) BOOL fillsBackward;
+@property(nonatomic) BOOL fillsBackward;
 
 /**
  Determines whether the receiver is evaluated using the scene time or the system time. Defaults to NO.
@@ -285,7 +287,7 @@
  The "sceneTime" base is typically used by players or editors that need to preview, edit and being able to change the evaluation time.
  @see SCNSceneSourceAnimationImportPolicyKey
  */
-@property (nonatomic) BOOL usesSceneTimeBase;
+@property(nonatomic) BOOL usesSceneTimeBase;
 
 
 /*!
@@ -295,20 +297,20 @@
 /**
  Called when the animation starts.
  */
-@property (nonatomic, copy, nullable) SCNAnimationDidStartBlock animationDidStart;
+@property(nonatomic, copy, nullable) SCNAnimationDidStartBlock animationDidStart;
 
 /**
  Called when the animation either completes its active duration or
  is removed from the object it is attached to (i.e. the layer). The 'completed' argument of SCNAnimationDidStopBlock
  is true if the animation reached the end of its active duration without being removed.
  */
-@property (nonatomic, copy, nullable) SCNAnimationDidStopBlock animationDidStop;
+@property(nonatomic, copy, nullable) SCNAnimationDidStopBlock animationDidStop;
 
 /**
  Specifies the animation events attached to the receiver.
  @see SCNAnimationEvent
  */
-@property (nonatomic, copy, nullable) NSArray<SCNAnimationEvent *> *animationEvents;
+@property(nonatomic, copy, nullable) NSArray<SCNAnimationEvent *> *animationEvents;
 
 /*!
  Additive and cumulative
@@ -320,7 +322,7 @@
  presentation value. The addition function is type-dependent, e.g.
  for affine transforms the two matrices are concatenated. Defaults to
  NO. */
-@property (nonatomic, getter=isAdditive) BOOL additive;
+@property(nonatomic, getter=isAdditive) BOOL additive;
 
 /**
  The `cumulative' property affects how repeating animations produce
@@ -329,7 +331,7 @@
  current repeat cycle. If false, the value is simply the value
  calculated for the current repeat cycle. Defaults to NO. 
  */
-@property (nonatomic, getter=isCumulative) BOOL cumulative;
+@property(nonatomic, getter=isCumulative) BOOL cumulative;
 
 @end
 
@@ -350,22 +352,22 @@
 /**
  The played animation
  */
-@property (nonatomic, readonly) SCNAnimation *animation;
+@property(nonatomic, readonly) SCNAnimation *animation;
 
 /**
  The speed to play the animation at. Defaults to 1.0. Animatable
  */
-@property (nonatomic) CGFloat speed;
+@property(nonatomic) CGFloat speed;
 
 /**
  Controls the influence of the played animation. When set to 1 the animation is applied without any blending. When set to less than 1, the animation value is blent with the current presentation value of the animated property. Defaults to 1.0. Animatable.
  */
-@property (nonatomic) CGFloat blendFactor;
+@property(nonatomic) CGFloat blendFactor;
 
 /**
  Specifies if the animation is paused. Defaults to NO.
  */
-@property (nonatomic) BOOL paused;
+@property(nonatomic) BOOL paused;
 
 /*!
  Actions
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAudioSource.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAudioSource.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAudioSource.h	2017-07-14 05:00:35.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNAudioSource.h	2017-07-28 06:07:08.000000000 -0400
@@ -63,13 +63,13 @@
 
 /*!
  @property loops
- @abstract Specifies whether the audio source should loop or not. Default to NO.
+ @abstract Specifies whether the audio source should loop or not. Defaults to NO.
  */
 @property(nonatomic) BOOL loops;
 
 /*!
  @property shouldStream
- @abstract Specifies whether the audio source should be streamed or not. Default to NO.
+ @abstract Specifies whether the audio source should be streamed or not. Defaults to NO.
  */
 @property(nonatomic) BOOL shouldStream;
 
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCAAnimationExtensions.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCAAnimationExtensions.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCAAnimationExtensions.h	2017-07-14 05:00:35.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCAAnimationExtensions.h	2017-07-28 03:01:17.000000000 -0400
@@ -4,15 +4,10 @@
 //  Copyright (c) 2012-2017 Apple Inc. All rights reserved.
 //
 
-#import <Foundation/Foundation.h>
-#import <CoreGraphics/CoreGraphics.h>
-#import <QuartzCore/QuartzCore.h>
+#import <SceneKit/SCNAnimation.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
-@class SCNAnimationEvent, SCNAnimation;
-
-
 @interface CAAnimation (SCNAnimation) <SCNAnimation>
 @end
 
@@ -28,7 +23,7 @@
 /**
  Initializes a CoreAnimation animation from a SCNAnimation
  */
-+ (CAAnimation *)animationWithSCNAnimation:(SCNAnimation *)animation API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
++ (CAAnimation *)animationWithSCNAnimation:(SCNAnimation *)animation API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0));
 
 /*!
  @property usesSceneTimeBase
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCamera.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCamera.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCamera.h	2017-07-14 19:26:22.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCamera.h	2017-07-28 06:28:14.000000000 -0400
@@ -8,7 +8,6 @@
 #import <SceneKit/SCNAnimation.h>
 #import <SceneKit/SCNTechnique.h>
 
-
 typedef NS_ENUM(NSInteger, SCNCameraProjectionDirection) {
     SCNCameraProjectionDirectionVertical   = 0,
     SCNCameraProjectionDirectionHorizontal = 1,
@@ -16,6 +15,8 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+@class SCNMaterialProperty;
+
 /*!
  @class SCNCamera
  @abstract SCNCamera represents a camera that can be attached to a SCNNode. 
@@ -103,9 +104,7 @@
  */
 @property(nonatomic) SCNMatrix4 projectionTransform;
 
-/*!
- Depth of field
- */
+// MARK: Depth of Field
 
 /*!
  @property wantsDepthOfField
@@ -148,11 +147,7 @@
  */
 @property(nonatomic) CGFloat motionBlurIntensity API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0));
 
-
-
-/*!
- Screen space ambient occlusion
- */
+// MARK: Screen Space Ambient Occlusion
 
 /*!
  @property screenSpaceAmbientOcclusionIntensity
@@ -189,9 +184,8 @@
  */
 @property(nonatomic) CGFloat screenSpaceAmbientOcclusionNormalThreshold API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
-/*!
- High Dynamic Range
- */
+// MARK: High Dynamic Range
+
 /*!
  @property wantsHDR
  @abstract Determines if the receiver has a high dynamic range. Defaults to NO.
@@ -312,8 +306,7 @@
  */
 @property(nonatomic) NSUInteger categoryBitMask API_AVAILABLE(macos(10.10));
 
-
-//Deprecated
+// MARK: - Deprecated APIs
 
 /*!
  @property focalBlurRadius
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCameraController.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCameraController.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCameraController.h	2017-07-13 20:49:44.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNCameraController.h	2017-07-27 23:06:22.000000000 -0400
@@ -1,12 +1,13 @@
 //
 //  SCNCameraController.h
 //
-//  Copyright (c) 2013-2017 Apple Inc. All rights reserved.
+//  Copyright (c) 2017 Apple Inc. All rights reserved.
 //
 
-#import <Foundation/Foundation.h>
 #import <SceneKit/SceneKitTypes.h>
 
+NS_ASSUME_NONNULL_BEGIN
+
 @class SCNNode;
 @class SCNCameraController;
 
@@ -24,42 +25,44 @@
     SCNInteractionModeTruck,                     // camera space translation on X/Z
 } API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
+API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
 @protocol SCNCameraControllerDelegate <NSObject>
 
 @optional
-- (void)cameraInertiaWillStartForController:(SCNCameraController*)cameraController;
-- (void)cameraInertiaDidEndForController:(SCNCameraController*)cameraController;
+- (void)cameraInertiaWillStartForController:(SCNCameraController *)cameraController;
+- (void)cameraInertiaDidEndForController:(SCNCameraController *)cameraController;
 
 @end
 
 API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
 @interface SCNCameraController : NSObject
 
-@property(nonatomic, assign) id<SCNCameraControllerDelegate> delegate;
+@property(nonatomic, assign, nullable) id <SCNCameraControllerDelegate> delegate;
 
-@property(nonatomic, retain) SCNNode* pointOfView;
-@property(nonatomic, assign) SCNInteractionMode interactionMode;
+@property(nonatomic, retain, nullable) SCNNode *pointOfView;
+@property(nonatomic) SCNInteractionMode interactionMode;
 
 // The camera target in world space for orbit rotation.
-@property(nonatomic, assign) SCNVector3 target;
+@property(nonatomic) SCNVector3 target;
 
 // Automatically update the target in beginInteraction
-@property(nonatomic, assign) BOOL automaticTarget;   //default to NO
+// Defaults to NO
+@property(nonatomic) BOOL automaticTarget;
 
 // The up vector in world space used as reference for SCNInteractionModeFly and SCNInteractionModeOrbitTurntable camera modes.
 // Default to UnitY(0, 1, 0).
-@property(nonatomic, assign) SCNVector3 worldUp;
+@property(nonatomic) SCNVector3 worldUp;
 
 // Set to YES to enable inertia on endInteraction.
 // Default to NO.
-@property(nonatomic, assign) BOOL inertiaEnabled;
+@property(nonatomic) BOOL inertiaEnabled;
 
 // The friction coefficient applied to the inertia.
 // Default to 0.05.
-@property(nonatomic, assign) float inertiaFriction;
+@property(nonatomic) float inertiaFriction;
 
 // Returns YES if inertia is running.
-@property(nonatomic, readonly, getter = isInertiaRunning) BOOL inertiaRunning;
+@property(nonatomic, readonly, getter=isInertiaRunning) BOOL inertiaRunning;
 
 // Minimum and maximum vertical view angles in degree for Fly mode and Turntable.
 // The angle constraints is not enforced if both vertical angle properties values are set to 0.
@@ -68,8 +71,8 @@
 // Angles are in world space and between the range [-90, 90].
 // Default value is 0.
 // For example: set to minimum to 0 and maximum to 90 to only allow orbit around the top hemisphere.
-@property(nonatomic, assign) float minimumVerticalAngle;
-@property(nonatomic, assign) float maximumVerticalAngle;
+@property(nonatomic) float minimumVerticalAngle;
+@property(nonatomic) float maximumVerticalAngle;
 
 // Minimum and maximum horizontal view angles in degree for Fly mode and Turntable.
 // The angle constraints is not enforced if both horizontal angle properties values are set to 0.
@@ -77,15 +80,15 @@
 // The minimum angle must be inferior to the maximum angle.
 // Angles are in world space and between the range [-180, 180].
 // Default value is 0.
-@property(nonatomic, assign) float minimumHorizontalAngle;
-@property(nonatomic, assign) float maximumHorizontalAngle;
+@property(nonatomic) float minimumHorizontalAngle;
+@property(nonatomic) float maximumHorizontalAngle;
 
 // Translate the camera along the local X/Y/Z axis.
 - (void)translateInCameraSpaceByX:(float)deltaX Y:(float)deltaY Z:(float)deltaX;
 
 // Move the camera to a position where the bounding sphere of all nodes is fully visible.
 // Also set the camera target has the center of the bounding sphere.
-- (void)frameNodes:(NSArray<SCNNode*>*)nodes;
+- (void)frameNodes:(NSArray<SCNNode *> *)nodes;
 
 // Rotate delta is in degree.
 - (void)rotateByX:(float)deltaX Y:(float)deltaY;
@@ -116,3 +119,5 @@
 - (void)endInteraction:(CGPoint)location withViewport:(CGSize)viewport velocity:(CGPoint)velocity;
 
 @end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNConstraint.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNConstraint.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNConstraint.h	2017-07-14 19:18:12.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNConstraint.h	2017-07-26 20:19:14.000000000 -0400
@@ -33,7 +33,7 @@
 
 /*!
  @property incremental
- @abstract Specifies whether or not the contraint should applies incrementally and have it's effect being cumulated over the rendered frames. Defaults to true on macos 10.13, ios 11.0, tvos 11.0, watchos 4.0, default to false on previous releases.
+ @abstract Specifies whether or not the contraint should applies incrementally and have it's effect being cumulated over the rendered frames. Defaults to YES on macOS 10.13, iOS 11, tvOS 11 and watchOS 4. Defaults to NO in earlier versions.
  */
 @property(nonatomic, getter=isIncremental) BOOL incremental API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
@@ -359,19 +359,19 @@
  @property collisionCategoryBitMask
  @abstract Defines the category of node to collide against. Defaults to 0.
  */
-@property (nonatomic, assign) NSUInteger collisionCategoryBitMask;
+@property(nonatomic, assign) NSUInteger collisionCategoryBitMask;
 
 /*!
  @property radius
  @abstract Defines the radius of the slider. Defaults to 1.
  */
-@property (nonatomic, assign) CGFloat radius;
+@property(nonatomic, assign) CGFloat radius;
 
 /*!
  @property offset
  @abstract Defines the offset of the slider. Defaults to (0,0,0). 
  */
-@property (nonatomic, assign) SCNVector3 offset;
+@property(nonatomic, assign) SCNVector3 offset;
 
 @end
 
@@ -404,26 +404,26 @@
  @property delegate
  @abstract The receiver's delegate
  */
-@property (nonatomic, assign) id<SCNAvoidOccluderConstraintDelegate> delegate;
+@property(nonatomic, assign) id <SCNAvoidOccluderConstraintDelegate> delegate;
 
 /*!
  @property target
  @abstract Defines the target node
  */
-@property (nonatomic, retain, nullable) SCNNode *target;
+@property(nonatomic, retain, nullable) SCNNode *target;
 
 /*!
  @property occluderCategoryBitMask
  @abstract Defines the category of node to consider as occluder. Defaults to 1.
  */
-@property (nonatomic, assign) NSUInteger occluderCategoryBitMask;
+@property(nonatomic, assign) NSUInteger occluderCategoryBitMask;
 
 /*!
  @property bias
  @abstract Defines the bias the apply after moving the receiver to avoid occluders. Defaults to 10e-5.
  @discussion A positive bias will move the receiver closer to the target.
  */
-@property (nonatomic, assign) CGFloat bias;
+@property(nonatomic, assign) CGFloat bias;
 
 @end
 
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNGeometry.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNGeometry.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNGeometry.h	2017-07-14 19:26:22.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNGeometry.h	2017-07-28 02:53:43.000000000 -0400
@@ -181,7 +181,7 @@
  @abstract Specifies if the subdivision is adaptive or uniform. Defaults to YES.
  @discussion Adaptive subdivision requires that the `tessellator` property of the receiver is not nil.
  */
-@property (nonatomic) BOOL wantsAdaptiveSubdivision API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(nonatomic) BOOL wantsAdaptiveSubdivision API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
  @property edgeCreasesElement
@@ -265,7 +265,7 @@
  - (void)renderer:(id <SCNSceneRenderer>)aRenderer willRenderScene:(SCNScene *)scene atTime:(NSTimeInterval)time
  {
      // ask for a new command buffer
-     id<MTLCommandBuffer> myCommandBuffer = [aRenderer.commandQueue commandBuffer];
+     id <MTLCommandBuffer> myCommandBuffer = [aRenderer.commandQueue commandBuffer];
 
      // get a compute command encoder
      id <MTLComputeCommandEncoder> myComputeCommandEncoder = [myCommandBuffer computeCommandEncoder];
@@ -425,46 +425,46 @@
  @property tessellationFactorScale
  @abstract Specifies the scale factor applied to the per-patch tessellation factors. Defaults to 1.
  */
-@property (nonatomic) CGFloat tessellationFactorScale;
+@property(nonatomic) CGFloat tessellationFactorScale;
 
 /*!
  @property tessellationPartitionMode
  @abstract Specifies the tessellation partition mode. Defaults to MTLTessellationPartitionModePow2.
  */
-@property (nonatomic) MTLTessellationPartitionMode tessellationPartitionMode;
+@property(nonatomic) MTLTessellationPartitionMode tessellationPartitionMode;
 
 /*!
  @property adaptive
  @abstract Specifies if the tessellation should be uniform or adaptive. Defaults to NO.
  */
-@property (nonatomic, getter=isAdaptive) BOOL adaptive;
+@property(nonatomic, getter=isAdaptive) BOOL adaptive;
 
 /*!
  @property screenspace
  @abstract Specifies if the level of tessellation should be adapted in screenSpace. Defaults to NO.
  */
-@property (nonatomic, getter=isScreenSpace) BOOL screenSpace;
+@property(nonatomic, getter=isScreenSpace) BOOL screenSpace;
 
 /*!
  @property edgeTessellationFactor
  @abstract Specifies the edge tessellation factor. Defaults to 1.
  @discussion This has no effect for adaptive subdivision
  */
-@property (nonatomic) CGFloat edgeTessellationFactor;
+@property(nonatomic) CGFloat edgeTessellationFactor;
 
 /*!
  @property insideTessellationFactor
  @abstract Specifies the inside tessellation factor. Defaults to 1.
  @discussion This has no effect for adaptive subdivision
  */
-@property (nonatomic) CGFloat insideTessellationFactor;
+@property(nonatomic) CGFloat insideTessellationFactor;
 
 /*!
  @property maximumEdgeLength
  @abstract Specifies the maximum edge length. Defaults to 1.
  @discussion This has no effect for non-adaptive subdivision
  */
-@property (nonatomic) CGFloat maximumEdgeLength;
+@property(nonatomic) CGFloat maximumEdgeLength;
 
 /*!
  @property smoothingMode
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNLight.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNLight.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNLight.h	2017-07-14 19:26:22.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNLight.h	2017-07-28 03:01:17.000000000 -0400
@@ -261,7 +261,7 @@
  @abstract The receiver's spherical harmonics coefficients.
  @discussion Currently spherical harmonics are only supported by light probes (SCNLightTypeProbe). The data is an array of 27 32-bit floating-point values, containing three non-interleaved data sets corresponding to the red, green, and blue sets of coefficients.
  */
-@property (nonatomic, copy, readonly) NSData *sphericalHarmonicsCoefficients API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(nonatomic, copy, readonly) NSData *sphericalHarmonicsCoefficients API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 
 @end
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMaterial.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMaterial.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMaterial.h	2017-07-14 17:28:47.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMaterial.h	2017-07-27 23:00:47.000000000 -0400
@@ -4,7 +4,7 @@
 //  Copyright (c) 2012-2017 Apple Inc. All rights reserved.
 //
 
-#import <Foundation/Foundation.h>
+#import <SceneKit/SceneKitTypes.h>
 #import <SceneKit/SCNAnimation.h>
 #import <SceneKit/SCNShadable.h>
 
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMaterialProperty.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMaterialProperty.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMaterialProperty.h	2017-07-14 16:39:06.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMaterialProperty.h	2017-07-28 02:53:43.000000000 -0400
@@ -43,7 +43,7 @@
 
 /*! 
  @property contents
- @abstract Specifies the receiver's contents. This can be a color (NSColor, UIColor, CGColorRef), an image (NSImage, UIImage, CGImageRef), a layer (CALayer), a path (NSString or NSURL), a SpriteKit scene (SKScene), a texture (SKTexture, id<MTLTexture> or GLKTextureInfo), or a floating value between 0 and 1 (NSNumber) for metalness and roughness properties. AVCaptureDevice is supported on iOS 11.0 and AVPlayer is supported on macOS 10.13, iOS 11.0 and tvOS11.0. Animatable when set to a color.
+ @abstract Specifies the receiver's contents. This can be a color (NSColor, UIColor, CGColorRef), an image (NSImage, UIImage, CGImageRef), a layer (CALayer), a path (NSString or NSURL), a SpriteKit scene (SKScene), a texture (SKTexture, id<MTLTexture> or GLKTextureInfo), or a floating value between 0 and 1 (NSNumber) for metalness and roughness properties. AVCaptureDevice is supported on iOS 11 and AVPlayer is supported on macOS 10.13, iOS 11 and tvOS 11. Animatable when set to a color.
  @discussion Setting the contents to an instance of SKTexture will automatically update the wrapS, wrapT, contentsTransform, minification, magnification and mip filters according to the SKTexture settings.
              When a cube map is expected (e.g. SCNMaterial.reflective, SCNScene.background, SCNScene.lightingEnvironment) you can use
                1. A horizontal strip image                          where `6 * image.height ==     image.width`
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMorpher.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMorpher.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMorpher.h	2017-07-14 05:00:35.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNMorpher.h	2017-07-28 03:01:17.000000000 -0400
@@ -64,7 +64,7 @@
  @property weights
  @abstract Access to all the weights of all the targets.
  */
-@property (nonatomic, retain) NSArray<NSNumber *> *weights API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(nonatomic, retain) NSArray<NSNumber *> *weights API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
  @property unifiesNormals
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNNode.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNNode.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNNode.h	2017-07-14 05:00:35.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNNode.h	2017-07-28 02:53:43.000000000 -0400
@@ -151,12 +151,25 @@
  */
 @property(nonatomic) SCNMatrix4 transform;
 
+/*!
+ @property worldTransform
+ @abstract Determines the receiver's transform in world space (relative to the scene's root node). Animatable.
+ */
+@property(nonatomic, readonly) SCNMatrix4 worldTransform;
+- (void)setWorldTransform:(SCNMatrix4)worldTransform API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+
 /*! 
  @property position
  @abstract Determines the receiver's position. Animatable.
  */
 @property(nonatomic) SCNVector3 position;
 
+/*!
+ @property worldPosition
+ @abstract Determines the receiver's position in world space (relative to the scene's root node).
+ */
+@property(nonatomic) SCNVector3 worldPosition API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+
 /*! 
  @property rotation
  @abstract Determines the receiver's rotation. Animatable.
@@ -172,7 +185,7 @@
 
 /*!
  @property worldOrientation
- @abstract Determines the receiver's orientation relative to the scene as a unit quaternion. Animatable.
+ @abstract Determines the receiver's orientation in world space (relative to the scene's root node). Animatable.
  */
 @property(nonatomic) SCNQuaternion worldOrientation API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
@@ -203,21 +216,6 @@
  */
 @property(nonatomic) SCNMatrix4 pivot;
 
-/*! 
- @property worldPosition
- @abstract Returns the receiver's world position.
- @discussion A world position is the position relative to the scene.
- */
-@property(nonatomic) SCNVector3 worldPosition API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
-
-/*!
- @property worldTransform
- @abstract Returns the receiver's world transform.
- @discussion A world transform is the transform relative to the scene. 
- */
-@property(nonatomic, readonly) SCNMatrix4 worldTransform;
-- (void)setWorldTransform:(SCNMatrix4)worldTransform API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
-
 #pragma mark - Modifying the Node′s Visibility
 
 /*! 
@@ -249,7 +247,7 @@
  @property movabilityHint
  @abstract Give hints oregarding the movability of the receiver. See enum above for details. Defaults to SCNMovabilityHintFixed.
  */
-@property (nonatomic) SCNMovabilityHint movabilityHint API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0));
+@property(nonatomic) SCNMovabilityHint movabilityHint API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0));
 
 
 #pragma mark - Managing the Node Hierarchy
@@ -497,50 +495,50 @@
  @property focusBehavior
  @abstract Controls the behavior of the receiver regarding the UIFocus system. Defaults to SCNNodeFocusBehaviorNone.
  */
-@property (nonatomic) SCNNodeFocusBehavior focusBehavior API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(nonatomic) SCNNodeFocusBehavior focusBehavior API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 @end
 
 @interface SCNNode (Transforms)
 
 /*!
- @property up
- @abstract The local unit Y axis.
+ @property localUp
+ @abstract The local unit Y axis (0, 0, 1).
  */
-@property (class, readonly, nonatomic) SCNVector3 localUp API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(class, readonly, nonatomic) SCNVector3 localUp API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
- @property right
- @abstract the local unit X axis.
+ @property localRight
+ @abstract The local unit X axis (0, 1, 0).
  */
-@property (class, readonly, nonatomic) SCNVector3 localRight API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(class, readonly, nonatomic) SCNVector3 localRight API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
- @property front
- @abstract the local unit -Z axis.
+ @property localFront
+ @abstract The local unit -Z axis (0, 0, -1).
  */
-@property (class, readonly, nonatomic) SCNVector3 localFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(class, readonly, nonatomic) SCNVector3 localFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
- @property up
- @abstract The local unit Y axis in the world space.
+ @property worldUp
+ @abstract The local unit Y axis (0, 0, 1) in world space.
  */
-@property (readonly, nonatomic) SCNVector3 worldUp API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(readonly, nonatomic) SCNVector3 worldUp API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
- @property right
- @abstract the local unit X axis in the world space.
+ @property worldRight
+ @abstract The local unit X axis (0, 1, 0) in world space.
  */
-@property (readonly, nonatomic) SCNVector3 worldRight API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(readonly, nonatomic) SCNVector3 worldRight API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
- @property front
- @abstract the local unit -Z axis in the world space.
+ @property worldFront
+ @abstract The local unit -Z axis (0, 0, -1) in world space.
  */
-@property (readonly, nonatomic) SCNVector3 worldFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(readonly, nonatomic) SCNVector3 worldFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /**
- Convenience for calling lookAt:up:localFront: with worldUp set to [self worldUp]
+ Convenience for calling lookAt:up:localFront: with worldUp set to `self.worldUp`
  and localFront [SCNNode localFront].
  @param worldTarget target position in world space.
  */
@@ -650,17 +648,17 @@
 @property(nonatomic) simd_float4x4 simdPivot API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
- @abstract A world position is the position relative to the scene.
+ @abstract Determines the receiver's position in world space (relative to the scene's root node).
  */
 @property(nonatomic) simd_float3 simdWorldPosition API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
- @abstract Determines the receiver's orientation relative to the scene as a unit quaternion. Animatable.
+ @abstract Determines the receiver's orientation in world space (relative to the scene's root node). Animatable.
  */
 @property(nonatomic) simd_quatf simdWorldOrientation API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
- @abstract A world transform is the transform relative to the scene.
+ @abstract Determines the receiver's transform in world space (relative to the scene's root node). Animatable.
  */
 @property(nonatomic) simd_float4x4 simdWorldTransform API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
@@ -673,13 +671,13 @@
 - (simd_float4x4)simdConvertTransform:(simd_float4x4)transform toNode:(nullable SCNNode *)node API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 - (simd_float4x4)simdConvertTransform:(simd_float4x4)transform fromNode:(nullable SCNNode *)node API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
-@property (class, readonly, nonatomic) simd_float3 simdLocalUp API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
-@property (class, readonly, nonatomic) simd_float3 simdLocalRight API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
-@property (class, readonly, nonatomic) simd_float3 simdLocalFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
-
-@property (readonly, nonatomic) simd_float3 simdWorldUp API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
-@property (readonly, nonatomic) simd_float3 simdWorldRight API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
-@property (readonly, nonatomic) simd_float3 simdWorldFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(class, readonly, nonatomic) simd_float3 simdLocalUp API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(class, readonly, nonatomic) simd_float3 simdLocalRight API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(class, readonly, nonatomic) simd_float3 simdLocalFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+
+@property(readonly, nonatomic) simd_float3 simdWorldUp API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(readonly, nonatomic) simd_float3 simdWorldRight API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(readonly, nonatomic) simd_float3 simdWorldFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 - (void)simdLookAt:(vector_float3)worldTarget API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 - (void)simdLookAt:(vector_float3)worldTarget up:(vector_float3)worldUp localFront:(simd_float3)localFront API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNParticleSystem.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNParticleSystem.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNParticleSystem.h	2017-07-14 05:00:38.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNParticleSystem.h	2017-07-27 23:00:47.000000000 -0400
@@ -212,7 +212,7 @@
 // Specifies the variation of the idle duration. Defaults to 0. Animatable.
 @property(nonatomic) CGFloat idleDurationVariation;
 
-// Specifies the looping behavior of the emission. Default to YES.
+// Specifies the looping behavior of the emission. Defaults to YES.
 @property(nonatomic) BOOL loops;
 
 // Specifies the particle rate flow, in particles per emissionDuration.
@@ -239,14 +239,14 @@
 // Specifies the spreading direction of newly created particles, in degrees. Not used in SCNParticleBirthDirectionRandom. Defaults to 0. Animatable.
 @property(nonatomic) CGFloat spreadingAngle;
 
-// Specifies the emitting direction of newly created particles, used in the SCNParticleBirthDirectionConstant mode. Default to {0, 0, 1}. Animatable.
+// Specifies the emitting direction of newly created particles, used in the SCNParticleBirthDirectionConstant mode. Defaults to {0, 0, 1}. Animatable.
 @property(nonatomic) SCNVector3 emittingDirection;
 
-// Specifies the orientation direction of newly created particles, used in the SCNParticleOrientationModeFree mode. The particle will rotate around this axis. Default to {0, 0, 0}, which means random. The particle will then rotate arbitraly. Animatable.
+// Specifies the orientation direction of newly created particles, used in the SCNParticleOrientationModeFree mode. The particle will rotate around this axis. Defaults to {0, 0, 0}, which means random. The particle will then rotate arbitraly. Animatable.
 @property(nonatomic) SCNVector3 orientationDirection API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 // Specifies the acceleration applied to particles, in world coordinates.
-// Allows to simulate winds or gravity. Default to {0, 0, 0}. Animatable.
+// Allows to simulate winds or gravity. Defaults to {0, 0, 0}. Animatable.
 @property(nonatomic) SCNVector3 acceleration;
 
 // Specifies the rendering and simulation type of the system.
@@ -314,7 +314,7 @@
 // Specifies the texture animation frame rate variation, in frames per second. Defaults to 0. Animatable.
 @property(nonatomic) CGFloat imageSequenceFrameRateVariation;
 
-// Specifies the texture animation mode. Default to SCNTextureAnimationModeRepeat.
+// Specifies the texture animation mode. Defaults to SCNTextureAnimationModeRepeat.
 @property(nonatomic) SCNParticleImageSequenceAnimationMode imageSequenceAnimationMode;
 
 // Specifies the initial color of the particle. Animatable. Defaults to opaque white.
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNShadable.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNShadable.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNShadable.h	2017-07-14 19:18:12.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNShadable.h	2017-07-28 02:53:43.000000000 -0400
@@ -98,26 +98,25 @@
  
  The structure of a shader modifier is:
  
- | // Custom uniforms declarations of the form:
- | // for GLSL: [uniform type uniformName [= defaultValue]]
+ | // Custom GLSL uniforms declarations are of the form: [uniform type uniformName [= defaultValue]]
  | uniform float myGrayAmount = 3.0;
  |
- | //for Metal a pragma is required and arguments have the form [type name]
+ | // Custom Metal uniforms declarations require a #pragma and are of the form: [type name]
  | #pragma arguments
  | float myGrayAmount;
  |
- | In Metal, you can also tranfert varying values from the vertex shader (geometry modifier) to the fragment shader (surface/fragment modifier)
- | In one (or both) of the modifier, declare the varying values
+ | // In Metal, you can also transfer varying values from the vertex shader (geometry modifier) to the fragment shader (surface/fragment modifier)
+ | // In one (or both) of the modifier, declare the varying values
  | #pragma varying
  | half3 myVec;
  |
- | Output them in the geometry modifier
- |  out.myVec = _geometry.normal.xyz * 0.5h + 0.5h;
+ | // Output varying values in the geometry modifier
+ | out.myVec = _geometry.normal.xyz * 0.5h + 0.5h;
  |
- | And use them in the fragment modifier for example
+ | // And use them in the fragment modifier
  | _output.color.rgb = saturate(in.myVec);
  |
- | // Optional global function definitions (for Metal: references to arguments from global functions are not supported).
+ | // Optional global function definitions (for Metal: references to uniforms in global functions are not supported).
  | float mySin(float t) {
  |    return sin(t);
  | }
@@ -126,7 +125,7 @@
  | [#pragma body]
  |
  | // the shader modifier code snippet itself
- | vec3 myColor = vec3(myGrayAmount);
+ | float3 myColor = myGrayAmount;
  | _output.color.rgb += myColor;
  
  The `#pragma body` directive
@@ -144,15 +143,14 @@
  Declaring a `myAmplitude` uniform in the shader modifier makes SceneKit observe the reveiver's `myAmplitude` key. Any change to that key will make SceneKit bind the uniform with the new value.
  Common scalar types wrapped by NSValue are supported.
  Metal Only: 
- - MTLBuffer are also supported as values (introduced in macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
- - Complex data types (struct) declared in the metal shader are supported.
+ - MTLBuffer are also supported as values (introduced in macOS 10.13, iOS 11.0 and tvOS 11.0)
+ - Complex data types (struct) declared in the Metal shader are supported.
     - You can set them as a whole using NSData.
     - Or you can set individual struct members using the member name as key and a value compatible with the member type.
  
  Custom uniforms can be animated using explicit animations.
  
  The following GLSL types (and Objective-C counterparts) can be used to declare (and bind) custom uniforms:
- Example: uniform float myAmplitude = 0.5;
  
  GLSL types    | Objective-C types
  --------------------------------------
@@ -202,7 +200,7 @@
  4. fragment
  See below for a detailed explanation of these entry points and the context they provide.
  
- Shader modifiers can be written in GLSL or Metal. Metal shaders won't run on iOS 8 and macOS 10.10 or below.
+ Shader modifiers can be written in GLSL or Metal. Metal shaders won't run on iOS 8 and macOS 10.10 or earlier.
  */
 @property(nonatomic, copy, nullable) NSDictionary<SCNShaderModifierEntryPoint, NSString *> *shaderModifiers API_AVAILABLE(macos(10.9));
 
@@ -344,11 +342,11 @@
  Structures available from this entry point:
  
  | struct SCNShaderGeometry {
- |    vec4 position;
- |    vec3 normal;
- |    vec4 tangent;
- |    vec4 color;
- |    vec2 texcoords[kSCNTexcoordCount];
+ |    float4 position;
+ |    float3 normal;
+ |    float4 tangent;
+ |    float4 color;
+ |    float2 texcoords[kSCNTexcoordCount];
  | } _geometry;
  |
  | Access: ReadWrite
@@ -362,8 +360,17 @@
  
  Example: Simple sinusoidal deformation
  
- uniform float Amplitude = 0.1
- _geometry.position.xyz += _geometry.normal * (Amplitude*_geometry.position.y*_geometry.position.x) * sin(u_time);
+     GLSL
+     | uniform Amplitude = 0.1;
+     |
+     | _geometry.position.xyz += _geometry.normal * (Amplitude * _geometry.position.y * _geometry.position.x) * sin(u_time);
+ 
+     Metal Shading Language
+     | #pragma arguments
+     | float Amplitude;
+     |
+     | _geometry.position.xyz += _geometry.normal * (Amplitude * _geometry.position.y * _geometry.position.x) * sin(u_time);
+ 
  */
 FOUNDATION_EXTERN SCNShaderModifierEntryPoint const SCNShaderModifierEntryPointGeometry API_AVAILABLE(macos(10.9));
 
@@ -374,32 +381,36 @@
  Structures available from this entry point:
  
  | struct SCNShaderSurface {
- |    vec3 view;                // Direction from the point on the surface toward the camera (V)
- |    vec3 position;            // Position of the fragment
- |    vec3 normal;              // Normal of the fragment (N)
- |    vec3 geometryNormal;      // Geometric normal of the fragment (normal map is ignored)
- |    vec3 tangent;             // Tangent of the fragment
- |    vec3 bitangent;           // Bitangent of the fragment
- |    vec4 ambient;             // Ambient property of the fragment
- |    vec2 ambientTexcoord;     // Ambient texture coordinates
- |    vec4 diffuse;             // Diffuse property of the fragment. Alpha contains the opacity.
- |    vec2 diffuseTexcoord;     // Diffuse texture coordinates
- |    vec4 specular;            // Specular property of the fragment
- |    vec2 specularTexcoord;    // Specular texture coordinates
- |    vec4 emission;            // Emission property of the fragment
- |    vec2 emissionTexcoord;    // Emission texture coordinates
- |    vec4 multiply;            // Multiply property of the fragment
- |    vec2 multiplyTexcoord;    // Multiply texture coordinates
- |    vec4 transparent;         // Transparent property of the fragment
- |    vec2 transparentTexcoord; // Transparent texture coordinates
- |    vec4 reflective;          // Reflective property of the fragment
- |    float metalness;          // Metalness property of the fragment
- |    vec2 metalnessTexcoord;   // Metalness texture coordinates
- |    float roughness;          // Roughness property of the fragment
- |    vec2 roughnessTexcoord;   // Roughness texture coordinates
- |    float shininess;          // Shininess property of the fragment
- |    float fresnel;            // Fresnel property of the fragment
- |    float ambientOcclusion;   // Ambient occlusion term of the fragment
+ |    float3 view;                     // Direction from the point on the surface toward the camera (V)
+ |    float3 position;                 // Position of the fragment
+ |    float3 normal;                   // Normal of the fragment (N)
+ |    float3 geometryNormal;           // Geometric normal of the fragment (normal map is ignored)
+ |    float3 tangent;                  // Tangent of the fragment
+ |    float3 bitangent;                // Bitangent of the fragment
+ |    float4 ambient;                  // Ambient property of the fragment
+ |    float2 ambientTexcoord;          // Ambient texture coordinates
+ |    float4 diffuse;                  // Diffuse property of the fragment. Alpha contains the opacity.
+ |    float2 diffuseTexcoord;          // Diffuse texture coordinates
+ |    float4 specular;                 // Specular property of the fragment
+ |    float2 specularTexcoord;         // Specular texture coordinates
+ |    float4 emission;                 // Emission property of the fragment
+ |    float2 emissionTexcoord;         // Emission texture coordinates
+ |    float4 multiply;                 // Multiply property of the fragment
+ |    float2 multiplyTexcoord;         // Multiply texture coordinates
+ |    float4 transparent;              // Transparent property of the fragment
+ |    float2 transparentTexcoord;      // Transparent texture coordinates
+ |    float4 reflective;               // Reflective property of the fragment
+ |    float  metalness;                // Metalness property of the fragment
+ |    float2 metalnessTexcoord;        // Metalness texture coordinates
+ |    float  roughness;                // Roughness property of the fragment
+ |    float2 roughnessTexcoord;        // Roughness texture coordinates
+ |    float4 selfIllumination;         // Self Illumination property of the fragment. Available since macOS 10.13, iOS 11, tvOS 11 and watchOS 4. Available as `emission` in previous versions.
+ |    float2 selfIlluminationTexcoord; // Self Illumination texture coordinates. Available since macOS 10.13, iOS 11, tvOS 11 and watchOS 4. Available as `emissionTexcoord` in previous versions.
+ |    float4 ambientOcclusion;         // Ambient Occlusion property of the fragment. Available macOS 10.13, iOS 11, tvOS 11 and watchOS 4. Available in `mutliply` in previous versions.
+ |    float2 ambientOcclusionTexcoord; // Ambient Occlusion texture coordinates. Available since macOS 10.13, iOS 11, tvOS 11 and watchOS 4. Available in `mutliplyTexcoord` in previous versions.
+ |    float  shininess;                // Shininess property of the fragment
+ |    float  fresnel;                  // Fresnel property of the fragment
+ |    float  ambientOcclusion;         // Ambient occlusion term of the fragment
  | } _surface;
  |
  | Access: ReadWrite
@@ -412,15 +423,31 @@
  
  Example: Procedural black and white stripes
  
- uniform float Scale = 12.0;
- uniform float Width = 0.25;
- uniform float Blend = 0.3;
- vec2 position = fract(_surface.diffuseTexcoord * Scale);
- float f1 = clamp(position.y / Blend, 0.0, 1.0);
- float f2 = clamp((position.y - Width) / Blend, 0.0, 1.0);
- f1 = f1 * (1.0 - f2);
- f1 = f1 * f1 * 2.0 * (3. * 2. * f1);
- _surface.diffuse = mix(vec4(1.0), vec4(0.0), f1);
+     GLSL
+     | uniform float Scale = 12.0;
+     | uniform float Width = 0.25;
+     | uniform float Blend = 0.3;
+     |
+     | vec2 position = fract(_surface.diffuseTexcoord * Scale);
+     | float f1 = clamp(position.y / Blend, 0.0, 1.0);
+     | float f2 = clamp((position.y - Width) / Blend, 0.0, 1.0);
+     | f1 = f1 * (1.0 - f2);
+     | f1 = f1 * f1 * 2.0 * (3. * 2. * f1);
+     | _surface.diffuse = mix(vec4(1.0), vec4(0.0), f1);
+ 
+     Metal Shading Language
+     | #pragma arguments
+     | float Scale;
+     | float Width;
+     | float Blend;
+     |
+     | float2 position = fract(_surface.diffuseTexcoord * Scale);
+     | float f1 = clamp(position.y / Blend, 0.0, 1.0);
+     | float f2 = clamp((position.y - Width) / Blend, 0.0, 1.0);
+     | f1 = f1 * (1.0 - f2);
+     | f1 = f1 * f1 * 2.0 * (3. * 2. * f1);
+     | _surface.diffuse = mix(float4(1.0), float4(0.0), f1);
+ 
  */
 FOUNDATION_EXTERN SCNShaderModifierEntryPoint const SCNShaderModifierEntryPointSurface API_AVAILABLE(macos(10.9));
 
@@ -437,17 +464,17 @@
  | Stages: Vertex shader and fragment shader
  
  | struct SCNShaderLightingContribution {
- |    vec3 ambient;
- |    vec3 diffuse;
- |    vec3 specular;
+ |    float3 ambient;
+ |    float3 diffuse;
+ |    float3 specular;
  | } _lightingContribution;
  |
  | Access: ReadWrite
  | Stages: Vertex shader and fragment shader
  
  | struct SCNShaderLight {
- |    vec4 intensity;
- |    vec3 direction; // Direction from the point on the surface toward the light (L)
+ |    float4 intensity;
+ |    float3 direction; // Direction from the point on the surface toward the light (L)
  | } _light;
  |
  | Access: ReadOnly
@@ -455,12 +482,25 @@
  
  Example: wrap diffuse lighting
  
- uniform float WrapFactor = 0.5;
- float dotProduct = (WrapFactor + max(0.0, dot(_surface.normal,_light.direction))) / (1 + WrapFactor);
- _lightingContribution.diffuse += (dotProduct * _light.intensity.rgb);
- vec3 halfVector = normalize(_light.direction + _surface.view);
- dotProduct = max(0.0, pow(max(0.0, dot(_surface.normal, halfVector)), _surface.shininess));
- _lightingContribution.specular += (dotProduct * _light.intensity.rgb);
+     GLSL
+     | uniform float WrapFactor = 0.5;
+     |
+     | float dotProduct = (WrapFactor + max(0.0, dot(_surface.normal,_light.direction))) / (1 + WrapFactor);
+     | _lightingContribution.diffuse += (dotProduct * _light.intensity.rgb);
+     | vec3 halfVector = normalize(_light.direction + _surface.view);
+     | dotProduct = max(0.0, pow(max(0.0, dot(_surface.normal, halfVector)), _surface.shininess));
+     | _lightingContribution.specular += (dotProduct * _light.intensity.rgb);
+ 
+     Metal Shading Language
+     | #pragma arguments
+     | float WrapFactor;
+     |
+     | float dotProduct = (WrapFactor + max(0.0, dot(_surface.normal,_light.direction))) / (1 + WrapFactor);
+     | _lightingContribution.diffuse += (dotProduct * _light.intensity.rgb);
+     | float3 halfVector = normalize(_light.direction + _surface.view);
+     | dotProduct = max(0.0, pow(max(0.0, dot(_surface.normal, halfVector)), _surface.shininess));
+     | _lightingContribution.specular += (dotProduct * _light.intensity.rgb);
+ 
  */
 FOUNDATION_EXTERN SCNShaderModifierEntryPoint const SCNShaderModifierEntryPointLightingModel API_AVAILABLE(macos(10.9));
 
@@ -477,7 +517,7 @@
  | Stages: Fragment shader only
  
  | struct SCNShaderOutput {
- |    vec4 color;
+ |    float4 color;
  | } _output;
  |
  | Access: ReadWrite
@@ -485,7 +525,12 @@
  
  Example: inverse final color
  
- _output.color.rgb = vec3(1.0) - _output.color.rgb;
+     GLSL
+     | _output.color.rgb = vec3(1.0) - _output.color.rgb;
+ 
+     Metal Shading Language
+     | _output.color.rgb = 1.0 - _output.color.rgb;
+ 
  */
 FOUNDATION_EXTERN SCNShaderModifierEntryPoint const SCNShaderModifierEntryPointFragment API_AVAILABLE(macos(10.9));
 
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNTechnique.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNTechnique.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNTechnique.h	2017-07-14 16:39:06.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNTechnique.h	2017-07-28 06:07:08.000000000 -0400
@@ -205,10 +205,10 @@
  
  type: a string specifying the type of the render target. It can be one of the following: color, depth, stencil
  format: a string specifying the format of the render target. It can be:
- - for color targets: rgba32f, r8, r16f, rg16, rgba(default)
+ - for color targets: rgba32f, r8, r16f, rg16 or rgba. If not specified defaults to the framebuffer's pixel format.
  - for depth targets: depth24, depth24stencil8
  - for stencil targets: depth24stencil8
- scaleFactor: a float value (encapsulated in a NSNumber) that controls the size of the render target. default to 1, which means 1x the size of the main viewport.
+ scaleFactor: a float value (encapsulated in a NSNumber) that controls the size of the render target. Defaults to 1, which means 1x the size of the main viewport.
  size: a string with the format %dx%d that controls the size of the render target.
  persistent: a boolean that tells if this target should persist from one frame to the next. It permits to create temporal effects suchs as motion blur. Defaults to NO.
  */
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNView.h /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNView.h
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNView.h	2017-07-14 05:00:35.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SCNView.h	2017-07-28 03:01:17.000000000 -0400
@@ -94,7 +94,7 @@
  @abstract An object describing the current configuration of the event handler which pilot the default camera controller.
  @discussion This object will be used to configure the event handler when allowCameraControl is set to YES.
  */
-@property(nonatomic, readonly) id<SCNCameraControlConfiguration> cameraControlConfiguration API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+@property(nonatomic, readonly) id <SCNCameraControlConfiguration> cameraControlConfiguration API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
 
 /*!
  @property defaultCameraController
diff -ruN /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SceneKit.apinotes /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SceneKit.apinotes
--- /Applications/Xcode9-beta4.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SceneKit.apinotes	2017-07-14 05:00:38.000000000 -0400
+++ /Applications/Xcode9-beta5.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/SceneKit.framework/Headers/SceneKit.apinotes	2017-07-28 06:28:14.000000000 -0400
@@ -419,3 +419,10 @@
     - Selector: 'geometrySourceWithVertices:count:'
       MethodKind: Class
       SwiftPrivate: false
+  - Name: SCNAnimationEvent
+    Methods:
+    - Selector: 'animationEventWithKeyTime:block:'
+      MethodKind: Class
+      Parameters:
+      - Position: 1
+        Type: 'void(^ _Nonnull)(CAAnimation * _Nonnull, id _Nonnull, BOOL)'
Clone this wiki locally