using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 缝合边 /// public class DataSutureSide { /// 关联的边 public readonly DataPlateSide plateSide; /// 关联的缝合数据 public readonly DataSuture suture; /// 缝合边 public DataSutureSide(DataPlateSide side, DataSuture suture) { this.plateSide = side; this.suture = suture; } #region 核心数据 /// 是否反转 public bool isReversal; #endregion #region 次要数据 /// 设计缓存数据 public DataSutureSideDesign dataDesign = new DataSutureSideDesign(); /// 烘焙缓存数据 public DataSutureSideBaking dataBaking = new DataSutureSideBaking(); #endregion #region 可视化数据 /// 可视化对象 public ModulePrefab design; /// 可视化对象 public ModulePrefab baking; #endregion } /// 设计缓存数据 public class DataSutureSideDesign { /// 位置列表 public Vector3[] positions; /// A点位置 public Vector3 PointA => positions[0]; /// B点位置 public Vector3 PointB => positions[positions.Length - 1]; } /// 烘焙缓存数据 public class DataSutureSideBaking { /// 位置列表 public Vector3[] positions; /// 全部顶点列表 public DataSutureSideVertex[] allVertexs; /// 关联的顶点列表 public DataSutureSideVertex[] vertexs; /// A点位置 public Vector3 PointA => positions[0]; /// B点位置 public Vector3 PointB => positions[positions.Length - 1]; } public class DataSutureSideVertex { /// 边起点到a点的距离 public float origin; /// a点 public DataPlateVertex a; /// a点的下一个点 public DataPlateVertex b; /// 缝合边顶点 public DataSutureSideVertex(float origin, DataPlateVertex a, DataPlateVertex b) { this.origin = origin; this.a = a; this.b = b; } /// 最大距离 origin + a - b public float MaxDistance => origin + Distance; /// 分段距离 a-b public float Distance => Vector3.Distance(a.position, b.position); }