rj-action-library/Runtime/Procedural/Baking/MultiBaker/MeshAxisSubDividers/ManualAbsoluteSubDivider.cs

64 lines
1.1 KiB
C#
Raw Normal View History

2025-05-14 12:31:32 +00:00
using System.Collections;
using System.Collections.Generic;
using Godot;
using System;
using System.Threading.Tasks;
using System.Linq;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class ManualAbsoluteSubDivider:MeshAxisSubDivider
{
public enum SourceAxis
{
X,
Y,
Z
}
[Export]
public SourceAxis sourceAxis;
[Export]
public float[] subDivisions;
public override List<float> GetSubDivisions( Transform3D quadTransform, Axis axis )
{
var min = GetWorldMin( quadTransform );
var max = GetWorldMax( quadTransform );
var minV = min.X;
var maxV = max.X;
if ( SourceAxis.Y == sourceAxis )
{
minV = min.Y;
maxV = max.Y;
}
if ( SourceAxis.Z == sourceAxis )
{
minV = min.Z;
maxV = max.Z;
}
var list = new List<float>();
for ( int i = 0; i < subDivisions.Length; i++ )
{
var mapped = MathX.Normalize( list[ i ], minV, maxV );
if ( mapped <= 0 || mapped >= 1 )
{
continue;
}
list.Add( mapped );
}
return list;
}
}
}