using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class DataPlate { /// 核心模块 private ModuleCore ModuleCore => ModuleCore.I; /// 设计可视化模块 private ModuleVisual VisualDesign => ModuleCore.VisualPlateDesign; /// 烘焙可视化模块 private ModuleVisual VisualBaking => ModuleCore.VisualPlateBaking; /// 简单多边形算法模块 private ModuleAlgorithm AlgorithmSimplePolygon => ModuleCore.AlgorithmSimplePolygon; /// 细分多边形算法模块 private ModuleAlgorithm AlgorithmSubdivisionPolygon => ModuleCore.AlgorithmSubdivisionPolygon; public DataPlate() { dataDesign = new DataPlateDesign(this); } public void UpdateVisual(bool recalculate = true) { if (recalculate) { //简单多边形计算 AlgorithmSimplePolygon.Compute(this); //细分多边形计算 AlgorithmSubdivisionPolygon.Compute(this); } //生成可视化内容 VisualDesign.UpdateVisual(this); //生成烘焙内容 VisualBaking.UpdateVisual(this); } #region 核心数据 /// public List platePoints = new List(); /// public List plateSides = new List(); #endregion #region 次要数据 /// 设计缓存数据 public DataPlateDesign dataDesign; /// 烘焙缓存数据 public DataPlateBaking dataBaking = new DataPlateBaking(); #endregion #region 可视化数据 /// 可视化对象 public ModulePrefab designPrefab; /// 可视化对象 public ModulePrefab bakingPrefab; /// 安排点 public FixedArrange arrange; #endregion } /// 设计缓存数据 public class DataPlateDesign { /// 板片 public readonly DataPlate plate; /// 设计缓存数据 public DataPlateDesign(DataPlate plate) => this.plate = plate; /// 板片的位置 public Vector3 position; /// 网格 public Mesh mesh; /// 边缘点 public Vector3[] points; /// 三角形数据 public List triangles; } /// 烘焙缓存数据 public class DataPlateBaking { /// 网格 public Mesh mesh; /// 板片的位置 public Vector3 position; /// 板片的旋转 public Vector3 eulerAngles; /// 边界数据 public DataBorder border; /// 全部顶点 public DataPlateVertex[] vertexs; }