合并代码

This commit is contained in:
MuHua-123
2024-11-15 18:28:21 +08:00
parent 497b43a446
commit 72d1f89b54
274 changed files with 4939 additions and 1968 deletions
+11 -63
View File
@@ -3,69 +3,17 @@ using System.Collections.Generic;
using UnityEngine;
public static class DataPlateTool {
/// <summary> 计算板片数据 </summary>
public static void Compute(this DataPlate data) {
//ModuleCore.I.EdgeSort.Compute(this);
ModuleCore.I.GenerateEdge.Compute(data);
ModuleCore.I.Polygon.Compute(data);
data.OnChange?.Invoke();
}
/// <summary> 头尾循环标准化索引 </summary>
public static int NormalIndex(int index, int maxIndex) {
if (maxIndex == 0) { Debug.LogError("错误索引:maxIndex = 0"); return 0; }
if (index < 0) { return NormalIndex(index + maxIndex, maxIndex); }
if (index >= maxIndex) { return NormalIndex(index - maxIndex, maxIndex); }
return index;
}
/// <summary> 核心模块 </summary>
private static ModuleCore ModuleCore => ModuleCore.I;
/// <summary> 可视化模块 </summary>
private static ModuleVisual<DataPlate> VisualPlate => ModuleCore.VisualPlate;
/// <summary> 多边形算法模块 </summary>
private static ModuleAlgorithm<DataPlate> AlgorithmPolygon => ModuleCore.AlgorithmPolygon;
/// <summary> 根据索引查询边缘点 </summary>
public static Vector3 FindEdgePoint(this DataPlate data, int index) {
index = NormalIndex(index, data.edgePoints.Count);
return data.edgePoints[index];
}
/// <summary> 改变边缘点 </summary>
public static void ChangeEdgePoint(this DataPlate data, int index, Vector3 position) {
index = NormalIndex(index, data.edgePoints.Count);
data.edgePoints[index] = position;
data.OnChangeEdgePoint?.Invoke(index);
}
/// <summary> 插入边缘点 </summary>
public static void InsertEdgePoint(this DataPlate data, int index, Vector3 position) {
index = NormalIndex(index, data.edgePoints.Count);
data.edgePoints.Insert(index + 1, position);
data.Compute();
}
/// <summary> 根据索引查询设计点 </summary>
public static DataDesignPoint FindDesignPoint(this DataPlate data, int index) {
index = NormalIndex(index, data.designPoints.Count);
return data.designPoints[index];
}
/// <summary> 改变设计点 </summary>
public static void ChangeDesignPoint(this DataPlate data, int index, Vector3 position) {
index = NormalIndex(index, data.edgePoints.Count);
data.designPoints[index].postiton = position;
data.OnChangeDesignPoint?.Invoke(index);
}
/// <summary> 插入边缘点 </summary>
public static void InsertDesignPoint(this DataPlate data, int index, Vector2 position) {
int maxIndex = data.designPoints.Count;
index = NormalIndex(index, data.designPoints.Count);
int left = NormalIndex(index + 1, maxIndex);
int right = NormalIndex(index, maxIndex);
Vector2 leftBezier = (data.designPoints[left].postiton - position) * 0.5f;
Vector2 rightBezier = (data.designPoints[right].postiton - position) * 0.5f;
for (int i = index + 1; i < maxIndex; i++) {
data.designPoints[i].index++;
}
DataDesignPoint designPoint = new DataDesignPoint(data);
designPoint.index = index + 1;
designPoint.postiton = position;
designPoint.leftBezier = leftBezier;
designPoint.rightBezier = rightBezier;
data.designPoints.Insert(index + 1, designPoint);
data.Compute();
public static void UpdateVisual(this DataPlate data) {
//多边形计算
AlgorithmPolygon.Compute(data);
//生成可视化内容
VisualPlate.UpdateVisual(data);
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6b11962bcb7e0ce4e9261a53363b600f
guid: 101c9bc9bc2c5a34389120061f5de367
MonoImporter:
externalObjects: {}
serializedVersion: 2
+9
View File
@@ -0,0 +1,9 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class DataPointTool {
public static Vector3 DefaultBezier(Vector3 a, Vector3 b) {
return (b - a) * 0.3f;
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d2976a2951aeed54fab8d29f912822f4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+21
View File
@@ -0,0 +1,21 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class LoopIndexTool {
/// <summary> 头尾循环标准化索引 </summary>
public static Data LoopIndex<Data>(this List<Data> list, int index) {
return list[LoopIndex(index, list.Count)];
}
/// <summary> 头尾循环标准化索引 </summary>
public static Data LoopIndex<Data>(this Data[] array, int index) {
return array[LoopIndex(index, array.Length)];
}
/// <summary> 头尾循环标准化索引 </summary>
public static int LoopIndex(int index, int maxIndex) {
if (maxIndex == 0) { Debug.LogError("错误索引:maxIndex = 0"); return 0; }
if (index < 0) { return LoopIndex(index + maxIndex, maxIndex); }
if (index >= maxIndex) { return LoopIndex(index - maxIndex, maxIndex); }
return index;
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6c9df3d905e1531439a43a695934de29
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: