using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class DilationDrawerShader
  { 
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Baking/DilationDrawer.gdshader"
    );    

    public static readonly Sampler2DPropertyName textureAlbedo = Sampler2DPropertyName.Create( "texture_albedo" );
    public static readonly Vector2PropertyName resolution = Vector2PropertyName.Create( "resolution" );
    public static readonly IntPropertyName maxRadius = IntPropertyName.Create( "maxRadius" );
    public static readonly IntPropertyName alphaTreshold = IntPropertyName.Create( "alphaTreshold" );
    public static readonly IntPropertyName genericAlphaOffset = IntPropertyName.Create( "genericAlphaOffset" );
    public static readonly IntPropertyName assignedColorAlphaMinimum = IntPropertyName.Create( "assignedColorAlphaMinimum" );
    public static readonly FloatPropertyName amount = FloatPropertyName.Create( "amount" );

  }

  [Tool]
  public partial class DilationDrawerMaterial:CustomMaterial
  {
    public static readonly CachedResource<DilationDrawerMaterial> DepthMap = CustomMaterial.Cached<DilationDrawerMaterial>(
      "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Baking/DepthMap.material"
    );
    
    public readonly CustomMaterialProperty<Texture2D> textureAlbedo;
    public readonly CustomMaterialProperty<Vector2> resolution;
    public readonly CustomMaterialProperty<int> maxRadius;
    public readonly CustomMaterialProperty<int> alphaTreshold;
    public readonly CustomMaterialProperty<int> genericAlphaOffset;
    public readonly CustomMaterialProperty<int> assignedColorAlphaMinimum;
    public readonly CustomMaterialProperty<float> amount;

    public DilationDrawerMaterial()
    {
      Shader = DilationDrawerShader.shader.Get();

      textureAlbedo = new CustomMaterialProperty<Texture2D>( this, DilationDrawerShader.textureAlbedo );
      resolution = new CustomMaterialProperty<Vector2>( this, DilationDrawerShader.resolution );
      maxRadius = new CustomMaterialProperty<int>( this, DilationDrawerShader.maxRadius );
      alphaTreshold = new CustomMaterialProperty<int>( this, DilationDrawerShader.alphaTreshold );
      genericAlphaOffset = new CustomMaterialProperty<int>( this, DilationDrawerShader.genericAlphaOffset );
      assignedColorAlphaMinimum = new CustomMaterialProperty<int>( this, DilationDrawerShader.assignedColorAlphaMinimum );
      amount = new CustomMaterialProperty<float>( this, DilationDrawerShader.amount );
    }

  }

}