git.iko.soy/metal-metaballs
on master help sign in
Refactored pan gesture handler.
83725bcvinivendra
PixelImage/ViewController.swift+14−6
@@ -14,6 +14,8 @@ class ViewController: UIViewController, MetaballDataSource {
14 }
14 }
15 var previousLocation: CGPoint!
15 var previousLocation: CGPoint!
16
16
17+ var selectedMetaball: Metaball?
18+
17 override func viewDidLoad() {
19 override func viewDidLoad() {
18 super.viewDidLoad()
20 super.viewDidLoad()
19
21
@@ -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)
42
44
43− var selectedMetaball: UIView?
45+ if selectedMetaball == nil {
44−
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
48− break
49+ break
50+ }
49 }
51 }
50
52
53+ guard selectedMetaball != nil else { return }
54+
51 selectedMetaball?.middle = location
55 selectedMetaball?.middle = location
52
56
53 renderer.state = .Running
57 renderer.state = .Running
58+
59+ if recognizer.state == .Ended {
60+ selectedMetaball = nil
61+ }
54 }
62 }
55}
63}
56
64