using System.Collections.Generic;

namespace UnityEditor.ShaderGraph
{
    [GenerationAPI]
    internal class TargetFieldContext
    {
        public List<ConditionalField> conditionalFields { get; private set; }
        public PassDescriptor pass { get; private set; }
        public List<(BlockFieldDescriptor descriptor, bool isDefaultValue)> blocks { get; private set; }
        public List<BlockFieldDescriptor> connectedBlocks { get; private set; }
        public bool hasDotsProperties { get; private set; }

        // NOTE: active blocks (and connectedBlocks) do not include temporarily added default blocks
        public TargetFieldContext(PassDescriptor pass, List<(BlockFieldDescriptor descriptor, bool isDefaultValue)> activeBlocks, List<BlockFieldDescriptor> connectedBlocks, bool hasDotsProperties)
        {
            conditionalFields = new List<ConditionalField>();
            this.pass = pass;
            this.blocks = activeBlocks;
            this.connectedBlocks = connectedBlocks;
            this.hasDotsProperties = hasDotsProperties;
        }

        public void AddField(FieldDescriptor field, bool conditional = true)
        {
            conditionalFields.Add(new ConditionalField(field, conditional));
        }
    }
}