
using Godot;
using System.Collections.Generic;

namespace Rokojori
{  
  [Tool]
  [GlobalClass]
  public partial class GhostBloomSettings:Resource
  {    
    [Export]
    public string info;

    [ExportGroup( "Main")]
    [Export( PropertyHint.Range, "0,1") ]
    public float intensity = 0.1f;

    [Export( PropertyHint.Range, "1,16") ]
    public int numInstances = 1;

    [Export( PropertyHint.Range, "0,1") ]
    public float blendMode = 0.5f;

    [ExportGroup( "UV Ellipse", "ellipse")]
    [Export( PropertyHint.Range, "-2,2") ]
    public float ellipseAmount = 0.5f;

    [Export( PropertyHint.Range, "0,10") ]
    public Vector2 ellipseSize = Vector2.One * 0.5f;

    [Export( PropertyHint.Range, "0,10") ]
    public float ellipseSizeXY = 1f;

    [Export( PropertyHint.Range, "-10,10") ]
    public float ellipseMinDistance = 0.5f;

    [Export( PropertyHint.Range, "0,1") ]
    public float ellipseKeepRatio = 0.5f;

    [Export( PropertyHint.Range, "0,100") ]
    public float radialFadingWrapping;


    [ExportGroup( "UV Transform")]

    [Export( PropertyHint.Range, "-360,360") ]
    public float rotation = 0;

    [Export]
    public Vector2 offset = new Vector2( 0f, 0f );

    [Export]
    public Vector2 scale = Vector2.One;
    
    [Export]
    public float scaleXY = 1f;

    [Export]
    public bool mirrorX = false;

    [Export]
    public bool mirrorY = false;

    [Export]
    public Vector2 pivot = new Vector2( 0.5f, 0.5f );

    [ExportGroup( "Distortion")]    
    [Export( PropertyHint.Range, "0,1") ]
    public float distortionAmount = 0.5f;

    [Export( PropertyHint.Range, "0,360") ]
    public float distortionAngle = 0.5f;

    [Export( PropertyHint.Range, "0,1") ]
    public float distortionAngleFromEllipse = 0.5f;

    [Export( PropertyHint.Range, "1,32") ]
    public int smearingSteps = 5;

    [Export( PropertyHint.Range, "1,1.5") ]
    public float smearing = 1.1f;

    [Export( PropertyHint.Range, "-1,1") ]
    public float redShift = 0.1f;

    [Export( PropertyHint.Range, "-1,1") ]
    public float greenShift = 0f;

    [Export( PropertyHint.Range, "-1,1") ]
    public float blueShift = 0f;

    [Export( PropertyHint.Range, "0,5") ]
    public int blurRadius = 0;

    [Export( PropertyHint.Range, "1,10") ]
    public float blurSpread = 1f;

    
  }
}