Skip to content

SpriteKit iOS xcode9 beta1

Vincent Dondain edited this page Jul 17, 2017 · 2 revisions

#SpriteKit.framework https://github.com/xamarin/xamarin-macios/pull/2331

diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKAction.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKAction.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKAction.h	2016-07-30 21:16:20.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKAction.h	2017-05-25 06:59:26.000000000 -0400
@@ -53,7 +53,7 @@
 
 SK_EXPORT @interface SKAction : NSObject <NSCopying, NSCoding>
 
-/** The duration required to complete an action. */
+/** The duration required to complete an action, in seconds. */
 @property (nonatomic) NSTimeInterval duration;
 
 /** The timing mode used to execute an action
@@ -67,7 +67,7 @@
  */
 @property (nonatomic) SKActionTimingFunction timingFunction NS_AVAILABLE(10_10, 8_0);
 
-/** A speed factor that modifies how fast an action runs. */
+/** A speed factor that modifies how fast an action runs. Default value is 1.0 */
 @property (nonatomic) CGFloat speed;
 
 /** Creates an action that reverses the behavior of another action
@@ -83,51 +83,51 @@
 
 /** Creates an action that moves a node relative to its current position
  @param delta A vector that describes the change to apply to the node’s position
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)moveBy:(CGVector)delta duration:(NSTimeInterval)sec;
-+ (SKAction *)moveByX:(CGFloat)deltaX y:(CGFloat)deltaY duration:(NSTimeInterval)sec;
++ (SKAction *)moveBy:(CGVector)delta duration:(NSTimeInterval)duration;
++ (SKAction *)moveByX:(CGFloat)deltaX y:(CGFloat)deltaY duration:(NSTimeInterval)duration;
 
 /** Creates an action that moves a node to a new position
  @param location The coordinates for the node’s new position
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)moveTo:(CGPoint)location duration:(NSTimeInterval)sec;
-+ (SKAction *)moveToX:(CGFloat)x duration:(NSTimeInterval)sec;
-+ (SKAction *)moveToY:(CGFloat)y duration:(NSTimeInterval)sec;
++ (SKAction *)moveTo:(CGPoint)location duration:(NSTimeInterval)duration;
++ (SKAction *)moveToX:(CGFloat)x duration:(NSTimeInterval)duration;
++ (SKAction *)moveToY:(CGFloat)y duration:(NSTimeInterval)duration;
 
 /** Creates an action that rotates the node by a relative value
  @param radians The amount to rotate the node, in radians
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)rotateByAngle:(CGFloat)radians duration:(NSTimeInterval)sec;
++ (SKAction *)rotateByAngle:(CGFloat)radians duration:(NSTimeInterval)duration;
 
 /** Creates an action that rotates the node counterclockwise to an absolute angle
  @param radians The angle to rotate the node to, in radians
  @param duration The duration of the animation
  */
-+ (SKAction *)rotateToAngle:(CGFloat)radians duration:(NSTimeInterval)sec;
++ (SKAction *)rotateToAngle:(CGFloat)radians duration:(NSTimeInterval)duration;
 
 /** Creates an action that rotates the node to an absolute value
  @param radians The angle to rotate the node to, in radians
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  @param shortestUnitArc If YES, then the rotation is performed in whichever
  direction results in the smallest rotation. If NO, then the rotation
  is interpolated
  */
-+ (SKAction *)rotateToAngle:(CGFloat)radians duration:(NSTimeInterval)sec shortestUnitArc:(BOOL)shortestUnitArc;
++ (SKAction *)rotateToAngle:(CGFloat)radians duration:(NSTimeInterval)duration shortestUnitArc:(BOOL)shortestUnitArc;
 
 /** Creates an action that adjusts the size of a sprite
  @param width The amount to add to the sprite’s width
  @param height The amount to add to the sprite’s height
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
 + (SKAction *)resizeByWidth:(CGFloat)width height:(CGFloat)height duration:(NSTimeInterval)duration;
 
 /** Creates an action that changes the width and height of a sprite to a new absolute value
  @param width The new width of the sprite
  @param height The new height of the sprite
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
 + (SKAction *)resizeToWidth:(CGFloat)width height:(CGFloat)height duration:(NSTimeInterval)duration;
 + (SKAction *)resizeToWidth:(CGFloat)width duration:(NSTimeInterval)duration;
@@ -135,24 +135,25 @@
 
 /** Creates an action that changes the x and y scale values of a node by a relative value
  @param scale The amount to modify to the node’s x and y scale values
- @param sec The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)scaleBy:(CGFloat)scale duration:(NSTimeInterval)sec;
-+ (SKAction *)scaleXBy:(CGFloat)xScale y:(CGFloat)yScale duration:(NSTimeInterval)sec;
++ (SKAction *)scaleBy:(CGFloat)scale duration:(NSTimeInterval)duration;
++ (SKAction *)scaleXBy:(CGFloat)xScale y:(CGFloat)yScale duration:(NSTimeInterval)duration;
 
 /** Creates an action that changes the x and y scale values of a node by a relative value
  @param scale The new value for the node’s x and y scale values
- @param sec The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)scaleTo:(CGFloat)scale duration:(NSTimeInterval)sec;
-+ (SKAction *)scaleXTo:(CGFloat)xScale y:(CGFloat)yScale duration:(NSTimeInterval)sec;
-+ (SKAction *)scaleXTo:(CGFloat)scale duration:(NSTimeInterval)sec;
-+ (SKAction *)scaleYTo:(CGFloat)scale duration:(NSTimeInterval)sec;
++ (SKAction *)scaleTo:(CGFloat)scale duration:(NSTimeInterval)duration;
++ (SKAction *)scaleXTo:(CGFloat)xScale y:(CGFloat)yScale duration:(NSTimeInterval)duration;
++ (SKAction *)scaleXTo:(CGFloat)scale duration:(NSTimeInterval)duration;
++ (SKAction *)scaleYTo:(CGFloat)scale duration:(NSTimeInterval)duration;
 
 /**
  Adjust the sprite's xScale & yScale to achieve the desired size (in parent's coordinate space)
- */
-+ (SKAction *)scaleToSize:(CGSize)size duration:(NSTimeInterval)sec NS_AVAILABLE(10_12, 10_0);
+ @param duration The duration of the animation, in seconds
+*/
++ (SKAction *)scaleToSize:(CGSize)size duration:(NSTimeInterval)duration NS_AVAILABLE(10_12, 10_0);
 
 /** Creates an action that runs a collection of actions sequentially
  @param sequence An array of SKAction objects
@@ -195,26 +196,26 @@
 + (SKAction *)repeatActionForever:(SKAction *)action;
 
 /** Creates an action that changes the alpha value of the node to 1.0
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)fadeInWithDuration:(NSTimeInterval)sec;
++ (SKAction *)fadeInWithDuration:(NSTimeInterval)duration;
 
 /** Creates an action that changes the alpha value of the node to 0.0
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)fadeOutWithDuration:(NSTimeInterval)sec;
++ (SKAction *)fadeOutWithDuration:(NSTimeInterval)duration;
 
 /** Creates an action that adjusts the alpha value of a node by a relative value
  @param factor The amount to modify the node’s alpha value
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)fadeAlphaBy:(CGFloat)factor duration:(NSTimeInterval)sec;
++ (SKAction *)fadeAlphaBy:(CGFloat)factor duration:(NSTimeInterval)duration;
 
 /** Creates an action that adjusts the alpha value of a node to a new value
  @param alpha The new value of the node’s alpha
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)fadeAlphaTo:(CGFloat)alpha duration:(NSTimeInterval)sec;
++ (SKAction *)fadeAlphaTo:(CGFloat)alpha duration:(NSTimeInterval)duration;
 
 /** Creates an action that hides a node */
 + (SKAction *)hide NS_AVAILABLE(10_10, 8_0);
@@ -223,7 +224,7 @@
 + (SKAction *)unhide NS_AVAILABLE(10_10, 8_0);
 
 /** Creates an action that changes a sprite’s texture
- @param The new texture to use on the sprite
+ @param texture The new texture to use on the sprite
  */
 + (SKAction *)setTexture:(SKTexture *)texture NS_AVAILABLE(10_10, 7_1);
 + (SKAction *)setNormalTexture:(SKTexture *)texture NS_AVAILABLE(10_11, 9_0);
@@ -272,24 +273,24 @@
 /** Creates an animation that animates a sprite’s color and blend factor
  @param The new color for the sprite
  @param colorBlendFactor The new blend factor for the sprite
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)colorizeWithColor:(SKColor *)color colorBlendFactor:(CGFloat)colorBlendFactor duration:(NSTimeInterval)sec;
++ (SKAction *)colorizeWithColor:(SKColor *)color colorBlendFactor:(CGFloat)colorBlendFactor duration:(NSTimeInterval)duration;
 + (SKAction *)colorizeWithColorBlendFactor:(CGFloat)colorBlendFactor duration:(NSTimeInterval)sec;
 
 /** Creates an action that sets the falloff of a field
  @param falloff The new value for falloff
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  @see SKFieldNode
  */
-+ (SKAction *)falloffTo:(float)falloff duration:(NSTimeInterval)sec NS_AVAILABLE(10_10, 8_0);
++ (SKAction *)falloffTo:(float)falloff duration:(NSTimeInterval)duration NS_AVAILABLE(10_10, 8_0);
 
 /** Creates an action that sets the falloff of a field
  @param falloff The value to modify falloff by
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  @see SKFieldNode
  */
-+ (SKAction *)falloffBy:(float)falloff duration:(NSTimeInterval)sec NS_AVAILABLE(10_10, 8_0);
++ (SKAction *)falloffBy:(float)falloff duration:(NSTimeInterval)duration NS_AVAILABLE(10_10, 8_0);
 
 
 /** Creates an action that moves the node along a relative path, orienting the
@@ -297,9 +298,9 @@
  
  @param path A Core Graphics path whose coordinates are relative to the node’s
  current position
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)followPath:(CGPathRef)path duration:(NSTimeInterval)sec;
++ (SKAction *)followPath:(CGPathRef)path duration:(NSTimeInterval)duration;
 
 /** Creates an action that moves the node along a path
  
@@ -313,7 +314,7 @@
  the node is unchanged.
  @param duration The duration of the animation
  */
-+ (SKAction *)followPath:(CGPathRef)path asOffset:(BOOL)offset orientToPath:(BOOL)orient duration:(NSTimeInterval)sec;
++ (SKAction *)followPath:(CGPathRef)path asOffset:(BOOL)offset orientToPath:(BOOL)orient duration:(NSTimeInterval)duration;
 
 /** Creates an action that moves the node along a relative path, orienting the
  node to the path
@@ -328,24 +329,24 @@
 /** Creates an action that changes how fast the node executes actions by a
  relative value
  @param speed amount to modify the speed by
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)speedBy:(CGFloat)speed duration:(NSTimeInterval)sec;
++ (SKAction *)speedBy:(CGFloat)speed duration:(NSTimeInterval)duration;
 
 /** Creates an action that changes how fast the node executes actions
  @param speed The new value for the node’s speed
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)speedTo:(CGFloat)speed duration:(NSTimeInterval)sec;
++ (SKAction *)speedTo:(CGFloat)speed duration:(NSTimeInterval)duration;
 
 /** Creates an action that performs an inverse kinematic reach.
  This action must be run on a descendent of the rootNode for animation to occur.
  Running this action on the rootNode itself will not cause any animation to occur.
  @param position The position (in screen space) to reach for
  @param rootNode Where to start the inverse kinematic operation from
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
-+ (SKAction *)reachTo:(CGPoint)position rootNode:(SKNode *)root duration:(NSTimeInterval)sec NS_AVAILABLE(10_10, 8_0);
++ (SKAction *)reachTo:(CGPoint)position rootNode:(SKNode *)root duration:(NSTimeInterval)duration NS_AVAILABLE(10_10, 8_0);
 
 /** Creates an action that performs an inverse kinematic reach.
  This action must be run on a descendent of the rootNode for animation to occur.
@@ -361,7 +362,7 @@
  Running this action on the rootNode itself will not cause any animation to occur.
  @param node The node to reach for
  @param rootNode Where to start the inverse kinematic operation from
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  */
 + (SKAction *)reachToNode:(SKNode *)node rootNode:(SKNode *)root duration:(NSTimeInterval)sec NS_AVAILABLE(10_10, 8_0);
 
@@ -376,27 +377,28 @@
 
 /** Creates an action that sets the strength of a field
  @param strength The new value for strength
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  @see SKFieldNode
  */
-+ (SKAction *)strengthTo:(float)strength duration:(NSTimeInterval)sec NS_AVAILABLE(10_10, 8_0);
++ (SKAction *)strengthTo:(float)strength duration:(NSTimeInterval)duration NS_AVAILABLE(10_10, 8_0);
 
 /** Creates an action that sets the strength of a field
  @param strength The value to modify strength by
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  @see SKFieldNode
  */
-+ (SKAction *)strengthBy:(float)strength duration:(NSTimeInterval)sec NS_AVAILABLE(10_10, 8_0);
++ (SKAction *)strengthBy:(float)strength duration:(NSTimeInterval)duration NS_AVAILABLE(10_10, 8_0);
 
 /** Creates an action that idles for a specified period of time
- @param duration The duration of the idle
+ @param duration The duration of the idle, in seconds
  */
-+ (SKAction *)waitForDuration:(NSTimeInterval)sec;
++ (SKAction *)waitForDuration:(NSTimeInterval)duration;
 
 /** Creates an action that idles for a randomized period of time
+ @param duration The duration of the idle, in seconds
  @param withRange The range of possible values for the duration
  */
-+ (SKAction *)waitForDuration:(NSTimeInterval)sec withRange:(NSTimeInterval)durationRange;
++ (SKAction *)waitForDuration:(NSTimeInterval)duration withRange:(NSTimeInterval)durationRange;
 
 /** Creates an action that removes the node from its parent */
 + (SKAction *)removeFromParent;
@@ -426,12 +428,12 @@
 + (SKAction *)runAction:(SKAction *)action onChildWithName:(NSString*)name;
 
 /** Creates an action that executes a block over a duration
- @param duration The duration of the animation
+ @param duration The duration of the animation, in seconds
  @param actionBlock The block to run. The block takes the following parameters:
  node The node on which the action is running.
  elapsedTime The amount of time that has passed in the animation.
  */
-+ (SKAction *)customActionWithDuration:(NSTimeInterval)seconds actionBlock:(void (^)(SKNode *node, CGFloat elapsedTime))block;
++ (SKAction *)customActionWithDuration:(NSTimeInterval)duration actionBlock:(void (^)(SKNode *node, CGFloat elapsedTime))block;
 
 /** Creates an action of the given name from an action file.
  @param name The name of the action
@@ -442,7 +444,7 @@
  @param name The name of the action
  @param duration The duration of the action
  */
-+ (nullable SKAction *)actionNamed:(NSString *)name duration:(NSTimeInterval)sec NS_AVAILABLE(10_11, 9_0);
++ (nullable SKAction *)actionNamed:(NSString *)name duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
 
 /** Creates an action of the given name from an action file.
  @param name The name of the action
@@ -455,7 +457,7 @@
  @param url The url of the file containing the action
  @param duration The duration of the action
  */
-+ (nullable SKAction *)actionNamed:(NSString *)name fromURL:(NSURL *)url duration:(NSTimeInterval)sec NS_AVAILABLE(10_11, 9_0);
++ (nullable SKAction *)actionNamed:(NSString *)name fromURL:(NSURL *)url duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
 
 @end
 
@@ -467,15 +469,15 @@
 + (SKAction *)changeMassTo:(float)v duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
 + (SKAction *)changeMassBy:(float)v duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
 
-+ (SKAction *)applyForce:(CGVector)force duration:(NSTimeInterval)sec NS_AVAILABLE(10_11, 9_0);
-+ (SKAction *)applyForce:(CGVector)force atPoint:(CGPoint)point duration:(NSTimeInterval)sec NS_AVAILABLE(10_11, 9_0);
++ (SKAction *)applyForce:(CGVector)force duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
++ (SKAction *)applyForce:(CGVector)force atPoint:(CGPoint)point duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
 
-+ (SKAction *)applyTorque:(CGFloat)torque duration:(NSTimeInterval)sec NS_AVAILABLE(10_11, 9_0);
++ (SKAction *)applyTorque:(CGFloat)torque duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
 
-+ (SKAction *)applyImpulse:(CGVector)impulse duration:(NSTimeInterval)sec NS_AVAILABLE(10_11, 9_0);
-+ (SKAction *)applyImpulse:(CGVector)impulse atPoint:(CGPoint)point duration:(NSTimeInterval)sec NS_AVAILABLE(10_11, 9_0);
++ (SKAction *)applyImpulse:(CGVector)impulse duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
++ (SKAction *)applyImpulse:(CGVector)impulse atPoint:(CGPoint)point duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
 
-+ (SKAction *)applyAngularImpulse:(CGFloat)impulse duration:(NSTimeInterval)sec NS_AVAILABLE(10_11, 9_0);
++ (SKAction *)applyAngularImpulse:(CGFloat)impulse duration:(NSTimeInterval)duration NS_AVAILABLE(10_11, 9_0);
 
 @end
 
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKLabelNode.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKLabelNode.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKLabelNode.h	2016-09-23 21:51:23.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKLabelNode.h	2017-05-19 23:27:09.000000000 -0400
@@ -29,7 +29,7 @@
 SK_EXPORT @interface SKLabelNode : SKNode
 
 + (instancetype)labelNodeWithText:(nullable NSString *)text;
-
++ (instancetype)labelNodeWithAttributedText:(nullable NSAttributedString *)attributedText;
 + (instancetype)labelNodeWithFontNamed:(nullable NSString *)fontName;
 
 - (instancetype)initWithFontNamed:(nullable NSString *)fontName;
@@ -37,10 +37,27 @@
 @property (nonatomic) SKLabelVerticalAlignmentMode verticalAlignmentMode;
 @property (nonatomic) SKLabelHorizontalAlignmentMode horizontalAlignmentMode;
 
+/**Determines the number of lines to draw. The default value is 1 (single line). A value of 0 means no limit.
+   If the height of the text reaches the # of lines the text will be truncated using the line break mode.
+ */
+@property(nonatomic) NSInteger numberOfLines NS_AVAILABLE(10.12, 10);
+
+/**Determines the line break mode for multiple lines.
+   Default is NSLineBreakByTruncatingTail
+ */
+@property(nonatomic) NSLineBreakMode lineBreakMode NS_AVAILABLE(10.12, 10);
+
+/**If nonzero, this is used when determining layout width for multiline labels.
+   Default is zero.
+ */
+@property(nonatomic) CGFloat preferredMaxLayoutWidth;
+
 @property (nonatomic, copy, nullable) NSString *fontName;
 @property (nonatomic, copy, nullable) NSString *text;
+@property (nonatomic, copy, nullable) NSAttributedString *attributedText;
 @property (nonatomic) CGFloat fontSize;
 
+
 /**
  Base color that the text is rendered with (if supported by the font)
  */
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKNode.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKNode.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKNode.h	2017-02-03 19:56:01.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKNode.h	2017-05-25 07:29:46.000000000 -0400
@@ -30,6 +30,12 @@
     SKBlendModeReplace      = 6     // Replaces the destination with the source (ignores alpha).
 } NS_ENUM_AVAILABLE(10_9, 7_0);
 
+typedef NS_ENUM(NSInteger, SKNodeFocusBehavior) {
+    SKNodeFocusBehaviorNone = 0,    // Not focusable and node has no impact on other nodes that have focus interaction enabled.  This is the default.
+    SKNodeFocusBehaviorOccluding,   // Not focusable, but will prevent other focusable nodes that this node visually obscures from being focusable.
+    SKNodeFocusBehaviorFocusable    // Focusable and will also prevent other focusable nodes that this node visually obscures from being focusable.
+} API_AVAILABLE(ios(11.0), tvos(11.0));
+
 /**
  A SpriteKit scene graph node. These are the branch nodes that together with geometric leaf nodes make up the directed acyclic graph that is the SpriteKit scene graph tree.
  
@@ -113,13 +119,17 @@
 @property (nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled;
 
 /**
+ Determines how this node participates in the focus system.  The default is SKNodeFocusBehaviorNone.
+ */
+@property (nonatomic) SKNodeFocusBehavior focusBehavior API_AVAILABLE(ios(11.0), tvos(11.0));
+
+/**
  The parent of the node.
  
  If this is nil the node has not been added to another group and is thus the root node of its own graph.
  */
 @property (nonatomic, readonly, nullable) SKNode *parent;
 
-
 /**
  The children of this node.
  
@@ -162,7 +172,6 @@
  */
 @property (nonatomic, copy, nullable) NSArray<SKConstraint*> *constraints;
 
-
 /**
  Optional dictionary of SKAttributeValues
  Attributes can be used with custom SKShaders.
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKRenderer.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKRenderer.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKRenderer.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKRenderer.h	2017-05-19 23:27:09.000000000 -0400
@@ -0,0 +1,98 @@
+//
+// SKRenderer.h
+// SpriteKit
+//
+// Copyright (c) 2016 Apple Inc. All rights reserved
+//
+
+#import <SpriteKit/SpriteKitBase.h>
+#import <SpriteKit/SKScene.h>
+
+/* SKRenderer is not available for WatchKit apps and the iOS simulator */
+#if SKVIEW_AVAILABLE && !TARGET_IPHONE_SIMULATOR
+
+#import <Metal/Metal.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ A renderer for displaying a SpriteKit scene in an existing Metal workflow.
+ */
+NS_AVAILABLE(10_13, 11_0)
+SK_EXPORT @interface SKRenderer : NSObject
+
+/**
+ Creates a renderer with the specified Metal device.
+ 
+ @param device A Metal device.
+ @return A new renderer object.
+ */
++ (nullable SKRenderer *)rendererWithDevice:(nullable id<MTLDevice>)device;
+
+/**
+ Render the scene content in the specified Metal command buffer.
+ 
+ @param viewport The pixel dimensions in which to render.
+ @param commandBuffer The Metal command buffer in which SpriteKit should schedule rendering commands.
+ @param renderPassDescriptor The Metal render pass descriptor describing the rendering target.
+ */
+- (void)renderWithViewport:(CGRect)viewport
+             commandBuffer:(id <MTLCommandBuffer>)commandBuffer
+      renderPassDescriptor:(MTLRenderPassDescriptor *)renderPassDescriptor;
+
+/**
+ Render the scene content using a specific Metal command encoder.
+ 
+ @param viewport The pixel dimensions in which to render.
+ @param renderCommandEncoder The Metal render command encoder that SpriteKit will use to encode rendering commands. This method will not call endEncoding.
+ @param renderPassDescriptor The Metal render pass descriptor describing the rendering target.
+ @param commandQueue The Metal command queue.
+ */
+- (void)renderWithViewport:(CGRect)viewport
+      renderCommandEncoder:(id <MTLRenderCommandEncoder>)renderCommandEncoder
+      renderPassDescriptor:(MTLRenderPassDescriptor *)renderPassDescriptor
+              commandQueue:(id <MTLCommandQueue>)commandQueue;
+
+/**
+ Update the scene at the specified system time.
+ 
+ @param currentTime The timestamp in seconds.
+ */
+- (void)updateAtTime:(NSTimeInterval)currentTime;
+
+/**
+ The currently presented scene, otherwise nil. If in a transition, the 'incoming' scene is returned.
+ */
+@property (nonatomic, nullable) SKScene *scene;
+
+/**
+ Ignores sibling and traversal order to sort the rendered contents of a scene into the most efficient batching possible.
+ This will require zPosition to be used in the scenes to properly guarantee elements are in front or behind each other.
+
+ This defaults to NO, meaning that sibling order overrides efficiency heuristics in the rendering of the scenes in the view.
+
+ Setting this to YES for a complex scene may substantially increase performance, but care must be taken as only zPosition
+ determines render order before the efficiency heuristics are used.
+ */
+@property (nonatomic) BOOL ignoresSiblingOrder;
+
+/**
+ A boolean that indicated whether non-visible nodes should be automatically culled when rendering.
+ */
+@property (nonatomic) BOOL shouldCullNonVisibleNodes;
+
+/**
+ Toggles display of performance stats when rendering. All default to false.
+ */
+@property (nonatomic) BOOL showsDrawCount;
+@property (nonatomic) BOOL showsNodeCount;
+@property (nonatomic) BOOL showsQuadCount;
+@property (nonatomic) BOOL showsPhysics;
+@property (nonatomic) BOOL showsFields;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif
+
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKShader.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKShader.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKShader.h	2016-09-23 21:51:23.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKShader.h	2017-05-19 23:27:09.000000000 -0400
@@ -41,7 +41,7 @@
                    encoding:NSUTF8StringEncoding
                       error:NULL]];
  
- Though error handling is encapsulated and the encoding flexible.
+ The encoding is assumed to be NSUTF8StringEncoding.
  */
 + (instancetype)shaderWithFileNamed:(NSString *)name;
 
@@ -91,4 +91,4 @@
 
 @end
 
-NS_ASSUME_NONNULL_END
\ No newline at end of file
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKTransformNode.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKTransformNode.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKTransformNode.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKTransformNode.h	2017-05-19 23:27:09.000000000 -0400
@@ -0,0 +1,42 @@
+//
+//  SKTransformNode.h
+//  SpriteKit
+//
+//
+
+#import <SpriteKit/SpriteKit.h>
+#import <simd/simd.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+#if !defined(__MAC_10_13) && !defined(__IPHONE_11_0) && !defined(__WATCHOS_4_0) && !defined(__TVOS_11_0)
+typedef struct {  vector_float4 vector; } simd_quatf;
+#endif
+
+/**
+ * An SKTransformNode can be applied a 3D rotation that will affect
+ * the visual aspect of its children.
+ * The physics and constraints of the children will behave as if none
+ * of them were transformed.
+ */
+NS_AVAILABLE(10_13, 11_0) SK_EXPORT @interface SKTransformNode : SKNode
+
+@property (nonatomic) CGFloat xRotation;
+@property (nonatomic) CGFloat yRotation;
+
+/**
+ * Rotation specific setter/getter
+ */
+
+- (void)setEulerAngles:(vector_float3)euler;
+- (vector_float3)eulerAngles;
+
+- (void)setRotationMatrix:(matrix_float3x3)rotationMatrix;
+- (matrix_float3x3)rotationMatrix;
+
+- (void)setQuaternion:(simd_quatf)quaternion;
+- (simd_quatf)quaternion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKVersion.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKVersion.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKVersion.h	2017-02-03 21:07:45.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SKVersion.h	2017-05-19 23:27:09.000000000 -0400
@@ -1 +1 @@
-#define SK_VERSION 18109003
+#define SK_VERSION 19009001
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SpriteKit.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SpriteKit.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SpriteKit.h	2016-09-23 21:51:23.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SpriteKit.framework/Headers/SpriteKit.h	2017-05-19 23:27:09.000000000 -0400
@@ -20,6 +20,7 @@
 #import <SpriteKit/SKLightNode.h>
 #import <SpriteKit/SKReferenceNode.h>
 #import <SpriteKit/SK3DNode.h>
+#import <SpriteKit/SKTransformNode.h>
 #import <SpriteKit/SKRegion.h>
 #import <SpriteKit/SKView.h>
 #import <SpriteKit/SKTransition.h>
@@ -27,6 +28,7 @@
 #import <SpriteKit/SKUniform.h>
 #import <SpriteKit/SKAttribute.h>
 #import <SpriteKit/SKWarpGeometry.h>
+#import <SpriteKit/SKRenderer.h>
 
 #import <SpriteKit/SKTileDefinition.h>
 #import <SpriteKit/SKTileSet.h>
Clone this wiki locally