Files
com.misaki.art-tools/Runtime/Cloner/Distribution/LinearDistribution.cs
2024-09-16 00:08:10 +09:00

21 lines
958 B
C#

using Unity.Mathematics;
namespace Misaki.ArtTool
{
public static partial class Distribution
{
public static void LinearDistribution(int index, LinearDistributionSetting setting, out float4x4 localMatrix, out bool isValid)
{
var pointIndex = (uint)index + setting.indexOffset;
var localPosition = pointIndex * setting.positionSpacing;
var localEulerRotation = pointIndex * setting.rotationSpacing;
var localScale = 1.0f - (pointIndex * (1.0f - setting.scaleSpacing));
localPosition = math.mul(float3x3.EulerXYZ(math.radians(setting.stepRotation * pointIndex)), localPosition);
var localRotation = math.mul(quaternion.EulerXYZ(math.radians(localEulerRotation)), quaternion.EulerXYZ(math.radians(setting.stepRotation * pointIndex)));
localMatrix = float4x4.TRS(localPosition, localRotation, localScale);
isValid = true;
}
}
}