//
//  MaskedRepeatCircleCurveRenderable.swift
//  Adamantium
//
//  Created by Sunny Uppal on 12/17/24.
//

public class MaskedRepeatCircleCurveRenderable: ConfiguredQuadRenderable<MaskedRepeatCircleCurveRenderable.Config> {
    
    public struct Config: QuadRenderConfiguration {
        
        internal let canvas_size: ADVector2
        internal let line_width: ADFloat
        internal let x_space_scale: ADFloat
        internal let y_space_scale: ADFloat
        internal let x_offset: ADFloat
        internal let y_offset: ADFloat
        internal let pinch_amount: ADFloat
        internal let repeat_count: ADFloat
        internal let repeat_x_spacing: ADFloat
        internal let repeat_y_spacing: ADFloat
        internal let repeat_rotation: ADFloat
        
        public init(
            canvasSize: ADVector2 = .ones,
            lineWidth: ADFloat = 0.1,
            xSpaceScale: ADFloat = 1.0,
            ySpaceScale: ADFloat = 1.0,
            xOffset: ADFloat = 0.0,
            yOffset: ADFloat = 0.0,
            pinchAmount: ADFloat = 0.0,
            repeatCount: ADFloat = 0.0,
            repeatXSpacing: ADFloat = 0.0,
            repeatYSpacing: ADFloat = 0.0,
            repeatRotation: ADFloat = 0.0) {
        
            canvas_size = canvasSize
            line_width = lineWidth
            x_space_scale = xSpaceScale
            y_space_scale = ySpaceScale
            x_offset = xOffset
            y_offset = yOffset
            pinch_amount = pinchAmount
            repeat_count = repeatCount
            repeat_x_spacing = repeatXSpacing
            repeat_y_spacing = repeatYSpacing
            repeat_rotation = repeatRotation
        }
        
        public static var defaultConfiguration: Config {
            return Config()
        }
    }
    
    override public var configureAction: ConfigureAction {
        return { encoder in
            super.configureAction(encoder)
        }
    }
    
    override var fragmentShaderName: String {
        return "masking_echo_circle_curve_frag"
    }
}
