public static GearMesh AddGear(Vector3 position, float innerRadius, float rootRadius, float outerRadius, int sides, Material meshMat = null, bool attachRigidbody = true)
        {
            MeshHelper.SetupMaterial(ref meshMat);
            GameObject gear = new GameObject();

            gear.transform.position = position;

            GearMesh gearComponent = gear.AddComponent <GearMesh>();

            gearComponent.Build(innerRadius, rootRadius, outerRadius, sides, meshMat);
            if (attachRigidbody)
            {
                gear.AddComponent <Rigidbody2D>();
            }
            return(gearComponent);
        }
        public void BuildMesh(ref Material meshMat)
        {
            if (!Validate || ValidateMesh())
            {
                MeshHelper.SetupMaterial(ref meshMat);

                _Mesh = new Mesh();
                GetOrAddComponents();
                C_MR.material = meshMat;

                BuildMeshComponents();
                UpdateMeshFilter();
                UpdateCollider();
            }
            else
            {
                Debug.LogError("MeshBase::BuildMesh: " + name + " generation failed");
            }
        }
        //assign variables, get components and build mesh
        public void Build(float innerRadius, float rootRadius, float outerRadius, int sides, Material meshMat = null)
        {
            MeshHelper.SetupMaterial(ref meshMat);
            name        = "Gear";
            InnerRadius = innerRadius;
            RootRadius  = rootRadius;
            OuterRadius = outerRadius;
            Sides       = sides;

            _Mesh = new Mesh();
            GetOrAddComponents();

            C_MR.material = meshMat;

            if (!Validate || ValidateMesh())
            {
                BuildMeshComponents();
                UpdateMeshFilter();
                UpdateCollider();
            }
        }