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