using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class SliderShader
  { 
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "res://addons/rokojori_action_library/Runtime/UI/Shaders/Slider/Slider.gdshader"
    );    

    public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
    public static readonly BoolPropertyName blendLinear = BoolPropertyName.Create( "blendLinear" );
    public static readonly Vector2PropertyName size = Vector2PropertyName.Create( "size" );
    public static readonly FloatPropertyName sharpness = FloatPropertyName.Create( "sharpness" );
    public static readonly FloatPropertyName borderRadius = FloatPropertyName.Create( "borderRadius" );
    public static readonly FloatPropertyName offset = FloatPropertyName.Create( "offset" );
    public static readonly ColorPropertyName fillColor = ColorPropertyName.Create( "fillColor" );
    public static readonly Sampler2DPropertyName fill = Sampler2DPropertyName.Create( "fill" );
    public static readonly Vector4PropertyName fillUvTransform = Vector4PropertyName.Create( "fillUVTransform" );
    public static readonly Sampler2DPropertyName screenFillMultiply = Sampler2DPropertyName.Create( "screenFillMultiply" );
    public static readonly Vector4PropertyName screenfillMultiplyUvTransform = Vector4PropertyName.Create( "screenfillMultiplyUVTransform" );
    public static readonly Vector2PropertyName screenfillMultiplyUvMovement = Vector2PropertyName.Create( "screenfillMultiplyUVMovement" );
    public static readonly FloatPropertyName strokeSize = FloatPropertyName.Create( "strokeSize" );
    public static readonly ColorPropertyName strokeColor = ColorPropertyName.Create( "strokeColor" );
    public static readonly Sampler2DPropertyName stroke = Sampler2DPropertyName.Create( "stroke" );
    public static readonly Vector4PropertyName strokeUvTransform = Vector4PropertyName.Create( "strokeUVTransform" );
    public static readonly Sampler2DPropertyName screenStrokeMultiply = Sampler2DPropertyName.Create( "screenStrokeMultiply" );
    public static readonly Vector4PropertyName screenStrokeMultiplyUvTransform = Vector4PropertyName.Create( "screenStrokeMultiplyUVTransform" );
    public static readonly Vector2PropertyName screenStrokeMultiplyUvMovment = Vector2PropertyName.Create( "screenStrokeMultiplyUVMovment" );
    public static readonly Vector2PropertyName sliderSize = Vector2PropertyName.Create( "sliderSize" );
    public static readonly Vector2PropertyName sliderSizeMargins = Vector2PropertyName.Create( "sliderSizeMargins" );
    public static readonly FloatPropertyName sliderBorders = FloatPropertyName.Create( "sliderBorders" );
    public static readonly Vector2PropertyName sliderValue = Vector2PropertyName.Create( "sliderValue" );
    public static readonly ColorPropertyName sliderFillColor = ColorPropertyName.Create( "sliderFillColor" );
    public static readonly ColorPropertyName sliderStrokeColor = ColorPropertyName.Create( "sliderStrokeColor" );
    public static readonly FloatPropertyName sliderStrokeSize = FloatPropertyName.Create( "sliderStrokeSize" );

  }

  [Tool]
  public partial class SliderMaterial:CustomMaterial
  {
    
    
    public readonly CustomMaterialProperty<float> opacity;
    public readonly CustomMaterialProperty<bool> blendLinear;
    public readonly CustomMaterialProperty<Vector2> size;
    public readonly CustomMaterialProperty<float> sharpness;
    public readonly CustomMaterialProperty<float> borderRadius;
    public readonly CustomMaterialProperty<float> offset;
    public readonly CustomMaterialProperty<Color> fillColor;
    public readonly CustomMaterialProperty<Texture2D> fill;
    public readonly CustomMaterialProperty<Vector4> fillUvTransform;
    public readonly CustomMaterialProperty<Texture2D> screenFillMultiply;
    public readonly CustomMaterialProperty<Vector4> screenfillMultiplyUvTransform;
    public readonly CustomMaterialProperty<Vector2> screenfillMultiplyUvMovement;
    public readonly CustomMaterialProperty<float> strokeSize;
    public readonly CustomMaterialProperty<Color> strokeColor;
    public readonly CustomMaterialProperty<Texture2D> stroke;
    public readonly CustomMaterialProperty<Vector4> strokeUvTransform;
    public readonly CustomMaterialProperty<Texture2D> screenStrokeMultiply;
    public readonly CustomMaterialProperty<Vector4> screenStrokeMultiplyUvTransform;
    public readonly CustomMaterialProperty<Vector2> screenStrokeMultiplyUvMovment;
    public readonly CustomMaterialProperty<Vector2> sliderSize;
    public readonly CustomMaterialProperty<Vector2> sliderSizeMargins;
    public readonly CustomMaterialProperty<float> sliderBorders;
    public readonly CustomMaterialProperty<Vector2> sliderValue;
    public readonly CustomMaterialProperty<Color> sliderFillColor;
    public readonly CustomMaterialProperty<Color> sliderStrokeColor;
    public readonly CustomMaterialProperty<float> sliderStrokeSize;

    public SliderMaterial()
    {
      Shader = SliderShader.shader.Get();

      opacity = new CustomMaterialProperty<float>( this, SliderShader.opacity );
      blendLinear = new CustomMaterialProperty<bool>( this, SliderShader.blendLinear );
      size = new CustomMaterialProperty<Vector2>( this, SliderShader.size );
      sharpness = new CustomMaterialProperty<float>( this, SliderShader.sharpness );
      borderRadius = new CustomMaterialProperty<float>( this, SliderShader.borderRadius );
      offset = new CustomMaterialProperty<float>( this, SliderShader.offset );
      fillColor = new CustomMaterialProperty<Color>( this, SliderShader.fillColor );
      fill = new CustomMaterialProperty<Texture2D>( this, SliderShader.fill );
      fillUvTransform = new CustomMaterialProperty<Vector4>( this, SliderShader.fillUvTransform );
      screenFillMultiply = new CustomMaterialProperty<Texture2D>( this, SliderShader.screenFillMultiply );
      screenfillMultiplyUvTransform = new CustomMaterialProperty<Vector4>( this, SliderShader.screenfillMultiplyUvTransform );
      screenfillMultiplyUvMovement = new CustomMaterialProperty<Vector2>( this, SliderShader.screenfillMultiplyUvMovement );
      strokeSize = new CustomMaterialProperty<float>( this, SliderShader.strokeSize );
      strokeColor = new CustomMaterialProperty<Color>( this, SliderShader.strokeColor );
      stroke = new CustomMaterialProperty<Texture2D>( this, SliderShader.stroke );
      strokeUvTransform = new CustomMaterialProperty<Vector4>( this, SliderShader.strokeUvTransform );
      screenStrokeMultiply = new CustomMaterialProperty<Texture2D>( this, SliderShader.screenStrokeMultiply );
      screenStrokeMultiplyUvTransform = new CustomMaterialProperty<Vector4>( this, SliderShader.screenStrokeMultiplyUvTransform );
      screenStrokeMultiplyUvMovment = new CustomMaterialProperty<Vector2>( this, SliderShader.screenStrokeMultiplyUvMovment );
      sliderSize = new CustomMaterialProperty<Vector2>( this, SliderShader.sliderSize );
      sliderSizeMargins = new CustomMaterialProperty<Vector2>( this, SliderShader.sliderSizeMargins );
      sliderBorders = new CustomMaterialProperty<float>( this, SliderShader.sliderBorders );
      sliderValue = new CustomMaterialProperty<Vector2>( this, SliderShader.sliderValue );
      sliderFillColor = new CustomMaterialProperty<Color>( this, SliderShader.sliderFillColor );
      sliderStrokeColor = new CustomMaterialProperty<Color>( this, SliderShader.sliderStrokeColor );
      sliderStrokeSize = new CustomMaterialProperty<float>( this, SliderShader.sliderStrokeSize );
    }

  }

}