Files
Convention-Unity-Demo/Assets/Scripts/MoreSpline/SplineNode.cs

93 lines
2.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using Dreamteck.Splines;
using UnityEngine;
namespace Demo.Game
{
public class SplineNode : ScriptableObject
{
public static SplineNode Make()
{
return new GameObject("", typeof(Node)).AddComponent<SplineNode>();
}
public Node MyNode;
public float NodeSize = 1;
public Color NodeColor = Color.white;
public bool IsSetupNodeRotation = false;
public Vector3 NodeRotation = Vector3.zero;
public int MyNodeContent = 0;
public override IEnumerator LoadScript(string script)
{
MyNode = GetComponent<Node>();
yield return base.LoadScript(script);
}
public void AddTo(SplineCore core)
{
MyNodeContent = core.NodeContent;
core.MySplineComputer.SetPointColor(MyNodeContent, NodeColor);
core.MySplineComputer.SetPointSize(MyNodeContent, NodeSize);
core.MySplineComputer.SetPointNormal(MyNodeContent, IsSetupNodeRotation ? NodeRotation.normalized : transform.up);
MyNode.AddConnection(core.MySplineComputer, MyNodeContent);
}
/// <summary>
/// 设置节点大小默认为1
/// </summary>
/// <param name="size"></param>
[ScriptableCall(@"
<summary>
设置节点大小默认为1
</summary>
<param name=""size""></param>
")]
public void SetNodeSize(string size)
{
NodeSize = Parse(size);
}
/// <summary>
/// 设置节点颜色,默认为(1,1,1,1)
/// </summary>
/// <param name="r"></param>
/// <param name="g"></param>
/// <param name="b"></param>
/// <param name="a"></param>
[ScriptableCall(@"
<summary>
设置节点颜色,默认为(1,1,1,1)
</summary>
<param name=""r""></param>
<param name=""g""></param>
<param name=""b""></param>
<param name=""a""></param>
")]
public void SetNodeColor(string r, string g, string b, string a)
{
NodeColor = new(Parse(r), Parse(g), Parse(b), Parse(a));
}
/// <summary>
/// 设置节点旋转节点正面forward向量为法线
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="z"></param>
[ScriptableCall(@"
<summary>
设置节点旋转节点正面forward向量为法线
</summary>
<param name=""x""></param>
<param name=""y""></param>
<param name=""z""></param>
")]
public void SetNodeRotation(string x, string y, string z)
{
IsSetupNodeRotation = true;
this.transform.localEulerAngles = NodeRotation = new(Parse(x), Parse(y), Parse(z));
}
}
}