@@ -14,6 +14,8 @@ class ViewController: UIViewController, MetaballDataSource {
15 var previousLocation: CGPoint!
15 var previousLocation: CGPoint!
17+ var selectedMetaball: Metaball?
17 override func viewDidLoad() {
19 override func viewDidLoad() {
18 super.viewDidLoad()
20 super.viewDidLoad()
@@ -40,17 +42,23 @@ class ViewController: UIViewController, MetaballDataSource {
40 func handlePan(recognizer: UIPanGestureRecognizer) {
42 func handlePan(recognizer: UIPanGestureRecognizer) {
41 let location = recognizer.locationInView(metaballView)
43 let location = recognizer.locationInView(metaballView)
43− var selectedMetaball: UIView?
45+ if selectedMetaball == nil {
45− for metaball in metaballs where
46+ for metaball in metaballs where
46− abs(metaball.midX - location.x) < 50 && abs(metaball.midY - location.y) < 50 {
47+ abs(metaball.midX - location.x) < 50 && abs(metaball.midY - location.y) < 50 {
47− selectedMetaball = metaball
48+ selectedMetaball = metaball
53+ guard selectedMetaball != nil else { return }
51 selectedMetaball?.middle = location
55 selectedMetaball?.middle = location
53 renderer.state = .Running
57 renderer.state = .Running
59+ if recognizer.state == .Ended {
60+ selectedMetaball = nil