Skip to content
Snippets Groups Projects
RectangleGenerator.cs 1.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • Paul-Walcher's avatar
    Paul-Walcher committed
    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
    }