Files
swift-mirror/stdlib/public/SDK/SceneKit/SceneKit.swift
Dmitri Hrybenko 1e5dba8085 SceneKit overlay: add a generic overlay for -[SCNSceneSource entryWithIdentifier:withClass:]
This change depends on a coordinated SceneKit change which makes the
original method unavailable to avoid ambiguity.  The API also requires a
data file, so no tests yet.

rdar://20384835

Swift SVN r27319
2015-04-15 16:18:49 +00:00

56 lines
1.8 KiB
Swift

//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
@exported import SceneKit // Clang module
@availability(iOS, introduced=8.0)
@availability(OSX, introduced=10.8)
extension SCNGeometryElement {
public convenience init<IndexType : IntegerType>(
indices: [IndexType], primitiveType: SCNGeometryPrimitiveType
) {
let indexCount = indices.count
let primitiveCount: Int
switch primitiveType {
case .Triangles:
primitiveCount = indexCount / 3
case .TriangleStrip:
primitiveCount = indexCount - 2
case .Line:
primitiveCount = indexCount / 2
case .Point:
primitiveCount = indexCount
}
self.init(
data: NSData(bytes: indices, length: indexCount * sizeof(IndexType)),
primitiveType: primitiveType,
primitiveCount: primitiveCount,
bytesPerIndex: sizeof(IndexType))
}
}
@asmname("SCN_Swift_SCNSceneSource_entryWithIdentifier")
internal func SCN_Swift_SCNSceneSource_entryWithIdentifier(
self_: AnyObject,
uid: NSString,
entryClass: AnyClass) -> AnyObject?
@availability(iOS, introduced=8.0)
@availability(OSX, introduced=10.8)
extension SCNSceneSource {
public func entryWithIdentifier<T>(uid: String, withClass entryClass: T.Type) -> T? {
return SCN_Swift_SCNSceneSource_entryWithIdentifier(
self, uid, entryClass as! AnyClass) as! T?
}
}