合并代码
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class VisualPlate : ModuleVisual<DataPlate> {
|
||||
public Transform viewSpace;
|
||||
public Transform platePrefab;
|
||||
public Transform edgeLinePrefab;
|
||||
|
||||
protected override void Awake() => ModuleCore.VisualPlate = this;
|
||||
|
||||
public override void UpdateVisual(DataPlate data) {
|
||||
if (data.transform == null) { CreateTransform(data); }
|
||||
data.transform.localPosition = data.position;
|
||||
data.polygonMeshFilter.mesh = data.polygon;
|
||||
if (data.edgeLineRenderer == null) { CreateEdgeLineRenderer(data); }
|
||||
data.edgeLineRenderer.positionCount = data.edgePoints.Count;
|
||||
data.edgeLineRenderer.SetPositions(data.edgePoints.ToArray());
|
||||
//更新全部数据点的可视化内容
|
||||
data.points.ForEach(ModuleCore.VisualPoint.UpdateVisual);
|
||||
}
|
||||
|
||||
private void CreateTransform(DataPlate data) {
|
||||
Transform temp = Instantiate(platePrefab, viewSpace);
|
||||
temp.gameObject.SetActive(true);
|
||||
data.transform = temp;
|
||||
data.polygonMeshFilter = temp.GetComponent<MeshFilter>();
|
||||
}
|
||||
private void CreateEdgeLineRenderer(DataPlate data) {
|
||||
Transform temp = Instantiate(edgeLinePrefab, data.transform);
|
||||
temp.gameObject.SetActive(true);
|
||||
data.edgeLineRenderer = temp.GetComponent<LineRenderer>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce128d679e2869147a5b5306cef090e3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,72 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class VisualPoint : ModuleVisual<DataPoint> {
|
||||
public Transform pointPrefab;//预设
|
||||
public Transform bezierPrefab;//贝塞尔点预设
|
||||
public Transform linePrefab;//线渲染器预设
|
||||
|
||||
protected override void Awake() => ModuleCore.VisualPoint = this;
|
||||
|
||||
public override void UpdateVisual(DataPoint data) {
|
||||
if (data.transform == null) { CreateTransform(data); }
|
||||
data.transform.localPosition = data.position;
|
||||
//贝塞尔曲线可视内容
|
||||
if (data.isCurveFront) { FrontBezier(data); }
|
||||
else { ReleaseBezier(data.frontBezierTransform, data.frontBezierLineRenderer); }
|
||||
if (data.isCurveAfter) { AfterBezier(data); }
|
||||
else { ReleaseBezier(data.afterBezierTransform, data.afterBezierLineRenderer); }
|
||||
}
|
||||
|
||||
/// <summary> 创建和改变 前贝塞尔点(-) 的可视内容 </summary>
|
||||
private void FrontBezier(DataPoint data) {
|
||||
if (data.frontBezierTransform == null) {
|
||||
data.frontBezierTransform = CreateBezierTransform(data);
|
||||
}
|
||||
if (data.frontBezierLineRenderer == null) {
|
||||
data.frontBezierLineRenderer = CreateBezierLineRenderer(data);
|
||||
}
|
||||
Vector3 position = (data.frontBezier - data.position) * 50;
|
||||
data.frontBezierTransform.localPosition = position;
|
||||
data.frontBezierLineRenderer.SetPosition(1, position);
|
||||
}
|
||||
/// <summary> 创建和改变 后贝塞尔点(+) 的可视内容 </summary>
|
||||
private void AfterBezier(DataPoint data) {
|
||||
if (data.afterBezierTransform == null) {
|
||||
data.afterBezierTransform = CreateBezierTransform(data);
|
||||
}
|
||||
if (data.afterBezierLineRenderer == null) {
|
||||
data.afterBezierLineRenderer = CreateBezierLineRenderer(data);
|
||||
}
|
||||
Vector3 position = (data.afterBezier - data.position) * 50;
|
||||
data.afterBezierTransform.localPosition = position;
|
||||
data.afterBezierLineRenderer.SetPosition(1, position);
|
||||
}
|
||||
/// <summary> 释放贝塞尔点可视内容 </summary>
|
||||
private void ReleaseBezier(Transform transform, LineRenderer lineRenderer) {
|
||||
if (transform != null) { Destroy(transform.gameObject); }
|
||||
if (lineRenderer != null) { Destroy(lineRenderer.gameObject); }
|
||||
}
|
||||
|
||||
#region 创建
|
||||
private void CreateTransform(DataPoint data) {
|
||||
Transform parent = data.plate.transform;
|
||||
data.transform = Instantiate(pointPrefab, parent);
|
||||
data.transform.gameObject.SetActive(true);
|
||||
}
|
||||
private Transform CreateBezierTransform(DataPoint data) {
|
||||
Transform parent = data.transform;
|
||||
Transform temp = Instantiate(bezierPrefab, parent);
|
||||
temp.gameObject.SetActive(true);
|
||||
return temp;
|
||||
}
|
||||
private LineRenderer CreateBezierLineRenderer(DataPoint data) {
|
||||
Transform parent = data.transform;
|
||||
Transform temp = Instantiate(linePrefab, parent);
|
||||
temp.gameObject.SetActive(true);
|
||||
return temp.GetComponent<LineRenderer>();
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 058d9230544d654458aaff125e23ad03
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,38 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using MuHua;
|
||||
|
||||
public class VisualPolygon : ModuleVisual<DataPolygon> {
|
||||
public Transform parent;//预设
|
||||
public Transform trianglePrefab;//三角形预设
|
||||
public Transform pointPrefab;//贝塞尔点预设
|
||||
|
||||
protected override void Awake() => ModuleCore.VisualPolygon = this;
|
||||
|
||||
public override void UpdateVisual(DataPolygon data) {
|
||||
List<DataTriangle> triangles = new List<DataTriangle>(data.triangles);
|
||||
parent.DestroySon();
|
||||
for (int i = 0; i < triangles.Count; i++) {
|
||||
CreateTriangle(triangles[i], i);
|
||||
}
|
||||
}
|
||||
|
||||
#region 创建
|
||||
private void CreateTriangle(DataTriangle data, int index) {
|
||||
Transform triangle = Instantiate(trianglePrefab, parent);
|
||||
triangle.gameObject.SetActive(true);
|
||||
triangle.gameObject.name = index.ToString();
|
||||
|
||||
CreatePoint(data.a, triangle, "a");
|
||||
CreatePoint(data.b, triangle, "b");
|
||||
CreatePoint(data.c, triangle, "c");
|
||||
}
|
||||
private void CreatePoint(Vector3 position, Transform parent, string name) {
|
||||
Transform temp = Instantiate(pointPrefab, parent);
|
||||
temp.gameObject.SetActive(true);
|
||||
temp.localPosition = position;
|
||||
temp.gameObject.name = name;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ff1be4cbf1a81844cb1d8f6b8c840ab8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user