1
This commit is contained in:
49
Unity/Extensions/UnitySpline/UnitySplineCreator.cs
Normal file
49
Unity/Extensions/UnitySpline/UnitySplineCreator.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Splines;
|
||||
namespace BITKit.Spline
|
||||
{
|
||||
public interface ISplineContainer
|
||||
{
|
||||
Transform Position { get; }
|
||||
Transform TangentIn { get; }
|
||||
Transform TangentOut { get; }
|
||||
}
|
||||
[System.Serializable]
|
||||
public class BasicSplineContainer : ISplineContainer
|
||||
{
|
||||
public Transform m_transform;
|
||||
public Transform m_tangentIn;
|
||||
public Transform m_tangentOut;
|
||||
public Transform Position => m_transform;
|
||||
public Transform TangentIn => m_tangentIn;
|
||||
public Transform TangentOut => m_tangentOut;
|
||||
}
|
||||
[ExecuteAlways]
|
||||
public class UnitySplineCreator : MonoBehaviour
|
||||
{
|
||||
[SerializeReference, SubclassSelector] public List<ISplineContainer> splines = new();
|
||||
public SplineContainer container;
|
||||
public SplineExtrude extrude;
|
||||
[Header(Constant.Header.Settings)]
|
||||
public int updateTimes;
|
||||
void Update()
|
||||
{
|
||||
UnityEngine.Splines.Spline spline = new();
|
||||
foreach (var x in splines)
|
||||
{
|
||||
spline.Add(new BezierKnot()
|
||||
{
|
||||
Position = x.Position.position,
|
||||
Rotation = x.Position.rotation,
|
||||
TangentIn = x.TangentIn ? x.TangentIn.position : Vector3.zero,
|
||||
TangentOut = x.TangentOut ? x.TangentOut.position : Vector3.zero,
|
||||
});
|
||||
}
|
||||
container.Spline = spline;
|
||||
extrude.Rebuild();
|
||||
updateTimes++;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user