using Microsoft.Win32;
using System.Linq;
using UnityEngine;

public class RectangleGenerator : ShapeGenerator
{
    #region InspectorVariables
    [Header("Rectangle values")]
    [SerializeField] protected float _ab = 1f;
    [SerializeField] protected float _bc = 1f;

    public float ab
    {
        get { return _ab; }
        set
        {
            _ab = value;
            GenerateShapeForAll();
        }
    }
    public float bc
    {
        get { return _bc; }
        set
        {
            _bc = value;
            GenerateShapeForAll();
        }
    }
    #endregion InspectorVariables

    #region Implementation

    public static (Vector3[], int[]) CreateRectangle(float ab, float bc, Vector3 offset, bool invert = false)
    {
        Vector3[] edge = GetRectanglePoints(ab, bc);
        Vector3[] vertices = new Vector3[] { offset }
                            .AppendRange(edge)
                            .Append(edge[0])
                            .ToArray();

        return CreatePlane(vertices, invert);
    }
    public static (Vector3[], int[]) CreateRectangle(float ab, float bc, bool invert = false)
    {

        return CreateRectangle(ab, bc, Vector3.zero, invert);
    }

    protected override (Vector3[] vertices, int[] triangles) GenerateTopology()
        => CreateRectangle(ab, bc);
    #endregion Implementation
}