import Metal

public class SingleTextureMaskedQuadRenderable: SingleTextureQuadRenderable {
    public var maskTexture: MTLTexture?

    override public var configureAction: ConfigureAction {
        guard let maskTexture = maskTexture else { return super.configureAction }
        return { encoder in
            super.configureAction(encoder)
            encoder?.setFragmentTexture(maskTexture, index: 1)
        }
    }
}

public class ConfiguredSingleTextureMaskedQuadRender<T: QuadRenderConfiguration>: ConfiguredSingleTextureQuadRenderable<T> {
    public var maskTexture: MTLTexture?

    override public var configureAction: ConfigureAction {
        guard let maskTexture = maskTexture else { return super.configureAction }
        return { encoder in
            super.configureAction(encoder)
            encoder?.setFragmentTexture(maskTexture, index: 1)
        }
    }
}
