git.iko.soy/metal-metaballs
on master help sign in
Refactored dynamic rendering to be class dependent.
cf62ebavinivendra
PixelImage/ImageMetaballRenderer.swift+6
@@ -2,8 +2,14 @@
2import UIKit
2import UIKit
3
3
4class ImageMetaballRenderer: MetaballRenderer {
4class ImageMetaballRenderer: MetaballRenderer {
5+
5 typealias TargetView = UIImageView
6 typealias TargetView = UIImageView
6
7
8+ var supportsDynamicRendering: Bool { get {
9+ return false
10+ }
11+ }
12+
7 let targetView = TargetView()
13 let targetView = TargetView()
8
14
9 let dataSource: MetaballDataSource
15 let dataSource: MetaballDataSource
PixelImage/MetaballRenderer.swift+1
@@ -9,6 +9,7 @@ protocol MetaballRenderer {
9 typealias TargetView: UIView
9 typealias TargetView: UIView
10
10
11 var targetView: TargetView { get }
11 var targetView: TargetView { get }
12+ var supportsDynamicRendering: Bool { get }
12
13
13 init(dataSource: MetaballDataSource)
14 init(dataSource: MetaballDataSource)
14
15
PixelImage/MetalMetaballRenderer.swift+5
@@ -15,6 +15,11 @@ class MetalMetaballRenderer: MetaballRenderer {
15
15
16 typealias TargetView = UIImageView
16 typealias TargetView = UIImageView
17
17
18+ var supportsDynamicRendering: Bool { get {
19+ return true
20+ }
21+ }
22+
18 let targetView = TargetView()
23 let targetView = TargetView()
19 var previousFrame = CGRect.zero
24 var previousFrame = CGRect.zero
20
25
PixelImage/ViewController.swift+1−2
@@ -3,7 +3,6 @@ import UIKit
3
3
4class ViewController: UIViewController, MetaballDataSource {
4class ViewController: UIViewController, MetaballDataSource {
5
5
6− let dynamicRendering = true
7 typealias Renderer = MetalMetaballRenderer // ImageMetaballRenderer // MetalMetaballRenderer
6 typealias Renderer = MetalMetaballRenderer // ImageMetaballRenderer // MetalMetaballRenderer
8 typealias TargetView = Renderer.TargetView
7 typealias TargetView = Renderer.TargetView
9
8
@@ -59,7 +58,7 @@ class ViewController: UIViewController, MetaballDataSource {
59
58
60 selectedMetaball?.middle = location
59 selectedMetaball?.middle = location
61
60
62− if recognizer.state == .Changed && dynamicRendering {
61+ if recognizer.state == .Changed && renderer.supportsDynamicRendering {
63 renderer.updateTargetView()
62 renderer.updateTargetView()
64 }
63 }
65 if recognizer.state == .Ended {
64 if recognizer.state == .Ended {