Swift倉庫・SKSceneでiOSタップとOSXマウス統一

##【iOSタップ・OSXクリック統一】
iOS側とOSX側のSKSceneにオーバーライドを行い、タップとマウスクリックの出力を拡張ファンクションに飛ぶようにする事で、様々なSKSceneでiOSとOSX対応のものが作れます。

```swift:CScene.swift
import SpriteKit

#if os(iOS)
	import UIKit
#endif

class CScene: SKScene {
	
	#if os(iOS)	// iOS SKSceneオーバーライド

	// [ iOS ] : Touches Began
	override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
		for touch: AnyObject in touches {
			let location = touch.locationInNode(self)
			let previousLocation = touch.previousLocationInNode(self)
			ctouchesBegan(location, previousLocation: previousLocation)
		}
	}
	
	// [ iOS ] : Touches Moved
	override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
		for touch: AnyObject in touches {
			let location = touch.locationInNode(self)
			let previousLocation = touch.previousLocationInNode(self)
			ctouchesMoved(location, previousLocation: previousLocation)
		}
	}
	
	// [ iOS ] : Touches Ended
	override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
		for touch: AnyObject in touches {
			let location = touch.locationInNode(self)
			let previousLocation = touch.previousLocationInNode(self)
			ctouchesEnded(location, previousLocation: previousLocation)
		}
	}
	
	// [ iOS ] : Touches Cancelled
	override func touchesCancelled(touches: NSSet, withEvent event: UIEvent) {
		for touch: AnyObject in touches {
			let location = touch.locationInNode(self)
			let previousLocation = touch.previousLocationInNode(self)
			ctouchesCancelled(location, previousLocation: previousLocation)
		}
	}

	#else	// OSX SKSceneオーバーライド

	// [ OSX ] : Mouse Down
	override func mouseDown(theEvent: NSEvent) {
		let location = theEvent.locationInNode(self)
		let previousLocation = location
		ctouchesBegan(location, previousLocation: previousLocation)
	}
	
	// [ OSX ] : Mouse Moved
	override func mouseMoved(theEvent: NSEvent) {
		let location = theEvent.locationInNode(self)
		let previousLocation = location
		ctouchesMoved(location, previousLocation: previousLocation)
	}
	
	// [ OSX ] : Mouse Dragged
	override func mouseDragged(theEvent: NSEvent) {
		let location = theEvent.locationInNode(self)
		let previousLocation = location
		ctouchesMoved(location, previousLocation: previousLocation)
	}
	
	// [ OSX ] : Mouse Up
	override func mouseUp(theEvent: NSEvent) {
		let location = theEvent.locationInNode(self)
		let previousLocation = location
		ctouchesEnded(location, previousLocation: previousLocation)
	}
	
	#endif
	
	// SKScene統一出力先
	
	// [ OSX/iOS ] : Touches Began
	func ctouchesBegan(touchLocation: CGPoint, previousLocation: CGPoint) {
	}
	
	// [ OSX/iOS ] : Touches Moved
	func ctouchesMoved(touchLocation: CGPoint, previousLocation: CGPoint) {
		
	}
	
	// [ OSX/iOS ] : Touches Ended
	func ctouchesEnded(touchLocation: CGPoint, previousLocation: CGPoint) {
		
	}
	
	// [ OSX/iOS ] : Touches Cancelled
	func ctouchesCancelled(touchLocation: CGPoint, previousLocation: CGPoint) {
		
	}
	
}
```

そして、下記のようにひとつのCScene（SKScene）でiOSとOSXからの入力を受ける事が出来ます。

```swift:使用例：CSampleScene.swift
import SpriteKit

class CSampleScene: CScene {

	var centerPoint: CGPoint = CGPointMake(0,0)
	
	var theSprite = SKSpriteNode()

	override func didMoveToView(view: SKView) {
		/* Setup your scene here */

		self.centerPoint = CGPointMake(CGRectGetMidX(frame), CGRectGetMidY(frame))

		let myLabel = SKLabelNode(fontNamed:"Chalkduster")
		myLabel.text = "Hello, World!";
		myLabel.fontSize = 24;
		myLabel.position = self.centerPoint
		addChild(myLabel)
		
		theSprite = SKSpriteNode(imageNamed:"Spaceship")
		theSprite.position = self.centerPoint
		theSprite.zPosition = 10
		addChild(theSprite)

	}
	
	override func ctouchesBegan(touchLocation: CGPoint, previousLocation: CGPoint) {
		println("CTouches Began!!")
	}

	override func ctouchesMoved(touchLocation: CGPoint, previousLocation: CGPoint) {
		println("CTouches Moved!!")
	}

	override func ctouchesEnded(touchLocation: CGPoint, previousLocation: CGPoint) {
		println("CTouches Ended!!")
	}

	override func ctouchesCancelled(touchLocation: CGPoint, previousLocation: CGPoint) {
		println("CTouches Cancelled!!")
	}
	
	override func update(currentTime: CFTimeInterval) {
		/* Called before each frame is rendered */
	}

}

```