ejeinc / MetalScope

Metal-backed 360° panorama view for iOS
MIT License
324 stars 72 forks source link

Simplify scene loaders #20

Closed junpluse closed 7 years ago

junpluse commented 7 years ago

Before:

extension ImageLoadable where Self: SceneLoadable {
    public func load(_ image: UIImage, format: MediaFormat) {
        ImageSceneLoader(target: self).load(image, format: format)
    }
}

public struct ImageSceneLoader<Target: SceneLoadable>: ImageLoadable {
    public let target: Target

    public init(target: Target) {
        self.target = target
    }

    public func load(_ image: UIImage, format: MediaFormat) {
        // create scene...

        target.scene = scene
    }
}

After:

extension ImageLoadable where Self: SceneLoadable {
    public func load(_ image: UIImage, format: MediaFormat) {
        scene = ImageSceneLoader().load(image, format: format)
    }
}

public struct ImageSceneLoader {
    public init() {}

    public func load(_ image: UIImage, format: MediaFormat) -> SCNScene {
        // create scene...

        return scene
    }
}