39 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |