Skip to content

Commit 088735b

Browse files
committed
[SceneKit] Add apinotes for API renaming
Add in apinotes, and associated tests, that rename many APIs to be more consistent with the API design guidelines.
1 parent 223bd54 commit 088735b

File tree

2 files changed

+286
-1
lines changed

2 files changed

+286
-1
lines changed

apinotes/SceneKit.apinotes

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,197 @@ Globals:
110110
SwiftName: SCNView.Option.preferredDevice
111111
- Name: SCNPreferLowPowerDeviceKey
112112
SwiftName: SCNView.Option.preferLowPowerDevice
113+
114+
#
115+
# API Renaming
116+
#
117+
Protocols:
118+
- Name: SCNActionable
119+
Methods:
120+
- Selector: 'runAction:'
121+
MethodKind: Instance
122+
SwiftName: runAction(_:)
123+
- Selector: 'runAction:completionHandler:'
124+
MethodKind: Instance
125+
SwiftName: runAction(_:completionHandler:)
126+
- Selector: 'runAction:forKey:'
127+
MethodKind: Instance
128+
SwiftName: runAction(_:forKey:)
129+
- Selector: 'runAction:forKey:completionHandler:'
130+
MethodKind: Instance
131+
SwiftName: runAction(_:forKey:completionHandler:)
132+
- Name: SCNAnimatable
133+
Methods:
134+
- Selector: 'addAnimation:forKey:'
135+
MethodKind: Instance
136+
SwiftName: addAnimation(_:forKey:)
137+
- Selector: 'isAnimationForKeyPaused:'
138+
MethodKind: Instance
139+
SwiftName: isAnimationPaused(forKey:)
140+
- Selector: 'setSpeed:forAnimationKey:'
141+
MethodKind: Instance
142+
SwiftName: setAnimationSpeed(_:forKey:)
143+
- Name: SCNSceneRenderer
144+
Methods:
145+
- Selector: 'hitTest:options:'
146+
MethodKind: Instance
147+
SwiftName: hitTest(_:options:)
148+
- Selector: 'isNodeInsideFrustum:withPointOfView:'
149+
MethodKind: Instance
150+
SwiftName: isNode(_:insideFrustumOf:)
151+
- Selector: 'nodesInsideFrustumWithPointOfView:'
152+
MethodKind: Instance
153+
SwiftName: nodesInsideFrustum(of:)
154+
- Selector: 'prepareObjects:withCompletionHandler:'
155+
MethodKind: Instance
156+
SwiftName: prepare(_:completionHandler:)
157+
- Name: SCNBufferStream
158+
Methods:
159+
- Selector: 'writeBytes:length:'
160+
MethodKind: Instance
161+
SwiftName: writeBytes(_:count:)
162+
- Name: SCNShadable
163+
Methods:
164+
- Selector: 'handleBindingOfSymbol:usingBlock:'
165+
MethodKind: Instance
166+
SwiftName: handleBinding(ofSymbol:handler:)
167+
- Selector: 'handleUnbindingOfSymbol:usingBlock:'
168+
MethodKind: Instance
169+
SwiftName: handleUnbinding(ofSymbol:handler:)
170+
171+
Classes:
172+
- Name: SCNAction
173+
Methods:
174+
- Selector: 'rotateToX:y:z:duration:shortestUnitArc:'
175+
MethodKind: Class
176+
SwiftName: rotateTo(x:y:z:duration:usesShortestUnitArc:)
177+
- Selector: 'rotateByAngle:aroundAxis:duration:'
178+
MethodKind: Class
179+
SwiftName: rotate(by:around:duration:)
180+
- Selector: 'fadeInWithDuration:'
181+
MethodKind: Class
182+
SwiftName: fadeIn(duration:)
183+
- Selector: 'fadeOutWithDuration:'
184+
MethodKind: Class
185+
SwiftName: fadeOut(duration:)
186+
- Selector: 'waitForDuration:'
187+
MethodKind: Class
188+
SwiftName: wait(duration:)
189+
- Selector: 'waitForDuration:withRange:'
190+
MethodKind: Class
191+
SwiftName: wait(duration:withRange:)
192+
- Selector: 'customActionWithDuration:actionBlock:'
193+
MethodKind: Class
194+
SwiftName: customAction(duration:action:)
195+
- Selector: 'playAudioSource:waitForCompletion:'
196+
MethodKind: Class
197+
SwiftName: playAudio(_:waitForCompletion:)
198+
- Name: SCNLookAtConstraint
199+
Properties:
200+
- Name: gimbalLockEnabled
201+
SwiftName: isGimbalLockEnabled
202+
- Name: SCNIKConstraint
203+
Methods:
204+
- Selector: 'inverseKinematicsConstraintWithChainRootNode:'
205+
MethodKind: Class
206+
SwiftName: inverseKinematicsConstraint(chainRootNode:)
207+
- Name: SCNGeometry
208+
Methods:
209+
- Selector: 'materialWithName:'
210+
MethodKind: Instance
211+
SwiftName: material(named:)
212+
- Selector: 'geometrySourcesForSemantic:'
213+
MethodKind: Instance
214+
SwiftName: getGeometrySources(for:) # FIXME: is this the best name?
215+
- Name: SCNGeometrySource
216+
Methods:
217+
- Selector: 'geometrySourceWithData:semantic:vectorCount:floatComponents:componentsPerVector:bytesPerComponent:dataOffset:dataStride:'
218+
MethodKind: Class
219+
SwiftName: 'init(data:semantic:vectorCount:usesFloatComponents:componentsPerVector:bytesPerComponent:dataOffset:dataStride:)'
220+
Properties:
221+
- Name: floatComponents
222+
SwiftName: usesFloatComponents
223+
- Name: SCNMaterial
224+
Properties:
225+
- Name: lightingModelName
226+
SwiftName: lightingModel
227+
- Name: SCNMorpher
228+
Methods:
229+
- Selector: 'weightForTargetAtIndex:'
230+
MethodKind: Instance
231+
SwiftName: weight(forTargetAt:)
232+
- Name: SCNNode
233+
Methods:
234+
- Selector: 'hitTestWithSegmentFromPoint:toPoint:options:'
235+
MethodKind: Instance
236+
SwiftName: hitTestWithSegment(from:to:options:)
237+
- Name: SCNParticleSystem
238+
Properties:
239+
- Name: affectedByGravity
240+
SwiftName: isAffectedByGravity
241+
- Name: affectedByPhysicsFields
242+
SwiftName: isAffectedByPhysicsFields
243+
Methods:
244+
- Selector: 'handleEvent:forProperties:withBlock:'
245+
MethodKind: Instance
246+
SwiftName: handle(_:forProperties:handler:)
247+
- Selector: 'addModifierForProperties:atStage:withBlock:'
248+
MethodKind: Instance
249+
SwiftName: addModifier(forProperties:at:modifier:)
250+
- Selector: 'removeModifiersOfStage:'
251+
MethodKind: Instance
252+
SwiftName: removeModifiers(at:)
253+
- Name: SCNScene
254+
Methods:
255+
- Selector: 'addParticleSystem:withTransform:'
256+
MethodKind: Instance
257+
SwiftName: addParticleSystem(_:transform:)
258+
- Name: SCNPhysicsBody
259+
Methods:
260+
- Selector: 'applyForce:impulse:'
261+
MethodKind: Instance
262+
SwiftName: applyForce(_:asImpulse:)
263+
- Selector: 'applyForce:atPosition:impulse:'
264+
MethodKind: Instance
265+
SwiftName: applyForce(_:at:asImpulse:)
266+
- Selector: 'applyTorque:impulse:'
267+
MethodKind: Instance
268+
SwiftName: applyTorque(_:asImpulse:)
269+
- Name: SCNPhysicsField
270+
Methods:
271+
- Selector: 'noiseFieldWithSmoothness:animationSpeed:'
272+
MethodKind: Class
273+
SwiftName: noiseField(smoothness:animationSpeed:)
274+
- Selector: 'turbulenceFieldWithSmoothness:animationSpeed:'
275+
MethodKind: Class
276+
SwiftName: turbulenceField(smoothness:animationSpeed:)
277+
- Name: SCNPhysicsWorld
278+
Methods:
279+
- Selector: 'addBehavior:'
280+
MethodKind: Instance
281+
SwiftName: addBehavior(_:)
282+
- Selector: 'removeBehavior:'
283+
MethodKind: Instance
284+
SwiftName: removeBehavior(_:)
285+
- Selector: 'rayTestWithSegmentFromPoint:toPoint:options:'
286+
MethodKind: Instance
287+
SwiftName: rayTestWithSegment(from:to:options:)
288+
- Selector: 'contactTestBetweenBody:andBody:options:'
289+
MethodKind: Instance
290+
SwiftName: contactTestBetween(_:_:options:)
291+
- Selector: 'contactTestWithBody:options:'
292+
MethodKind: Instance
293+
SwiftName: contactTest(with:options:)
294+
- Selector: 'convexSweepTestWithShape:fromTransform:toTransform:options:'
295+
MethodKind: Instance
296+
SwiftName: convexSweepTest(with:from:to:options:)
297+
- Name: SCNSceneSource
298+
Methods:
299+
- Selector: 'identifiersOfEntriesWithClass:'
300+
MethodKind: Instance
301+
SwiftName: identifiersOfEntries(withClass:)
302+
- Name: SCNProgram
303+
Methods:
304+
- Selector: 'handleBindingOfBufferNamed:frequency:usingBlock:'
305+
MethodKind: Instance
306+
SwiftName: handleBinding(ofBufferNamed:frequency:handler:)

test/ClangModules/SceneKit_test.swift

Lines changed: 92 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Foundation
99
// Test out some explicit renames of typedefs and globals, which are now new
1010
// wrapper types with nestest values.
1111
@available(macOS 10.11, *)
12-
func testRenames() {
12+
func testNestingRenames() {
1313
let _ = SCNGeometrySourceSemantic
1414
// expected-error@-1{{'SCNGeometrySourceSemantic' has been renamed to 'SCNGeometrySource.Semantic'}}
1515
let _ = SCNLightType
@@ -98,6 +98,7 @@ func testRenames() {
9898
// expected-error@-1{{'SCNPreferLowPowerDeviceKey' has been renamed to 'SCNView.Option.preferLowPowerDevice'}}
9999
}
100100

101+
// All OK
101102
@available(macOS 10.11, *)
102103
func useRenamedValues() {
103104
let _ = SCNGeometrySource.Semantic.self
@@ -144,3 +145,93 @@ func useRenamedValues() {
144145
let _ = SCNView.Option.preferredDevice
145146
let _ = SCNView.Option.preferLowPowerDevice
146147
}
148+
149+
// All OK
150+
@available(macOS 10.12, *)
151+
func useRenamedAPIs(actionable: SCNActionable, action: SCNAction, data: Data,
152+
timeInterval: TimeInterval, vec3: SCNVector3, node: SCNNode,
153+
audioSource: SCNAudioSource, animatable: SCNAnimatable,
154+
lookAtConstraint: SCNLookAtConstraint, mat4: SCNMatrix4,
155+
particleSystem: SCNParticleSystem, event: SCNParticleEvent,
156+
stage: SCNParticleModifierStage, animation: CAAnimation,
157+
bindingBlock: SCNBindingBlock, material: SCNMaterial,
158+
bufferBindingBlock: SCNBufferBindingBlock, vec4: SCNVector4,
159+
eventBlock: SCNParticleEventBlock, morpher: SCNMorpher,
160+
modifierBlock: SCNParticleModifierBlock, scene: SCNScene,
161+
physicsBehavior: SCNPhysicsBehavior, geometry: SCNGeometry,
162+
physicsBody: SCNPhysicsBody, sceneSource: SCNSceneSource,
163+
physicsWorld: SCNPhysicsWorld, point: CGPoint,
164+
physicsShape: SCNPhysicsShape, shadable: SCNShadable,
165+
voidPtr: UnsafeMutablePointer<Void>, program: SCNProgram,
166+
renderer: SCNSceneRenderer, bufferStream: SCNBufferStream,
167+
bufferFrequency: SCNBufferFrequency,
168+
semantic: SCNGeometrySource.Semantic,
169+
prop: SCNParticleSystem.ParticleProperty) {
170+
actionable.runAction(action)
171+
actionable.runAction(action, completionHandler: {})
172+
actionable.runAction(action, forKey: "key", completionHandler: {})
173+
174+
let _ = SCNAction.rotateTo(x: 1.0, y: 2.0, z: 3.0, duration: timeInterval,
175+
usesShortestUnitArc: false)
176+
let _ = SCNAction.rotate(by: 1.0, around: vec3, duration: timeInterval)
177+
let _ = SCNAction.fadeIn(duration: timeInterval)
178+
let _ = SCNAction.fadeOut(duration: timeInterval)
179+
let _ = SCNAction.wait(duration: timeInterval)
180+
let _ = SCNAction.wait(duration: timeInterval, withRange: timeInterval)
181+
let _ = SCNAction.customAction(duration: timeInterval,
182+
action: { (a, b) in () })
183+
let _ = SCNAction.playAudio(audioSource, waitForCompletion: false)
184+
185+
animatable.addAnimation(animation, forKey: "key")
186+
let _ = animatable.isAnimationPaused(forKey: "key")
187+
let _ = animatable.setAnimationSpeed(1.0, forKey: "key")
188+
189+
let _ = lookAtConstraint.isGimbalLockEnabled
190+
let _ = SCNIKConstraint.inverseKinematicsConstraint(chainRootNode: node)
191+
192+
let _ = geometry.material(named: "mat")
193+
let _ = geometry.getGeometrySources(for: semantic)
194+
let geoSrc = SCNGeometrySource(data: data, semantic: semantic, vectorCount: 2,
195+
usesFloatComponents: false,
196+
componentsPerVector: 3,
197+
bytesPerComponent: 11, dataOffset: -2,
198+
dataStride: -3)
199+
let _ = geoSrc.usesFloatComponents
200+
201+
let _ = material.lightingModel
202+
let _ = morpher.weight(forTargetAt: 1)
203+
let _ = node.hitTestWithSegment(from: vec3, to: vec3, options: [:])
204+
205+
let _ = particleSystem.isAffectedByGravity
206+
let _ = particleSystem.isAffectedByPhysicsFields
207+
particleSystem.handle(event, forProperties: [prop], handler: eventBlock)
208+
particleSystem.addModifier(forProperties: [prop], at: stage,
209+
modifier: modifierBlock)
210+
particleSystem.removeModifiers(at: stage)
211+
scene.addParticleSystem(particleSystem, transform: mat4)
212+
213+
physicsBody.applyForce(vec3, asImpulse: false)
214+
physicsBody.applyForce(vec3, at: vec3, asImpulse: false)
215+
physicsBody.applyTorque(vec4, asImpulse: false)
216+
let _ = SCNPhysicsField.noiseField(smoothness: 1.0, animationSpeed: 1.0)
217+
let _ = SCNPhysicsField.turbulenceField(smoothness: 1.0, animationSpeed: 1.0)
218+
physicsWorld.addBehavior(physicsBehavior)
219+
physicsWorld.removeBehavior(physicsBehavior)
220+
let _ = physicsWorld.rayTestWithSegment(from: vec3, to: vec3, options: [:])
221+
let _ = physicsWorld.contactTestBetween(physicsBody, physicsBody,
222+
options: [:])
223+
let _ = physicsWorld.contactTest(with: physicsBody, options: [:])
224+
let _ = physicsWorld.convexSweepTest(with: physicsShape, from: mat4, to: mat4)
225+
226+
let _ = renderer.isNode(node, insideFrustumOf: node)
227+
let _ = renderer.nodesInsideFrustum(of: node)
228+
renderer.prepare([], completionHandler: { b in ()})
229+
let _ = sceneSource.identifiersOfEntries(withClass: SCNNode.self)
230+
231+
bufferStream.writeBytes(voidPtr, count: 2)
232+
233+
shadable.handleBinding!(ofSymbol: "sym", handler: bindingBlock)
234+
shadable.handleUnbinding!(ofSymbol: "sym", handler: bindingBlock)
235+
program.handleBinding(ofBufferNamed: "str", frequency: bufferFrequency,
236+
handler: bufferBindingBlock)
237+
}

0 commit comments

Comments
 (0)