protected override WFData GenerateWFDataUnit(FrameRule clamp) { var num = clamp.num1; var unitSize = clamp.size1 / num; return(CalcuteUtility.TrigonumSpaceGrid_Unit(unitSize, clamp.height)); }
protected override WFData GenerateWFData(FrameRule clamp) { var data = new WFData(); var num = clamp.num1; var size = clamp.size1; var unitSize = clamp.size1 / num; var unitHeight = Mathf.Sin(Mathf.Deg2Rad * 60) * unitSize; var startPos = new Vector3(-size * 0.5f, clamp.height * 0.5f, -Mathf.Sin(Mathf.Deg2Rad * 60) * size); var boundNodes = new List <WFNode>(); var topNodes = new List <WFNode>(); for (int i = -num; i < num; i++) { for (int j = 0; j < 2 * num - Mathf.Abs(i + 1); j++) { var pos = startPos + (j * unitSize - 0.5f * unitSize * (num - Mathf.Abs(i + 1))) * Vector3.right + unitHeight * (i + num) * Vector3.forward; var tdata = CalcuteUtility.TrigonumSpaceGrid_Unit(unitSize, clamp.height); tdata.AppendPosition(pos); data.InsertData(tdata); //记录顶点用于连线 topNodes.Add(tdata.wfNodes.Find(x => x.type == NodePosType.taperedTop)); //记录边界节点用于连线 RecordBoundNode(i, j, num, tdata, pos, unitSize, unitHeight, boundNodes); } } var topData = CalcuteUtility.ConnectNeerBy(topNodes, unitSize, BarPosType.downBar, BoundConnectType.NoRule); data.InsertData(topData); var bundData = CalcuteUtility.ConnectNeerBy(boundNodes, unitSize, BarPosType.upBar, BoundConnectType.NoRule); data.InsertData(bundData); return(data); }