git.iko.soy/metal-metaballs
on master help sign in
Replaced metaball array for graph.
a46f437vinivendra
PixelImage/MetaballDataSource.swift+9−1
@@ -2,5 +2,13 @@
2import Metal
2import Metal
3
3
4protocol MetaballDataSource {
4protocol MetaballDataSource {
5− var metaballs: [Metaball] { get }
5+ var metaballGraph: Graph<Metaball>! { get }
6}
6}
7+
8+extension MetaballDataSource {
9+ var metaballs: [Metaball]! {
10+ get {
11+ return metaballGraph.vertices
12+ }
13+ }
14+}
PixelImage/ViewController.swift+6−3
@@ -9,9 +9,7 @@ class ViewController: UIViewController, MetaballDataSource {
9 let width = 350
9 let width = 350
10 let height = 600
10 let height = 600
11
11
12− var metaballs = [CGPoint(x: 70, y: 70), CGPoint(x: 270, y: 470), CGPoint(x: 270, y: 70), CGPoint(x: 70, y: 470)].map {
12+ var metaballGraph: Graph<Metaball>!
13− Metaball(position: $0)
14− }
15 var previousLocation: CGPoint!
13 var previousLocation: CGPoint!
16
14
17 var selectedMetaball: Metaball?
15 var selectedMetaball: Metaball?
@@ -22,6 +20,11 @@ class ViewController: UIViewController, MetaballDataSource {
22 let recognizer = UIPanGestureRecognizer(target: self, action: "handlePan:")
20 let recognizer = UIPanGestureRecognizer(target: self, action: "handlePan:")
23 view.addGestureRecognizer(recognizer)
21 view.addGestureRecognizer(recognizer)
24
22
23+ let metaballs = [CGPoint(x: 70, y: 70), CGPoint(x: 270, y: 470), CGPoint(x: 270, y: 70), CGPoint(x: 70, y: 470)].map {
24+ Metaball(position: $0)
25+ }
26+ metaballGraph = Graph(vertices: metaballs)
27+
25 let border = 20
28 let border = 20
26 let metaballViewFrame = CGRect(x: border/2, y: border/2, width: width, height: height)
29 let metaballViewFrame = CGRect(x: border/2, y: border/2, width: width, height: height)
27 renderer = MetalMetaballRenderer(dataSource: self, frame: metaballViewFrame)
30 renderer = MetalMetaballRenderer(dataSource: self, frame: metaballViewFrame)