Files
com.misaki.art-tools/Runtime/Cloner/Distribution/ObjectDistribution.cs
2024-09-24 21:35:53 +09:00

39 lines
1.5 KiB
C#

using Unity.Mathematics;
namespace Misaki.ArtTool
{
public static partial class Distribution
{
public static void ObjectDistribution(int index, ref ObjectDistributionSetting setting, out float4x4 localMatrix, out bool isValid)
{
isValid = false;
localMatrix = float4x4.identity;
switch (setting.mode)
{
case ObjectDistributionMode.Surface:
isValid = ShapeHelper.TryGetMatrixOnMeshSurface(index, setting.seed, setting.isAlignNormal, ref setting.meshData, out localMatrix);
break;
case ObjectDistributionMode.Volume:
isValid = ShapeHelper.TryGetPositionInMeshVolume(index, setting.seed, ref setting.meshData, out localMatrix);
break;
case ObjectDistributionMode.Vertex:
isValid = ShapeHelper.TryGetMeshVertexMatrix(index, setting.isAlignNormal, ref setting.meshData, out localMatrix);
break;
case ObjectDistributionMode.Edge:
isValid = ShapeHelper.TryGetMeshEdgeMatrix(index, setting.isAlignNormal, ref setting.meshData, out localMatrix);
break;
case ObjectDistributionMode.PolygonCenter:
isValid = ShapeHelper.TryGetMeshPolygonMatrix(index, setting.isAlignNormal, ref setting.meshData, out localMatrix);
break;
default:
break;
}
}
}
}