Files
nightclub-arcadia/NightclubArcadia/Packages/com.unity.probuilder/Runtime/Core/BezierShape.cs
T

77 lines
2.1 KiB
C#

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace UnityEngine.ProBuilder
{
[AddComponentMenu("")]
[HelpURL(k_HelpUrl)]
[DisallowMultipleComponent, ExcludeFromPreset, ExcludeFromObjectFactory]
[RequireComponent(typeof(ProBuilderMesh))]
sealed class BezierShape : MonoBehaviour
{
const string k_HelpUrl = "https://docs.unity3d.com/Packages/com.unity.probuilder@latest";
public List<BezierPoint> points = new List<BezierPoint>();
public bool closeLoop = false;
public float radius = .5f;
public int rows = 8;
public int columns = 16;
public bool smooth = true;
[SerializeField]
bool m_IsEditing;
public bool isEditing
{
get { return m_IsEditing; }
set { m_IsEditing = value; }
}
ProBuilderMesh m_Mesh;
public ProBuilderMesh mesh
{
get
{
if (m_Mesh == null)
m_Mesh = GetComponent<ProBuilderMesh>();
return m_Mesh;
}
set
{
m_Mesh = value;
}
}
/// <summary>
/// Initialize the points list with a default set.
/// </summary>
public void Init()
{
Vector3 tan = new Vector3(0f, 0f, 2f);
Vector3 p1 = new Vector3(3f, 0f, 0f);
points.Add(new BezierPoint(Vector3.zero, -tan, tan, Quaternion.identity));
points.Add(new BezierPoint(p1, p1 + tan, p1 + -tan, Quaternion.identity));
}
/// <summary>
/// Rebuild the ProBuilderMesh with the extruded spline.
/// </summary>
public void Refresh()
{
if (points.Count < 2)
{
mesh.Clear();
mesh.ToMesh();
mesh.Refresh();
}
else
{
ProBuilderMesh m = mesh;
Spline.Extrude(points, radius, columns, rows, closeLoop, smooth, ref m);
}
}
}
}