using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

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

    public static readonly Sampler2DPropertyName textureAlbedo = Sampler2DPropertyName.Create( "texture_albedo" );
    public static readonly Sampler2DPropertyName textureNormal = Sampler2DPropertyName.Create( "texture_normal" );
    public static readonly FloatPropertyName normalScale = FloatPropertyName.Create( "normal_scale" );
    public static readonly FloatPropertyName roughness = FloatPropertyName.Create( "roughness" );
    public static readonly FloatPropertyName irisRange = FloatPropertyName.Create( "irisRange" );
    public static readonly FloatPropertyName irisPower = FloatPropertyName.Create( "irisPower" );
    public static readonly FloatPropertyName irisScale = FloatPropertyName.Create( "irisScale" );

  }

  [Tool]
  public partial class CCEyeMaterial:CustomMaterial
  {
    
    
    public readonly CustomMaterialProperty<Texture2D> textureAlbedo;
    public readonly CustomMaterialProperty<Texture2D> textureNormal;
    public readonly CustomMaterialProperty<float> normalScale;
    public readonly CustomMaterialProperty<float> roughness;
    public readonly CustomMaterialProperty<float> irisRange;
    public readonly CustomMaterialProperty<float> irisPower;
    public readonly CustomMaterialProperty<float> irisScale;

    public CCEyeMaterial()
    {
      Shader = CCEyeShader.shader.Get();

      textureAlbedo = new CustomMaterialProperty<Texture2D>( this, CCEyeShader.textureAlbedo );
      textureNormal = new CustomMaterialProperty<Texture2D>( this, CCEyeShader.textureNormal );
      normalScale = new CustomMaterialProperty<float>( this, CCEyeShader.normalScale );
      roughness = new CustomMaterialProperty<float>( this, CCEyeShader.roughness );
      irisRange = new CustomMaterialProperty<float>( this, CCEyeShader.irisRange );
      irisPower = new CustomMaterialProperty<float>( this, CCEyeShader.irisPower );
      irisScale = new CustomMaterialProperty<float>( this, CCEyeShader.irisScale );
    }

  }

}