namespace UnityEngine.Rendering.Universal
{
    public sealed partial class Light2D
    {
        [SerializeField] int m_ShapeLightParametricSides = 5;
        [SerializeField] float m_ShapeLightParametricAngleOffset = 0.0f;
        [SerializeField] float m_ShapeLightParametricRadius = 1.0f;
        [SerializeField] float m_ShapeLightFalloffSize = 0.50f;
        [SerializeField] Vector2 m_ShapeLightFalloffOffset = Vector2.zero;
        [SerializeField] Vector3[] m_ShapePath = null;
        float m_PreviousShapeLightFalloffSize = -1;
        int m_PreviousShapeLightParametricSides = -1;
        float m_PreviousShapeLightParametricAngleOffset = -1;
        float m_PreviousShapeLightParametricRadius = -1;
        int m_PreviousShapePathHash = -1;
        LightType m_PreviousLightType = LightType.Parametric;
        /// 
        /// The number of sides in the parametric shape.
        /// 
        public int shapeLightParametricSides => m_ShapeLightParametricSides;
        /// 
        /// The offset of the shape from the light's origin.
        /// 
        public float shapeLightParametricAngleOffset => m_ShapeLightParametricAngleOffset;
        /// 
        /// The size of the shape.
        /// 
        public float shapeLightParametricRadius
        {
            get { return m_ShapeLightParametricRadius; }
            internal set { m_ShapeLightParametricRadius = value; }
        }
        /// 
        /// The size of the fall-off area. Bigger value corresponds to bigger fall off size.
        /// 
        public float shapeLightFalloffSize
        {
            get { return m_ShapeLightFalloffSize; }
            set { m_ShapeLightFalloffSize = Mathf.Max(0, value); }
        }
        /// 
        /// Returns the path that represents the shape light. Values are in object space.
        /// 
        public Vector3[] shapePath
        {
            get { return m_ShapePath; }
            internal set { m_ShapePath = value; }
        }
        /// 
        /// Set the shape that represents the freeform light. Values are in object space.
        /// 
        /// Array of Vector3 defining the shape.
        public void SetShapePath(Vector3[] path)
        {
            m_ShapePath = path;
        }
    }
}