{
    "effectName": "Pinwheel",
    "properties": [
        {
            "id": "Pinwheel_Arms",
            "label": "#Arms",
            "type": "int",
            "controlType": "slider",
            "default": 3,
            "min": 1,
            "max": 20,
            "lockable": true,
            "description": "Number of colored arms radiating from the center of the pinwheel. Each arm uses the next color from the palette."
        },
        {
            "id": "Pinwheel_ArmSize",
            "label": "Size",
            "type": "int",
            "controlType": "slider",
            "default": 100,
            "min": 0,
            "max": 400,
            "valueCurve": true,
            "lockable": true,
            "description": "Length of each arm as a percentage of the maximum radius. Values above 100 extend the arms beyond the model edges."
        },
        {
            "id": "Pinwheel_Twist",
            "label": "Twist",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "min": -360,
            "max": 360,
            "valueCurve": true,
            "lockable": true,
            "description": "Degrees of curvature applied along each arm from center to tip. Positive values twist clockwise, negative values twist counter-clockwise, creating spiral arms."
        },
        {
            "id": "Pinwheel_Thickness",
            "label": "Thick",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "min": 0,
            "max": 100,
            "valueCurve": true,
            "lockable": true,
            "description": "Width of each arm as a percentage of the angular space between arms. At 100, adjacent arms touch with no gap between them."
        },
        {
            "id": "Pinwheel_Speed",
            "label": "Speed",
            "type": "int",
            "controlType": "slider",
            "default": 10,
            "min": 0,
            "max": 50,
            "valueCurve": true,
            "lockable": true,
            "description": "Rotation speed of the pinwheel. Higher values make the arms spin faster."
        },
        {
            "id": "Pinwheel_Offset",
            "label": "Offset",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "min": 0,
            "max": 360,
            "valueCurve": true,
            "lockable": true,
            "description": "Starting angular offset in degrees for the pinwheel arms. Rotates the initial position of the entire pinwheel without affecting the spin animation."
        },
        {
            "id": "Pinwheel_Style",
            "label": "Style",
            "type": "enum",
            "controlType": "choice",
            "options": [
                "Old Render Method",
                "New Render Method"
            ],
            "default": "New Render Method",
            "description": "Rendering algorithm to use. The new method uses ISPC-accelerated rendering for better performance and fills the entire buffer; the old method draws arms by stepping along radial lines. Existing sequences are migrated to preserve 'Old Render Method' so their look doesn't change."
        },
        {
            "id": "Pinwheel_Rotation",
            "label": "Rotation",
            "type": "bool",
            "controlType": "checkbox",
            "default": true,
            "checkboxLabel": "CCW",
            "lockable": true,
            "description": "Sets the rotation direction. When checked, the pinwheel spins counter-clockwise; when unchecked, it spins clockwise."
        },
        {
            "id": "Pinwheel_3D",
            "label": "3D",
            "type": "enum",
            "controlType": "choice",
            "options": [
                "None",
                "3D",
                "3D Inverted",
                "Sweep"
            ],
            "default": "None",
            "lockable": true,
            "description": "Applies a brightness or alpha gradient across each arm to simulate depth. 3D fades edges, 3D Inverted fades the center, and Sweep applies a directional gradient from one edge to the other."
        },
        {
            "id": "PinwheelXC",
            "label": "X-axis Center",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "min": -100,
            "max": 100,
            "valueCurve": true,
            "description": "Horizontal position of the pinwheel center as a percentage offset from the model center."
        },
        {
            "id": "PinwheelYC",
            "label": "Y-axis center",
            "type": "int",
            "controlType": "slider",
            "default": 0,
            "min": -100,
            "max": 100,
            "valueCurve": true,
            "description": "Vertical position of the pinwheel center as a percentage offset from the model center."
        }
    ],
    "groups": [
        {
            "type": "xyCenter",
            "xProperty": "PinwheelXC",
            "yProperty": "PinwheelYC"
        }
    ]
}
