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);
}